@alfadocs/ui-kit 1.38.0 → 1.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/dist/_chunks/{actions-cell-renderer-CUn1pqEq.js → actions-cell-renderer-BXBy9c0f.js} +3 -3
  2. package/dist/_chunks/{agenda-tray-CG6jUjKc.js → agenda-tray-CBaJASb5.js} +3 -3
  3. package/dist/_chunks/{ai-consent-banner-De4gzSBZ.js → ai-consent-banner-DvtaM3yg.js} +2 -2
  4. package/dist/_chunks/{ai-prompt-input-DdxlaI7q.js → ai-prompt-input-DXknpQCB.js} +2 -2
  5. package/dist/_chunks/{alia-sidebar-B6bXlZZk.js → alia-sidebar-CUqaJNPQ.js} +7 -7
  6. package/dist/_chunks/{anamnesis-card-DGwINeNn.js → anamnesis-card-xtEhyojD.js} +2 -2
  7. package/dist/_chunks/{anamnesis-summary-rows-Cxtgo2ok.js → anamnesis-summary-rows-DQUqwWc1.js} +7 -7
  8. package/dist/_chunks/{appointment-card-WsDGBBut.js → appointment-card-TgR_2GKS.js} +134 -102
  9. package/dist/_chunks/{appointment-peek-5S4O1VQP.js → appointment-peek-abiR0T9e.js} +3 -3
  10. package/dist/_chunks/{appointment-timeline-D-rNwKpS.js → appointment-timeline-CCnyUYKz.js} +67 -63
  11. package/dist/_chunks/{appointment-tray-CK2CULg_.js → appointment-tray-N0yEI8UF.js} +4 -4
  12. package/dist/_chunks/{audio-recorder-BlQBC7N_.js → audio-recorder-B7dT-Y3v.js} +3 -3
  13. package/dist/_chunks/{balance-badge-cell-DHs5p0bA.js → balance-badge-cell-o6LldMUA.js} +5 -5
  14. package/dist/_chunks/{bishop-score-D5b8tktp.js → bishop-score-Cu70iv9C.js} +2 -2
  15. package/dist/_chunks/{bmi-calculator-dOKP-vW4.js → bmi-calculator-C9N19aLX.js} +2 -2
  16. package/dist/_chunks/{booking-x3J7sS2G.js → booking-Dn3jvv3K.js} +5 -5
  17. package/dist/_chunks/{button-nJaPh_HC.js → button-CaUe1uyd.js} +11 -7
  18. package/dist/_chunks/{button-group-QmN1VdUW.js → button-group-R32U7SyV.js} +2 -2
  19. package/dist/_chunks/{calendar-7GAUlsNO.js → calendar-ChJQzRw-.js} +2 -2
  20. package/dist/_chunks/calendar-workspace-B-fUbm62.js +11372 -0
  21. package/dist/_chunks/{care-plan-card-COFOI-fI.js → care-plan-card-BOv0NRle.js} +3 -3
  22. package/dist/_chunks/{care-plan-entry-card-BOKn0KW-.js → care-plan-entry-card-d-rZD4li.js} +3 -3
  23. package/dist/_chunks/{care-plan-header-CbuOuVBw.js → care-plan-header-CEmBXn6-.js} +2 -2
  24. package/dist/_chunks/{carousel.agent-Dv4a4M8L.js → carousel.agent-z1yLBpyC.js} +2 -2
  25. package/dist/_chunks/{chart-iWl76PXv.js → chart-PF2krCZC.js} +3 -3
  26. package/dist/_chunks/{chat-input-qM5QpUSq.js → chat-input-Cj7ZYQr5.js} +2 -2
  27. package/dist/_chunks/{chat-message-RniXtrCH.js → chat-message-BMVxiUIX.js} +3 -3
  28. package/dist/_chunks/{code-block-uVjNSI9g.js → code-block-BB-viuTn.js} +2 -2
  29. package/dist/_chunks/{connection-status-OEsWjmRk.js → connection-status-BmA9T0UO.js} +3 -3
  30. package/dist/_chunks/{contact-profile-card--My1H2UD.js → contact-profile-card-Zt6WNg1u.js} +2 -2
  31. package/dist/_chunks/{control-room-rail-DQoHdE1U.js → control-room-rail-CnNZusR5.js} +3 -3
  32. package/dist/_chunks/{copy-field-fYKpl6aN.js → copy-field-B8XRVmQv.js} +2 -2
  33. package/dist/_chunks/credit-card-D9XZsHGA.js +15 -0
  34. package/dist/_chunks/{cycle-calculator-BJeaXiZv.js → cycle-calculator-BH2StWoT.js} +2 -2
  35. package/dist/_chunks/{dashboard-grid-B23BFzRl.js → dashboard-grid-BcXWL5S9.js} +2 -2
  36. package/dist/_chunks/{data-table-Dy1lyumT.js → data-table-CcAx_I1w.js} +6 -6
  37. package/dist/_chunks/{data-table-tabs-BMR0zsVQ.js → data-table-tabs-B9SXA5VP.js} +3 -3
  38. package/dist/_chunks/{description-list-C1RXMDZ_.js → description-list-BsJ_6CQE.js} +2 -2
  39. package/dist/_chunks/{document-preview-DsEyRcNd.js → document-preview-COV0BC6n.js} +2 -2
  40. package/dist/_chunks/{document-scanner-CbWVtm7u.js → document-scanner-B1abl-A4.js} +2 -2
  41. package/dist/_chunks/{due-date-calculator-Dhc9Ljkb.js → due-date-calculator-Buh_mVHq.js} +2 -2
  42. package/dist/_chunks/{editable-currency-cell-renderer-D7blbDFY.js → editable-currency-cell-renderer-Psb6XKHR.js} +3 -3
  43. package/dist/_chunks/{editable-description-7ptNpJEg.js → editable-description-ADMVFPUz.js} +3 -3
  44. package/dist/_chunks/{editor-overlay-8fKAcRsm.js → editor-overlay-9tcPXNWt.js} +2 -2
  45. package/dist/_chunks/{empty-state-X0sVPfVo.js → empty-state-BUN_UAWf.js} +2 -2
  46. package/dist/_chunks/{entity-summary-BbW0mIzU.js → entity-summary-DXejuQ8i.js} +3 -3
  47. package/dist/_chunks/{error-boundary-ayXFCcq4.js → error-boundary-BNT2iQ1w.js} +2 -2
  48. package/dist/_chunks/{face-scheme-uFvhqz6h.js → face-scheme-Dg6ZyLKb.js} +5 -5
  49. package/dist/_chunks/{fetal-weight-C6SxchOv.js → fetal-weight-wx4ycKc6.js} +2 -2
  50. package/dist/_chunks/{field-array-C9dmRaIM.js → field-array-BW9KeeXG.js} +3 -3
  51. package/dist/_chunks/{file-manager-UlcYQv8n.js → file-manager-BfLQxF5t.js} +136 -150
  52. package/dist/_chunks/{finished-terminal-Br61Ip4e.js → finished-terminal-DJd7Z_po.js} +2 -2
  53. package/dist/_chunks/{fiscal-code-input-CkwIdB1y.js → fiscal-code-input-ODQRd_Sw.js} +2 -2
  54. package/dist/_chunks/folder-BghC8_S2.js +20 -0
  55. package/dist/_chunks/{freemium-paywall-BqGk_SBU.js → freemium-paywall-Cz-O9lQD.js} +2 -2
  56. package/dist/_chunks/{gestational-age-calculator-DDOGaPvg.js → gestational-age-calculator-CwbecTul.js} +2 -2
  57. package/dist/_chunks/{hcg-doubling-Bb_n6tEa.js → hcg-doubling-BcXriXJe.js} +2 -2
  58. package/dist/_chunks/{header-BZ4pZlJV.js → header-3o9o9v_T.js} +2 -2
  59. package/dist/_chunks/{header-settings-B8mLc03Q.js → header-settings-CTe45iDy.js} +4 -4
  60. package/dist/_chunks/{hover-card-Bcku1GQu.js → hover-card-BMJBVqIf.js} +2 -2
  61. package/dist/_chunks/{icon-button-8xqRnkdG.js → icon-button-CehAeZoP.js} +2 -2
  62. package/dist/_chunks/{icon-button-group-Dj6CRoYR.js → icon-button-group-DkkdIygu.js} +2 -2
  63. package/dist/_chunks/{icon-picker-CTWzlHJr.js → icon-picker-DMEelg9v.js} +3 -3
  64. package/dist/_chunks/{image-cropper-C84NDTB7.js → image-cropper-BjPjT7wU.js} +2 -2
  65. package/dist/_chunks/{info-tip-ey_Pon2y.js → info-tip-iP2Pm9dh.js} +2 -2
  66. package/dist/_chunks/{insert-result-LCNTskNJ.js → insert-result-DPnOBD85.js} +2 -2
  67. package/dist/_chunks/{key-value-pair-DczGb4yz.js → key-value-pair-DaQI_LZB.js} +2 -2
  68. package/dist/_chunks/{link-cell-renderer-BNa8x6oJ.js → link-cell-renderer-s3oHzOwi.js} +2 -2
  69. package/dist/_chunks/{locale-picker-BLeHbFSc.js → locale-picker-CH3kfrIG.js} +3 -3
  70. package/dist/_chunks/{map-view-CCAlC9IL.js → map-view-CHw4RL6w.js} +2 -2
  71. package/dist/_chunks/{marketplace-app-shell-BwH6Aruw.js → marketplace-app-shell-d2EtcUbe.js} +4 -4
  72. package/dist/_chunks/{message-card-Dm5Xshup.js → message-card-V3sFPiQI.js} +3 -3
  73. package/dist/_chunks/{message-tray-CXjVsKqp.js → message-tray-CrRIHfiQ.js} +4 -4
  74. package/dist/_chunks/{note-timeline-D2oPuQP6.js → note-timeline-Dn_XTo1s.js} +131 -90
  75. package/dist/_chunks/{notes-panel-CkbfDDzj.js → notes-panel-CAD1Ytcj.js} +276 -243
  76. package/dist/_chunks/{notification-card-ChcK9Wat.js → notification-card-B2gLO6dK.js} +3 -3
  77. package/dist/_chunks/{notification-tray-_NoChRKi.js → notification-tray-BOEKegVV.js} +4 -4
  78. package/dist/_chunks/{optical-prescription-cphK41eP.js → optical-prescription-LGgmtcST.js} +2 -2
  79. package/dist/_chunks/{panel-subview-BNXN8OEL.js → panel-subview-Cc2Wtt7D.js} +52 -52
  80. package/dist/_chunks/{patient-details-2cIaL-Zb.js → patient-details-C8ImUrVg.js} +3 -3
  81. package/dist/_chunks/{patient-field-row-IHb2VFc2.js → patient-field-row-BRSOKvme.js} +7 -7
  82. package/dist/_chunks/{patient-search-D08b6jgj.js → patient-search-5QcmQKJD.js} +2 -2
  83. package/dist/_chunks/{patient-summary-card-B131Q7Bp.js → patient-summary-card-BhmKB2KR.js} +7 -7
  84. package/dist/_chunks/{payment-automation-upsell-BLTdE2em.js → payment-automation-upsell-BKmBXU4i.js} +17 -16
  85. package/dist/_chunks/{payment-request-card-BxcdvxKR.js → payment-request-card-Cer6XXCn.js} +6 -5
  86. package/dist/_chunks/{periodontal-chart-BF_e3wZp.js → periodontal-chart-DJoZS_o7.js} +2 -2
  87. package/dist/_chunks/{periodontal-chart-card-BJEuJuzh.js → periodontal-chart-card-Nd1ZoYWb.js} +2 -2
  88. package/dist/_chunks/{popover-DzR5QYxp.js → popover-DO-pssF3.js} +2 -2
  89. package/dist/_chunks/{practice-results-CBNRJNnY.js → practice-results-D_jjzwgf.js} +5 -5
  90. package/dist/_chunks/{pregnancy-dating-nV1_S6w0.js → pregnancy-dating-DcyV9ZRD.js} +2 -2
  91. package/dist/_chunks/{pregnancy-weight-gain-tRecShAD.js → pregnancy-weight-gain-Bfq4Kwt5.js} +2 -2
  92. package/dist/_chunks/{privacy-lock-Be39vQUN.js → privacy-lock-CbFCAMM3.js} +3 -3
  93. package/dist/_chunks/{product-hub-panel-C3bMjscm.js → product-hub-panel-w40-_-1s.js} +3 -3
  94. package/dist/_chunks/{public-header.agent-Bl1KFwSE.js → public-header.agent-D-EBVskf.js} +3 -3
  95. package/dist/_chunks/{radiograph-panel.agent-k0G7JuoM.js → radiograph-panel.agent-LrILY2lN.js} +4 -4
  96. package/dist/_chunks/{receipt-euro-C6k4Gzhr.js → receipt-euro-B1cLM_TN.js} +3 -14
  97. package/dist/_chunks/{reviews-panel-Cy969x7q.js → reviews-panel-2GVuxGeT.js} +4 -4
  98. package/dist/_chunks/{rich-text-editor-BTXlorm5.js → rich-text-editor-C6fE-uP4.js} +5 -5
  99. package/dist/_chunks/{session-countdown-QMsnRa1x.js → session-countdown-BqppPrw6.js} +2 -2
  100. package/dist/_chunks/{sheet-hm04DGFd.js → sheet-C8WIDFS8.js} +2 -2
  101. package/dist/_chunks/{sign-in-with-alfadocs-button-BLe_quy5.js → sign-in-with-alfadocs-button-DWwBJtyE.js} +2 -2
  102. package/dist/_chunks/{signature-request-b-86AGlT.js → signature-request-D_j2aQu1.js} +359 -370
  103. package/dist/_chunks/{slot-grid-Bk3GZL1p.js → slot-grid-B3eOPkKD.js} +4 -4
  104. package/dist/_chunks/{streaming-text-DjFqLSt_.js → streaming-text-CE1u_oGa.js} +2 -2
  105. package/dist/_chunks/{task-tray-5co9Jr2L.js → task-tray-DIwjAIes.js} +3 -3
  106. package/dist/_chunks/{tasks-panel-BpH-x7U3.js → tasks-panel-CpcikOeY.js} +5 -5
  107. package/dist/_chunks/{theme-toggle-CMz8YfC1.js → theme-toggle-bI0pgDDv.js} +3 -3
  108. package/dist/_chunks/{toast-8jqtbfAB.js → toast-ZZfhA5u0.js} +2 -2
  109. package/dist/_chunks/{token-insert-menu-9Um0JinI.js → token-insert-menu-A9B5AJw6.js} +2 -2
  110. package/dist/_chunks/tool-rail-D89USYE6.js +799 -0
  111. package/dist/_chunks/{tooth-scheme-BWkYxxjR.js → tooth-scheme-DPAq0vQK.js} +3 -3
  112. package/dist/_chunks/{transaction-chip-Dth1nThY.js → transaction-chip-CwgcJiqF.js} +47 -46
  113. package/dist/_chunks/{unit-converter-BTgU50gk.js → unit-converter-C-LpGzrN.js} +2 -2
  114. package/dist/_chunks/user-plus-BtcOLgNU.js +17 -0
  115. package/dist/_chunks/{warning-stack-BW5Dwb3z.js → warning-stack-C0glSB7p.js} +3 -3
  116. package/dist/_chunks/{workflow-map-CXdsxvUj.js → workflow-map-DhR_h5yw.js} +5 -5
  117. package/dist/agent-catalog.json +3 -418
  118. package/dist/agent-i18n/en.json +2 -18
  119. package/dist/components/agenda-tray/index.js +1 -1
  120. package/dist/components/ai-consent-banner/index.js +1 -1
  121. package/dist/components/ai-prompt-input/index.js +1 -1
  122. package/dist/components/anamnesis-card/index.js +1 -1
  123. package/dist/components/appointment-card/appointment-card.d.ts +24 -0
  124. package/dist/components/appointment-card/index.js +2 -2
  125. package/dist/components/appointment-peek/index.js +1 -1
  126. package/dist/components/appointment-timeline/appointment-timeline.d.ts +15 -1
  127. package/dist/components/appointment-timeline/index.js +1 -1
  128. package/dist/components/audio-recorder/index.js +1 -1
  129. package/dist/components/bishop-score/index.js +1 -1
  130. package/dist/components/bmi-calculator/index.js +1 -1
  131. package/dist/components/booking/index.js +1 -1
  132. package/dist/components/button/button.d.ts +1 -1
  133. package/dist/components/button/index.js +2 -2
  134. package/dist/components/button-group/index.js +1 -1
  135. package/dist/components/calendar/index.js +1 -1
  136. package/dist/components/care-plan-card/index.js +1 -1
  137. package/dist/components/care-plan-entry-card/index.js +1 -1
  138. package/dist/components/care-plan-header/index.js +1 -1
  139. package/dist/components/carousel/index.js +1 -1
  140. package/dist/components/chart/index.js +1 -1
  141. package/dist/components/chat-input/index.js +1 -1
  142. package/dist/components/chat-message/index.js +1 -1
  143. package/dist/components/connection-status/index.js +1 -1
  144. package/dist/components/contact-profile-card/index.js +1 -1
  145. package/dist/components/control-room-rail/index.js +1 -1
  146. package/dist/components/copy-field/index.js +1 -1
  147. package/dist/components/cycle-calculator/index.js +1 -1
  148. package/dist/components/dashboard-grid/index.js +1 -1
  149. package/dist/components/data-table/index.js +4 -4
  150. package/dist/components/data-table-tabs/index.js +1 -1
  151. package/dist/components/description-list/index.js +1 -1
  152. package/dist/components/document-preview/index.js +1 -1
  153. package/dist/components/document-scanner/index.js +1 -1
  154. package/dist/components/due-date-calculator/index.js +1 -1
  155. package/dist/components/editable-description/index.js +1 -1
  156. package/dist/components/editor-overlay/index.js +1 -1
  157. package/dist/components/empty-state/index.js +1 -1
  158. package/dist/components/entity-summary/index.js +1 -1
  159. package/dist/components/error-boundary/index.js +1 -1
  160. package/dist/components/face-scheme/index.js +1 -1
  161. package/dist/components/fetal-weight/index.js +1 -1
  162. package/dist/components/field-array/index.js +1 -1
  163. package/dist/components/file-manager/index.js +1 -1
  164. package/dist/components/finished-terminal/index.js +1 -1
  165. package/dist/components/fiscal-code-input/index.js +1 -1
  166. package/dist/components/freemium-paywall/index.js +1 -1
  167. package/dist/components/gestational-age-calculator/index.js +1 -1
  168. package/dist/components/hcg-doubling/index.js +1 -1
  169. package/dist/components/header/index.js +1 -1
  170. package/dist/components/header-settings/index.js +1 -1
  171. package/dist/components/hover-card/index.js +1 -1
  172. package/dist/components/icon-button/index.js +1 -1
  173. package/dist/components/icon-button-group/index.js +1 -1
  174. package/dist/components/icon-picker/index.js +1 -1
  175. package/dist/components/image-cropper/index.js +1 -1
  176. package/dist/components/info-tip/index.js +1 -1
  177. package/dist/components/key-value-pair/index.js +1 -1
  178. package/dist/components/locale-picker/index.js +1 -1
  179. package/dist/components/map-view/index.js +1 -1
  180. package/dist/components/message-card/index.js +1 -1
  181. package/dist/components/message-tray/index.js +1 -1
  182. package/dist/components/note-timeline/index.js +1 -1
  183. package/dist/components/note-timeline/note-timeline.d.ts +9 -0
  184. package/dist/components/notes-panel/index.js +1 -1
  185. package/dist/components/notes-panel/notes-panel.d.ts +5 -4
  186. package/dist/components/notification-card/index.js +1 -1
  187. package/dist/components/notification-tray/index.js +1 -1
  188. package/dist/components/optical-prescription/index.js +1 -1
  189. package/dist/components/panel-subview/index.js +1 -1
  190. package/dist/components/patient-details/index.js +1 -1
  191. package/dist/components/patient-search/index.js +1 -1
  192. package/dist/components/patient-summary-card/index.js +1 -1
  193. package/dist/components/patient-table/index.js +1 -1
  194. package/dist/components/payment-card/index.js +1 -1
  195. package/dist/components/periodontal-chart/index.js +1 -1
  196. package/dist/components/periodontal-chart-card/index.js +1 -1
  197. package/dist/components/popover/index.js +1 -1
  198. package/dist/components/practice-results/index.js +1 -1
  199. package/dist/components/pregnancy-dating/index.js +1 -1
  200. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  201. package/dist/components/privacy-lock/index.js +1 -1
  202. package/dist/components/product-hub-tray/index.js +1 -1
  203. package/dist/components/public-header/index.js +1 -1
  204. package/dist/components/radiograph-panel/index.js +1 -1
  205. package/dist/components/reviews-panel/index.js +1 -1
  206. package/dist/components/rich-text-editor/index.js +1 -1
  207. package/dist/components/session-countdown/index.js +1 -1
  208. package/dist/components/sheet/index.js +1 -1
  209. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  210. package/dist/components/slot-grid/index.js +1 -1
  211. package/dist/components/streaming-text/index.js +1 -1
  212. package/dist/components/task-tray/index.js +1 -1
  213. package/dist/components/tasks-panel/index.js +1 -1
  214. package/dist/components/theme-toggle/index.js +1 -1
  215. package/dist/components/toast/index.js +1 -1
  216. package/dist/components/token-insert-menu/index.js +1 -1
  217. package/dist/components/tool-rail/index.js +1 -1
  218. package/dist/components/tooth-scheme/index.js +1 -1
  219. package/dist/components/transaction-chip/index.js +1 -1
  220. package/dist/components/transaction-chip/transaction-chip.d.ts +7 -0
  221. package/dist/components/unit-converter/index.js +1 -1
  222. package/dist/components/warning-stack/index.js +1 -1
  223. package/dist/components/workflow/index.js +1 -1
  224. package/dist/host-compat.css +13 -4
  225. package/dist/i18n/locales/ar.d.ts +235 -183
  226. package/dist/i18n/locales/ar.js +239 -187
  227. package/dist/i18n/locales/de.d.ts +219 -167
  228. package/dist/i18n/locales/de.js +223 -171
  229. package/dist/i18n/locales/el.d.ts +234 -182
  230. package/dist/i18n/locales/el.js +238 -186
  231. package/dist/i18n/locales/en.d.ts +52 -0
  232. package/dist/i18n/locales/en.js +56 -4
  233. package/dist/i18n/locales/es.d.ts +227 -175
  234. package/dist/i18n/locales/es.js +231 -179
  235. package/dist/i18n/locales/fr.d.ts +221 -169
  236. package/dist/i18n/locales/fr.js +225 -173
  237. package/dist/i18n/locales/hi.d.ts +235 -183
  238. package/dist/i18n/locales/hi.js +243 -187
  239. package/dist/i18n/locales/it.d.ts +179 -127
  240. package/dist/i18n/locales/it.js +183 -131
  241. package/dist/i18n/locales/ja.d.ts +233 -181
  242. package/dist/i18n/locales/ja.js +237 -185
  243. package/dist/i18n/locales/nl.d.ts +224 -172
  244. package/dist/i18n/locales/nl.js +228 -176
  245. package/dist/i18n/locales/pl.d.ts +229 -177
  246. package/dist/i18n/locales/pl.js +233 -181
  247. package/dist/i18n/locales/pt.d.ts +229 -177
  248. package/dist/i18n/locales/pt.js +233 -181
  249. package/dist/i18n/locales/ro.d.ts +228 -176
  250. package/dist/i18n/locales/ro.js +232 -180
  251. package/dist/i18n/locales/ru.d.ts +234 -182
  252. package/dist/i18n/locales/ru.js +238 -186
  253. package/dist/i18n/locales/sq.d.ts +228 -176
  254. package/dist/i18n/locales/sq.js +232 -180
  255. package/dist/i18n/locales/sv.d.ts +229 -177
  256. package/dist/i18n/locales/sv.js +233 -181
  257. package/dist/i18n/locales/tr.d.ts +235 -183
  258. package/dist/i18n/locales/tr.js +239 -187
  259. package/dist/i18n/locales/zh.d.ts +228 -176
  260. package/dist/i18n/locales/zh.js +232 -180
  261. package/dist/index.js +107 -107
  262. package/dist/locales/ar.json +239 -187
  263. package/dist/locales/de.json +223 -171
  264. package/dist/locales/el.json +238 -186
  265. package/dist/locales/en.json +56 -4
  266. package/dist/locales/es.json +231 -179
  267. package/dist/locales/fr.json +225 -173
  268. package/dist/locales/hi.json +239 -187
  269. package/dist/locales/it.json +183 -131
  270. package/dist/locales/ja.json +237 -185
  271. package/dist/locales/nl.json +228 -176
  272. package/dist/locales/pl.json +233 -181
  273. package/dist/locales/pt.json +233 -181
  274. package/dist/locales/ro.json +232 -180
  275. package/dist/locales/ru.json +238 -186
  276. package/dist/locales/sq.json +232 -180
  277. package/dist/locales/sv.json +233 -181
  278. package/dist/locales/tr.json +239 -187
  279. package/dist/locales/zh.json +232 -180
  280. package/dist/patterns/alia-assistant/index.js +1 -1
  281. package/dist/patterns/anamnesis/index.js +1 -1
  282. package/dist/patterns/calendar/calendar-appointment-details.d.ts +7 -0
  283. package/dist/patterns/calendar/calendar-appointment-details.sections.d.ts +10 -5
  284. package/dist/patterns/calendar/calendar-bookings-panel.d.ts +31 -0
  285. package/dist/patterns/calendar/calendar-info-hover.d.ts +15 -1
  286. package/dist/patterns/calendar/calendar-privacy.d.ts +23 -0
  287. package/dist/patterns/calendar/calendar-rail-settle.d.ts +14 -0
  288. package/dist/patterns/calendar/calendar-upcoming-panel.d.ts +32 -0
  289. package/dist/patterns/calendar/calendar-waiting-list-panel.d.ts +62 -0
  290. package/dist/patterns/calendar/calendar-workspace.d.ts +14 -1
  291. package/dist/patterns/calendar/calendar-workspace.model.d.ts +37 -1
  292. package/dist/patterns/calendar/calendar.model.d.ts +8 -2
  293. package/dist/patterns/calendar/calendar.sheets.d.ts +43 -27
  294. package/dist/patterns/calendar/calendar.types.d.ts +6 -0
  295. package/dist/patterns/calendar/index.d.ts +2 -2
  296. package/dist/patterns/calendar/index.js +1 -1
  297. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  298. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  299. package/dist/patterns/signature-request/index.js +1 -1
  300. package/dist/tokens.css +1 -1
  301. package/package.json +3 -1
  302. package/dist/_chunks/calendar-workspace-Cc1LRVWY.js +0 -9900
  303. package/dist/_chunks/tool-rail-BP8sjxCw.js +0 -667
