@alfadocs/ui-kit 0.69.0 → 0.70.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 (261) hide show
  1. package/dist/_chunks/{agenda-card-BxSFkqgY.js → agenda-card-BQ-IKAru.js} +2 -2
  2. package/dist/_chunks/{agenda-tray-g0kg7HwB.js → agenda-tray-CGXRk58j.js} +2 -2
  3. package/dist/_chunks/{ai-consent-banner-CXlsNX1c.js → ai-consent-banner-Be-h9mRI.js} +3 -3
  4. package/dist/_chunks/ai-tools-rail-B5NEghsp.js +511 -0
  5. package/dist/_chunks/{alert-_mUKLmwA.js → alert-CHYZ96tR.js} +150 -96
  6. package/dist/_chunks/{anamnesis-card-DRmE24OQ.js → anamnesis-card-DvYCa16e.js} +2 -2
  7. package/dist/_chunks/anatomy-scheme-CJB6dI6p.js +2445 -0
  8. package/dist/_chunks/annotation-marker-qt5R9WZX.js +120 -0
  9. package/dist/_chunks/{antenatal-schedule-timeline-35ebkcZT.js → antenatal-schedule-timeline-CwXrQRm1.js} +2 -2
  10. package/dist/_chunks/appointment-card-C06aZqA7.js +310 -0
  11. package/dist/_chunks/appointment-timeline-BJM0S_Fg.js +386 -0
  12. package/dist/_chunks/appointment-tray-DRRw5ROi.js +193 -0
  13. package/dist/_chunks/{audio-recorder-DYXXnGug.js → audio-recorder-Cpdk5qpQ.js} +2 -2
  14. package/dist/_chunks/{badge-CqGsX32l.js → badge-DCOqV9mI.js} +32 -27
  15. package/dist/_chunks/{bishop-score-PJI3AXzA.js → bishop-score-DnYWtZa_.js} +2 -2
  16. package/dist/_chunks/{bmi-calculator-BZtIJ53x.js → bmi-calculator-zjeY4E7J.js} +2 -2
  17. package/dist/_chunks/{booking-C3VqFReX.js → booking-DUBI0oqt.js} +4 -4
  18. package/dist/_chunks/{care-plan-card-CvFGXa2z.js → care-plan-card-C5sTfY9G.js} +5 -5
  19. package/dist/_chunks/{care-plan-entry-card-C3E_gClk.js → care-plan-entry-card-CXnxGCWA.js} +5 -5
  20. package/dist/_chunks/care-plan-header-BUwqDTtz.js +206 -0
  21. package/dist/_chunks/clinical-note-card-BUvNMNGL.js +436 -0
  22. package/dist/_chunks/{contact-profile-card-Dramqa9C.js → contact-profile-card-DDPwRFiP.js} +2 -2
  23. package/dist/_chunks/control-room-rail-Y8ryLYsP.js +229 -0
  24. package/dist/_chunks/{cycle-calculator-DmRGJNaT.js → cycle-calculator-CCmPwcBl.js} +2 -2
  25. package/dist/_chunks/{dependent-selector-CG_FOHya.js → dependent-selector-DUV4thxX.js} +2 -2
  26. package/dist/_chunks/{document-scanner-CTubA0-N.js → document-scanner-C_AxLooF.js} +3 -3
  27. package/dist/_chunks/{due-date-calculator-BTmsIQqD.js → due-date-calculator-Brdj-euS.js} +3 -3
  28. package/dist/_chunks/editable-currency-cell-renderer-C9twtALM.js +328 -0
  29. package/dist/_chunks/email-input-DJ7EXklP.js +397 -0
  30. package/dist/_chunks/{entity-card-COhmqHly.js → entity-card-9_62gY7l.js} +38 -20
  31. package/dist/_chunks/entity-summary-BxRjFh_4.js +138 -0
  32. package/dist/_chunks/{fetal-weight-CRz7KE2D.js → fetal-weight-DNCkyeVo.js} +2 -2
  33. package/dist/_chunks/field-value-NXYczdpO.js +415 -0
  34. package/dist/_chunks/{file-upload-5ScQd4fE.js → file-upload-DwZcAK8D.js} +2 -1
  35. package/dist/_chunks/{freemium-paywall-DZ2mBS3w.js → freemium-paywall-WYlNO7yT.js} +2 -2
  36. package/dist/_chunks/{gestational-age-calculator-BleUdhbI.js → gestational-age-calculator-CF2ISaYQ.js} +3 -3
  37. package/dist/_chunks/hash-CysBBS_N.js +17 -0
  38. package/dist/_chunks/{hcg-doubling-CnjDXX6U.js → hcg-doubling-C7bmuaU3.js} +2 -2
  39. package/dist/_chunks/{actions-cell-renderer-DrcaxB0w.js → link-cell-renderer-CTXqtXV-.js} +715 -592
  40. package/dist/_chunks/lock-CKOIn0IK.js +15 -0
  41. package/dist/_chunks/{marketplace-app-shell-6T9W4Knl.js → marketplace-app-shell-Skhfp6vK.js} +3 -3
  42. package/dist/_chunks/notes-panel-ay8_lPrA.js +158 -0
  43. package/dist/_chunks/{notification-card-BiESdm8q.js → notification-card-D2jiKSJJ.js} +27 -23
  44. package/dist/_chunks/{notification-tray-Btb9oQeZ.js → notification-tray-AEun6DN2.js} +2 -2
  45. package/dist/_chunks/{operator-hero-CP2Nhupm.js → operator-hero-CR0Rqh4-.js} +3 -3
  46. package/dist/_chunks/patient-details-Dlhqb5ig.js +675 -0
  47. package/dist/_chunks/{patient-search-CBC_ySF6.js → patient-search-Be6cLrHR.js} +2 -2
  48. package/dist/_chunks/patient-summary-card-WySCMwwA.js +437 -0
  49. package/dist/_chunks/patient-table-CHxf3Oqk.js +1110 -0
  50. package/dist/_chunks/{payment-form-DvjwYVIT.js → payment-form-CxqIXqw7.js} +2 -2
  51. package/dist/_chunks/{payment-request-card-DioWKBUq.js → payment-request-card-BcZJwu9z.js} +125 -136
  52. package/dist/_chunks/{pdf-viewer-D6BPfW2D.js → pdf-viewer-QfebdLOd.js} +192 -214
  53. package/dist/_chunks/{periodontal-chart-card-BuDEMbHE.js → periodontal-chart-card-hRRJY1NN.js} +2 -2
  54. package/dist/_chunks/{practice-results-KrTHqZua.js → practice-results-C6qDfxos.js} +3 -3
  55. package/dist/_chunks/{pregnancy-dating-DORUAOHB.js → pregnancy-dating-CRVWswD-.js} +3 -3
  56. package/dist/_chunks/{pregnancy-weight-gain-DVz4rr7-.js → pregnancy-weight-gain-BUNpTsH-.js} +2 -2
  57. package/dist/_chunks/radiograph-panel.agent-CAX-C3g3.js +558 -0
  58. package/dist/_chunks/{rich-text-editor-BsV7zUdg.js → rich-text-editor-DlCqPixb.js} +410 -394
  59. package/dist/_chunks/{sign-document-B4DeRhTe.js → sign-document-By6hMOra.js} +2 -2
  60. package/dist/_chunks/{stepper-accordion-Dki6r9ZE.js → stepper-accordion-DC-H-8v4.js} +38 -48
  61. package/dist/_chunks/tab-bar-Bv9nGNdO.js +262 -0
  62. package/dist/_chunks/tooth-scheme-BhQoPNBD.js +2131 -0
  63. package/dist/_chunks/{transaction-chip-DK84XCBU.js → transaction-chip-CscoQbxF.js} +88 -61
  64. package/dist/_chunks/use-clamp-overflow-DQE2kwZ9.js +20 -0
  65. package/dist/_chunks/use-overflow-collapse-BIOzKbni.js +32 -0
  66. package/dist/_chunks/use-persistent-state-nZwZAnE9.js +24 -0
  67. package/dist/_chunks/{warning-stack-BsgaEbL8.js → warning-stack--sTrrBDA.js} +86 -101
  68. package/dist/_chunks/{workflow-map-Bdam9pGp.js → workflow-map-Dy8mLCqF.js} +3 -3
  69. package/dist/_chunks/zoom-out-CgVtf2Wx.js +29 -0
  70. package/dist/agent/index.js +5 -4
  71. package/dist/agent/types.d.ts +19 -2
  72. package/dist/agent-catalog.json +1253 -86
  73. package/dist/agent-i18n/en.json +108 -6
  74. package/dist/components/_shared/entity-card/entity-card.d.ts +6 -0
  75. package/dist/components/_shared/entity-card/index.d.ts +1 -1
  76. package/dist/components/_shared/field-value.d.ts +21 -0
  77. package/dist/components/_shared/field-visibility-cog.d.ts +20 -0
  78. package/dist/components/_shared/field-visibility.d.ts +36 -0
  79. package/dist/components/_shared/patient-fields.d.ts +119 -0
  80. package/dist/components/agenda-card/index.js +1 -1
  81. package/dist/components/agenda-tray/index.js +1 -1
  82. package/dist/components/ai-consent-banner/index.js +1 -1
  83. package/dist/components/ai-tools-rail/ai-tools-rail.d.ts +75 -0
  84. package/dist/components/ai-tools-rail/index.js +1 -1
  85. package/dist/components/alert/alert.d.ts +5 -0
  86. package/dist/components/alert/index.js +1 -1
  87. package/dist/components/anamnesis-card/index.js +1 -1
  88. package/dist/components/anatomy-scheme/anatomy-face-paths.d.ts +15 -0
  89. package/dist/components/anatomy-scheme/anatomy-muscle-paths.d.ts +20 -0
  90. package/dist/components/anatomy-scheme/anatomy-scheme-data.d.ts +121 -0
  91. package/dist/components/anatomy-scheme/anatomy-scheme.agent.d.ts +6 -0
  92. package/dist/components/anatomy-scheme/anatomy-scheme.d.ts +69 -0
  93. package/dist/components/anatomy-scheme/index.d.ts +6 -0
  94. package/dist/components/anatomy-scheme/index.js +17 -0
  95. package/dist/components/annotation-marker/annotation-marker.d.ts +33 -0
  96. package/dist/components/annotation-marker/index.d.ts +3 -0
  97. package/dist/components/annotation-marker/index.js +7 -0
  98. package/dist/components/appointment-card/appointment-card.d.ts +25 -1
  99. package/dist/components/appointment-card/index.js +6 -5
  100. package/dist/components/appointment-timeline/appointment-timeline.agent.d.ts +4 -0
  101. package/dist/components/appointment-timeline/appointment-timeline.d.ts +66 -0
  102. package/dist/components/appointment-timeline/index.d.ts +4 -0
  103. package/dist/components/appointment-timeline/index.js +6 -0
  104. package/dist/components/audio-recorder/index.js +1 -1
  105. package/dist/components/badge/badge.d.ts +6 -2
  106. package/dist/components/badge/index.js +1 -1
  107. package/dist/components/bishop-score/index.js +1 -1
  108. package/dist/components/bmi-calculator/index.js +1 -1
  109. package/dist/components/booking/index.js +1 -1
  110. package/dist/components/care-plan-card/index.js +1 -1
  111. package/dist/components/care-plan-entry-card/index.js +1 -1
  112. package/dist/components/care-plan-header/care-plan-header.agent.d.ts +4 -0
  113. package/dist/components/care-plan-header/care-plan-header.d.ts +100 -0
  114. package/dist/components/care-plan-header/index.d.ts +4 -0
  115. package/dist/components/care-plan-header/index.js +6 -0
  116. package/dist/components/clinical-note-card/clinical-note-card.d.ts +21 -1
  117. package/dist/components/clinical-note-card/index.js +1 -1
  118. package/dist/components/contact-profile-card/index.js +1 -1
  119. package/dist/components/control-room-rail/control-room-context.d.ts +53 -0
  120. package/dist/components/control-room-rail/control-room-rail.d.ts +35 -0
  121. package/dist/components/control-room-rail/index.d.ts +5 -0
  122. package/dist/components/control-room-rail/index.js +9 -0
  123. package/dist/components/cycle-calculator/index.js +1 -1
  124. package/dist/components/data-table/cell-renderers/actions-cell-renderer.d.ts +18 -0
  125. package/dist/components/data-table/index.d.ts +1 -1
  126. package/dist/components/data-table/index.js +32 -31
  127. package/dist/components/dependent-selector/index.js +1 -1
  128. package/dist/components/document-scanner/index.js +1 -1
  129. package/dist/components/due-date-calculator/index.js +2 -2
  130. package/dist/components/email-input/index.js +1 -1
  131. package/dist/components/entity-summary/entity-summary.d.ts +43 -0
  132. package/dist/components/entity-summary/index.d.ts +3 -0
  133. package/dist/components/entity-summary/index.js +5 -0
  134. package/dist/components/fetal-weight/index.js +1 -1
  135. package/dist/components/file-upload/index.js +1 -1
  136. package/dist/components/freemium-paywall/index.js +1 -1
  137. package/dist/components/gestational-age-calculator/index.js +1 -1
  138. package/dist/components/hcg-doubling/index.js +1 -1
  139. package/dist/components/index.d.ts +9 -0
  140. package/dist/components/notes-panel/index.d.ts +3 -0
  141. package/dist/components/notes-panel/index.js +5 -0
  142. package/dist/components/notes-panel/notes-panel.d.ts +64 -0
  143. package/dist/components/notification-card/index.js +1 -1
  144. package/dist/components/notification-tray/index.js +1 -1
  145. package/dist/components/operator-hero/index.js +1 -1
  146. package/dist/components/patient-details/index.d.ts +5 -0
  147. package/dist/components/patient-details/index.js +6 -0
  148. package/dist/components/patient-details/patient-details.agent.d.ts +4 -0
  149. package/dist/components/patient-details/patient-details.d.ts +96 -0
  150. package/dist/components/patient-search/index.js +1 -1
  151. package/dist/components/patient-summary-card/index.js +1 -1
  152. package/dist/components/patient-summary-card/patient-summary-card.d.ts +40 -1
  153. package/dist/components/patient-table/columns.d.ts +69 -40
  154. package/dist/components/patient-table/index.d.ts +2 -6
  155. package/dist/components/patient-table/index.js +8 -9
  156. package/dist/components/patient-table/patient-table.d.ts +38 -4
  157. package/dist/components/patient-table/types.d.ts +52 -2
  158. package/dist/components/patient-table/use-responsive-columns.d.ts +8 -6
  159. package/dist/components/payment-card/index.js +1 -1
  160. package/dist/components/payment-form/index.js +1 -1
  161. package/dist/components/pdf-viewer/index.js +1 -1
  162. package/dist/components/periodontal-chart-card/index.js +1 -1
  163. package/dist/components/practice-results/index.js +1 -1
  164. package/dist/components/pregnancy-dating/index.js +1 -1
  165. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  166. package/dist/components/radiograph-panel/index.d.ts +4 -0
  167. package/dist/components/radiograph-panel/index.js +7 -0
  168. package/dist/components/radiograph-panel/radiograph-panel.agent.d.ts +13 -0
  169. package/dist/components/radiograph-panel/radiograph-panel.d.ts +36 -0
  170. package/dist/components/rich-text-editor/index.js +1 -1
  171. package/dist/components/sidebar/index.js +1 -1
  172. package/dist/components/sign-document/index.js +1 -1
  173. package/dist/components/stepper-accordion/index.js +1 -1
  174. package/dist/components/tab-bar/index.js +1 -1
  175. package/dist/components/tab-bar/tab-bar.d.ts +18 -1
  176. package/dist/components/tooth-scheme/index.d.ts +2 -2
  177. package/dist/components/tooth-scheme/index.js +30 -23
  178. package/dist/components/tooth-scheme/tooth-data.d.ts +112 -1
  179. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts +2 -2
  180. package/dist/components/tooth-scheme/tooth-scheme.d.ts +75 -11
  181. package/dist/components/transaction-chip/index.js +1 -1
  182. package/dist/components/transaction-chip/transaction-chip.d.ts +2 -2
  183. package/dist/components/warning-stack/index.js +1 -1
  184. package/dist/components/warning-stack/warning-stack.d.ts +10 -7
  185. package/dist/components/workflow/index.js +1 -1
  186. package/dist/hooks/index.d.ts +1 -0
  187. package/dist/hooks/index.js +24 -22
  188. package/dist/hooks/use-clamp-overflow.d.ts +19 -0
  189. package/dist/hooks/use-overflow-collapse.d.ts +46 -0
  190. package/dist/hooks/use-persistent-state.d.ts +7 -1
  191. package/dist/hooks/use-scroll-overflow.d.ts +36 -0
  192. package/dist/i18n/locales/ar.d.ts +308 -24
  193. package/dist/i18n/locales/ar.js +322 -27
  194. package/dist/i18n/locales/de.d.ts +308 -24
  195. package/dist/i18n/locales/de.js +322 -27
  196. package/dist/i18n/locales/el.d.ts +308 -24
  197. package/dist/i18n/locales/el.js +322 -27
  198. package/dist/i18n/locales/en.d.ts +309 -32
  199. package/dist/i18n/locales/en.js +323 -35
  200. package/dist/i18n/locales/es.d.ts +308 -24
  201. package/dist/i18n/locales/es.js +322 -27
  202. package/dist/i18n/locales/fr.d.ts +308 -24
  203. package/dist/i18n/locales/fr.js +322 -27
  204. package/dist/i18n/locales/hi.d.ts +308 -24
  205. package/dist/i18n/locales/hi.js +322 -27
  206. package/dist/i18n/locales/it.d.ts +308 -24
  207. package/dist/i18n/locales/it.js +322 -27
  208. package/dist/i18n/locales/ja.d.ts +308 -24
  209. package/dist/i18n/locales/ja.js +322 -27
  210. package/dist/i18n/locales/nl.d.ts +308 -24
  211. package/dist/i18n/locales/nl.js +322 -27
  212. package/dist/i18n/locales/pl.d.ts +308 -24
  213. package/dist/i18n/locales/pl.js +322 -27
  214. package/dist/i18n/locales/pt.d.ts +308 -24
  215. package/dist/i18n/locales/pt.js +322 -27
  216. package/dist/i18n/locales/ro.d.ts +308 -24
  217. package/dist/i18n/locales/ro.js +322 -27
  218. package/dist/i18n/locales/ru.d.ts +308 -24
  219. package/dist/i18n/locales/ru.js +322 -27
  220. package/dist/i18n/locales/sq.d.ts +308 -24
  221. package/dist/i18n/locales/sq.js +322 -27
  222. package/dist/i18n/locales/sv.d.ts +308 -24
  223. package/dist/i18n/locales/sv.js +322 -27
  224. package/dist/i18n/locales/tr.d.ts +308 -24
  225. package/dist/i18n/locales/tr.js +322 -27
  226. package/dist/i18n/locales/zh.d.ts +308 -24
  227. package/dist/i18n/locales/zh.js +322 -27
  228. package/dist/index.js +672 -623
  229. package/dist/locales/ar.json +311 -27
  230. package/dist/locales/de.json +311 -27
  231. package/dist/locales/el.json +311 -27
  232. package/dist/locales/en.json +311 -27
  233. package/dist/locales/es.json +311 -27
  234. package/dist/locales/fr.json +311 -27
  235. package/dist/locales/hi.json +311 -27
  236. package/dist/locales/it.json +311 -27
  237. package/dist/locales/ja.json +311 -27
  238. package/dist/locales/nl.json +311 -27
  239. package/dist/locales/pl.json +311 -27
  240. package/dist/locales/pt.json +311 -27
  241. package/dist/locales/ro.json +311 -27
  242. package/dist/locales/ru.json +311 -27
  243. package/dist/locales/sq.json +311 -27
  244. package/dist/locales/sv.json +311 -27
  245. package/dist/locales/tr.json +311 -27
  246. package/dist/locales/zh.json +311 -27
  247. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  248. package/dist/tokens.css +1 -1
  249. package/package.json +37 -1
  250. package/dist/_chunks/ai-tools-rail-BA_sqy1A.js +0 -373
  251. package/dist/_chunks/appointment-tray-CZtvtaH-.js +0 -431
  252. package/dist/_chunks/clinical-note-card-DqQYf_D4.js +0 -333
  253. package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js +0 -448
  254. package/dist/_chunks/email-input-B_Y55f5G.js +0 -396
  255. package/dist/_chunks/patient-summary-card-B836_fDB.js +0 -435
  256. package/dist/_chunks/patient-table-CDuosVru.js +0 -889
  257. package/dist/_chunks/tab-bar-B1ovILzh.js +0 -105
  258. package/dist/_chunks/tooth-scheme-yBr53cvv.js +0 -1330
  259. package/dist/_chunks/use-persistent-state-i23OWy6G.js +0 -24
  260. package/dist/components/patient-table/cell-renderers/contact-cell.d.ts +0 -45
  261. package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts +0 -26
