@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
@@ -0,0 +1,436 @@
1
+ import { jsx as e, jsxs as p } from "react/jsx-runtime";
2
+ import { forwardRef as D, useId as A, useState as F, useMemo as G } from "react";
3
+ import { c as P } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as J } from "react-i18next";
5
+ import { A as Q } from "./avatar-BNQNhoyL.js";
6
+ import { B as c } from "./badge-DCOqV9mI.js";
7
+ import { C as $ } from "./card-DPmk26CL.js";
8
+ import { L as X } from "./link-DrD_cRUg.js";
9
+ import { T as L } from "./timestamp-BV2lC-wV.js";
10
+ import { SafeHtml as Y } from "../safe-html/index.js";
11
+ import { i as Z } from "./is-safe-url-DkETxeHz.js";
12
+ import { u as T } from "./use-clamp-overflow-DQE2kwZ9.js";
13
+ import { u as ee } from "./registry-DvAUVLHh.js";
14
+ import { S as ae } from "./scan-line-lGioFwLC.js";
15
+ import { L as se } from "./layers-pzGcbLPj.js";
16
+ import { F as y } from "./file-text-DSNuv2B8.js";
17
+ import { U as re } from "./user-CPxpqFjJ.js";
18
+ import { c as S } from "./createLucideIcon-CrFbzy84.js";
19
+ /**
20
+ * @license lucide-react v1.8.0 - ISC
21
+ *
22
+ * This source code is licensed under the ISC license.
23
+ * See the LICENSE file in the root directory of this source tree.
24
+ */
25
+ const ie = [
26
+ [
27
+ "path",
28
+ {
29
+ d: "M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528",
30
+ key: "1jaruq"
31
+ }
32
+ ]
33
+ ], I = S("flag", ie);
34
+ /**
35
+ * @license lucide-react v1.8.0 - ISC
36
+ *
37
+ * This source code is licensed under the ISC license.
38
+ * See the LICENSE file in the root directory of this source tree.
39
+ */
40
+ const te = [
41
+ ["path", { d: "M12 17v5", key: "bb1du9" }],
42
+ [
43
+ "path",
44
+ {
45
+ d: "M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",
46
+ key: "1nkz8b"
47
+ }
48
+ ]
49
+ ], K = S("pin", te), ne = {
50
+ id: "clinical-note-card",
51
+ capabilities: [],
52
+ state: {
53
+ noteId: {
54
+ type: "string | undefined",
55
+ descriptionKey: "ui.agent.clinicalNoteCard.state.noteId",
56
+ description: "Stable identifier of the rendered note, when supplied.",
57
+ read: (s) => s.getNoteId()
58
+ },
59
+ pinned: {
60
+ type: "boolean",
61
+ descriptionKey: "ui.agent.clinicalNoteCard.state.pinned",
62
+ description: "Whether the note is pinned to the top of the timeline.",
63
+ read: (s) => s.isPinned()
64
+ },
65
+ flagged: {
66
+ type: "boolean",
67
+ descriptionKey: "ui.agent.clinicalNoteCard.state.flagged",
68
+ description: "Whether the note is flagged for follow-up.",
69
+ read: (s) => s.isFlagged()
70
+ },
71
+ attachmentKind: {
72
+ type: "'patient' | 'carePlan' | 'carePlanEntry' | 'phase' | 'xray' | undefined",
73
+ descriptionKey: "ui.agent.clinicalNoteCard.state.attachmentKind",
74
+ description: "Structural kind the note is attached to. Never the attachment identity or content.",
75
+ read: (s) => s.getAttachmentKind()
76
+ }
77
+ },
78
+ actions: {},
79
+ domHooks: {
80
+ root: {
81
+ attr: "data-component",
82
+ value: "clinical-note-card",
83
+ description: "Marks the ClinicalNoteCard root. Also emits data-pinned / data-flagged / data-attached-to structural hooks."
84
+ },
85
+ instanceId: {
86
+ attr: "data-component-id",
87
+ sourceProp: "id",
88
+ description: "Sourced from the id prop — addresses a specific note."
89
+ }
90
+ }
91
+ }, le = P("ds:w-full ds:text-[color:var(--foreground)]", {
92
+ variants: {
93
+ surface: { flat: "", elevated: "" }
94
+ },
95
+ defaultVariants: { surface: "elevated" }
96
+ }), de = P(
97
+ [
98
+ "type-body-sm ds:text-[color:var(--foreground)]",
99
+ "ds:break-words",
100
+ "[&_a]:ds:underline [&_a]:ds:underline-offset-2",
101
+ "[&_code]:ds:rounded-[var(--radius-sm)] [&_code]:ds:bg-muted/30 [&_code]:ds:ps-[var(--spacing-xs)] [&_code]:ds:pe-[var(--spacing-xs)] [&_code]:ds:font-[family-name:var(--font-mono)]",
102
+ "[&_p]:ds:m-0 [&_p+p]:ds:mt-[var(--spacing-sm)]",
103
+ "[&_ul]:ds:m-0 [&_ul]:ds:ps-[var(--spacing-md)] [&_ol]:ds:m-0 [&_ol]:ds:ps-[var(--spacing-md)]",
104
+ // Rich-text (Redactor) extras — harmless on markdown notes, which carry
105
+ // none of these tags. Headings, inline images and tables stay readable.
106
+ "[&_h2]:type-title-item [&_h3]:type-title-item [&_h2]:ds:m-0 [&_h3]:ds:m-0",
107
+ "[&_img]:ds:max-w-full [&_img]:ds:h-auto [&_img]:ds:rounded-[var(--radius-sm)]",
108
+ "[&_table]:ds:my-[var(--spacing-sm)] [&_table]:ds:w-full [&_table]:ds:border-collapse",
109
+ "[&_th]:ds:border [&_th]:ds:border-[color:var(--border)] [&_th]:ds:ps-[var(--spacing-xs)] [&_th]:ds:pe-[var(--spacing-xs)] [&_th]:ds:py-[var(--spacing-2xs)] [&_th]:ds:text-start",
110
+ "[&_td]:ds:border [&_td]:ds:border-[color:var(--border)] [&_td]:ds:ps-[var(--spacing-xs)] [&_td]:ds:pe-[var(--spacing-xs)] [&_td]:ds:py-[var(--spacing-2xs)]"
111
+ ].join(" "),
112
+ {
113
+ variants: {
114
+ truncate: {
115
+ true: "ds:[overflow:hidden] ds:[display:-webkit-box] ds:[-webkit-box-orient:vertical] ds:[-webkit-line-clamp:5]",
116
+ false: ""
117
+ }
118
+ },
119
+ defaultVariants: { truncate: !1 }
120
+ }
121
+ ), oe = [
122
+ "ds:relative ds:inline-flex ds:items-center ds:justify-center ds:shrink-0",
123
+ "ds:size-7 ds:rounded-[var(--radius-sm)]",
124
+ 'ds:before:absolute ds:before:inset-x-[calc((var(--min-target-size)-100%)/-2)] ds:before:inset-y-[calc((var(--min-target-size)-100%)/-2)] ds:before:content-[""] ds:sm:before:hidden',
125
+ "ds:hover:bg-[color:var(--muted)]/20",
126
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
127
+ "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
128
+ "ds:forced-colors:focus-visible:outline-[CanvasText]",
129
+ "ds:transition-[color,background-color] ds:duration-[var(--animation-duration)]",
130
+ "ds:motion-reduce:transition-none"
131
+ ].join(" "), ce = [
132
+ "ds:mt-[var(--spacing-2xs)] ds:inline-flex ds:items-center ds:self-start",
133
+ "ds:text-[length:var(--font-size-xs)] ds:font-semibold",
134
+ "ds:underline ds:underline-offset-2 ds:text-[color:var(--primary)] ds:hover:no-underline",
135
+ "ds:rounded-[var(--radius-sm)]",
136
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
137
+ "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
138
+ "ds:forced-colors:focus-visible:outline-[CanvasText]"
139
+ ].join(" ");
140
+ function M({
141
+ icon: s,
142
+ pressed: i,
143
+ label: d,
144
+ activeClassName: n,
145
+ onToggle: u
146
+ }) {
147
+ return /* @__PURE__ */ e(
148
+ "button",
149
+ {
150
+ type: "button",
151
+ "aria-pressed": i,
152
+ "aria-label": d,
153
+ onClick: u,
154
+ className: [
155
+ oe,
156
+ i ? n : "ds:text-[color:var(--muted-foreground)] ds:hover:text-[color:var(--foreground)]"
157
+ ].join(" "),
158
+ children: s
159
+ }
160
+ );
161
+ }
162
+ function C(s) {
163
+ return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
164
+ }
165
+ function _(s) {
166
+ let i = s;
167
+ return i = i.replace(/`([^`]+)`/g, "<code>$1</code>"), i = i.replace(/\*\*([^*]+)\*\*/g, "<strong>$1</strong>"), i = i.replace(/\*([^*]+)\*/g, "<em>$1</em>"), i = i.replace(
168
+ /\[([^\]]+)\]\(([^)\s]+)\)/g,
169
+ '<a href="$2" target="_blank" rel="noopener noreferrer">$1</a>'
170
+ ), i;
171
+ }
172
+ function me(s) {
173
+ return s.split(/\n{2,}/).map((d) => {
174
+ const n = d.split(`
175
+ `), u = n.every((l) => /^\s*[-*]\s+/.test(l)), a = n.every((l) => /^\s*\d+\.\s+/.test(l));
176
+ return u && n.length > 0 ? `<ul>${n.map((t) => t.replace(/^\s*[-*]\s+/, "")).map((t) => `<li>${_(C(t))}</li>`).join("")}</ul>` : a && n.length > 0 ? `<ol>${n.map((t) => t.replace(/^\s*\d+\.\s+/, "")).map((t) => `<li>${_(C(t))}</li>`).join("")}</ol>` : `<p>${_(C(d)).replace(
177
+ /\n/g,
178
+ "<br />"
179
+ )}</p>`;
180
+ }).join("");
181
+ }
182
+ const pe = D(
183
+ ({
184
+ id: s,
185
+ dateIso: i,
186
+ createdAtIso: d,
187
+ author: n,
188
+ clinical: u,
189
+ attachedTo: a,
190
+ content: g,
191
+ contentFormat: l = "markdown",
192
+ pinned: t,
193
+ flagged: o,
194
+ onTogglePin: h,
195
+ onToggleFlag: b,
196
+ truncate: x = !1,
197
+ surface: k = "elevated",
198
+ "aria-label": E,
199
+ className: H,
200
+ ...V
201
+ }, U) => {
202
+ const { t: r } = J(), N = A(), w = A(), [v, B] = F(!1), { ref: R, isOverflowing: W } = T(
203
+ x && !v
204
+ ), q = x && (W || v), O = G(
205
+ () => l === "html" ? g : me(g),
206
+ [g, l]
207
+ ), z = E ?? r("clinicalNoteCard.regionLabel");
208
+ ee(
209
+ ne,
210
+ {
211
+ getNoteId: () => s,
212
+ isPinned: () => !!t,
213
+ isFlagged: () => !!o,
214
+ getAttachmentKind: () => a == null ? void 0 : a.kind
215
+ },
216
+ s
217
+ );
218
+ let m = null;
219
+ if (a)
220
+ switch (a.kind) {
221
+ case "patient":
222
+ m = /* @__PURE__ */ e(
223
+ c,
224
+ {
225
+ variant: "neutral",
226
+ size: "sm",
227
+ leading: /* @__PURE__ */ e(re, { "aria-hidden": "true" }),
228
+ children: r("clinicalNoteCard.attachment.patient")
229
+ }
230
+ );
231
+ break;
232
+ case "carePlan": {
233
+ const f = r("clinicalNoteCard.attachment.carePlan", {
234
+ number: a.number
235
+ });
236
+ m = a.url && Z(a.url) ? /* @__PURE__ */ e(
237
+ X,
238
+ {
239
+ href: a.url,
240
+ intent: "default",
241
+ startIcon: /* @__PURE__ */ e(y, { "aria-hidden": "true" }),
242
+ children: f
243
+ }
244
+ ) : /* @__PURE__ */ e(
245
+ c,
246
+ {
247
+ variant: "info",
248
+ size: "sm",
249
+ leading: /* @__PURE__ */ e(y, { "aria-hidden": "true" }),
250
+ children: f
251
+ }
252
+ );
253
+ break;
254
+ }
255
+ case "carePlanEntry": {
256
+ const f = a.elements && a.elements.length > 0 ? r("clinicalNoteCard.attachment.carePlanEntryWithElements", {
257
+ care: a.careName,
258
+ elements: a.elements.join(", ")
259
+ }) : r("clinicalNoteCard.attachment.carePlanEntry", {
260
+ care: a.careName
261
+ });
262
+ m = /* @__PURE__ */ e(
263
+ c,
264
+ {
265
+ variant: "info",
266
+ size: "sm",
267
+ leading: /* @__PURE__ */ e(y, { "aria-hidden": "true" }),
268
+ children: f
269
+ }
270
+ );
271
+ break;
272
+ }
273
+ case "phase":
274
+ m = /* @__PURE__ */ e(
275
+ c,
276
+ {
277
+ variant: "neutral",
278
+ size: "sm",
279
+ leading: /* @__PURE__ */ e(se, { "aria-hidden": "true" }),
280
+ children: r("clinicalNoteCard.attachment.phase", {
281
+ label: a.label
282
+ })
283
+ }
284
+ );
285
+ break;
286
+ case "xray":
287
+ m = /* @__PURE__ */ e(
288
+ c,
289
+ {
290
+ variant: "neutral",
291
+ size: "sm",
292
+ leading: /* @__PURE__ */ e(ae, { "aria-hidden": "true" }),
293
+ children: a.label ? r("clinicalNoteCard.attachment.xrayWithLabel", {
294
+ label: a.label
295
+ }) : r("clinicalNoteCard.attachment.xray")
296
+ }
297
+ );
298
+ break;
299
+ }
300
+ const j = /* @__PURE__ */ p("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]", children: [
301
+ /* @__PURE__ */ p("div", { className: "ds:flex ds:items-start ds:gap-[var(--spacing-sm)]", children: [
302
+ n ? /* @__PURE__ */ e(
303
+ Q,
304
+ {
305
+ name: n.name,
306
+ src: n.avatarUrl,
307
+ size: "sm",
308
+ className: "ds:shrink-0",
309
+ "aria-hidden": "true",
310
+ role: "presentation",
311
+ "aria-label": void 0
312
+ }
313
+ ) : null,
314
+ /* @__PURE__ */ p("div", { className: "ds:flex-1 ds:min-w-0 ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]", children: [
315
+ n ? /* @__PURE__ */ e(
316
+ "span",
317
+ {
318
+ id: N,
319
+ className: "type-title-item ds:text-[color:var(--foreground)] ds:truncate",
320
+ children: n.name
321
+ }
322
+ ) : /* @__PURE__ */ e("span", { id: N, className: "ds:sr-only", children: z }),
323
+ /* @__PURE__ */ p("span", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-xs)] ds:gap-y-[var(--spacing-2xs)]", children: [
324
+ /* @__PURE__ */ e(L, { value: i, shape: "bare", size: "sm" }),
325
+ d && d !== i ? /* @__PURE__ */ p("span", { className: "type-meta ds:text-[color:var(--muted-foreground)]", children: [
326
+ r("clinicalNoteCard.added"),
327
+ " ",
328
+ /* @__PURE__ */ e(L, { value: d, shape: "bare", size: "sm" })
329
+ ] }) : null
330
+ ] })
331
+ ] }),
332
+ u || h || b || t || o ? /* @__PURE__ */ p("span", { className: "ds:ms-auto ds:flex ds:shrink-0 ds:flex-wrap ds:items-center ds:justify-end ds:gap-[var(--spacing-xs)]", children: [
333
+ u ? /* @__PURE__ */ e(c, { variant: "brand", size: "sm", children: r("clinicalNoteCard.clinical") }) : null,
334
+ h || b || t || o ? /* @__PURE__ */ p("span", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-2xs)]", children: [
335
+ h ? /* @__PURE__ */ e(
336
+ M,
337
+ {
338
+ pressed: !!t,
339
+ onToggle: h,
340
+ label: r(t ? "clinicalNoteCard.unpin" : "clinicalNoteCard.pin"),
341
+ activeClassName: "ds:text-[color:var(--accent)]",
342
+ icon: /* @__PURE__ */ e(
343
+ K,
344
+ {
345
+ "aria-hidden": "true",
346
+ className: "ds:size-4",
347
+ fill: t ? "currentColor" : "none"
348
+ }
349
+ )
350
+ }
351
+ ) : t ? /* @__PURE__ */ e(
352
+ c,
353
+ {
354
+ variant: "accent",
355
+ size: "sm",
356
+ leading: /* @__PURE__ */ e(K, { "aria-hidden": "true" }),
357
+ children: r("clinicalNoteCard.pinned")
358
+ }
359
+ ) : null,
360
+ b ? /* @__PURE__ */ e(
361
+ M,
362
+ {
363
+ pressed: !!o,
364
+ onToggle: b,
365
+ label: r(o ? "clinicalNoteCard.unflag" : "clinicalNoteCard.flag"),
366
+ activeClassName: "ds:text-[color:var(--warning-readable)]",
367
+ icon: /* @__PURE__ */ e(
368
+ I,
369
+ {
370
+ "aria-hidden": "true",
371
+ className: "ds:size-4",
372
+ fill: o ? "currentColor" : "none"
373
+ }
374
+ )
375
+ }
376
+ ) : o ? /* @__PURE__ */ e(
377
+ c,
378
+ {
379
+ variant: "warning",
380
+ size: "sm",
381
+ leading: /* @__PURE__ */ e(I, { "aria-hidden": "true" }),
382
+ children: r("clinicalNoteCard.flagged")
383
+ }
384
+ ) : null
385
+ ] }) : null
386
+ ] }) : null
387
+ ] }),
388
+ /* @__PURE__ */ e(
389
+ Y,
390
+ {
391
+ ref: R,
392
+ id: x ? w : void 0,
393
+ html: O,
394
+ profile: l === "html" ? "rich-text" : "markdown",
395
+ className: de({ truncate: x && !v })
396
+ }
397
+ ),
398
+ q ? /* @__PURE__ */ e(
399
+ "button",
400
+ {
401
+ type: "button",
402
+ "aria-expanded": v,
403
+ "aria-controls": w,
404
+ onClick: () => B((f) => !f),
405
+ className: ce,
406
+ children: r(v ? "clinicalNoteCard.readLess" : "clinicalNoteCard.readMore")
407
+ }
408
+ ) : null,
409
+ m ? /* @__PURE__ */ e("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: m }) : null
410
+ ] });
411
+ return /* @__PURE__ */ e(
412
+ "div",
413
+ {
414
+ ref: U,
415
+ role: "article",
416
+ "aria-label": z,
417
+ "aria-labelledby": N,
418
+ "data-component": "clinical-note-card",
419
+ "data-component-id": s,
420
+ "data-pinned": t ? "true" : void 0,
421
+ "data-flagged": o ? "true" : void 0,
422
+ "data-attached-to": a == null ? void 0 : a.kind,
423
+ id: s,
424
+ className: le({ surface: k, className: H }),
425
+ ...V,
426
+ children: k === "elevated" ? /* @__PURE__ */ e($, { variant: "elevated", children: /* @__PURE__ */ e($.Body, { children: j }) }) : j
427
+ }
428
+ );
429
+ }
430
+ );
431
+ pe.displayName = "ClinicalNoteCard";
432
+ export {
433
+ pe as C,
434
+ ne as c
435
+ };
436
+ //# sourceMappingURL=clinical-note-card-BUvNMNGL.js.map
@@ -2,7 +2,7 @@ import { jsxs as f, jsx as e, Fragment as S } from "react/jsx-runtime";
2
2
  import { forwardRef as le, useId as ce, useMemo as se } from "react";
3
3
  import { c as de } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as pe } from "react-i18next";
5
- import { B as F } from "./badge-CqGsX32l.js";
5
+ import { B as F } from "./badge-DCOqV9mI.js";
6
6
  import { C as T } from "./card-DPmk26CL.js";
7
7
  import { K as fe, a as ue } from "./key-value-pair-BrgbMfbF.js";
8
8
  import { L as d } from "./link-DrD_cRUg.js";
@@ -330,4 +330,4 @@ export {
330
330
  Me as b,
331
331
  ve as c
332
332
  };
333
- //# sourceMappingURL=contact-profile-card-Dramqa9C.js.map
333
+ //# sourceMappingURL=contact-profile-card-DDPwRFiP.js.map
@@ -0,0 +1,229 @@
1
+ import { jsx as C, jsxs as Q, Fragment as U } from "react/jsx-runtime";
2
+ import { useState as H, useCallback as R, useMemo as x, useRef as L, useContext as F, useId as W, useEffect as X, createContext as Y, forwardRef as Z } from "react";
3
+ import { useTranslation as I } from "react-i18next";
4
+ import { B as oo } from "./button-DD_0Xdmr.js";
5
+ import { A as to } from "./ai-tools-rail-B5NEghsp.js";
6
+ import { u as eo } from "./use-persistent-state-nZwZAnE9.js";
7
+ import { S as no } from "./star-vav0SJ9e.js";
8
+ const w = Y(null);
9
+ function Ro({
10
+ globalTools: e = [],
11
+ children: r
12
+ }) {
13
+ const [c, l] = H(
14
+ () => /* @__PURE__ */ new Map()
15
+ ), f = R(
16
+ (s, a) => {
17
+ l((g) => {
18
+ const y = new Map(g);
19
+ return y.set(s, a), y;
20
+ });
21
+ },
22
+ []
23
+ ), M = R((s) => {
24
+ l((a) => {
25
+ if (!a.has(s)) return a;
26
+ const g = new Map(a);
27
+ return g.delete(s), g;
28
+ });
29
+ }, []), v = x(
30
+ () => Array.from(c.values()).flat(),
31
+ [c]
32
+ ), b = L(null), P = R((s) => {
33
+ b.current = s;
34
+ }, []), m = R((s) => {
35
+ var a;
36
+ (a = b.current) == null || a.setActiveTool(s);
37
+ }, []), u = R(() => {
38
+ var s;
39
+ (s = b.current) == null || s.setActiveTool(null);
40
+ }, []), j = x(
41
+ () => ({
42
+ globalTools: e,
43
+ contextualTools: v,
44
+ registerContextualTools: f,
45
+ unregisterContextualTools: M,
46
+ registerRail: P,
47
+ openTool: m,
48
+ closeTool: u
49
+ }),
50
+ [
51
+ e,
52
+ v,
53
+ f,
54
+ M,
55
+ P,
56
+ m,
57
+ u
58
+ ]
59
+ );
60
+ return /* @__PURE__ */ C(w.Provider, { value: j, children: r });
61
+ }
62
+ function vo(e) {
63
+ const r = F(w), c = r == null ? void 0 : r.registerContextualTools, l = r == null ? void 0 : r.unregisterContextualTools, f = W();
64
+ X(() => {
65
+ if (!(!c || !l))
66
+ return c(f, e), () => l(f);
67
+ }, [c, l, f, e]);
68
+ }
69
+ function so() {
70
+ const e = F(w);
71
+ return x(() => {
72
+ if (!e) return [];
73
+ const r = e.contextualTools.map((l) => ({
74
+ ...l,
75
+ scope: "contextual"
76
+ })), c = e.globalTools.map((l) => ({
77
+ ...l,
78
+ scope: "global"
79
+ }));
80
+ return [...r, ...c];
81
+ }, [e]);
82
+ }
83
+ function go() {
84
+ const e = F(w), r = R(() => {
85
+ }, []);
86
+ return {
87
+ openTool: (e == null ? void 0 : e.openTool) ?? r,
88
+ closeTool: (e == null ? void 0 : e.closeTool) ?? r
89
+ };
90
+ }
91
+ function ro() {
92
+ const e = F(w), r = R((c) => {
93
+ }, []);
94
+ return (e == null ? void 0 : e.registerRail) ?? r;
95
+ }
96
+ const To = Z(function({
97
+ tools: r,
98
+ railLabel: c,
99
+ reorderable: l = !0,
100
+ favoriteIds: f,
101
+ defaultFavoriteIds: M,
102
+ onFavoriteIdsChange: v,
103
+ persistFavoritesKey: b = "ui.controlRoom.favorites",
104
+ ...P
105
+ }, m) {
106
+ const { t: u } = I(), j = so(), s = r ?? j, a = f !== void 0, [g, y] = eo(
107
+ b,
108
+ () => M ?? s.filter((o) => o.scope === "global").map((o) => o.id),
109
+ { disabled: a }
110
+ ), h = a ? f : g, d = x(() => {
111
+ const o = /* @__PURE__ */ new Map();
112
+ for (const n of s) o.set(n.id, n);
113
+ return o;
114
+ }, [s]), A = x(
115
+ () => new Set(h.filter((o) => d.has(o))),
116
+ [h, d]
117
+ ), N = (o) => {
118
+ const n = o(h.filter((t) => d.has(t)));
119
+ a || y((t) => o(t.filter((i) => d.has(i)))), v == null || v(n);
120
+ }, z = x(() => {
121
+ if (!l) return s;
122
+ const o = h.filter((t) => d.has(t)).map((t) => ({
123
+ ...d.get(t),
124
+ scope: "global",
125
+ reorderable: !0
126
+ })), n = s.filter((t) => !A.has(t.id)).map((t) => ({
127
+ ...t,
128
+ scope: "contextual",
129
+ reorderable: !0
130
+ }));
131
+ return [...o, ...n];
132
+ }, [l, s, h, d, A]), [E, _] = H(""), k = L(!1), $ = (o, n) => {
133
+ const t = n ? u("controlRoom.pinnedAnnounce", {
134
+ tool: o,
135
+ defaultValue: "Pinned {{tool}} to favourites"
136
+ }) : u("controlRoom.unpinnedAnnounce", {
137
+ tool: o,
138
+ defaultValue: "Removed {{tool}} from favourites"
139
+ });
140
+ k.current = !k.current, _(k.current ? t : `${t}​`);
141
+ }, q = (o) => {
142
+ var n;
143
+ $(((n = d.get(o)) == null ? void 0 : n.label) ?? o, !A.has(o)), N(
144
+ (t) => t.includes(o) ? t.filter((i) => i !== o) : [...t, o]
145
+ );
146
+ }, D = (o, n) => {
147
+ var i;
148
+ const t = (i = z[o]) == null ? void 0 : i.id;
149
+ t !== void 0 && N((T) => {
150
+ const S = T.filter((p) => d.has(p)), V = S.length;
151
+ if (o < V) {
152
+ if (n >= V) return S.filter((O) => O !== t);
153
+ const p = S.slice();
154
+ return p.splice(o, 1), p.splice(n, 0, t), p;
155
+ }
156
+ if (n <= V) {
157
+ const p = S.slice();
158
+ return p.splice(Math.min(n, V), 0, t), p;
159
+ }
160
+ return T;
161
+ });
162
+ }, G = ({
163
+ tool: o,
164
+ from: n,
165
+ to: t
166
+ }) => {
167
+ const i = A.size, T = n < i;
168
+ return T && t >= i ? u("controlRoom.unpinnedAnnounce", {
169
+ tool: o.label,
170
+ defaultValue: "Removed {{tool}} from favourites"
171
+ }) : !T && t <= i ? u("controlRoom.pinnedAnnounce", {
172
+ tool: o.label,
173
+ defaultValue: "Pinned {{tool}} to favourites"
174
+ }) : T && t < i ? u("aiToolsRail.reorderAnnounce", {
175
+ tool: o.label,
176
+ to: t + 1,
177
+ total: i,
178
+ defaultValue: "{{tool}} moved to position {{to}} of {{total}}"
179
+ }) : "";
180
+ }, J = l ? (o) => {
181
+ const n = A.has(o.id);
182
+ return /* @__PURE__ */ C("div", { className: "ds:flex ds:items-center ds:justify-end ds:px-[var(--spacing-md)] ds:py-[var(--spacing-sm)] ds:border-block-end ds:border-[var(--border)]", children: /* @__PURE__ */ C(
183
+ oo,
184
+ {
185
+ intent: "ghost",
186
+ size: "sm",
187
+ "aria-pressed": n,
188
+ startIcon: /* @__PURE__ */ C(
189
+ no,
190
+ {
191
+ "aria-hidden": "true",
192
+ fill: n ? "currentColor" : "none",
193
+ className: n ? "ds:text-[color:var(--accent)]" : void 0
194
+ }
195
+ ),
196
+ onClick: () => q(o.id),
197
+ children: u("controlRoom.favorite", { defaultValue: "Favourite" })
198
+ }
199
+ ) });
200
+ } : void 0, B = ro(), K = R(
201
+ (o) => {
202
+ B(o), typeof m == "function" ? m(o) : m && (m.current = o);
203
+ },
204
+ [B, m]
205
+ );
206
+ return /* @__PURE__ */ Q(U, { children: [
207
+ /* @__PURE__ */ C(
208
+ to,
209
+ {
210
+ ref: K,
211
+ tools: z,
212
+ railLabel: c ?? u("controlRoom.railLabel", { defaultValue: "Control room" }),
213
+ onReorder: l ? D : void 0,
214
+ formatReorderAnnouncement: l ? G : void 0,
215
+ renderPanelHeader: J,
216
+ ...P
217
+ }
218
+ ),
219
+ l ? /* @__PURE__ */ C("span", { role: "status", "aria-live": "polite", className: "ds:sr-only", children: E }) : null
220
+ ] });
221
+ });
222
+ export {
223
+ Ro as C,
224
+ To as a,
225
+ so as b,
226
+ vo as c,
227
+ go as u
228
+ };
229
+ //# sourceMappingURL=control-room-rail-Y8ryLYsP.js.map
@@ -6,7 +6,7 @@ import { F as L } from "./form-field-BOm9hK35.js";
6
6
  import { D as z } from "./date-picker-Dl9RKxaV.js";
7
7
  import { N as D } from "./number-input-DxphVG_A.js";
8
8
  import { C as E } from "./card-DPmk26CL.js";
9
- import { B as P } from "./badge-CqGsX32l.js";
9
+ import { B as P } from "./badge-DCOqV9mI.js";
10
10
  import { I as B } from "./insert-result-njqBthzT.js";
11
11
  import { a as i } from "./date-picker-variants-DAcSLTua.js";
12
12
  import { C as G } from "./check-DPdL_Sm7.js";
@@ -249,4 +249,4 @@ export {
249
249
  U as L,
250
250
  O as p
251
251
  };
252
- //# sourceMappingURL=cycle-calculator-DmRGJNaT.js.map
252
+ //# sourceMappingURL=cycle-calculator-CCmPwcBl.js.map