@@ -0,0 +1,799 @@
1
+ import { jsxs as S, jsx as g } from "react/jsx-runtime";
2
+ import { forwardRef as rt, useRef as h, useState as A, useMemo as M, useId as it, useCallback as N, useEffect as re, useImperativeHandle as ot, Fragment as lt } from "react";
3
+ import { c as E } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as dt } from "react-i18next";
5
+ import { I as Le } from "./icon-button-CehAeZoP.js";
6
+ import { S as ct } from "./scroll-area-BZOvUhwQ.js";
7
+ import { a as ut } from "./tooltip-Cp-PLePW.js";
8
+ import { u as ft } from "./use-controllable-state-BiY4xTzM.js";
9
+ import { u as pt } from "./use-edge-resize-ZnGG7gyO.js";
10
+ import { u as P } from "./use-isomorphic-layout-effect-BGfaCOP1.js";
11
+ import { a as vt, u as ze, R as mt } from "./use-list-reflow-Cw43nxw5.js";
12
+ import { u as gt } from "./use-prefers-reduced-motion-BMwIQRjB.js";
13
+ import { u as bt } from "./use-presence-transition-cDwWUXV-.js";
14
+ import { u as ht } from "./use-theme-CAuo6EYT.js";
15
+ import { u as yt } from "./registry-DvAUVLHh.js";
16
+ const It = {
17
+ id: "tool-rail",
18
+ capabilities: ["open", "close", "select_single"],
19
+ state: {
20
+ activeToolId: {
21
+ type: "string | null",
22
+ descriptionKey: "ui.toolRail.agent.state.activeToolId",
23
+ description: "Id of the tool whose panel is currently open, or null when the rail is collapsed to its strip. No panel content is ever exposed.",
24
+ read: (l) => l.getActiveToolId()
25
+ }
26
+ },
27
+ actions: {
28
+ open: {
29
+ // Pure ephemeral panel state (open) — no data loss, no external effect.
30
+ safety: "read",
31
+ argsType: "{ id: string }",
32
+ argsSchema: {
33
+ type: "object",
34
+ properties: { id: { type: "string" } },
35
+ required: ["id"]
36
+ },
37
+ idempotent: !0,
38
+ // descriptionKey shape is intentionally pre-existing — already resolves to
39
+ // real multi-locale translations; do not canonicalise.
40
+ descriptionKey: "ui.toolRail.agent.actions.open",
41
+ description: "Open the given tool's panel.",
42
+ examples: [{ args: { id: "inbox" }, note: "Open the inbox tool panel." }],
43
+ invoke: (l, n) => {
44
+ l.open(n.id);
45
+ }
46
+ },
47
+ close: {
48
+ safety: "read",
49
+ idempotent: !0,
50
+ descriptionKey: "ui.toolRail.agent.actions.close",
51
+ description: "Collapse the rail to its strip (no active tool).",
52
+ invoke: (l) => {
53
+ l.close();
54
+ }
55
+ },
56
+ select_tool: {
57
+ safety: "read",
58
+ argsType: "{ id: string | null }",
59
+ argsSchema: {
60
+ type: "object",
61
+ properties: { id: { type: ["string", "null"] } },
62
+ required: ["id"]
63
+ },
64
+ idempotent: !0,
65
+ descriptionKey: "ui.toolRail.agent.actions.selectTool",
66
+ description: "Set the active tool by id (opens its panel), or pass null to collapse.",
67
+ invoke: (l, n) => {
68
+ l.setActiveTool(n.id);
69
+ }
70
+ }
71
+ },
72
+ domHooks: {
73
+ root: {
74
+ attr: "data-component",
75
+ value: "tool-rail",
76
+ description: "Marks the ToolRail wrapper."
77
+ },
78
+ instanceId: {
79
+ attr: "data-component-id",
80
+ sourceProp: "id",
81
+ description: "Sourced from the id prop. Required to address a specific rail from the agent."
82
+ },
83
+ item: {
84
+ attr: "data-tool-id",
85
+ description: "Stable tool id emitted on each strip IconButton. The active icon also carries data-active set to its id."
86
+ }
87
+ }
88
+ }, xt = "ds:[inline-size:3rem]", wt = "ds:[inline-size:var(--tool-rail-panel-inline-size,var(--ai-tools-rail-panel-inline-size,22rem))]", Ne = "--tool-rail-panel-inline-size", Tt = 288, Rt = 880, St = 352, At = E(
89
+ ["ds:flex ds:shrink-0 ds:h-full", "ds:bg-[var(--background)]"].join(" "),
90
+ {
91
+ variants: {
92
+ side: {
93
+ // Strip docks inline-end; the panel mounts inline-start of it
94
+ // (flex-row, panel rendered first). Shadow faces the main area —
95
+ // no border against main (the rail stays line-free; the only seam
96
+ // is the strip↔panel divider on the open panel, see render).
97
+ // Accessible (AAA) theme swaps the soft chrome shadow for a solid 1px
98
+ // border on the content-facing edge (border-s for end-docked).
99
+ end: "ds:flex-row ds:shadow-[var(--shadow-chrome-start)] ds:[.theme-accessible_&]:border-s ds:[.theme-accessible_&]:border-[var(--border)] ds:[.theme-accessible_&]:shadow-none",
100
+ // Strip docks inline-start; the panel mounts inline-end of it.
101
+ start: "ds:flex-row-reverse ds:shadow-[var(--shadow-chrome-end)] ds:[.theme-accessible_&]:border-e ds:[.theme-accessible_&]:border-[var(--border)] ds:[.theme-accessible_&]:shadow-none"
102
+ }
103
+ },
104
+ defaultVariants: { side: "end" }
105
+ }
106
+ ), Et = E(
107
+ [
108
+ "ds:flex ds:shrink-0 ds:flex-col ds:items-center",
109
+ "ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-md)]",
110
+ "ds:gap-[var(--spacing-xs)]",
111
+ xt
112
+ ].join(" ")
113
+ ), kt = E(
114
+ [
115
+ "ds:relative ds:flex ds:min-h-0 ds:flex-col ds:h-full",
116
+ "ds:bg-[var(--background)]",
117
+ wt,
118
+ // Open / collapse: the panel fades and slides from the strip. The WIDTH
119
+ // snaps on purpose — animating it would re-lay-out the main area (a
120
+ // calendar grid) on every frame. Declared at rest so both directions
121
+ // have a value to move from.
122
+ "ds:transition-[opacity,translate] ds:duration-[var(--animation-duration)]",
123
+ "ds:ease-[var(--ease-out)] ds:motion-reduce:transition-none",
124
+ "ds:data-[presence=entering]:opacity-0 ds:data-[presence=leaving]:opacity-0",
125
+ "ds:data-[presence=leaving]:pointer-events-none",
126
+ "ds:data-[resizing]:transition-none"
127
+ ].join(" "),
128
+ {
129
+ variants: {
130
+ // Slide toward the strip the panel belongs to, mirrored in RTL.
131
+ side: {
132
+ end: "ds:data-[presence=entering]:translate-x-[var(--spacing-md)] ds:data-[presence=leaving]:translate-x-[var(--spacing-md)] ds:rtl:data-[presence=entering]:-translate-x-[var(--spacing-md)] ds:rtl:data-[presence=leaving]:-translate-x-[var(--spacing-md)]",
133
+ start: "ds:data-[presence=entering]:-translate-x-[var(--spacing-md)] ds:data-[presence=leaving]:-translate-x-[var(--spacing-md)] ds:rtl:data-[presence=entering]:translate-x-[var(--spacing-md)] ds:rtl:data-[presence=leaving]:translate-x-[var(--spacing-md)]"
134
+ }
135
+ },
136
+ defaultVariants: { side: "end" }
137
+ }
138
+ ), _t = "ds:relative ds:flex ds:min-h-0 ds:flex-1 ds:flex-col ds:overflow-clip", De = E(
139
+ [
140
+ "ds:flex ds:min-h-0 ds:flex-col",
141
+ "ds:transition-[opacity,translate] ds:duration-[var(--animation-duration)]",
142
+ "ds:ease-[var(--ease-out)] ds:motion-reduce:transition-none",
143
+ "ds:data-[presence=entering]:opacity-0 ds:data-[presence=leaving]:opacity-0"
144
+ ].join(" "),
145
+ {
146
+ variants: {
147
+ // Same small distance as the panel's own entrance, mirrored in RTL.
148
+ layer: {
149
+ live: [
150
+ "ds:relative ds:z-[1] ds:flex-1",
151
+ "ds:data-[presence=entering]:translate-x-[var(--spacing-md)]",
152
+ "ds:rtl:data-[presence=entering]:-translate-x-[var(--spacing-md)]"
153
+ ].join(" "),
154
+ leaving: [
155
+ "ds:pointer-events-none ds:absolute ds:inset-0 ds:z-0 ds:[&_*]:!animate-none",
156
+ "ds:data-[presence=leaving]:-translate-x-[var(--spacing-md)]",
157
+ "ds:rtl:data-[presence=leaving]:translate-x-[var(--spacing-md)]"
158
+ ].join(" ")
159
+ }
160
+ },
161
+ defaultVariants: { layer: "live" }
162
+ }
163
+ ), Lt = 500, zt = [
164
+ "id",
165
+ "name",
166
+ "for",
167
+ "data-component",
168
+ "data-component-id",
169
+ "data-testid"
170
+ ];
171
+ function Nt(l) {
172
+ return window.getComputedStyle(l).transitionDuration.split(",").some((n) => Number.parseFloat(n) > 0);
173
+ }
174
+ function Dt(l) {
175
+ const n = l.cloneNode(!0), H = l.querySelectorAll("*"), q = n.querySelectorAll("*"), F = [];
176
+ return H.forEach((d, D) => {
177
+ var x;
178
+ const f = q[D];
179
+ if (f && ((d.scrollTop !== 0 || d.scrollLeft !== 0) && F.push([f, d.scrollTop, d.scrollLeft]), d instanceof HTMLCanvasElement && f instanceof HTMLCanvasElement))
180
+ try {
181
+ (x = f.getContext("2d")) == null || x.drawImage(d, 0, 0);
182
+ } catch {
183
+ }
184
+ }), q.forEach((d) => {
185
+ const D = d instanceof SVGElement;
186
+ for (const f of zt)
187
+ D && f === "id" || d.removeAttribute(f);
188
+ if (d.matches("iframe, video, audio, embed, object, source"))
189
+ for (const f of ["src", "srcdoc", "data", "autoplay"])
190
+ d.removeAttribute(f);
191
+ }), { nodes: Array.from(n.childNodes), scrolls: F };
192
+ }
193
+ const Ct = E(
194
+ [
195
+ "ds:absolute ds:[inset-block:0] ds:z-[1] ds:select-none ds:touch-none",
196
+ "ds:[inline-size:var(--resizable-handle-size)] ds:cursor-col-resize",
197
+ "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
198
+ "ds:hover:bg-[var(--accent)] ds:focus-visible:bg-[var(--accent)] ds:data-[resizing]:bg-[var(--accent)]",
199
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
200
+ "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
201
+ "ds:forced-colors:focus-visible:outline-[CanvasText]",
202
+ "ds:before:absolute ds:before:content-['']",
203
+ "ds:before:[block-size:100%]",
204
+ "ds:before:[inline-size:var(--min-target-size)]",
205
+ "ds:before:[inset-block:0]",
206
+ "ds:before:[inset-inline:calc(0px_-_(var(--min-target-size)_-_var(--resizable-handle-size))_/_2)]"
207
+ ],
208
+ {
209
+ variants: {
210
+ edge: {
211
+ "inline-start": "ds:start-0",
212
+ "inline-end": "ds:end-0"
213
+ }
214
+ },
215
+ defaultVariants: { edge: "inline-start" }
216
+ }
217
+ ), Vt = E(
218
+ [
219
+ "ds:absolute ds:-top-[var(--spacing-xs)] ds:-end-[var(--spacing-xs)]",
220
+ "ds:inline-flex ds:items-center ds:justify-center",
221
+ "ds:min-w-[calc(var(--spacing-md)+var(--spacing-xs))]",
222
+ "ds:h-[calc(var(--spacing-md)+var(--spacing-xs))]",
223
+ "ds:ps-[calc(var(--spacing-xs)/1.5)] ds:pe-[calc(var(--spacing-xs)/1.5)]",
224
+ "ds:rounded-[var(--radius-full)]",
225
+ "ds:bg-[color:var(--destructive)] ds:text-[color:var(--destructive-foreground)]",
226
+ "ds:text-[length:var(--font-size-xs)] ds:font-semibold ds:leading-none",
227
+ "ds:pointer-events-none ds:select-none",
228
+ "ds:forced-colors:outline ds:forced-colors:outline-1 ds:forced-colors:outline-[CanvasText]"
229
+ ].join(" ")
230
+ ), Ce = E(
231
+ // `group/rail-tool` lets an affordance overlay (e.g. a pin star) reveal on
232
+ // hover / focus-within of the whole slot.
233
+ ["ds:group/rail-tool ds:relative", "ds:rounded-[var(--radius-sm)]"],
234
+ {
235
+ variants: {
236
+ dragging: { true: "ds:opacity-60", false: "" },
237
+ dropTarget: {
238
+ true: "ds:outline-[length:var(--focus-ring-width)] ds:outline-dashed ds:outline-[var(--accent)] ds:outline-offset-[length:var(--focus-ring-offset)]",
239
+ false: ""
240
+ },
241
+ reorderable: {
242
+ true: "ds:cursor-grab ds:active:cursor-grabbing",
243
+ false: ""
244
+ }
245
+ },
246
+ defaultVariants: {
247
+ dragging: !1,
248
+ dropTarget: !1,
249
+ reorderable: !1
250
+ }
251
+ }
252
+ ), Bt = "ds:opacity-0", Ve = [
253
+ "ds:transition-opacity ds:duration-[var(--animation-duration)]",
254
+ "ds:ease-[var(--ease-out)] ds:motion-reduce:transition-none"
255
+ ].join(" ");
256
+ function jt(l, n) {
257
+ return l > 99 ? n : String(l);
258
+ }
259
+ const Mt = rt(
260
+ ({
261
+ id: l,
262
+ tools: n,
263
+ activeToolId: H,
264
+ defaultActiveToolId: q = null,
265
+ onActiveToolChange: F,
266
+ side: d = "end",
267
+ railLabel: D,
268
+ resizablePanel: f = !1,
269
+ onReorder: x,
270
+ formatReorderAnnouncement: U,
271
+ renderToolAffordance: W,
272
+ renderPanelHeader: ie,
273
+ dataComponent: Be = "tool-rail",
274
+ agentAdapter: je = It,
275
+ className: Me
276
+ }, Pe) => {
277
+ var Se, Ae, Ee;
278
+ const { t: y } = dt(), [qe, I] = ft({
279
+ value: H,
280
+ defaultValue: q,
281
+ onChange: F
282
+ }), w = qe ?? null, Z = h([]), C = h(null), [G, Y] = A(0), k = h(!1), X = h(!1), T = M(
283
+ () => n.findIndex((e) => e.id === w),
284
+ [n, w]
285
+ ), u = T >= 0 ? n[T] : null, J = h(u);
286
+ u && (J.current = u);
287
+ const Fe = M(
288
+ () => n.findIndex((e) => !e.disabled),
289
+ [n]
290
+ ), oe = M(() => {
291
+ var t;
292
+ const e = (t = n[0]) == null ? void 0 : t.scope;
293
+ return e ? n.findIndex((a) => a.scope && a.scope !== e) : -1;
294
+ }, [n]), Ke = oe > 0, p = M(() => {
295
+ var a;
296
+ const e = n.findIndex((s) => s.reorderable);
297
+ if (e < 0) return null;
298
+ let t = e;
299
+ for (; t + 1 < n.length && ((a = n[t + 1]) != null && a.reorderable); ) t += 1;
300
+ return { first: e, last: t };
301
+ }, [n]), le = !!x && p !== null, Oe = it(), [V, Q] = A(null), [de, K] = A(null), { resolvedTheme: $e } = ht(), _ = $e.endsWith("-accessible") || void 0, { containerRef: He } = vt({
302
+ key: n.map((e) => e.id).join(),
303
+ reduceMotion: _
304
+ }), ee = ze({ reduceMotion: _ }), te = bt(
305
+ u !== null,
306
+ { reduceMotion: _ }
307
+ ), R = u === null && te.mounted, b = u ?? (R ? J.current : null), { ref: ce } = te, Ue = N(
308
+ (e) => {
309
+ C.current = e, ce(e);
310
+ },
311
+ [ce]
312
+ );
313
+ P(() => {
314
+ var a, s;
315
+ const e = C.current;
316
+ if (!e) return;
317
+ const t = document.activeElement;
318
+ if (R && t instanceof HTMLElement && e.contains(t)) {
319
+ const i = (a = J.current) == null ? void 0 : a.id, o = i ? (s = L.current) == null ? void 0 : s.querySelector(
320
+ `[data-tool-id="${CSS.escape(i)}"]`
321
+ ) : null;
322
+ t.blur(), e.setAttribute("inert", ""), o == null || o.focus();
323
+ return;
324
+ }
325
+ e.toggleAttribute("inert", R);
326
+ }, [R]);
327
+ const ue = gt(), [O, fe] = A(
328
+ (u == null ? void 0 : u.id) ?? null
329
+ ), v = (u == null ? void 0 : u.id) ?? null, $ = !_ && !ue && v !== null && O !== null && O !== v;
330
+ P(() => {
331
+ if (O === v) return;
332
+ if (!$) {
333
+ fe(v);
334
+ return;
335
+ }
336
+ let e = 0;
337
+ const t = () => fe(v), a = requestAnimationFrame(() => {
338
+ e = requestAnimationFrame(t);
339
+ }), s = window.setTimeout(t, 64);
340
+ return () => {
341
+ cancelAnimationFrame(a), cancelAnimationFrame(e), window.clearTimeout(s);
342
+ };
343
+ }, [v, O, $]);
344
+ const We = !!_ || ue, pe = h(null), [c, ve] = A({ liveId: v, serial: 0, focusLost: !1, leaving: [] });
345
+ if (c.liveId !== v) {
346
+ const e = c.liveId !== null && v !== null ? ((Se = pe.current) == null ? void 0 : Se.querySelector(
347
+ ':scope > [data-tool-rail-layer="live"]'
348
+ )) ?? null : null, t = c.leaving.filter(
349
+ (a) => a.toolId !== v
350
+ );
351
+ ve({
352
+ liveId: v,
353
+ serial: c.serial + 1,
354
+ focusLost: (e == null ? void 0 : e.contains(document.activeElement)) ?? !1,
355
+ leaving: e && !We ? [
356
+ ...t.filter((a) => a.toolId !== c.liveId),
357
+ {
358
+ exitId: `${c.liveId}:${c.serial}`,
359
+ toolId: c.liveId,
360
+ ...Dt(e)
361
+ }
362
+ ] : t
363
+ });
364
+ }
365
+ const B = N((e) => {
366
+ ve(
367
+ (t) => t.leaving.some((a) => a.exitId === e) ? {
368
+ ...t,
369
+ leaving: t.leaving.filter((a) => a.exitId !== e)
370
+ } : t
371
+ );
372
+ }, []), { leave: me } = ze({
373
+ reduceMotion: _,
374
+ durationMs: Lt
375
+ });
376
+ re(() => {
377
+ for (const { exitId: e } of c.leaving)
378
+ me(e, () => B(e));
379
+ }, [c.leaving, me, B]);
380
+ const Ze = b ? c.leaving : [], Ge = ((Ae = c.leaving[c.leaving.length - 1]) == null ? void 0 : Ae.exitId) ?? null, ge = h(c.leaving);
381
+ ge.current = c.leaving;
382
+ const Ye = N(
383
+ (e) => {
384
+ if (!e || e.childNodes.length > 0) return;
385
+ const t = ge.current.find(
386
+ (a) => a.exitId === e.dataset.exitId
387
+ );
388
+ if (t) {
389
+ if (!Nt(e)) {
390
+ B(t.exitId);
391
+ return;
392
+ }
393
+ e.setAttribute("inert", ""), e.append(...t.nodes);
394
+ for (const [a, s, i] of t.scrolls)
395
+ a.scrollTop = s, a.scrollLeft = i;
396
+ }
397
+ },
398
+ [B]
399
+ );
400
+ P(() => {
401
+ var t, a;
402
+ if (!c.focusLost || !v) return;
403
+ const e = document.activeElement;
404
+ e && e !== document.body || (a = (t = L.current) == null ? void 0 : t.querySelector(
405
+ `[data-tool-id="${CSS.escape(v)}"]`
406
+ )) == null || a.focus();
407
+ }, [c.serial]);
408
+ const [Xe, be] = A([]), he = h(n);
409
+ re(() => {
410
+ const e = he.current, t = new Set(n.map((s) => s.id)), a = e.filter((s) => !t.has(s.id));
411
+ if (a.length > 0) {
412
+ be((s) => {
413
+ const i = new Set(s.map((o) => o.id));
414
+ return [
415
+ ...s,
416
+ ...a.filter((o) => !i.has(o.id))
417
+ ];
418
+ });
419
+ for (const s of a)
420
+ ee.leave(s.id, () => {
421
+ be(
422
+ (i) => i.filter((o) => o.id !== s.id)
423
+ );
424
+ });
425
+ }
426
+ he.current = n;
427
+ }, [n, ee]);
428
+ const [Je, Qe] = A(""), ae = h(!1), ye = N(
429
+ (e, t) => {
430
+ if (!x || !p) return;
431
+ const a = Math.max(
432
+ p.first,
433
+ Math.min(p.last, t)
434
+ );
435
+ if (a === e) return;
436
+ x(e, a);
437
+ const s = n[e];
438
+ if (s) {
439
+ const i = U ? U({ tool: s, from: e, to: a }) : y("toolRail.reorderAnnounce", {
440
+ tool: s.label,
441
+ to: a - p.first + 1,
442
+ total: p.last - p.first + 1,
443
+ defaultValue: "{{tool}} moved to position {{to}} of {{total}}"
444
+ });
445
+ i && (ae.current = !ae.current, Qe(ae.current ? i : `${i}​`));
446
+ }
447
+ },
448
+ [x, p, n, y, U]
449
+ ), j = T >= 0 ? T : G >= 0 && !((Ee = n[G]) != null && Ee.disabled) ? G : Fe, et = N(
450
+ (e, t) => {
451
+ const a = n.find((s) => s.id === e);
452
+ !a || a.disabled || (k.current = t, I(w === e ? null : e));
453
+ },
454
+ [n, w, I]
455
+ ), tt = N(
456
+ (e) => {
457
+ var z, r, m;
458
+ const t = n.length;
459
+ if (t === 0 || e.altKey) return;
460
+ let a = null;
461
+ if (e.key === "ArrowDown" ? a = (j + 1) % t : e.key === "ArrowUp" ? a = (j - 1 + t) % t : e.key === "Home" ? a = 0 : e.key === "End" && (a = t - 1), a === null) return;
462
+ const s = e.key === "ArrowUp" || e.key === "End";
463
+ let i = a, o = 0;
464
+ for (; o < t && ((z = n[i]) != null && z.disabled); )
465
+ i = s ? (i - 1 + t) % t : (i + 1) % t, o += 1;
466
+ (r = n[i]) != null && r.disabled || (e.preventDefault(), Y(i), (m = Z.current[i]) == null || m.focus());
467
+ },
468
+ [n, j]
469
+ ), L = h(null);
470
+ re(() => {
471
+ const e = L.current;
472
+ if (!e) return;
473
+ const t = (a) => {
474
+ if (a.key !== "Escape" || T < 0) return;
475
+ a.preventDefault();
476
+ const s = T;
477
+ I(null), Y(s), requestAnimationFrame(() => {
478
+ var i;
479
+ (i = Z.current[s]) == null || i.focus();
480
+ });
481
+ };
482
+ return e.addEventListener("keydown", t), () => e.removeEventListener("keydown", t);
483
+ }, [T, I]), P(() => {
484
+ var e;
485
+ u && k.current && ((e = C.current) == null || e.focus()), k.current = !1;
486
+ }, [u]);
487
+ const Ie = d === "end" ? "inline-start" : "inline-end", { separatorProps: xe, isResizing: we, isResized: Te } = pt({
488
+ edge: Ie,
489
+ targetRef: C,
490
+ cssProperty: Ne,
491
+ minSize: Tt,
492
+ maxSize: Rt,
493
+ defaultSize: St,
494
+ disabled: !f
495
+ }), Re = xe["aria-valuenow"];
496
+ P(() => {
497
+ var e;
498
+ !f || !Te || !u || (e = C.current) == null || e.style.setProperty(
499
+ Ne,
500
+ `${Re}px`
501
+ );
502
+ }, [u, f, Te, Re]);
503
+ const ne = h(w);
504
+ ne.current = w;
505
+ const se = M(
506
+ () => ({
507
+ getActiveToolId: () => ne.current,
508
+ setActiveTool: (e) => {
509
+ k.current = !1, I(e);
510
+ },
511
+ open: (e) => {
512
+ const t = n.find((a) => a.id === e);
513
+ !t || t.disabled || (k.current = !1, I(e));
514
+ },
515
+ close: () => {
516
+ const e = ne.current;
517
+ k.current = !1, I(null), e != null && requestAnimationFrame(() => {
518
+ var t, a;
519
+ (a = (t = L.current) == null ? void 0 : t.querySelector(
520
+ `[data-tool-id="${CSS.escape(e)}"]`
521
+ )) == null || a.focus();
522
+ });
523
+ }
524
+ }),
525
+ [n, I]
526
+ );
527
+ ot(Pe, () => se, [se]), yt(je, se, l);
528
+ const at = y("toolRail.badgeCountOverflow", {
529
+ defaultValue: "99+"
530
+ });
531
+ return /* @__PURE__ */ S(
532
+ "div",
533
+ {
534
+ ref: L,
535
+ "data-component": Be,
536
+ "data-component-id": l,
537
+ "data-side": d,
538
+ className: [At({ side: d }), Me].filter(Boolean).join(" "),
539
+ children: [
540
+ le ? /* @__PURE__ */ g("span", { role: "status", "aria-live": "polite", className: "ds:sr-only", children: Je }) : null,
541
+ b ? /* @__PURE__ */ S(
542
+ "aside",
543
+ {
544
+ ref: Ue,
545
+ tabIndex: -1,
546
+ "aria-label": y("toolRail.panelLabel", {
547
+ tool: b.label,
548
+ defaultValue: "{{tool}} panel"
549
+ }),
550
+ "aria-hidden": R || void 0,
551
+ "data-tool-rail-state": R ? "collapsing" : "expanded",
552
+ "data-presence": te.phase,
553
+ "data-active-tool": b.id,
554
+ "data-resizing": we ? "" : void 0,
555
+ className: [
556
+ kt({ side: d }),
557
+ // Subtle shadow — not a line — separating the panel from the
558
+ // icon strip (the tab row). The panel casts a soft chrome
559
+ // shadow toward the strip on its strip-facing edge. `z-[1]`
560
+ // lifts it above the adjacent strip (the panel is already
561
+ // `relative`) so the shadow paints at the seam instead of being
562
+ // covered by the strip's opaque background. Only renders while
563
+ // the panel is open (the aside is unmounted when collapsed), so
564
+ // it never doubles as a rail↔main seam. In the accessible (AAA)
565
+ // theme the soft shadow becomes a solid 1px border on that same
566
+ // strip-facing edge.
567
+ "ds:z-[1]",
568
+ d === "end" ? "ds:shadow-[var(--shadow-chrome-end)] ds:[.theme-accessible_&]:border-e ds:[.theme-accessible_&]:border-[var(--border)] ds:[.theme-accessible_&]:shadow-none" : "ds:shadow-[var(--shadow-chrome-start)] ds:[.theme-accessible_&]:border-s ds:[.theme-accessible_&]:border-[var(--border)] ds:[.theme-accessible_&]:shadow-none",
569
+ "ds:focus-visible:outline-none"
570
+ ].join(" "),
571
+ children: [
572
+ ie ? ie(b, { isActive: !R }) : null,
573
+ /* @__PURE__ */ S("div", { ref: pe, className: _t, children: [
574
+ Ze.map((e) => /* @__PURE__ */ g(
575
+ "div",
576
+ {
577
+ ref: Ye,
578
+ "aria-hidden": "true",
579
+ "data-exit-id": e.exitId,
580
+ "data-tool-rail-body": e.toolId,
581
+ "data-tool-rail-layer": "leaving",
582
+ "data-presence": $ && e.exitId === Ge ? "present" : "leaving",
583
+ className: De({ layer: "leaving" }),
584
+ onTransitionEnd: (t) => {
585
+ t.target === t.currentTarget && B(e.exitId);
586
+ }
587
+ },
588
+ e.exitId
589
+ )),
590
+ /* @__PURE__ */ S(
591
+ "div",
592
+ {
593
+ "data-tool-rail-body": b.id,
594
+ "data-tool-rail-layer": "live",
595
+ "data-presence": $ ? "entering" : "present",
596
+ className: De({ layer: "live" }),
597
+ children: [
598
+ b.header ? /* @__PURE__ */ g("div", { className: "ds:shrink-0", children: b.header }) : null,
599
+ b.fill ? (
600
+ // data-tool-fill: a self-scrolling panel owns its own native
601
+ // scroll, so a token rule paints its scrollbar to match the
602
+ // 8px overlay. See tokens/index.css.
603
+ /* @__PURE__ */ g("div", { "data-tool-fill": "", className: "ds:flex-1 ds:min-h-0", children: b.panel })
604
+ ) : /* @__PURE__ */ g(
605
+ ct,
606
+ {
607
+ orientation: "vertical",
608
+ className: "ds:flex-1 ds:min-h-0",
609
+ children: b.panel
610
+ }
611
+ )
612
+ ]
613
+ },
614
+ b.id
615
+ )
616
+ ] }),
617
+ f ? /* @__PURE__ */ g(
618
+ "div",
619
+ {
620
+ ...xe,
621
+ "aria-label": y("toolRail.resizePanel", {
622
+ defaultValue: "Resize tool panel"
623
+ }),
624
+ "data-resizing": we ? "" : void 0,
625
+ className: Ct({ edge: Ie })
626
+ }
627
+ ) : null
628
+ ]
629
+ }
630
+ ) : null,
631
+ /* @__PURE__ */ g(ut, { children: /* @__PURE__ */ S(
632
+ "div",
633
+ {
634
+ ref: He,
635
+ role: "toolbar",
636
+ "aria-orientation": "vertical",
637
+ "aria-label": D ?? y("toolRail.railLabel", { defaultValue: "Tools" }),
638
+ className: Et(),
639
+ onKeyDown: tt,
640
+ children: [
641
+ n.map((e, t) => {
642
+ const a = e.id === w, s = typeof e.badgeCount == "number" && e.badgeCount > 0, i = s ? y("toolRail.toolWithCount", {
643
+ tool: e.label,
644
+ count: e.badgeCount,
645
+ defaultValue: "{{tool}}, {{count}} updates"
646
+ }) : e.label, o = le && !!e.reorderable && !e.disabled, z = o ? `${Oe}-${e.id}` : void 0;
647
+ return /* @__PURE__ */ S(lt, { children: [
648
+ Ke && t === oe ? /* @__PURE__ */ g(
649
+ "div",
650
+ {
651
+ role: "separator",
652
+ "aria-orientation": "horizontal",
653
+ className: "ds:my-[var(--spacing-2xs)] ds:h-px ds:w-[var(--spacing-lg)] ds:shrink-0 ds:bg-[var(--border)] ds:forced-colors:bg-[CanvasText]"
654
+ }
655
+ ) : null,
656
+ /* @__PURE__ */ S(
657
+ "div",
658
+ {
659
+ className: [
660
+ Ce({
661
+ dragging: V === t,
662
+ dropTarget: de === t && V !== t,
663
+ reorderable: o
664
+ }),
665
+ Ve,
666
+ mt
667
+ ].filter(Boolean).join(" "),
668
+ "data-reflow-id": e.id,
669
+ "data-dragging": V === t ? "" : void 0,
670
+ draggable: o || void 0,
671
+ onDragStart: o ? (r) => {
672
+ Q(t), r.dataTransfer.effectAllowed = "move", r.dataTransfer.setData(
673
+ "text/plain",
674
+ String(t)
675
+ );
676
+ } : void 0,
677
+ onDragOver: o ? (r) => {
678
+ V !== null && (r.preventDefault(), r.dataTransfer.dropEffect = "move", de !== t && K(t));
679
+ } : void 0,
680
+ onDragLeave: o ? () => K((r) => r === t ? null : r) : void 0,
681
+ onDrop: o ? (r) => {
682
+ r.preventDefault();
683
+ const m = V;
684
+ K(null), Q(null), !(m === null || m === t) && ye(m, t);
685
+ } : void 0,
686
+ onDragEnd: o ? () => {
687
+ Q(null), K(null);
688
+ } : void 0,
689
+ children: [
690
+ /* @__PURE__ */ g(
691
+ Le,
692
+ {
693
+ ref: (r) => {
694
+ Z.current[t] = r;
695
+ },
696
+ icon: e.icon,
697
+ tooltip: e.label,
698
+ "aria-label": i,
699
+ intent: "ghost",
700
+ size: "sm",
701
+ disabled: e.disabled,
702
+ "aria-pressed": a,
703
+ "aria-expanded": a,
704
+ "data-active": a ? e.id : void 0,
705
+ "data-tool-id": e.id,
706
+ "aria-describedby": z,
707
+ "aria-keyshortcuts": o ? "Alt+ArrowUp Alt+ArrowDown" : void 0,
708
+ tabIndex: t === j ? 0 : -1,
709
+ onFocus: () => {
710
+ e.disabled || Y(t);
711
+ },
712
+ onClick: () => et(e.id, X.current),
713
+ onKeyDown: (r) => {
714
+ if (r.key === "Enter" || r.key === " ") {
715
+ X.current = !0;
716
+ return;
717
+ }
718
+ if (o && r.altKey && p) {
719
+ let m = null;
720
+ if (r.key === "ArrowUp" ? m = t - 1 : r.key === "ArrowDown" ? m = t + 1 : r.key === "Home" ? m = p.first : r.key === "End" && (m = p.last), m !== null) {
721
+ r.preventDefault();
722
+ const nt = Math.max(
723
+ p.first,
724
+ Math.min(p.last, m)
725
+ ), st = e.id;
726
+ ye(t, nt), requestAnimationFrame(() => {
727
+ var ke, _e;
728
+ (_e = (ke = L.current) == null ? void 0 : ke.querySelector(
729
+ `[data-tool-id="${CSS.escape(st)}"]`
730
+ )) == null || _e.focus();
731
+ });
732
+ }
733
+ }
734
+ },
735
+ onKeyUp: (r) => {
736
+ (r.key === "Enter" || r.key === " ") && (X.current = !1);
737
+ }
738
+ }
739
+ ),
740
+ s ? /* @__PURE__ */ g("span", { "aria-hidden": "true", className: Vt(), children: jt(
741
+ e.badgeCount,
742
+ at
743
+ ) }) : null,
744
+ W == null ? void 0 : W(e, {
745
+ index: t,
746
+ isActive: a,
747
+ isRovingTarget: t === j
748
+ }),
749
+ z ? /* @__PURE__ */ g("span", { id: z, className: "ds:sr-only", children: y("toolRail.reorderInstructions", {
750
+ tool: e.label,
751
+ defaultValue: "Reorder {{tool}}. Press Alt + Up or Alt + Down to move."
752
+ }) }) : null
753
+ ]
754
+ }
755
+ )
756
+ ] }, e.id);
757
+ }),
758
+ Xe.map(
759
+ (e) => ee.isLeaving(e.id) ? /* @__PURE__ */ g(
760
+ "div",
761
+ {
762
+ className: [
763
+ Ce({
764
+ dragging: !1,
765
+ dropTarget: !1,
766
+ reorderable: !1
767
+ }),
768
+ Ve,
769
+ Bt
770
+ ].filter(Boolean).join(" "),
771
+ "aria-hidden": "true",
772
+ children: /* @__PURE__ */ g(
773
+ Le,
774
+ {
775
+ icon: e.icon,
776
+ intent: "ghost",
777
+ size: "sm",
778
+ disabled: !0,
779
+ tabIndex: -1
780
+ }
781
+ )
782
+ },
783
+ e.id
784
+ ) : null
785
+ )
786
+ ]
787
+ }
788
+ ) })
789
+ ]
790
+ }
791
+ );
792
+ }
793
+ );
794
+ Mt.displayName = "ToolRail";
795
+ export {
796
+ Mt as T,
797
+ It as t
798
+ };
799
+ //# sourceMappingURL=tool-rail-D89USYE6.js.map