@@ -3,7 +3,7 @@ import { forwardRef as h } from "react";
3
3
  import { c as x } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as y } from "react-i18next";
5
5
  import { A as N } from "./avatar-BNQNhoyL.js";
6
- import { B as C } from "./badge-CqGsX32l.js";
6
+ import { B as C } from "./badge-DCOqV9mI.js";
7
7
  import { i as w } from "./is-safe-url-DkETxeHz.js";
8
8
  import { C as k } from "./chevron-right-BrpYejk0.js";
9
9
  const L = x(
@@ -144,4 +144,4 @@ z.displayName = "AgendaCard";
144
144
  export {
145
145
  z as A
146
146
  };
147
- //# sourceMappingURL=agenda-card-BxSFkqgY.js.map
147
+ //# sourceMappingURL=agenda-card-BQ-IKAru.js.map
@@ -5,7 +5,7 @@ import { useTranslation as K } from "react-i18next";
5
5
  import { I as M } from "./icon-button-LqoiKcUN.js";
6
6
  import { S as A } from "./skeleton-CZbwyJAA.js";
7
7
  import { E as D } from "./empty-state-BLy7tigq.js";
8
- import { A as V } from "./agenda-card-BxSFkqgY.js";
8
+ import { A as V } from "./agenda-card-BQ-IKAru.js";
9
9
  import { u as F } from "./registry-DvAUVLHh.js";
10
10
  import { C as G } from "./calendar-days-C4BmpCZg.js";
11
11
  import { P as J } from "./plus-CYKNmfuA.js";
@@ -212,4 +212,4 @@ export {
212
212
  U as A,
213
213
  L as a
214
214
  };
215
- //# sourceMappingURL=agenda-tray-g0kg7HwB.js.map
215
+ //# sourceMappingURL=agenda-tray-CGXRk58j.js.map
@@ -2,8 +2,8 @@ import { jsxs as r, jsx as n } from "react/jsx-runtime";
2
2
  import { forwardRef as N, useState as k, useRef as q, useMemo as I } from "react";
3
3
  import { c as L } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as R } from "react-i18next";
5
- import { A as d } from "./alert-_mUKLmwA.js";
6
- import { B as w } from "./badge-CqGsX32l.js";
5
+ import { A as d } from "./alert-CHYZ96tR.js";
6
+ import { B as w } from "./badge-DCOqV9mI.js";
7
7
  import { B as T } from "./button-DD_0Xdmr.js";
8
8
  import { C as V } from "./checkbox-BuZ1u__2.js";
9
9
  import { S as j } from "./spinner-hbwuKwMf.js";
@@ -167,4 +167,4 @@ export {
167
167
  P as A,
168
168
  K as a
169
169
  };
170
- //# sourceMappingURL=ai-consent-banner-CXlsNX1c.js.map
170
+ //# sourceMappingURL=ai-consent-banner-Be-h9mRI.js.map
@@ -0,0 +1,511 @@
1
+ import { jsxs as D, jsx as f } from "react/jsx-runtime";
2
+ import { forwardRef as Ie, useRef as m, useState as E, useMemo as T, useId as xe, useCallback as U, useEffect as Te, useImperativeHandle as Re, Fragment as ke } from "react";
3
+ import { c as w } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as Ae } from "react-i18next";
5
+ import { I as _e } from "./icon-button-LqoiKcUN.js";
6
+ import { S as ze } from "./scroll-area-5wNK0Cyz.js";
7
+ import { a as De } from "./tooltip-DvmfrNvB.js";
8
+ import { u as Ee } from "./use-controllable-state-BiY4xTzM.js";
9
+ import { u as Se } from "./use-edge-resize-ZnGG7gyO.js";
10
+ import { u as ae } from "./use-isomorphic-layout-effect-BGfaCOP1.js";
11
+ import { u as Ne } from "./registry-DvAUVLHh.js";
12
+ const Ve = {
13
+ id: "ai-tools-rail",
14
+ capabilities: ["open", "close", "select_single"],
15
+ state: {
16
+ activeToolId: {
17
+ type: "string | null",
18
+ descriptionKey: "ui.aiToolsRail.agent.state.activeToolId",
19
+ 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.",
20
+ read: (o) => o.getActiveToolId()
21
+ }
22
+ },
23
+ actions: {
24
+ open: {
25
+ // Pure ephemeral panel state (open) — no data loss, no external effect.
26
+ safety: "read",
27
+ argsType: "{ id: string }",
28
+ argsSchema: {
29
+ type: "object",
30
+ properties: { id: { type: "string" } },
31
+ required: ["id"]
32
+ },
33
+ idempotent: !0,
34
+ // descriptionKey shape is intentionally pre-existing — already resolves to
35
+ // real multi-locale translations; do not canonicalise.
36
+ descriptionKey: "ui.aiToolsRail.agent.actions.open",
37
+ description: "Open the given tool's panel.",
38
+ examples: [{ args: { id: "inbox" }, note: "Open the inbox tool panel." }],
39
+ invoke: (o, a) => {
40
+ o.open(a.id);
41
+ }
42
+ },
43
+ close: {
44
+ safety: "read",
45
+ idempotent: !0,
46
+ descriptionKey: "ui.aiToolsRail.agent.actions.close",
47
+ description: "Collapse the rail to its strip (no active tool).",
48
+ invoke: (o) => {
49
+ o.close();
50
+ }
51
+ },
52
+ select_tool: {
53
+ safety: "read",
54
+ argsType: "{ id: string | null }",
55
+ argsSchema: {
56
+ type: "object",
57
+ properties: { id: { type: ["string", "null"] } },
58
+ required: ["id"]
59
+ },
60
+ idempotent: !0,
61
+ descriptionKey: "ui.aiToolsRail.agent.actions.selectTool",
62
+ description: "Set the active tool by id (opens its panel), or pass null to collapse.",
63
+ invoke: (o, a) => {
64
+ o.setActiveTool(a.id);
65
+ }
66
+ }
67
+ },
68
+ domHooks: {
69
+ root: {
70
+ attr: "data-component",
71
+ value: "ai-tools-rail",
72
+ description: "Marks the AiToolsRail wrapper."
73
+ },
74
+ instanceId: {
75
+ attr: "data-component-id",
76
+ sourceProp: "id",
77
+ description: "Sourced from the id prop. Required to address a specific rail from the agent."
78
+ },
79
+ item: {
80
+ attr: "data-tool-id",
81
+ description: "Stable tool id emitted on each strip IconButton. The active icon also carries data-active set to its id."
82
+ }
83
+ }
84
+ }, Ce = "ds:[inline-size:3rem]", Le = "ds:[inline-size:var(--ai-tools-rail-panel-inline-size,22rem)]", te = "--ai-tools-rail-panel-inline-size", Ke = 288, je = 640, Pe = 352, Me = w(
85
+ ["ds:flex ds:shrink-0 ds:h-full", "ds:bg-[var(--background)]"].join(" "),
86
+ {
87
+ variants: {
88
+ side: {
89
+ // Strip docks inline-end; the panel mounts inline-start of it
90
+ // (flex-row, panel rendered first). Shadow faces the main area —
91
+ // no border against main (the rail stays line-free; the only seam
92
+ // is the strip↔panel divider on the open panel, see render).
93
+ // Accessible (AAA) theme swaps the soft chrome shadow for a solid 1px
94
+ // border on the content-facing edge (border-s for end-docked).
95
+ 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",
96
+ // Strip docks inline-start; the panel mounts inline-end of it.
97
+ 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"
98
+ }
99
+ },
100
+ defaultVariants: { side: "end" }
101
+ }
102
+ ), Be = w(
103
+ [
104
+ "ds:flex ds:shrink-0 ds:flex-col ds:items-center",
105
+ "ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-md)]",
106
+ "ds:gap-[var(--spacing-xs)]",
107
+ Ce
108
+ ].join(" ")
109
+ ), Ue = w(
110
+ [
111
+ "ds:relative ds:flex ds:min-h-0 ds:flex-col ds:h-full",
112
+ "ds:bg-[var(--background)]",
113
+ Le,
114
+ // Defensive: the panel doesn't animate its width today, but if a
115
+ // consumer adds a transition on the var, suppress it mid-drag.
116
+ "ds:data-[resizing]:transition-none"
117
+ ].join(" ")
118
+ ), qe = w(
119
+ [
120
+ "ds:absolute ds:[inset-block:0] ds:z-[1] ds:select-none ds:touch-none",
121
+ "ds:[inline-size:var(--resizable-handle-size)] ds:cursor-col-resize",
122
+ "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
123
+ "ds:hover:bg-[var(--accent)] ds:focus-visible:bg-[var(--accent)] ds:data-[resizing]:bg-[var(--accent)]",
124
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
125
+ "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
126
+ "ds:forced-colors:focus-visible:outline-[CanvasText]",
127
+ "ds:before:absolute ds:before:content-['']",
128
+ "ds:before:[block-size:100%]",
129
+ "ds:before:[inline-size:var(--min-target-size)]",
130
+ "ds:before:[inset-block:0]",
131
+ "ds:before:[inset-inline:calc(0px_-_(var(--min-target-size)_-_var(--resizable-handle-size))_/_2)]"
132
+ ],
133
+ {
134
+ variants: {
135
+ edge: {
136
+ "inline-start": "ds:start-0",
137
+ "inline-end": "ds:end-0"
138
+ }
139
+ },
140
+ defaultVariants: { edge: "inline-start" }
141
+ }
142
+ ), Fe = w(
143
+ [
144
+ "ds:absolute ds:-top-[var(--spacing-xs)] ds:-end-[var(--spacing-xs)]",
145
+ "ds:inline-flex ds:items-center ds:justify-center",
146
+ "ds:min-w-[calc(var(--spacing-md)+var(--spacing-xs))]",
147
+ "ds:h-[calc(var(--spacing-md)+var(--spacing-xs))]",
148
+ "ds:ps-[calc(var(--spacing-xs)/1.5)] ds:pe-[calc(var(--spacing-xs)/1.5)]",
149
+ "ds:rounded-[var(--radius-full)]",
150
+ "ds:bg-[color:var(--destructive)] ds:text-[color:var(--destructive-foreground)]",
151
+ "ds:text-[length:var(--font-size-xs)] ds:font-semibold ds:leading-none",
152
+ "ds:pointer-events-none ds:select-none",
153
+ "ds:forced-colors:outline ds:forced-colors:outline-1 ds:forced-colors:outline-[CanvasText]"
154
+ ].join(" ")
155
+ ), He = w(
156
+ // `group/rail-tool` lets an affordance overlay (e.g. a pin star) reveal on
157
+ // hover / focus-within of the whole slot.
158
+ ["ds:group/rail-tool ds:relative", "ds:rounded-[var(--radius-sm)]"],
159
+ {
160
+ variants: {
161
+ dragging: { true: "ds:opacity-60", false: "" },
162
+ dropTarget: {
163
+ true: "ds:outline-[length:var(--focus-ring-width)] ds:outline-dashed ds:outline-[var(--primary)] ds:outline-offset-[-2px]",
164
+ false: ""
165
+ },
166
+ reorderable: {
167
+ true: "ds:cursor-grab ds:active:cursor-grabbing",
168
+ false: ""
169
+ }
170
+ },
171
+ defaultVariants: {
172
+ dragging: !1,
173
+ dropTarget: !1,
174
+ reorderable: !1
175
+ }
176
+ }
177
+ );
178
+ function Oe(o, a) {
179
+ return o > 99 ? a : String(o);
180
+ }
181
+ const $e = Ie(
182
+ ({
183
+ id: o,
184
+ tools: a,
185
+ activeToolId: re,
186
+ defaultActiveToolId: ie = null,
187
+ onActiveToolChange: ne,
188
+ side: R = "end",
189
+ railLabel: oe,
190
+ resizablePanel: k = !1,
191
+ onReorder: A,
192
+ formatReorderAnnouncement: S,
193
+ renderToolAffordance: N,
194
+ renderPanelHeader: q,
195
+ className: le
196
+ }, de) => {
197
+ var Q;
198
+ const { t: p } = Ae(), [ce, v] = Ee({
199
+ value: re,
200
+ defaultValue: ie,
201
+ onChange: ne
202
+ }), g = ce ?? null, V = m([]), _ = m(null), [C, L] = E(0), h = m(!1), K = m(!1), b = T(
203
+ () => a.findIndex((e) => e.id === g),
204
+ [a, g]
205
+ ), l = b >= 0 ? a[b] : null, ue = T(
206
+ () => a.findIndex((e) => !e.disabled),
207
+ [a]
208
+ ), F = T(() => {
209
+ var s;
210
+ const e = (s = a[0]) == null ? void 0 : s.scope;
211
+ return e ? a.findIndex((t) => t.scope && t.scope !== e) : -1;
212
+ }, [a]), fe = F > 0, d = T(() => {
213
+ var t;
214
+ const e = a.findIndex((n) => n.reorderable);
215
+ if (e < 0) return null;
216
+ let s = e;
217
+ for (; s + 1 < a.length && ((t = a[s + 1]) != null && t.reorderable); ) s += 1;
218
+ return { first: e, last: s };
219
+ }, [a]), H = !!A && d !== null, pe = xe(), [I, j] = E(null), [O, z] = E(null), [ve, ge] = E(""), P = m(!1), $ = U(
220
+ (e, s) => {
221
+ if (!A || !d) return;
222
+ const t = Math.max(
223
+ d.first,
224
+ Math.min(d.last, s)
225
+ );
226
+ if (t === e) return;
227
+ A(e, t);
228
+ const n = a[e];
229
+ if (n) {
230
+ const i = S ? S({ tool: n, from: e, to: t }) : p("aiToolsRail.reorderAnnounce", {
231
+ tool: n.label,
232
+ to: t - d.first + 1,
233
+ total: d.last - d.first + 1,
234
+ defaultValue: "{{tool}} moved to position {{to}} of {{total}}"
235
+ });
236
+ i && (P.current = !P.current, ge(P.current ? i : `${i}​`));
237
+ }
238
+ },
239
+ [A, d, a, p, S]
240
+ ), x = b >= 0 ? b : C >= 0 && !((Q = a[C]) != null && Q.disabled) ? C : ue, be = U(
241
+ (e, s) => {
242
+ const t = a.find((n) => n.id === e);
243
+ !t || t.disabled || (h.current = s, v(g === e ? null : e));
244
+ },
245
+ [a, g, v]
246
+ ), me = U(
247
+ (e) => {
248
+ var y, r, u;
249
+ const s = a.length;
250
+ if (s === 0 || e.altKey) return;
251
+ let t = null;
252
+ if (e.key === "ArrowDown" ? t = (x + 1) % s : e.key === "ArrowUp" ? t = (x - 1 + s) % s : e.key === "Home" ? t = 0 : e.key === "End" && (t = s - 1), t === null) return;
253
+ const n = e.key === "ArrowUp" || e.key === "End";
254
+ let i = t, c = 0;
255
+ for (; c < s && ((y = a[i]) != null && y.disabled); )
256
+ i = n ? (i - 1 + s) % s : (i + 1) % s, c += 1;
257
+ (r = a[i]) != null && r.disabled || (e.preventDefault(), L(i), (u = V.current[i]) == null || u.focus());
258
+ },
259
+ [a, x]
260
+ ), M = m(null);
261
+ Te(() => {
262
+ const e = M.current;
263
+ if (!e) return;
264
+ const s = (t) => {
265
+ if (t.key !== "Escape" || b < 0) return;
266
+ t.preventDefault();
267
+ const n = b;
268
+ v(null), L(n), requestAnimationFrame(() => {
269
+ var i;
270
+ (i = V.current[n]) == null || i.focus();
271
+ });
272
+ };
273
+ return e.addEventListener("keydown", s), () => e.removeEventListener("keydown", s);
274
+ }, [b, v]), ae(() => {
275
+ var e;
276
+ l && h.current && ((e = _.current) == null || e.focus()), h.current = !1;
277
+ }, [l]);
278
+ const W = R === "end" ? "inline-start" : "inline-end", { separatorProps: Z, isResizing: X, isResized: Y } = Se({
279
+ edge: W,
280
+ targetRef: _,
281
+ cssProperty: te,
282
+ minSize: Ke,
283
+ maxSize: je,
284
+ defaultSize: Pe,
285
+ disabled: !k
286
+ }), G = Z["aria-valuenow"];
287
+ ae(() => {
288
+ var e;
289
+ !k || !Y || !l || (e = _.current) == null || e.style.setProperty(
290
+ te,
291
+ `${G}px`
292
+ );
293
+ }, [l, k, Y, G]);
294
+ const J = m(g);
295
+ J.current = g;
296
+ const B = T(
297
+ () => ({
298
+ getActiveToolId: () => J.current,
299
+ setActiveTool: (e) => {
300
+ h.current = !1, v(e);
301
+ },
302
+ open: (e) => {
303
+ const s = a.find((t) => t.id === e);
304
+ !s || s.disabled || (h.current = !1, v(e));
305
+ },
306
+ close: () => {
307
+ h.current = !1, v(null);
308
+ }
309
+ }),
310
+ [a, v]
311
+ );
312
+ Re(de, () => B, [B]), Ne(Ve, B, o);
313
+ const he = p("aiToolsRail.badgeCountOverflow", {
314
+ defaultValue: "99+"
315
+ });
316
+ return /* @__PURE__ */ D(
317
+ "div",
318
+ {
319
+ ref: M,
320
+ "data-component": "ai-tools-rail",
321
+ "data-component-id": o,
322
+ "data-side": R,
323
+ className: [Me({ side: R }), le].filter(Boolean).join(" "),
324
+ children: [
325
+ H ? /* @__PURE__ */ f("span", { role: "status", "aria-live": "polite", className: "ds:sr-only", children: ve }) : null,
326
+ l ? /* @__PURE__ */ D(
327
+ "aside",
328
+ {
329
+ ref: _,
330
+ tabIndex: -1,
331
+ "aria-label": p("aiToolsRail.panelLabel", {
332
+ tool: l.label,
333
+ defaultValue: "{{tool}} panel"
334
+ }),
335
+ "data-ai-tools-rail-state": "expanded",
336
+ "data-active-tool": l.id,
337
+ "data-resizing": X ? "" : void 0,
338
+ className: [
339
+ Ue(),
340
+ // Subtle shadow — not a line — separating the panel from the
341
+ // icon strip (the tab row). The panel casts a soft chrome
342
+ // shadow toward the strip on its strip-facing edge. `z-[1]`
343
+ // lifts it above the adjacent strip (the panel is already
344
+ // `relative`) so the shadow paints at the seam instead of being
345
+ // covered by the strip's opaque background. Only renders while
346
+ // the panel is open (the aside is unmounted when collapsed), so
347
+ // it never doubles as a rail↔main seam. In the accessible (AAA)
348
+ // theme the soft shadow becomes a solid 1px border on that same
349
+ // strip-facing edge.
350
+ "ds:z-[1]",
351
+ R === "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",
352
+ "ds:focus-visible:outline-none"
353
+ ].join(" "),
354
+ children: [
355
+ q ? q(l, { isActive: !0 }) : null,
356
+ l.header ? /* @__PURE__ */ f("div", { className: "ds:shrink-0", children: l.header }) : null,
357
+ l.fill ? /* @__PURE__ */ f("div", { className: "ds:flex-1 ds:min-h-0", children: l.panel }) : /* @__PURE__ */ f(
358
+ ze,
359
+ {
360
+ orientation: "vertical",
361
+ className: "ds:flex-1 ds:min-h-0",
362
+ children: l.panel
363
+ }
364
+ ),
365
+ k ? /* @__PURE__ */ f(
366
+ "div",
367
+ {
368
+ ...Z,
369
+ "aria-label": p("aiToolsRail.resizePanel", {
370
+ defaultValue: "Resize tool panel"
371
+ }),
372
+ "data-resizing": X ? "" : void 0,
373
+ className: qe({ edge: W })
374
+ }
375
+ ) : null
376
+ ]
377
+ }
378
+ ) : null,
379
+ /* @__PURE__ */ f(De, { children: /* @__PURE__ */ f(
380
+ "div",
381
+ {
382
+ role: "toolbar",
383
+ "aria-orientation": "vertical",
384
+ "aria-label": oe ?? p("aiToolsRail.railLabel", { defaultValue: "AI tools" }),
385
+ className: Be(),
386
+ onKeyDown: me,
387
+ children: a.map((e, s) => {
388
+ const t = e.id === g, n = typeof e.badgeCount == "number" && e.badgeCount > 0, i = n ? p("aiToolsRail.toolWithCount", {
389
+ tool: e.label,
390
+ count: e.badgeCount,
391
+ defaultValue: "{{tool}}, {{count}} updates"
392
+ }) : e.label, c = H && !!e.reorderable && !e.disabled, y = c ? `${pe}-${e.id}` : void 0;
393
+ return /* @__PURE__ */ D(ke, { children: [
394
+ fe && s === F ? /* @__PURE__ */ f(
395
+ "div",
396
+ {
397
+ role: "separator",
398
+ "aria-orientation": "horizontal",
399
+ className: "ds:my-[var(--spacing-2xs)] ds:h-px ds:w-[var(--spacing-lg)] ds:shrink-0 ds:bg-[var(--border)]"
400
+ }
401
+ ) : null,
402
+ /* @__PURE__ */ D(
403
+ "div",
404
+ {
405
+ className: He({
406
+ dragging: I === s,
407
+ dropTarget: O === s && I !== s,
408
+ reorderable: c
409
+ }),
410
+ "data-dragging": I === s ? "" : void 0,
411
+ draggable: c || void 0,
412
+ onDragStart: c ? (r) => {
413
+ j(s), r.dataTransfer.effectAllowed = "move", r.dataTransfer.setData(
414
+ "text/plain",
415
+ String(s)
416
+ );
417
+ } : void 0,
418
+ onDragOver: c ? (r) => {
419
+ I !== null && (r.preventDefault(), r.dataTransfer.dropEffect = "move", O !== s && z(s));
420
+ } : void 0,
421
+ onDragLeave: c ? () => z((r) => r === s ? null : r) : void 0,
422
+ onDrop: c ? (r) => {
423
+ r.preventDefault();
424
+ const u = I;
425
+ z(null), j(null), !(u === null || u === s) && $(u, s);
426
+ } : void 0,
427
+ onDragEnd: c ? () => {
428
+ j(null), z(null);
429
+ } : void 0,
430
+ children: [
431
+ /* @__PURE__ */ f(
432
+ _e,
433
+ {
434
+ ref: (r) => {
435
+ V.current[s] = r;
436
+ },
437
+ icon: e.icon,
438
+ tooltip: e.label,
439
+ "aria-label": i,
440
+ intent: "ghost",
441
+ size: "sm",
442
+ disabled: e.disabled,
443
+ "aria-pressed": t,
444
+ "aria-expanded": t,
445
+ "data-active": t ? e.id : void 0,
446
+ "data-tool-id": e.id,
447
+ "aria-describedby": y,
448
+ "aria-keyshortcuts": c ? "Alt+ArrowUp Alt+ArrowDown" : void 0,
449
+ tabIndex: s === x ? 0 : -1,
450
+ onFocus: () => {
451
+ e.disabled || L(s);
452
+ },
453
+ onClick: () => be(e.id, K.current),
454
+ onKeyDown: (r) => {
455
+ if (r.key === "Enter" || r.key === " ") {
456
+ K.current = !0;
457
+ return;
458
+ }
459
+ if (c && r.altKey && d) {
460
+ let u = null;
461
+ if (r.key === "ArrowUp" ? u = s - 1 : r.key === "ArrowDown" ? u = s + 1 : r.key === "Home" ? u = d.first : r.key === "End" && (u = d.last), u !== null) {
462
+ r.preventDefault();
463
+ const ye = Math.max(
464
+ d.first,
465
+ Math.min(d.last, u)
466
+ ), we = e.id;
467
+ $(s, ye), requestAnimationFrame(() => {
468
+ var ee, se;
469
+ (se = (ee = M.current) == null ? void 0 : ee.querySelector(
470
+ `[data-tool-id="${CSS.escape(we)}"]`
471
+ )) == null || se.focus();
472
+ });
473
+ }
474
+ }
475
+ },
476
+ onKeyUp: (r) => {
477
+ (r.key === "Enter" || r.key === " ") && (K.current = !1);
478
+ }
479
+ }
480
+ ),
481
+ n ? /* @__PURE__ */ f("span", { "aria-hidden": "true", className: Fe(), children: Oe(
482
+ e.badgeCount,
483
+ he
484
+ ) }) : null,
485
+ N == null ? void 0 : N(e, {
486
+ index: s,
487
+ isActive: t,
488
+ isRovingTarget: s === x
489
+ }),
490
+ y ? /* @__PURE__ */ f("span", { id: y, className: "ds:sr-only", children: p("aiToolsRail.reorderInstructions", {
491
+ tool: e.label,
492
+ defaultValue: "Reorder {{tool}}. Press Alt + Up or Alt + Down to move."
493
+ }) }) : null
494
+ ]
495
+ }
496
+ )
497
+ ] }, e.id);
498
+ })
499
+ }
500
+ ) })
501
+ ]
502
+ }
503
+ );
504
+ }
505
+ );
506
+ $e.displayName = "AiToolsRail";
507
+ export {
508
+ $e as A,
509
+ Ve as a
510
+ };
511
+ //# sourceMappingURL=ai-tools-rail-B5NEghsp.js.map