@alfadocs/ui-kit-debug 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 (463) hide show
  1. package/dist/_chunks/{agenda-card-BxSFkqgY.js → agenda-card-BQ-IKAru.js} +2 -2
  2. package/dist/_chunks/{agenda-card-BxSFkqgY.js.map → agenda-card-BQ-IKAru.js.map} +1 -1
  3. package/dist/_chunks/{agenda-tray-g0kg7HwB.js → agenda-tray-CGXRk58j.js} +2 -2
  4. package/dist/_chunks/{agenda-tray-g0kg7HwB.js.map → agenda-tray-CGXRk58j.js.map} +1 -1
  5. package/dist/_chunks/{ai-consent-banner-CXlsNX1c.js → ai-consent-banner-Be-h9mRI.js} +3 -3
  6. package/dist/_chunks/{ai-consent-banner-CXlsNX1c.js.map → ai-consent-banner-Be-h9mRI.js.map} +1 -1
  7. package/dist/_chunks/ai-tools-rail-B5NEghsp.js +511 -0
  8. package/dist/_chunks/ai-tools-rail-B5NEghsp.js.map +1 -0
  9. package/dist/_chunks/{alert-_mUKLmwA.js → alert-CHYZ96tR.js} +150 -96
  10. package/dist/_chunks/alert-CHYZ96tR.js.map +1 -0
  11. package/dist/_chunks/{anamnesis-card-DRmE24OQ.js → anamnesis-card-DvYCa16e.js} +2 -2
  12. package/dist/_chunks/{anamnesis-card-DRmE24OQ.js.map → anamnesis-card-DvYCa16e.js.map} +1 -1
  13. package/dist/_chunks/anatomy-scheme-CJB6dI6p.js +2445 -0
  14. package/dist/_chunks/anatomy-scheme-CJB6dI6p.js.map +1 -0
  15. package/dist/_chunks/annotation-marker-qt5R9WZX.js +120 -0
  16. package/dist/_chunks/annotation-marker-qt5R9WZX.js.map +1 -0
  17. package/dist/_chunks/{antenatal-schedule-timeline-35ebkcZT.js → antenatal-schedule-timeline-CwXrQRm1.js} +2 -2
  18. package/dist/_chunks/{antenatal-schedule-timeline-35ebkcZT.js.map → antenatal-schedule-timeline-CwXrQRm1.js.map} +1 -1
  19. package/dist/_chunks/appointment-card-C06aZqA7.js +310 -0
  20. package/dist/_chunks/appointment-card-C06aZqA7.js.map +1 -0
  21. package/dist/_chunks/appointment-timeline-BJM0S_Fg.js +386 -0
  22. package/dist/_chunks/appointment-timeline-BJM0S_Fg.js.map +1 -0
  23. package/dist/_chunks/appointment-tray-DRRw5ROi.js +193 -0
  24. package/dist/_chunks/appointment-tray-DRRw5ROi.js.map +1 -0
  25. package/dist/_chunks/{audio-recorder-DYXXnGug.js → audio-recorder-Cpdk5qpQ.js} +2 -2
  26. package/dist/_chunks/{audio-recorder-DYXXnGug.js.map → audio-recorder-Cpdk5qpQ.js.map} +1 -1
  27. package/dist/_chunks/{badge-CqGsX32l.js → badge-DCOqV9mI.js} +32 -27
  28. package/dist/_chunks/badge-DCOqV9mI.js.map +1 -0
  29. package/dist/_chunks/{bishop-score-PJI3AXzA.js → bishop-score-DnYWtZa_.js} +2 -2
  30. package/dist/_chunks/{bishop-score-PJI3AXzA.js.map → bishop-score-DnYWtZa_.js.map} +1 -1
  31. package/dist/_chunks/{bmi-calculator-BZtIJ53x.js → bmi-calculator-zjeY4E7J.js} +2 -2
  32. package/dist/_chunks/{bmi-calculator-BZtIJ53x.js.map → bmi-calculator-zjeY4E7J.js.map} +1 -1
  33. package/dist/_chunks/{booking-C3VqFReX.js → booking-DUBI0oqt.js} +4 -4
  34. package/dist/_chunks/{booking-C3VqFReX.js.map → booking-DUBI0oqt.js.map} +1 -1
  35. package/dist/_chunks/{care-plan-card-CvFGXa2z.js → care-plan-card-C5sTfY9G.js} +5 -5
  36. package/dist/_chunks/{care-plan-card-CvFGXa2z.js.map → care-plan-card-C5sTfY9G.js.map} +1 -1
  37. package/dist/_chunks/{care-plan-entry-card-C3E_gClk.js → care-plan-entry-card-CXnxGCWA.js} +5 -5
  38. package/dist/_chunks/{care-plan-entry-card-C3E_gClk.js.map → care-plan-entry-card-CXnxGCWA.js.map} +1 -1
  39. package/dist/_chunks/care-plan-header-BUwqDTtz.js +206 -0
  40. package/dist/_chunks/care-plan-header-BUwqDTtz.js.map +1 -0
  41. package/dist/_chunks/clinical-note-card-BUvNMNGL.js +436 -0
  42. package/dist/_chunks/clinical-note-card-BUvNMNGL.js.map +1 -0
  43. package/dist/_chunks/{contact-profile-card-Dramqa9C.js → contact-profile-card-DDPwRFiP.js} +2 -2
  44. package/dist/_chunks/{contact-profile-card-Dramqa9C.js.map → contact-profile-card-DDPwRFiP.js.map} +1 -1
  45. package/dist/_chunks/control-room-rail-Y8ryLYsP.js +229 -0
  46. package/dist/_chunks/control-room-rail-Y8ryLYsP.js.map +1 -0
  47. package/dist/_chunks/{cycle-calculator-DmRGJNaT.js → cycle-calculator-CCmPwcBl.js} +2 -2
  48. package/dist/_chunks/{cycle-calculator-DmRGJNaT.js.map → cycle-calculator-CCmPwcBl.js.map} +1 -1
  49. package/dist/_chunks/{dependent-selector-CG_FOHya.js → dependent-selector-DUV4thxX.js} +2 -2
  50. package/dist/_chunks/{dependent-selector-CG_FOHya.js.map → dependent-selector-DUV4thxX.js.map} +1 -1
  51. package/dist/_chunks/{document-scanner-CTubA0-N.js → document-scanner-C_AxLooF.js} +3 -3
  52. package/dist/_chunks/{document-scanner-CTubA0-N.js.map → document-scanner-C_AxLooF.js.map} +1 -1
  53. package/dist/_chunks/{due-date-calculator-BTmsIQqD.js → due-date-calculator-Brdj-euS.js} +3 -3
  54. package/dist/_chunks/{due-date-calculator-BTmsIQqD.js.map → due-date-calculator-Brdj-euS.js.map} +1 -1
  55. package/dist/_chunks/editable-currency-cell-renderer-C9twtALM.js +328 -0
  56. package/dist/_chunks/editable-currency-cell-renderer-C9twtALM.js.map +1 -0
  57. package/dist/_chunks/email-input-DJ7EXklP.js +397 -0
  58. package/dist/_chunks/{email-input-B_Y55f5G.js.map → email-input-DJ7EXklP.js.map} +1 -1
  59. package/dist/_chunks/{entity-card-COhmqHly.js → entity-card-9_62gY7l.js} +38 -20
  60. package/dist/_chunks/{entity-card-COhmqHly.js.map → entity-card-9_62gY7l.js.map} +1 -1
  61. package/dist/_chunks/entity-summary-BxRjFh_4.js +138 -0
  62. package/dist/_chunks/entity-summary-BxRjFh_4.js.map +1 -0
  63. package/dist/_chunks/{fetal-weight-CRz7KE2D.js → fetal-weight-DNCkyeVo.js} +2 -2
  64. package/dist/_chunks/{fetal-weight-CRz7KE2D.js.map → fetal-weight-DNCkyeVo.js.map} +1 -1
  65. package/dist/_chunks/field-value-NXYczdpO.js +415 -0
  66. package/dist/_chunks/field-value-NXYczdpO.js.map +1 -0
  67. package/dist/_chunks/{file-upload-5ScQd4fE.js → file-upload-DwZcAK8D.js} +2 -1
  68. package/dist/_chunks/{file-upload-5ScQd4fE.js.map → file-upload-DwZcAK8D.js.map} +1 -1
  69. package/dist/_chunks/{freemium-paywall-DZ2mBS3w.js → freemium-paywall-WYlNO7yT.js} +2 -2
  70. package/dist/_chunks/{freemium-paywall-DZ2mBS3w.js.map → freemium-paywall-WYlNO7yT.js.map} +1 -1
  71. package/dist/_chunks/{gestational-age-calculator-BleUdhbI.js → gestational-age-calculator-CF2ISaYQ.js} +3 -3
  72. package/dist/_chunks/{gestational-age-calculator-BleUdhbI.js.map → gestational-age-calculator-CF2ISaYQ.js.map} +1 -1
  73. package/dist/_chunks/hash-CysBBS_N.js +17 -0
  74. package/dist/_chunks/hash-CysBBS_N.js.map +1 -0
  75. package/dist/_chunks/{hcg-doubling-CnjDXX6U.js → hcg-doubling-C7bmuaU3.js} +2 -2
  76. package/dist/_chunks/{hcg-doubling-CnjDXX6U.js.map → hcg-doubling-C7bmuaU3.js.map} +1 -1
  77. package/dist/_chunks/{actions-cell-renderer-DrcaxB0w.js → link-cell-renderer-CTXqtXV-.js} +715 -592
  78. package/dist/_chunks/link-cell-renderer-CTXqtXV-.js.map +1 -0
  79. package/dist/_chunks/lock-CKOIn0IK.js +15 -0
  80. package/dist/_chunks/lock-CKOIn0IK.js.map +1 -0
  81. package/dist/_chunks/{marketplace-app-shell-6T9W4Knl.js → marketplace-app-shell-Skhfp6vK.js} +3 -3
  82. package/dist/_chunks/{marketplace-app-shell-6T9W4Knl.js.map → marketplace-app-shell-Skhfp6vK.js.map} +1 -1
  83. package/dist/_chunks/notes-panel-ay8_lPrA.js +158 -0
  84. package/dist/_chunks/notes-panel-ay8_lPrA.js.map +1 -0
  85. package/dist/_chunks/{notification-card-BiESdm8q.js → notification-card-D2jiKSJJ.js} +27 -23
  86. package/dist/_chunks/notification-card-D2jiKSJJ.js.map +1 -0
  87. package/dist/_chunks/{notification-tray-Btb9oQeZ.js → notification-tray-AEun6DN2.js} +2 -2
  88. package/dist/_chunks/{notification-tray-Btb9oQeZ.js.map → notification-tray-AEun6DN2.js.map} +1 -1
  89. package/dist/_chunks/{operator-hero-CP2Nhupm.js → operator-hero-CR0Rqh4-.js} +3 -3
  90. package/dist/_chunks/{operator-hero-CP2Nhupm.js.map → operator-hero-CR0Rqh4-.js.map} +1 -1
  91. package/dist/_chunks/patient-details-Dlhqb5ig.js +675 -0
  92. package/dist/_chunks/patient-details-Dlhqb5ig.js.map +1 -0
  93. package/dist/_chunks/{patient-search-CBC_ySF6.js → patient-search-Be6cLrHR.js} +2 -2
  94. package/dist/_chunks/{patient-search-CBC_ySF6.js.map → patient-search-Be6cLrHR.js.map} +1 -1
  95. package/dist/_chunks/patient-summary-card-WySCMwwA.js +437 -0
  96. package/dist/_chunks/patient-summary-card-WySCMwwA.js.map +1 -0
  97. package/dist/_chunks/patient-table-CHxf3Oqk.js +1110 -0
  98. package/dist/_chunks/patient-table-CHxf3Oqk.js.map +1 -0
  99. package/dist/_chunks/{payment-form-DvjwYVIT.js → payment-form-CxqIXqw7.js} +2 -2
  100. package/dist/_chunks/{payment-form-DvjwYVIT.js.map → payment-form-CxqIXqw7.js.map} +1 -1
  101. package/dist/_chunks/{payment-request-card-DioWKBUq.js → payment-request-card-BcZJwu9z.js} +125 -136
  102. package/dist/_chunks/payment-request-card-BcZJwu9z.js.map +1 -0
  103. package/dist/_chunks/{pdf-viewer-D6BPfW2D.js → pdf-viewer-QfebdLOd.js} +192 -214
  104. package/dist/_chunks/pdf-viewer-QfebdLOd.js.map +1 -0
  105. package/dist/_chunks/{periodontal-chart-card-BuDEMbHE.js → periodontal-chart-card-hRRJY1NN.js} +2 -2
  106. package/dist/_chunks/{periodontal-chart-card-BuDEMbHE.js.map → periodontal-chart-card-hRRJY1NN.js.map} +1 -1
  107. package/dist/_chunks/{practice-results-KrTHqZua.js → practice-results-C6qDfxos.js} +3 -3
  108. package/dist/_chunks/{practice-results-KrTHqZua.js.map → practice-results-C6qDfxos.js.map} +1 -1
  109. package/dist/_chunks/{pregnancy-dating-DORUAOHB.js → pregnancy-dating-CRVWswD-.js} +3 -3
  110. package/dist/_chunks/{pregnancy-dating-DORUAOHB.js.map → pregnancy-dating-CRVWswD-.js.map} +1 -1
  111. package/dist/_chunks/{pregnancy-weight-gain-DVz4rr7-.js → pregnancy-weight-gain-BUNpTsH-.js} +2 -2
  112. package/dist/_chunks/{pregnancy-weight-gain-DVz4rr7-.js.map → pregnancy-weight-gain-BUNpTsH-.js.map} +1 -1
  113. package/dist/_chunks/radiograph-panel.agent-CAX-C3g3.js +558 -0
  114. package/dist/_chunks/radiograph-panel.agent-CAX-C3g3.js.map +1 -0
  115. package/dist/_chunks/{rich-text-editor-BsV7zUdg.js → rich-text-editor-DlCqPixb.js} +410 -394
  116. package/dist/_chunks/{rich-text-editor-BsV7zUdg.js.map → rich-text-editor-DlCqPixb.js.map} +1 -1
  117. package/dist/_chunks/{sign-document-B4DeRhTe.js → sign-document-By6hMOra.js} +2 -2
  118. package/dist/_chunks/{sign-document-B4DeRhTe.js.map → sign-document-By6hMOra.js.map} +1 -1
  119. package/dist/_chunks/{stepper-accordion-Dki6r9ZE.js → stepper-accordion-DC-H-8v4.js} +38 -48
  120. package/dist/_chunks/stepper-accordion-DC-H-8v4.js.map +1 -0
  121. package/dist/_chunks/tab-bar-Bv9nGNdO.js +262 -0
  122. package/dist/_chunks/tab-bar-Bv9nGNdO.js.map +1 -0
  123. package/dist/_chunks/tooth-scheme-BhQoPNBD.js +2131 -0
  124. package/dist/_chunks/tooth-scheme-BhQoPNBD.js.map +1 -0
  125. package/dist/_chunks/{transaction-chip-DK84XCBU.js → transaction-chip-CscoQbxF.js} +88 -61
  126. package/dist/_chunks/transaction-chip-CscoQbxF.js.map +1 -0
  127. package/dist/_chunks/use-clamp-overflow-DQE2kwZ9.js +20 -0
  128. package/dist/_chunks/use-clamp-overflow-DQE2kwZ9.js.map +1 -0
  129. package/dist/_chunks/use-overflow-collapse-BIOzKbni.js +32 -0
  130. package/dist/_chunks/use-overflow-collapse-BIOzKbni.js.map +1 -0
  131. package/dist/_chunks/use-persistent-state-nZwZAnE9.js +24 -0
  132. package/dist/_chunks/use-persistent-state-nZwZAnE9.js.map +1 -0
  133. package/dist/_chunks/{warning-stack-BsgaEbL8.js → warning-stack--sTrrBDA.js} +86 -101
  134. package/dist/_chunks/warning-stack--sTrrBDA.js.map +1 -0
  135. package/dist/_chunks/{workflow-map-Bdam9pGp.js → workflow-map-Dy8mLCqF.js} +3 -3
  136. package/dist/_chunks/{workflow-map-Bdam9pGp.js.map → workflow-map-Dy8mLCqF.js.map} +1 -1
  137. package/dist/_chunks/zoom-out-CgVtf2Wx.js +29 -0
  138. package/dist/_chunks/zoom-out-CgVtf2Wx.js.map +1 -0
  139. package/dist/agent/index.js +5 -4
  140. package/dist/agent/index.js.map +1 -1
  141. package/dist/agent/types.d.ts +19 -2
  142. package/dist/agent/types.d.ts.map +1 -1
  143. package/dist/agent-catalog.json +1253 -86
  144. package/dist/agent-i18n/en.json +108 -6
  145. package/dist/components/_shared/entity-card/entity-card.d.ts +6 -0
  146. package/dist/components/_shared/entity-card/entity-card.d.ts.map +1 -1
  147. package/dist/components/_shared/entity-card/index.d.ts +1 -1
  148. package/dist/components/_shared/entity-card/index.d.ts.map +1 -1
  149. package/dist/components/_shared/field-value.d.ts +21 -0
  150. package/dist/components/_shared/field-value.d.ts.map +1 -0
  151. package/dist/components/_shared/field-visibility-cog.d.ts +20 -0
  152. package/dist/components/_shared/field-visibility-cog.d.ts.map +1 -0
  153. package/dist/components/_shared/field-visibility.d.ts +36 -0
  154. package/dist/components/_shared/field-visibility.d.ts.map +1 -0
  155. package/dist/components/_shared/patient-fields.d.ts +119 -0
  156. package/dist/components/_shared/patient-fields.d.ts.map +1 -0
  157. package/dist/components/agenda-card/index.js +1 -1
  158. package/dist/components/agenda-tray/index.js +1 -1
  159. package/dist/components/ai-consent-banner/index.js +1 -1
  160. package/dist/components/ai-tools-rail/ai-tools-rail.d.ts +75 -0
  161. package/dist/components/ai-tools-rail/ai-tools-rail.d.ts.map +1 -1
  162. package/dist/components/ai-tools-rail/index.js +1 -1
  163. package/dist/components/alert/alert.d.ts +5 -0
  164. package/dist/components/alert/alert.d.ts.map +1 -1
  165. package/dist/components/alert/index.js +1 -1
  166. package/dist/components/anamnesis-card/index.js +1 -1
  167. package/dist/components/anatomy-scheme/anatomy-face-paths.d.ts +15 -0
  168. package/dist/components/anatomy-scheme/anatomy-face-paths.d.ts.map +1 -0
  169. package/dist/components/anatomy-scheme/anatomy-muscle-paths.d.ts +20 -0
  170. package/dist/components/anatomy-scheme/anatomy-muscle-paths.d.ts.map +1 -0
  171. package/dist/components/anatomy-scheme/anatomy-scheme-data.d.ts +121 -0
  172. package/dist/components/anatomy-scheme/anatomy-scheme-data.d.ts.map +1 -0
  173. package/dist/components/anatomy-scheme/anatomy-scheme.agent.d.ts +6 -0
  174. package/dist/components/anatomy-scheme/anatomy-scheme.agent.d.ts.map +1 -0
  175. package/dist/components/anatomy-scheme/anatomy-scheme.d.ts +69 -0
  176. package/dist/components/anatomy-scheme/anatomy-scheme.d.ts.map +1 -0
  177. package/dist/components/anatomy-scheme/index.d.ts +6 -0
  178. package/dist/components/anatomy-scheme/index.d.ts.map +1 -0
  179. package/dist/components/anatomy-scheme/index.js +17 -0
  180. package/dist/components/anatomy-scheme/index.js.map +1 -0
  181. package/dist/components/annotation-marker/annotation-marker.d.ts +33 -0
  182. package/dist/components/annotation-marker/annotation-marker.d.ts.map +1 -0
  183. package/dist/components/annotation-marker/index.d.ts +3 -0
  184. package/dist/components/annotation-marker/index.d.ts.map +1 -0
  185. package/dist/components/annotation-marker/index.js +7 -0
  186. package/dist/components/annotation-marker/index.js.map +1 -0
  187. package/dist/components/appointment-card/appointment-card.d.ts +25 -1
  188. package/dist/components/appointment-card/appointment-card.d.ts.map +1 -1
  189. package/dist/components/appointment-card/index.js +6 -5
  190. package/dist/components/appointment-card/index.js.map +1 -1
  191. package/dist/components/appointment-timeline/appointment-timeline.agent.d.ts +4 -0
  192. package/dist/components/appointment-timeline/appointment-timeline.agent.d.ts.map +1 -0
  193. package/dist/components/appointment-timeline/appointment-timeline.d.ts +66 -0
  194. package/dist/components/appointment-timeline/appointment-timeline.d.ts.map +1 -0
  195. package/dist/components/appointment-timeline/index.d.ts +4 -0
  196. package/dist/components/appointment-timeline/index.d.ts.map +1 -0
  197. package/dist/components/appointment-timeline/index.js +6 -0
  198. package/dist/components/appointment-timeline/index.js.map +1 -0
  199. package/dist/components/audio-recorder/index.js +1 -1
  200. package/dist/components/badge/badge.d.ts +6 -2
  201. package/dist/components/badge/badge.d.ts.map +1 -1
  202. package/dist/components/badge/index.js +1 -1
  203. package/dist/components/bishop-score/index.js +1 -1
  204. package/dist/components/bmi-calculator/index.js +1 -1
  205. package/dist/components/booking/index.js +1 -1
  206. package/dist/components/care-plan-card/index.js +1 -1
  207. package/dist/components/care-plan-entry-card/index.js +1 -1
  208. package/dist/components/care-plan-header/care-plan-header.agent.d.ts +4 -0
  209. package/dist/components/care-plan-header/care-plan-header.agent.d.ts.map +1 -0
  210. package/dist/components/care-plan-header/care-plan-header.d.ts +100 -0
  211. package/dist/components/care-plan-header/care-plan-header.d.ts.map +1 -0
  212. package/dist/components/care-plan-header/index.d.ts +4 -0
  213. package/dist/components/care-plan-header/index.d.ts.map +1 -0
  214. package/dist/components/care-plan-header/index.js +6 -0
  215. package/dist/components/care-plan-header/index.js.map +1 -0
  216. package/dist/components/clinical-note-card/clinical-note-card.d.ts +21 -1
  217. package/dist/components/clinical-note-card/clinical-note-card.d.ts.map +1 -1
  218. package/dist/components/clinical-note-card/index.js +1 -1
  219. package/dist/components/contact-profile-card/index.js +1 -1
  220. package/dist/components/control-room-rail/control-room-context.d.ts +53 -0
  221. package/dist/components/control-room-rail/control-room-context.d.ts.map +1 -0
  222. package/dist/components/control-room-rail/control-room-rail.d.ts +35 -0
  223. package/dist/components/control-room-rail/control-room-rail.d.ts.map +1 -0
  224. package/dist/components/control-room-rail/index.d.ts +5 -0
  225. package/dist/components/control-room-rail/index.d.ts.map +1 -0
  226. package/dist/components/control-room-rail/index.js +9 -0
  227. package/dist/components/control-room-rail/index.js.map +1 -0
  228. package/dist/components/cycle-calculator/index.js +1 -1
  229. package/dist/components/data-table/cell-renderers/actions-cell-renderer.d.ts +18 -0
  230. package/dist/components/data-table/cell-renderers/actions-cell-renderer.d.ts.map +1 -1
  231. package/dist/components/data-table/index.d.ts +1 -1
  232. package/dist/components/data-table/index.d.ts.map +1 -1
  233. package/dist/components/data-table/index.js +32 -31
  234. package/dist/components/dependent-selector/index.js +1 -1
  235. package/dist/components/document-scanner/index.js +1 -1
  236. package/dist/components/due-date-calculator/index.js +2 -2
  237. package/dist/components/email-input/email-input.d.ts.map +1 -1
  238. package/dist/components/email-input/index.js +1 -1
  239. package/dist/components/entity-summary/entity-summary.d.ts +43 -0
  240. package/dist/components/entity-summary/entity-summary.d.ts.map +1 -0
  241. package/dist/components/entity-summary/index.d.ts +3 -0
  242. package/dist/components/entity-summary/index.d.ts.map +1 -0
  243. package/dist/components/entity-summary/index.js +5 -0
  244. package/dist/components/entity-summary/index.js.map +1 -0
  245. package/dist/components/fetal-weight/index.js +1 -1
  246. package/dist/components/file-upload/index.js +1 -1
  247. package/dist/components/freemium-paywall/index.js +1 -1
  248. package/dist/components/gestational-age-calculator/index.js +1 -1
  249. package/dist/components/hcg-doubling/index.js +1 -1
  250. package/dist/components/index.d.ts +9 -0
  251. package/dist/components/index.d.ts.map +1 -1
  252. package/dist/components/notes-panel/index.d.ts +3 -0
  253. package/dist/components/notes-panel/index.d.ts.map +1 -0
  254. package/dist/components/notes-panel/index.js +5 -0
  255. package/dist/components/notes-panel/index.js.map +1 -0
  256. package/dist/components/notes-panel/notes-panel.d.ts +64 -0
  257. package/dist/components/notes-panel/notes-panel.d.ts.map +1 -0
  258. package/dist/components/notification-card/index.js +1 -1
  259. package/dist/components/notification-card/notification-card.d.ts.map +1 -1
  260. package/dist/components/notification-tray/index.js +1 -1
  261. package/dist/components/operator-hero/index.js +1 -1
  262. package/dist/components/patient-details/index.d.ts +5 -0
  263. package/dist/components/patient-details/index.d.ts.map +1 -0
  264. package/dist/components/patient-details/index.js +6 -0
  265. package/dist/components/patient-details/index.js.map +1 -0
  266. package/dist/components/patient-details/patient-details.agent.d.ts +4 -0
  267. package/dist/components/patient-details/patient-details.agent.d.ts.map +1 -0
  268. package/dist/components/patient-details/patient-details.d.ts +96 -0
  269. package/dist/components/patient-details/patient-details.d.ts.map +1 -0
  270. package/dist/components/patient-search/index.js +1 -1
  271. package/dist/components/patient-summary-card/index.js +1 -1
  272. package/dist/components/patient-summary-card/patient-summary-card.agent.d.ts.map +1 -1
  273. package/dist/components/patient-summary-card/patient-summary-card.d.ts +40 -1
  274. package/dist/components/patient-summary-card/patient-summary-card.d.ts.map +1 -1
  275. package/dist/components/patient-table/columns.d.ts +69 -40
  276. package/dist/components/patient-table/columns.d.ts.map +1 -1
  277. package/dist/components/patient-table/index.d.ts +2 -6
  278. package/dist/components/patient-table/index.d.ts.map +1 -1
  279. package/dist/components/patient-table/index.js +8 -9
  280. package/dist/components/patient-table/patient-table.d.ts +38 -4
  281. package/dist/components/patient-table/patient-table.d.ts.map +1 -1
  282. package/dist/components/patient-table/types.d.ts +52 -2
  283. package/dist/components/patient-table/types.d.ts.map +1 -1
  284. package/dist/components/patient-table/use-responsive-columns.d.ts +8 -6
  285. package/dist/components/patient-table/use-responsive-columns.d.ts.map +1 -1
  286. package/dist/components/payment-card/index.js +1 -1
  287. package/dist/components/payment-form/index.js +1 -1
  288. package/dist/components/pdf-viewer/index.js +1 -1
  289. package/dist/components/periodontal-chart-card/index.js +1 -1
  290. package/dist/components/practice-results/index.js +1 -1
  291. package/dist/components/pregnancy-dating/index.js +1 -1
  292. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  293. package/dist/components/radiograph-panel/index.d.ts +4 -0
  294. package/dist/components/radiograph-panel/index.d.ts.map +1 -0
  295. package/dist/components/radiograph-panel/index.js +7 -0
  296. package/dist/components/radiograph-panel/index.js.map +1 -0
  297. package/dist/components/radiograph-panel/radiograph-panel.agent.d.ts +13 -0
  298. package/dist/components/radiograph-panel/radiograph-panel.agent.d.ts.map +1 -0
  299. package/dist/components/radiograph-panel/radiograph-panel.d.ts +36 -0
  300. package/dist/components/radiograph-panel/radiograph-panel.d.ts.map +1 -0
  301. package/dist/components/rich-text-editor/index.js +1 -1
  302. package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
  303. package/dist/components/sidebar/index.js +1 -1
  304. package/dist/components/sign-document/index.js +1 -1
  305. package/dist/components/stepper-accordion/index.js +1 -1
  306. package/dist/components/tab-bar/index.js +1 -1
  307. package/dist/components/tab-bar/tab-bar.d.ts +18 -1
  308. package/dist/components/tab-bar/tab-bar.d.ts.map +1 -1
  309. package/dist/components/tooth-scheme/index.d.ts +2 -2
  310. package/dist/components/tooth-scheme/index.d.ts.map +1 -1
  311. package/dist/components/tooth-scheme/index.js +30 -23
  312. package/dist/components/tooth-scheme/tooth-data.d.ts +112 -1
  313. package/dist/components/tooth-scheme/tooth-data.d.ts.map +1 -1
  314. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts +2 -2
  315. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts.map +1 -1
  316. package/dist/components/tooth-scheme/tooth-scheme.d.ts +75 -11
  317. package/dist/components/tooth-scheme/tooth-scheme.d.ts.map +1 -1
  318. package/dist/components/transaction-chip/index.js +1 -1
  319. package/dist/components/transaction-chip/transaction-chip.d.ts +2 -2
  320. package/dist/components/transaction-chip/transaction-chip.d.ts.map +1 -1
  321. package/dist/components/warning-stack/index.js +1 -1
  322. package/dist/components/warning-stack/warning-stack.d.ts +10 -7
  323. package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
  324. package/dist/components/workflow/index.js +1 -1
  325. package/dist/hooks/index.d.ts +1 -0
  326. package/dist/hooks/index.d.ts.map +1 -1
  327. package/dist/hooks/index.js +24 -22
  328. package/dist/hooks/index.js.map +1 -1
  329. package/dist/hooks/use-clamp-overflow.d.ts +19 -0
  330. package/dist/hooks/use-clamp-overflow.d.ts.map +1 -0
  331. package/dist/hooks/use-overflow-collapse.d.ts +46 -0
  332. package/dist/hooks/use-overflow-collapse.d.ts.map +1 -0
  333. package/dist/hooks/use-persistent-state.d.ts +7 -1
  334. package/dist/hooks/use-persistent-state.d.ts.map +1 -1
  335. package/dist/hooks/use-scroll-overflow.d.ts +36 -0
  336. package/dist/hooks/use-scroll-overflow.d.ts.map +1 -0
  337. package/dist/i18n/locales/ar.d.ts +308 -24
  338. package/dist/i18n/locales/ar.d.ts.map +1 -1
  339. package/dist/i18n/locales/ar.js +322 -27
  340. package/dist/i18n/locales/ar.js.map +1 -1
  341. package/dist/i18n/locales/de.d.ts +308 -24
  342. package/dist/i18n/locales/de.d.ts.map +1 -1
  343. package/dist/i18n/locales/de.js +322 -27
  344. package/dist/i18n/locales/de.js.map +1 -1
  345. package/dist/i18n/locales/el.d.ts +308 -24
  346. package/dist/i18n/locales/el.d.ts.map +1 -1
  347. package/dist/i18n/locales/el.js +322 -27
  348. package/dist/i18n/locales/el.js.map +1 -1
  349. package/dist/i18n/locales/en.d.ts +309 -32
  350. package/dist/i18n/locales/en.d.ts.map +1 -1
  351. package/dist/i18n/locales/en.js +323 -35
  352. package/dist/i18n/locales/en.js.map +1 -1
  353. package/dist/i18n/locales/es.d.ts +308 -24
  354. package/dist/i18n/locales/es.d.ts.map +1 -1
  355. package/dist/i18n/locales/es.js +322 -27
  356. package/dist/i18n/locales/es.js.map +1 -1
  357. package/dist/i18n/locales/fr.d.ts +308 -24
  358. package/dist/i18n/locales/fr.d.ts.map +1 -1
  359. package/dist/i18n/locales/fr.js +322 -27
  360. package/dist/i18n/locales/fr.js.map +1 -1
  361. package/dist/i18n/locales/hi.d.ts +308 -24
  362. package/dist/i18n/locales/hi.d.ts.map +1 -1
  363. package/dist/i18n/locales/hi.js +322 -27
  364. package/dist/i18n/locales/hi.js.map +1 -1
  365. package/dist/i18n/locales/it.d.ts +308 -24
  366. package/dist/i18n/locales/it.d.ts.map +1 -1
  367. package/dist/i18n/locales/it.js +322 -27
  368. package/dist/i18n/locales/it.js.map +1 -1
  369. package/dist/i18n/locales/ja.d.ts +308 -24
  370. package/dist/i18n/locales/ja.d.ts.map +1 -1
  371. package/dist/i18n/locales/ja.js +322 -27
  372. package/dist/i18n/locales/ja.js.map +1 -1
  373. package/dist/i18n/locales/nl.d.ts +308 -24
  374. package/dist/i18n/locales/nl.d.ts.map +1 -1
  375. package/dist/i18n/locales/nl.js +322 -27
  376. package/dist/i18n/locales/nl.js.map +1 -1
  377. package/dist/i18n/locales/pl.d.ts +308 -24
  378. package/dist/i18n/locales/pl.d.ts.map +1 -1
  379. package/dist/i18n/locales/pl.js +322 -27
  380. package/dist/i18n/locales/pl.js.map +1 -1
  381. package/dist/i18n/locales/pt.d.ts +308 -24
  382. package/dist/i18n/locales/pt.d.ts.map +1 -1
  383. package/dist/i18n/locales/pt.js +322 -27
  384. package/dist/i18n/locales/pt.js.map +1 -1
  385. package/dist/i18n/locales/ro.d.ts +308 -24
  386. package/dist/i18n/locales/ro.d.ts.map +1 -1
  387. package/dist/i18n/locales/ro.js +322 -27
  388. package/dist/i18n/locales/ro.js.map +1 -1
  389. package/dist/i18n/locales/ru.d.ts +308 -24
  390. package/dist/i18n/locales/ru.d.ts.map +1 -1
  391. package/dist/i18n/locales/ru.js +322 -27
  392. package/dist/i18n/locales/ru.js.map +1 -1
  393. package/dist/i18n/locales/sq.d.ts +308 -24
  394. package/dist/i18n/locales/sq.d.ts.map +1 -1
  395. package/dist/i18n/locales/sq.js +322 -27
  396. package/dist/i18n/locales/sq.js.map +1 -1
  397. package/dist/i18n/locales/sv.d.ts +308 -24
  398. package/dist/i18n/locales/sv.d.ts.map +1 -1
  399. package/dist/i18n/locales/sv.js +322 -27
  400. package/dist/i18n/locales/sv.js.map +1 -1
  401. package/dist/i18n/locales/tr.d.ts +308 -24
  402. package/dist/i18n/locales/tr.d.ts.map +1 -1
  403. package/dist/i18n/locales/tr.js +322 -27
  404. package/dist/i18n/locales/tr.js.map +1 -1
  405. package/dist/i18n/locales/zh.d.ts +308 -24
  406. package/dist/i18n/locales/zh.d.ts.map +1 -1
  407. package/dist/i18n/locales/zh.js +322 -27
  408. package/dist/i18n/locales/zh.js.map +1 -1
  409. package/dist/index.js +672 -623
  410. package/dist/index.js.map +1 -1
  411. package/dist/locales/ar.json +311 -27
  412. package/dist/locales/de.json +311 -27
  413. package/dist/locales/el.json +311 -27
  414. package/dist/locales/en.json +311 -27
  415. package/dist/locales/es.json +311 -27
  416. package/dist/locales/fr.json +311 -27
  417. package/dist/locales/hi.json +311 -27
  418. package/dist/locales/it.json +311 -27
  419. package/dist/locales/ja.json +311 -27
  420. package/dist/locales/nl.json +311 -27
  421. package/dist/locales/pl.json +311 -27
  422. package/dist/locales/pt.json +311 -27
  423. package/dist/locales/ro.json +311 -27
  424. package/dist/locales/ru.json +311 -27
  425. package/dist/locales/sq.json +311 -27
  426. package/dist/locales/sv.json +311 -27
  427. package/dist/locales/tr.json +311 -27
  428. package/dist/locales/zh.json +311 -27
  429. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  430. package/dist/tokens.css +1 -1
  431. package/package.json +37 -1
  432. package/dist/_chunks/actions-cell-renderer-DrcaxB0w.js.map +0 -1
  433. package/dist/_chunks/ai-tools-rail-BA_sqy1A.js +0 -373
  434. package/dist/_chunks/ai-tools-rail-BA_sqy1A.js.map +0 -1
  435. package/dist/_chunks/alert-_mUKLmwA.js.map +0 -1
  436. package/dist/_chunks/appointment-tray-CZtvtaH-.js +0 -431
  437. package/dist/_chunks/appointment-tray-CZtvtaH-.js.map +0 -1
  438. package/dist/_chunks/badge-CqGsX32l.js.map +0 -1
  439. package/dist/_chunks/clinical-note-card-DqQYf_D4.js +0 -333
  440. package/dist/_chunks/clinical-note-card-DqQYf_D4.js.map +0 -1
  441. package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js +0 -448
  442. package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js.map +0 -1
  443. package/dist/_chunks/email-input-B_Y55f5G.js +0 -396
  444. package/dist/_chunks/notification-card-BiESdm8q.js.map +0 -1
  445. package/dist/_chunks/patient-summary-card-B836_fDB.js +0 -435
  446. package/dist/_chunks/patient-summary-card-B836_fDB.js.map +0 -1
  447. package/dist/_chunks/patient-table-CDuosVru.js +0 -889
  448. package/dist/_chunks/patient-table-CDuosVru.js.map +0 -1
  449. package/dist/_chunks/payment-request-card-DioWKBUq.js.map +0 -1
  450. package/dist/_chunks/pdf-viewer-D6BPfW2D.js.map +0 -1
  451. package/dist/_chunks/stepper-accordion-Dki6r9ZE.js.map +0 -1
  452. package/dist/_chunks/tab-bar-B1ovILzh.js +0 -105
  453. package/dist/_chunks/tab-bar-B1ovILzh.js.map +0 -1
  454. package/dist/_chunks/tooth-scheme-yBr53cvv.js +0 -1330
  455. package/dist/_chunks/tooth-scheme-yBr53cvv.js.map +0 -1
  456. package/dist/_chunks/transaction-chip-DK84XCBU.js.map +0 -1
  457. package/dist/_chunks/use-persistent-state-i23OWy6G.js +0 -24
  458. package/dist/_chunks/use-persistent-state-i23OWy6G.js.map +0 -1
  459. package/dist/_chunks/warning-stack-BsgaEbL8.js.map +0 -1
  460. package/dist/components/patient-table/cell-renderers/contact-cell.d.ts +0 -45
  461. package/dist/components/patient-table/cell-renderers/contact-cell.d.ts.map +0 -1
  462. package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts +0 -26
  463. package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts.map +0 -1
@@ -1,25 +1,40 @@
1
- import { jsxs as V, jsx as t } from "react/jsx-runtime";
2
- import { forwardRef as a, useState as E, useRef as R, useCallback as z, Children as B, isValidElement as D } from "react";
3
- import { c as L } from "./index-D2ZczOXr.js";
4
- import { useTranslation as F } from "react-i18next";
5
- import { u as M } from "./use-controllable-state-BiY4xTzM.js";
6
- import { X as U } from "./x-CCcI3eJp.js";
7
- import { c as W } from "./createLucideIcon-CrFbzy84.js";
8
- import { C as X } from "./circle-x-Du2CmjaU.js";
9
- import { T as G } from "./triangle-alert-CBPUIzQo.js";
10
- import { C as H } from "./circle-check-9AeSgJD_.js";
11
- import { I as P } from "./info-B9XNKn05.js";
1
+ import { jsxs as k, jsx as e, Fragment as U } from "react/jsx-runtime";
2
+ import { forwardRef as v, useState as I, useRef as M, useCallback as _, Children as P, isValidElement as W, useContext as O, useId as X, createContext as G } from "react";
3
+ import { c as H } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as R } from "react-i18next";
5
+ import { u as $ } from "./use-controllable-state-BiY4xTzM.js";
6
+ import { u as S } from "./use-clamp-overflow-DQE2kwZ9.js";
7
+ import { T as q } from "./tooltip-DvmfrNvB.js";
8
+ import { X as J } from "./x-CCcI3eJp.js";
9
+ import { c as K } from "./createLucideIcon-CrFbzy84.js";
10
+ import { C as Q } from "./circle-x-Du2CmjaU.js";
11
+ import { T as Y } from "./triangle-alert-CBPUIzQo.js";
12
+ import { C as Z } from "./circle-check-9AeSgJD_.js";
13
+ import { I as ee } from "./info-B9XNKn05.js";
12
14
  /**
13
15
  * @license lucide-react v1.8.0 - ISC
14
16
  *
15
17
  * This source code is licensed under the ISC license.
16
18
  * See the LICENSE file in the root directory of this source tree.
17
19
  */
18
- const $ = [
20
+ const te = [
19
21
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
20
22
  ["path", { d: "m16 12-4-4-4 4", key: "177agl" }],
21
23
  ["path", { d: "M12 16V8", key: "1sbj14" }]
22
- ], q = W("circle-arrow-up", $), J = L(
24
+ ], se = K("circle-arrow-up", te), C = G(!1), oe = [
25
+ // Full-opacity `text-current` so it matches the body text's contrast (an
26
+ // `opacity` dim would drop the variant-tinted text below AA). Underline
27
+ // carries the affordance instead. No `--min-target-size` floor: this is an
28
+ // inline text disclosure sitting in the flow of the body copy, which is
29
+ // exempt from WCAG 2.5.8 target-size the same way an inline link is.
30
+ "ds:mt-[var(--spacing-2xs)] ds:inline-flex ds:items-center ds:self-start",
31
+ "ds:text-[length:var(--font-size-xs)] ds:font-semibold",
32
+ "ds:underline ds:underline-offset-2 ds:text-current ds:hover:no-underline",
33
+ "ds:rounded-[var(--radius-sm)]",
34
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
35
+ "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
36
+ "ds:forced-colors:focus-visible:outline-[CanvasText]"
37
+ ].join(" "), re = H(
23
38
  [
24
39
  // Default `items-center` keeps the icon + dismiss optically aligned
25
40
  // with a single-line description. The `data-[has-title=true]`
@@ -89,7 +104,7 @@ const $ = [
89
104
  variant: "info"
90
105
  }
91
106
  }
92
- ), h = "ds:shrink-0 ds:size-5", K = `${h} ds:mt-0.5`, Q = [
107
+ ), E = "ds:shrink-0 ds:size-5", ae = `${E} ds:mt-0.5`, ne = [
93
108
  // Default (no title): the alert root uses `items-center` and the
94
109
  // button centres in the cross-axis. A centred 16×16 glyph inside a
95
110
  // 44×44 button aligns optically with a single-line description.
@@ -113,108 +128,147 @@ const $ = [
113
128
  "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
114
129
  "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
115
130
  "ds:forced-colors:focus-visible:outline-[CanvasText]"
116
- ].join(" "), Y = {
117
- info: { icon: /* @__PURE__ */ t(P, { "aria-hidden": "true" }), role: "status", live: "polite" },
131
+ ].join(" "), ie = {
132
+ info: { icon: /* @__PURE__ */ e(ee, { "aria-hidden": "true" }), role: "status", live: "polite" },
118
133
  success: {
119
- icon: /* @__PURE__ */ t(H, { "aria-hidden": "true" }),
134
+ icon: /* @__PURE__ */ e(Z, { "aria-hidden": "true" }),
120
135
  role: "status",
121
136
  live: "polite"
122
137
  },
123
138
  warning: {
124
- icon: /* @__PURE__ */ t(G, { "aria-hidden": "true" }),
139
+ icon: /* @__PURE__ */ e(Y, { "aria-hidden": "true" }),
125
140
  role: "alert",
126
141
  live: "assertive"
127
142
  },
128
143
  error: {
129
- icon: /* @__PURE__ */ t(X, { "aria-hidden": "true" }),
144
+ icon: /* @__PURE__ */ e(Q, { "aria-hidden": "true" }),
130
145
  role: "alert",
131
146
  live: "assertive"
132
147
  },
133
148
  // Promotions never interrupt — same polite semantics as info.
134
149
  promo: {
135
- icon: /* @__PURE__ */ t(q, { "aria-hidden": "true" }),
150
+ icon: /* @__PURE__ */ e(se, { "aria-hidden": "true" }),
136
151
  role: "status",
137
152
  live: "polite"
138
153
  }
139
- }, c = a(
140
- ({ as: e = "h5", className: o, ...r }, n) => /* @__PURE__ */ t(
141
- e,
142
- {
143
- ref: n,
144
- className: ["type-title-item", o].filter(Boolean).join(" "),
145
- ...r
146
- }
147
- )
148
- );
149
- c.displayName = "Alert.Title";
150
- const _ = a(({ className: e, ...o }, r) => /* @__PURE__ */ t(
151
- "p",
152
- {
153
- ref: r,
154
- className: [
155
- "ds:[[data-has-title=true]_&]:mt-[var(--spacing-xs)] type-body-sm",
156
- e
157
- ].filter(Boolean).join(" "),
158
- ...o
154
+ }, y = v(
155
+ ({ as: a = "h5", className: i, children: s, ...o }, t) => {
156
+ const n = O(C), { ref: d, isOverflowing: r } = S(n), m = _(
157
+ (c) => {
158
+ d.current = c, typeof t == "function" ? t(c) : t && (t.current = c);
159
+ },
160
+ [t, d]
161
+ ), l = n && r && typeof s == "string", f = /* @__PURE__ */ e(
162
+ a,
163
+ {
164
+ ref: m,
165
+ tabIndex: l ? 0 : void 0,
166
+ className: [
167
+ "type-title-item",
168
+ n ? "ds:line-clamp-2" : "",
169
+ i
170
+ ].filter(Boolean).join(" "),
171
+ ...o,
172
+ children: s
173
+ }
174
+ );
175
+ return l ? /* @__PURE__ */ e(q, { label: s, children: f }) : f;
159
176
  }
160
- ));
161
- _.displayName = "Alert.Description";
162
- const x = a(
163
- ({ className: e, ...o }, r) => /* @__PURE__ */ t(
177
+ );
178
+ y.displayName = "Alert.Title";
179
+ const L = v(({ className: a, children: i, ...s }, o) => {
180
+ const t = O(C), { t: n } = R(), d = X(), [r, m] = I(!1), { ref: l, isOverflowing: f } = S(t && !r), c = _(
181
+ (u) => {
182
+ l.current = u, typeof o == "function" ? o(u) : o && (o.current = u);
183
+ },
184
+ [o, l]
185
+ ), g = t && (f || r);
186
+ return /* @__PURE__ */ k(U, { children: [
187
+ /* @__PURE__ */ e(
188
+ "p",
189
+ {
190
+ ref: c,
191
+ id: t ? d : void 0,
192
+ className: [
193
+ "ds:[[data-has-title=true]_&]:mt-[var(--spacing-xs)] type-body-sm",
194
+ t && !r ? "ds:line-clamp-2" : "",
195
+ a
196
+ ].filter(Boolean).join(" "),
197
+ ...s,
198
+ children: i
199
+ }
200
+ ),
201
+ g ? /* @__PURE__ */ e(
202
+ "button",
203
+ {
204
+ type: "button",
205
+ "aria-expanded": r,
206
+ "aria-controls": d,
207
+ onClick: () => m((u) => !u),
208
+ className: oe,
209
+ children: r ? n("feedback.alert.readLess", "Read less") : n("feedback.alert.readMore", "Read more")
210
+ }
211
+ ) : null
212
+ ] });
213
+ });
214
+ L.displayName = "Alert.Description";
215
+ const V = v(
216
+ ({ className: a, ...i }, s) => /* @__PURE__ */ e(
164
217
  "div",
165
218
  {
166
- ref: r,
219
+ ref: s,
167
220
  className: [
168
221
  "ds:mt-[var(--spacing-sm)] ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]",
169
- e
222
+ a
170
223
  ].filter(Boolean).join(" "),
171
- ...o
224
+ ...i
172
225
  }
173
226
  )
174
227
  );
175
- x.displayName = "Alert.Action";
176
- const w = a(
228
+ V.displayName = "Alert.Action";
229
+ const z = v(
177
230
  ({
178
- variant: e = "info",
179
- dismissible: o = !1,
180
- open: r,
181
- onOpenChange: n,
182
- icon: m,
183
- live: y,
184
- className: C,
185
- children: u,
186
- ...A
187
- }, N) => {
188
- const { t: T } = F(), [j, k] = M({
189
- value: r,
231
+ variant: a = "info",
232
+ dismissible: i = !1,
233
+ open: s,
234
+ onOpenChange: o,
235
+ icon: t,
236
+ live: n,
237
+ clamp: d = !1,
238
+ className: r,
239
+ children: m,
240
+ ...l
241
+ }, f) => {
242
+ const { t: c } = R(), [g, u] = $({
243
+ value: s,
190
244
  defaultValue: !0,
191
- onChange: n
192
- }), I = j ?? !0, [f, g] = E(!1), i = R(null), O = z(() => {
245
+ onChange: o
246
+ }), B = g ?? !0, [w, T] = I(!1), b = M(null), D = _(() => {
193
247
  if (typeof window > "u") return 200;
194
- const s = window.getComputedStyle(document.documentElement).getPropertyValue("--animation-duration");
195
- if (!s) return 200;
196
- const b = s.trim(), l = parseFloat(b);
197
- return Number.isFinite(l) ? b.endsWith("ms") ? l : l * 1e3 : 200;
248
+ const p = window.getComputedStyle(document.documentElement).getPropertyValue("--animation-duration");
249
+ if (!p) return 200;
250
+ const j = p.trim(), h = parseFloat(j);
251
+ return Number.isFinite(h) ? j.endsWith("ms") ? h : h * 1e3 : 200;
198
252
  }, []);
199
- if (!I) return null;
200
- const d = Y[e], p = m !== void 0 ? m : d.icon, v = B.toArray(u).some(
201
- (s) => D(s) && s.type === c
202
- ), S = () => {
203
- f || (g(!0), i.current && clearTimeout(i.current), i.current = setTimeout(() => {
204
- g(!1), k(!1);
205
- }, O()));
253
+ if (!B) return null;
254
+ const x = ie[a], A = t !== void 0 ? t : x.icon, N = P.toArray(m).some(
255
+ (p) => W(p) && p.type === y
256
+ ), F = () => {
257
+ w || (T(!0), b.current && clearTimeout(b.current), b.current = setTimeout(() => {
258
+ T(!1), u(!1);
259
+ }, D()));
206
260
  };
207
- return /* @__PURE__ */ V(
261
+ return /* @__PURE__ */ k(
208
262
  "div",
209
263
  {
210
- ref: N,
211
- role: d.role,
212
- "aria-live": y ?? d.live,
264
+ ref: f,
265
+ role: x.role,
266
+ "aria-live": n ?? x.live,
213
267
  "data-component": "alert",
214
- "data-has-title": v ? "true" : "false",
215
- "data-state": f ? "closing" : "open",
268
+ "data-has-title": N ? "true" : "false",
269
+ "data-state": w ? "closing" : "open",
216
270
  className: [
217
- J({ variant: e, className: C }),
271
+ re({ variant: a, className: r }),
218
272
  // Entry: fade + slide-down on mount. Exit: fade + slide-up + slight
219
273
  // scale when dismissed. Driven by `tw-animate-css`. Respects
220
274
  // `prefers-reduced-motion` via `motion-safe:` and zeroes under the
@@ -228,19 +282,19 @@ const w = a(
228
282
  "ds:motion-safe:data-[state=closing]:fill-mode-forwards",
229
283
  "ds:motion-safe:duration-[var(--animation-duration)]"
230
284
  ].join(" "),
231
- ...A,
285
+ ...l,
232
286
  children: [
233
- p ? /* @__PURE__ */ t("span", { className: v ? K : h, children: p }) : null,
234
- /* @__PURE__ */ t("div", { className: "ds:flex-1 ds:min-w-0", children: u }),
235
- o ? /* @__PURE__ */ t(
287
+ A ? /* @__PURE__ */ e("span", { className: N ? ae : E, children: A }) : null,
288
+ /* @__PURE__ */ e("div", { className: "ds:flex-1 ds:min-w-0", children: /* @__PURE__ */ e(C.Provider, { value: d, children: m }) }),
289
+ i ? /* @__PURE__ */ e(
236
290
  "button",
237
291
  {
238
292
  type: "button",
239
- "aria-label": T("common.close", "Close"),
240
- onClick: S,
293
+ "aria-label": c("common.close", "Close"),
294
+ onClick: F,
241
295
  "data-alert-dismiss": "",
242
- className: Q,
243
- children: /* @__PURE__ */ t(U, { "aria-hidden": "true", className: "ds:size-4" })
296
+ className: ne,
297
+ children: /* @__PURE__ */ e(J, { "aria-hidden": "true", className: "ds:size-4" })
244
298
  }
245
299
  ) : null
246
300
  ]
@@ -248,13 +302,13 @@ const w = a(
248
302
  );
249
303
  }
250
304
  );
251
- w.displayName = "Alert";
252
- const ct = Object.assign(w, {
253
- Title: c,
254
- Description: _,
255
- Action: x
305
+ z.displayName = "Alert";
306
+ const Ce = Object.assign(z, {
307
+ Title: y,
308
+ Description: L,
309
+ Action: V
256
310
  });
257
311
  export {
258
- ct as A
312
+ Ce as A
259
313
  };
260
- //# sourceMappingURL=alert-_mUKLmwA.js.map
314
+ //# sourceMappingURL=alert-CHYZ96tR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-CHYZ96tR.js","sources":["../../node_modules/lucide-react/dist/esm/icons/circle-arrow-up.js","../../src/components/alert/alert.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m16 12-4-4-4 4\", key: \"177agl\" }],\n [\"path\", { d: \"M12 16V8\", key: \"1sbj14\" }]\n];\nconst CircleArrowUp = createLucideIcon(\"circle-arrow-up\", __iconNode);\n\nexport { __iconNode, CircleArrowUp as default };\n//# sourceMappingURL=circle-arrow-up.js.map\n","import {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useId,\n useRef,\n useState,\n type HTMLAttributes,\n type MutableRefObject,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport {\n CircleArrowUp,\n CircleCheck,\n CircleX,\n Info,\n TriangleAlert,\n X,\n} from 'lucide-react';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useClampOverflow } from '../../hooks/use-clamp-overflow';\nimport { Tooltip } from '../tooltip';\n\n/* ------------------------------------------------------------------ */\n/* Clamp context — opt-in compact mode propagated from the root Alert */\n/* to its Title / Description so a consumer enables it with one prop. */\n/* ------------------------------------------------------------------ */\n\nconst AlertClampContext = createContext(false);\n\n/** Inline \"Read more / Read less\" disclosure. Tinted with `text-current` so it\n * inherits the alert variant's foreground rather than the link palette. */\nconst DISCLOSURE_BUTTON_CLASSES = [\n // Full-opacity `text-current` so it matches the body text's contrast (an\n // `opacity` dim would drop the variant-tinted text below AA). Underline\n // carries the affordance instead. No `--min-target-size` floor: this is an\n // inline text disclosure sitting in the flow of the body copy, which is\n // exempt from WCAG 2.5.8 target-size the same way an inline link is.\n 'ds:mt-[var(--spacing-2xs)] ds:inline-flex ds:items-center ds:self-start',\n 'ds:text-[length:var(--font-size-xs)] ds:font-semibold',\n 'ds:underline ds:underline-offset-2 ds:text-current ds:hover:no-underline',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n].join(' ');\n\nconst alertVariants = cva(\n [\n // Default `items-center` keeps the icon + dismiss optically aligned\n // with a single-line description. The `data-[has-title=true]`\n // selector flips to `items-start` when an `<Alert.Title>` is\n // present so the icon anchors to the heading's top instead of\n // floating against the centre of the title+description block.\n // For multi-line descriptions without a title, `items-center` still\n // looks right at 2–3 lines and matches Toast / Notification.\n 'ds:flex ds:items-center ds:data-[has-title=true]:items-start ds:gap-[var(--spacing-md)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:border ds:border-[length:var(--border-width-sm)]',\n 'ds:p-[var(--spacing-md)]',\n 'ds:break-words',\n ].join(' '),\n {\n variants: {\n // Each variant paints `<Button intent=\"tonal\">` descendants via a\n // child selector — the button carries `data-intent=\"tonal\"`, the\n // Alert applies the matching tint (`*-foreground` for bg + the\n // surface `--background` for fg). Descendant selectors sidestep\n // custom-property inheritance and are rock-solid across themes.\n variant: {\n info: [\n 'ds:border-[color:var(--info)]',\n 'ds:bg-[color-mix(in_srgb,var(--info)_10%,transparent)]',\n 'ds:text-[var(--info-foreground)]',\n 'ds:[&_[data-intent=tonal]]:bg-[color:var(--info-foreground)]',\n 'ds:[&_[data-intent=tonal]]:text-[color:var(--background)]',\n ].join(' '),\n success: [\n 'ds:border-[color:var(--success)]',\n 'ds:bg-[color-mix(in_srgb,var(--success)_10%,transparent)]',\n 'ds:text-[var(--success-foreground)]',\n 'ds:[&_[data-intent=tonal]]:bg-[color:var(--success-foreground)]',\n 'ds:[&_[data-intent=tonal]]:text-[color:var(--background)]',\n ].join(' '),\n warning: [\n 'ds:border-[color:var(--warning)]',\n 'ds:bg-[color-mix(in_srgb,var(--warning)_10%,transparent)]',\n 'ds:text-[var(--warning-foreground)]',\n 'ds:[&_[data-intent=tonal]]:bg-[color:var(--warning-foreground)]',\n 'ds:[&_[data-intent=tonal]]:text-[color:var(--background)]',\n ].join(' '),\n error: [\n 'ds:border-[color:var(--error)]',\n 'ds:bg-[color-mix(in_srgb,var(--error)_10%,transparent)]',\n 'ds:text-[var(--error-foreground)]',\n 'ds:[&_[data-intent=tonal]]:bg-[color:var(--error-foreground)]',\n 'ds:[&_[data-intent=tonal]]:text-[color:var(--background)]',\n ].join(' '),\n // Sales / marketing upsell — accent magenta via the --promo\n // semantic pair so marketing pushes (product hub → warning\n // stack) read as offers, not operational warnings. Surface is\n // the same subtle accent gradient as SidebarUpgradeChip (it\n // flattens in the accessible themes and follows Canvas in\n // forced-colors), keeping the two upsell affordances kin.\n promo: [\n 'ds:border-[color:var(--promo)]',\n 'ds:bg-[image:var(--gradient-surface-subtle-accent)]',\n 'ds:text-[var(--promo-foreground)]',\n 'ds:[&_[data-intent=tonal]]:bg-[color:var(--promo-foreground)]',\n 'ds:[&_[data-intent=tonal]]:text-[color:var(--background)]',\n ].join(' '),\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n },\n);\n\n// Icon stays `mt-0.5` only when an `<Alert.Title>` is present — that\n// offset compensates for the title's cap-height vs. line-box origin so\n// the glyph aligns with the heading's caps. Without a title, the\n// container uses `items-center` and the offset would push the icon\n// 2px off the optical axis.\nconst ICON_BASE = 'ds:shrink-0 ds:size-5';\nconst ICON_WITH_TITLE = `${ICON_BASE} ds:mt-0.5`;\n\nconst CLOSE_BUTTON_CLASSES = [\n // Default (no title): the alert root uses `items-center` and the\n // button centres in the cross-axis. A centred 16×16 glyph inside a\n // 44×44 button aligns optically with a single-line description.\n // With a title: the root flips to `items-start` so the button's top\n // edge aligns with the title row top. A centred glyph would then\n // land ~11 px below the title's optical centre (button height is\n // --min-target-size, much taller than the title's line-height). The\n // `[data-has-title=true]` variant below flips the button to\n // `items-start` and adds a block-start padding that pulls the glyph\n // up onto the title row — same cap-height compensation idea as the\n // leading icon's `mt-0.5`.\n 'ds:ms-auto ds:shrink-0 ds:inline-flex ds:items-center ds:justify-center',\n 'ds:[[data-has-title=true]_&]:items-start',\n 'ds:[[data-has-title=true]_&]:pt-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:min-h-[var(--min-target-size)] ds:min-w-[var(--min-target-size)]',\n 'ds:-mt-[var(--spacing-xs)] ds:-me-[var(--spacing-xs)]',\n 'ds:text-current ds:opacity-70',\n 'ds:hover:opacity-100',\n 'ds:transition-opacity ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n].join(' ');\n\nconst VARIANT_CONFIG = {\n info: { icon: <Info aria-hidden=\"true\" />, role: 'status', live: 'polite' },\n success: {\n icon: <CircleCheck aria-hidden=\"true\" />,\n role: 'status',\n live: 'polite',\n },\n warning: {\n icon: <TriangleAlert aria-hidden=\"true\" />,\n role: 'alert',\n live: 'assertive',\n },\n error: {\n icon: <CircleX aria-hidden=\"true\" />,\n role: 'alert',\n live: 'assertive',\n },\n // Promotions never interrupt — same polite semantics as info.\n promo: {\n icon: <CircleArrowUp aria-hidden=\"true\" />,\n role: 'status',\n live: 'polite',\n },\n} as const;\n\ninterface AlertTitleProps extends HTMLAttributes<HTMLHeadingElement> {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span';\n}\n\nconst AlertTitle = forwardRef<HTMLHeadingElement, AlertTitleProps>(\n ({ as: Tag = 'h5', className, children, ...props }, ref) => {\n const clamp = useContext(AlertClampContext);\n const { ref: clampRef, isOverflowing } =\n useClampOverflow<HTMLHeadingElement>(clamp);\n const setRefs = useCallback(\n (node: HTMLHeadingElement | null) => {\n (clampRef as MutableRefObject<HTMLHeadingElement | null>).current =\n node;\n if (typeof ref === 'function') ref(node);\n else if (ref)\n (ref as MutableRefObject<HTMLHeadingElement | null>).current = node;\n },\n [ref, clampRef],\n );\n\n // The full title stays in the DOM (line-clamp only clips it visually), so\n // screen readers always read it whole. The tooltip is a sighted-user\n // affordance, shown only when the title is actually cut — and only for\n // string titles, since the Tooltip label must be plain text.\n const tooltipReady = clamp && isOverflowing && typeof children === 'string';\n\n const heading = (\n <Tag\n ref={setRefs}\n // Focusable only when truncated, so keyboard users can surface the\n // tooltip too (otherwise it would be mouse/hover-only).\n tabIndex={tooltipReady ? 0 : undefined}\n className={[\n 'type-title-item',\n clamp ? 'ds:line-clamp-2' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {children}\n </Tag>\n );\n\n return tooltipReady ? (\n <Tooltip label={children as string}>{heading}</Tooltip>\n ) : (\n heading\n );\n },\n);\nAlertTitle.displayName = 'Alert.Title';\n\nconst AlertDescription = forwardRef<\n HTMLParagraphElement,\n HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const clamp = useContext(AlertClampContext);\n const { t } = useTranslation();\n const bodyId = useId();\n const [expanded, setExpanded] = useState(false);\n // Only measure while clamped — once expanded there's nothing to clip.\n const { ref: clampRef, isOverflowing } =\n useClampOverflow<HTMLParagraphElement>(clamp && !expanded);\n const setRefs = useCallback(\n (node: HTMLParagraphElement | null) => {\n (clampRef as MutableRefObject<HTMLParagraphElement | null>).current =\n node;\n if (typeof ref === 'function') ref(node);\n else if (ref)\n (ref as MutableRefObject<HTMLParagraphElement | null>).current = node;\n },\n [ref, clampRef],\n );\n // Show the toggle once the body has overflowed; keep it while expanded so\n // the user can collapse again.\n const showToggle = clamp && (isOverflowing || expanded);\n\n return (\n <>\n <p\n ref={setRefs}\n id={clamp ? bodyId : undefined}\n // `mt` is gated on the root's `data-has-title=\"true\"` attribute so\n // the margin only paints when there's a Title above the\n // Description to separate from. Without this gate, a Description\n // rendered alone sits a few pixels below the icon + dismiss ×\n // optical centre — visible on the AlfaDocs marketing privacy\n // generator before HTP-4860's follow-up fix.\n className={[\n 'ds:[[data-has-title=true]_&]:mt-[var(--spacing-xs)] type-body-sm',\n clamp && !expanded ? 'ds:line-clamp-2' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {children}\n </p>\n {showToggle ? (\n <button\n type=\"button\"\n aria-expanded={expanded}\n aria-controls={bodyId}\n onClick={() => setExpanded((prev) => !prev)}\n className={DISCLOSURE_BUTTON_CLASSES}\n >\n {expanded\n ? t('feedback.alert.readLess', 'Read less')\n : t('feedback.alert.readMore', 'Read more')}\n </button>\n ) : null}\n </>\n );\n});\nAlertDescription.displayName = 'Alert.Description';\n\nconst AlertAction = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={[\n 'ds:mt-[var(--spacing-sm)] ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nAlertAction.displayName = 'Alert.Action';\n\nexport interface AlertProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'role'>,\n VariantProps<typeof alertVariants> {\n variant?: 'info' | 'success' | 'warning' | 'error' | 'promo';\n dismissible?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n icon?: ReactNode;\n live?: 'assertive' | 'polite' | 'off';\n /** Compact mode: clamps `Alert.Title` to 2 lines (with a tooltip when the\n * title is truncated) and `Alert.Description` to 2 lines (with a \"Read more\"\n * toggle). Opt-in — leave off for standalone alerts whose full message must\n * always be visible. */\n clamp?: boolean;\n}\n\nexport type { AlertTitleProps };\n\nconst AlertRoot = forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n variant = 'info',\n dismissible = false,\n open: controlledOpen,\n onOpenChange,\n icon,\n live,\n clamp = false,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const [isOpenRaw, setOpen] = useControllableState<boolean>({\n value: controlledOpen,\n defaultValue: true,\n onChange: onOpenChange,\n });\n const isOpen = isOpenRaw ?? true;\n const [isClosing, setIsClosing] = useState(false);\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const animationDurationMs = useCallback((): number => {\n if (typeof window === 'undefined') return 200;\n const raw = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue('--animation-duration');\n if (!raw) return 200;\n const trimmed = raw.trim();\n const n = parseFloat(trimmed);\n if (!Number.isFinite(n)) return 200;\n return trimmed.endsWith('ms') ? n : n * 1000;\n }, []);\n\n if (!isOpen) return null;\n\n const config = VARIANT_CONFIG[variant];\n const effectiveIcon = icon !== undefined ? icon : config.icon;\n\n // Detect an `<Alert.Title>` anywhere in the immediate children so\n // the root can flip its cross-axis alignment. Nested wrappers\n // around a Title aren't supported — keep the API as flat as the\n // existing `Alert.Title` / `Alert.Description` convention.\n const hasTitle = Children.toArray(children).some(\n (child) => isValidElement(child) && child.type === AlertTitle,\n );\n\n const handleDismiss = () => {\n if (isClosing) return;\n setIsClosing(true);\n if (closeTimerRef.current) clearTimeout(closeTimerRef.current);\n closeTimerRef.current = setTimeout(() => {\n setIsClosing(false);\n setOpen(false);\n }, animationDurationMs());\n };\n\n return (\n <div\n ref={ref}\n role={config.role}\n aria-live={live ?? config.live}\n data-component=\"alert\"\n data-has-title={hasTitle ? 'true' : 'false'}\n data-state={isClosing ? 'closing' : 'open'}\n className={[\n alertVariants({ variant, className }),\n // Entry: fade + slide-down on mount. Exit: fade + slide-up + slight\n // scale when dismissed. Driven by `tw-animate-css`. Respects\n // `prefers-reduced-motion` via `motion-safe:` and zeroes under the\n // accessible theme (`--animation-duration: 0ms`).\n 'ds:motion-safe:animate-in ds:motion-safe:fade-in-0 ds:motion-safe:slide-in-from-top-2',\n 'ds:motion-safe:data-[state=closing]:animate-out ds:motion-safe:data-[state=closing]:fade-out-0',\n 'ds:motion-safe:data-[state=closing]:slide-out-to-top-2 ds:motion-safe:data-[state=closing]:zoom-out-95',\n // Pin the exit's end-state until React unmounts. Without\n // `fill-mode-forwards` the element snaps back to opacity:1 for one\n // paint frame after the animation ends.\n 'ds:motion-safe:data-[state=closing]:fill-mode-forwards',\n 'ds:motion-safe:duration-[var(--animation-duration)]',\n ].join(' ')}\n {...props}\n >\n {effectiveIcon ? (\n <span className={hasTitle ? ICON_WITH_TITLE : ICON_BASE}>\n {effectiveIcon}\n </span>\n ) : null}\n\n <div className=\"ds:flex-1 ds:min-w-0\">\n <AlertClampContext.Provider value={clamp}>\n {children}\n </AlertClampContext.Provider>\n </div>\n\n {dismissible ? (\n <button\n type=\"button\"\n aria-label={t('common.close', 'Close')}\n onClick={handleDismiss}\n // Stable hook for containers (WarningStack) that hand focus to\n // a neighbouring dismiss control after this one unmounts.\n data-alert-dismiss=\"\"\n className={CLOSE_BUTTON_CLASSES}\n >\n <X aria-hidden=\"true\" className=\"ds:size-4\" />\n </button>\n ) : null}\n </div>\n );\n },\n);\n\nAlertRoot.displayName = 'Alert';\n\nexport const Alert = Object.assign(AlertRoot, {\n Title: AlertTitle,\n Description: AlertDescription,\n Action: AlertAction,\n});\n"],"names":["__iconNode","CircleArrowUp","createLucideIcon","AlertClampContext","createContext","DISCLOSURE_BUTTON_CLASSES","alertVariants","cva","ICON_BASE","ICON_WITH_TITLE","CLOSE_BUTTON_CLASSES","VARIANT_CONFIG","jsx","Info","CircleCheck","TriangleAlert","CircleX","AlertTitle","forwardRef","Tag","className","children","props","ref","clamp","useContext","clampRef","isOverflowing","useClampOverflow","setRefs","useCallback","node","tooltipReady","heading","Tooltip","AlertDescription","t","useTranslation","bodyId","useId","expanded","setExpanded","useState","showToggle","jsxs","Fragment","prev","AlertAction","AlertRoot","variant","dismissible","controlledOpen","onOpenChange","icon","live","isOpenRaw","setOpen","useControllableState","isOpen","isClosing","setIsClosing","closeTimerRef","useRef","animationDurationMs","raw","trimmed","n","config","effectiveIcon","hasTitle","Children","child","isValidElement","handleDismiss","X","Alert"],"mappings":"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","x_google_ignoreList":[0]}
@@ -2,7 +2,7 @@ import { jsxs as r, jsx as e } from "react/jsx-runtime";
2
2
  import { forwardRef as M, useId as C, useMemo as R } from "react";
3
3
  import { c as q } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as z } from "react-i18next";
5
- import { B as n } from "./badge-CqGsX32l.js";
5
+ import { B as n } from "./badge-DCOqV9mI.js";
6
6
  import { C as N } from "./card-DPmk26CL.js";
7
7
  import { A as G, b as O, c as Q, a as S } from "./accordion-DnIa7OHX.js";
8
8
  import { D as t } from "./description-list-gkNGWk5G.js";
@@ -153,4 +153,4 @@ J.displayName = "AnamnesisCard";
153
153
  export {
154
154
  J as A
155
155
  };
156
- //# sourceMappingURL=anamnesis-card-DRmE24OQ.js.map
156
+ //# sourceMappingURL=anamnesis-card-DvYCa16e.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"anamnesis-card-DRmE24OQ.js","sources":["../../src/components/anamnesis-card/anamnesis-card.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n useMemo,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { AlertTriangle } from 'lucide-react';\nimport { Badge } from '../badge/badge';\nimport { Card } from '../card/card';\nimport {\n Accordion,\n AccordionItem,\n AccordionTrigger,\n AccordionContent,\n} from '../accordion/accordion';\nimport { DescriptionList } from '../description-list/description-list';\nimport { Timestamp } from '../timestamp/timestamp';\n\n/* -------------------------------------------------------------------- */\n/* AnamnesisCard */\n/* */\n/* A completed medical-history questionnaire (anamnesi) rendered as a */\n/* collapsible interview. Replaces the bespoke \"scheda anamnestica\" */\n/* cards every clinical surface composes by hand: a header summarising */\n/* the form (compiled date, form name) with status chips, and a */\n/* collapsible body listing each question/answer pair as a */\n/* DescriptionList (dt = question, dd = answer). */\n/* */\n/* The clinical red-flag count (`highlightedAnswerCount`) is the most */\n/* prominent signal: an `error` Badge carrying a NON-colour cue */\n/* (warning glyph + dot) so colour-blind clinicians still read it. The */\n/* expired / corrupted statuses surface as warning / error chips beside */\n/* it. Per-answer `highlight` flags emphasise the matching rows inside */\n/* the interview. */\n/* */\n/* All visible text flows through `useTranslation('ui')` against the */\n/* `anamnesisCard.*` namespace. Consumers pass IDENTIFIERS + structural */\n/* data; the kit owns the chrome + i18n. No PHI lives in the agent layer. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* CVA — root */\n/* -------------------------------------------------------------------- */\n\nconst rootVariants = cva('ds:w-full ds:text-[color:var(--foreground)]', {\n variants: {\n // Matches the kit's other `surface` props. `'elevated'` (default)\n // wraps in `<Card variant=\"elevated\">`; `'flat'` drops the chrome\n // for use inside an existing Card / Sheet.\n surface: {\n flat: '',\n elevated: '',\n },\n },\n defaultVariants: { surface: 'elevated' },\n});\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\nexport interface AnamnesisCardAnswer {\n /** The questionnaire question text. Rendered as the `<dt>` term. */\n question: string;\n /** The patient's recorded answer. Rendered as the `<dd>` detail. */\n answer: ReactNode;\n /**\n * Marks this row as a clinical red-flag answer. Highlighted rows render\n * a `bordered` divider + an inline-end warning chip so they stand out\n * within the interview body — with the warning glyph carrying the cue,\n * not colour alone.\n */\n highlight?: boolean;\n}\n\nexport interface AnamnesisCardStatus {\n /** The questionnaire is past its validity window — surfaces a warning chip. */\n expired?: boolean;\n /** The submission is corrupted / incomplete — surfaces an error chip. */\n corrupted?: boolean;\n}\n\nexport interface AnamnesisCardProps extends Omit<\n ComponentPropsWithoutRef<'div'>,\n 'aria-label' | 'children' | 'title'\n> {\n /**\n * The questionnaire's compiled / reference date as an ISO-8601 string.\n * Rendered as an absolute `<Timestamp>` in the header.\n */\n dateIso: string;\n /**\n * Optional submission / creation timestamp as an ISO-8601 string.\n * Rendered as a relative `<Timestamp>` caption beneath the heading.\n */\n createdAtIso?: string;\n /**\n * Form / template name (e.g. \"Anamnesi generale\"). When omitted, a\n * localised generic heading is used.\n */\n formName?: string;\n /**\n * Count of answers flagged as clinical red-flags. When `> 0`, renders\n * the prominent `error` Badge with a warning glyph + colour-blind dot.\n * Omit / `0` hides the chip.\n */\n highlightedAnswerCount?: number;\n /** Lifecycle / integrity status — drives the warning / error chips. */\n status?: AnamnesisCardStatus;\n /**\n * The question/answer pairs. Rendered inside the collapsible interview\n * as a `<DescriptionList>` (dt = question, dd = answer). When empty or\n * omitted, the interview shows a localised \"no answers\" line.\n */\n answers?: AnamnesisCardAnswer[];\n /**\n * `'elevated'` (default) wraps in `<Card variant=\"elevated\">`. `'flat'`\n * drops the Card — use inside another card / sheet.\n */\n surface?: 'flat' | 'elevated';\n\n /* ----- a11y ----- */\n\n /** Override the default region aria-label. */\n 'aria-label'?: string;\n /** Agent-readiness consumer id, surfaced as `data-component-id`. */\n id?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const AnamnesisCard = forwardRef<HTMLDivElement, AnamnesisCardProps>(\n (\n {\n dateIso,\n createdAtIso,\n formName,\n highlightedAnswerCount = 0,\n status,\n answers,\n surface = 'elevated',\n 'aria-label': ariaLabel,\n id,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const headingId = useId();\n const accordionItemValue = useId();\n\n const resolvedFormName =\n formName ??\n t('anamnesisCard.defaultFormName', { defaultValue: 'Medical history' });\n const resolvedAriaLabel = ariaLabel ?? resolvedFormName;\n\n const hasFlags = highlightedAnswerCount > 0;\n const isExpired = status?.expired === true;\n const isCorrupted = status?.corrupted === true;\n\n const answerCount = answers?.length ?? 0;\n\n // Chip strip — the red-flag count first (most prominent), then the\n // integrity statuses. Each carries a non-colour cue (glyph / dot) so\n // colour-blind clinicians read the signal without relying on hue.\n const statusChips = useMemo<ReactNode>(() => {\n if (!hasFlags && !isExpired && !isCorrupted) return null;\n return (\n <div\n role=\"list\"\n aria-label={t('anamnesisCard.statusGroupLabel', {\n defaultValue: 'Questionnaire status',\n })}\n className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-2xs)]\"\n >\n {hasFlags ? (\n <Badge\n variant=\"error\"\n withDot\n leading={<AlertTriangle aria-hidden=\"true\" />}\n role=\"listitem\"\n >\n {t('anamnesisCard.status.highlighted', {\n count: highlightedAnswerCount,\n defaultValue: '{{count}} flagged answers',\n })}\n </Badge>\n ) : null}\n {isExpired ? (\n <Badge variant=\"warning\" withDot role=\"listitem\">\n {t('anamnesisCard.status.expired', { defaultValue: 'Expired' })}\n </Badge>\n ) : null}\n {isCorrupted ? (\n <Badge variant=\"error\" withDot role=\"listitem\">\n {t('anamnesisCard.status.corrupted', {\n defaultValue: 'Corrupted',\n })}\n </Badge>\n ) : null}\n </div>\n );\n }, [hasFlags, isExpired, isCorrupted, highlightedAnswerCount, t]);\n\n const header = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <div className=\"ds:flex ds:flex-wrap ds:items-start ds:gap-[var(--spacing-sm)]\">\n <h3\n id={headingId}\n className=\"type-title-card ds:m-0 ds:text-[color:var(--foreground)]\"\n >\n {resolvedFormName}\n </h3>\n {statusChips ? (\n <div className=\"ds:ms-auto ds:flex ds:shrink-0 ds:items-center\">\n {statusChips}\n </div>\n ) : null}\n </div>\n <p className=\"type-body-sm ds:m-0 ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)] ds:text-[color:var(--muted-foreground)]\">\n <span>\n {t('anamnesisCard.compiledOn', { defaultValue: 'Compiled' })}{' '}\n <Timestamp value={dateIso} format=\"absolute\" shape=\"bare\" />\n </span>\n {createdAtIso ? (\n <span className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <span aria-hidden=\"true\">·</span>\n <span>\n {t('anamnesisCard.submitted', { defaultValue: 'Submitted' })}{' '}\n <Timestamp\n value={createdAtIso}\n format=\"relative\"\n shape=\"bare\"\n />\n </span>\n </span>\n ) : null}\n </p>\n </div>\n );\n\n const interview =\n answerCount > 0 ? (\n <DescriptionList layout=\"stacked\" density=\"compact\" divider=\"between\">\n {answers!.map((row, index) => (\n <DescriptionList.Row\n key={index}\n className={\n row.highlight\n ? 'ds:border ds:border-[color:var(--destructive)] ds:rounded-[var(--radius-sm)] ds:p-[var(--spacing-sm)]'\n : undefined\n }\n >\n <DescriptionList.Term>\n <span className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <span>{row.question}</span>\n {row.highlight ? (\n <Badge\n variant=\"error\"\n size=\"sm\"\n withDot\n leading={<AlertTriangle aria-hidden=\"true\" />}\n aria-label={t('anamnesisCard.answerFlagLabel', {\n defaultValue: 'Flagged answer',\n })}\n />\n ) : null}\n </span>\n </DescriptionList.Term>\n <DescriptionList.Detail>{row.answer}</DescriptionList.Detail>\n </DescriptionList.Row>\n ))}\n </DescriptionList>\n ) : (\n <p className=\"type-body-sm ds:m-0 ds:text-[color:var(--muted-foreground)]\">\n {t('anamnesisCard.empty', {\n defaultValue: 'No answers were recorded.',\n })}\n </p>\n );\n\n const inner = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n {header}\n <Accordion type=\"single\" collapsible variant=\"separated\">\n <AccordionItem value={accordionItemValue}>\n <AccordionTrigger>\n {t('anamnesisCard.interviewToggle', {\n count: answerCount,\n defaultValue: 'Interview ({{count}} answers)',\n })}\n </AccordionTrigger>\n <AccordionContent>{interview}</AccordionContent>\n </AccordionItem>\n </Accordion>\n </div>\n );\n\n return (\n <div\n ref={ref}\n role=\"region\"\n aria-label={resolvedAriaLabel}\n aria-labelledby={headingId}\n data-component=\"anamnesis-card\"\n data-component-id={id}\n data-has-flags={hasFlags || undefined}\n id={id}\n className={rootVariants({ surface, className })}\n {...rest}\n >\n {surface === 'elevated' ? (\n <Card variant=\"elevated\">\n <Card.Body>{inner}</Card.Body>\n </Card>\n ) : (\n inner\n )}\n </div>\n );\n },\n);\n\nAnamnesisCard.displayName = 'AnamnesisCard';\n\nexport type AnamnesisCardSurface = NonNullable<\n VariantProps<typeof rootVariants>['surface']\n>;\n"],"names":["rootVariants","cva","AnamnesisCard","forwardRef","dateIso","createdAtIso","formName","highlightedAnswerCount","status","answers","surface","ariaLabel","id","className","rest","ref","t","useTranslation","headingId","useId","accordionItemValue","resolvedFormName","resolvedAriaLabel","hasFlags","isExpired","isCorrupted","answerCount","statusChips","useMemo","jsxs","jsx","Badge","AlertTriangle","header","Timestamp","interview","DescriptionList","row","index","inner","Accordion","AccordionItem","AccordionTrigger","AccordionContent","Card"],"mappings":";;;;;;;;;;AA+CA,MAAMA,IAAeC,EAAI,+CAA+C;AAAA,EACtE,UAAU;AAAA;AAAA;AAAA;AAAA,IAIR,SAAS;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,IAAA;AAAA,EACZ;AAAA,EAEF,iBAAiB,EAAE,SAAS,WAAA;AAC9B,CAAC,GA8EYC,IAAgBC;AAAA,EAC3B,CACE;AAAA,IACE,SAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,wBAAAC,IAAyB;AAAA,IACzB,QAAAC;AAAA,IACA,SAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,cAAcC;AAAA,IACd,IAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAYC,EAAA,GACZC,IAAqBD,EAAA,GAErBE,IACJf,KACAU,EAAE,iCAAiC,EAAE,cAAc,mBAAmB,GAClEM,IAAoBX,KAAaU,GAEjCE,IAAWhB,IAAyB,GACpCiB,KAAYhB,KAAA,gBAAAA,EAAQ,aAAY,IAChCiB,KAAcjB,KAAA,gBAAAA,EAAQ,eAAc,IAEpCkB,KAAcjB,KAAA,gBAAAA,EAAS,WAAU,GAKjCkB,IAAcC,EAAmB,MACjC,CAACL,KAAY,CAACC,KAAa,CAACC,IAAoB,OAElD,gBAAAI;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,cAAYb,EAAE,kCAAkC;AAAA,UAC9C,cAAc;AAAA,QAAA,CACf;AAAA,QACD,WAAU;AAAA,QAET,UAAA;AAAA,UAAAO,IACC,gBAAAO;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,SAAO;AAAA,cACP,SAAS,gBAAAD,EAACE,GAAA,EAAc,eAAY,OAAA,CAAO;AAAA,cAC3C,MAAK;AAAA,cAEJ,YAAE,oCAAoC;AAAA,gBACrC,OAAOzB;AAAA,gBACP,cAAc;AAAA,cAAA,CACf;AAAA,YAAA;AAAA,UAAA,IAED;AAAA,UACHiB,IACC,gBAAAM,EAACC,GAAA,EAAM,SAAQ,WAAU,SAAO,IAAC,MAAK,YACnC,UAAAf,EAAE,gCAAgC,EAAE,cAAc,UAAA,CAAW,GAChE,IACE;AAAA,UACHS,IACC,gBAAAK,EAACC,GAAA,EAAM,SAAQ,SAAQ,SAAO,IAAC,MAAK,YACjC,UAAAf,EAAE,kCAAkC;AAAA,YACnC,cAAc;AAAA,UAAA,CACf,GACH,IACE;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAGP,CAACO,GAAUC,GAAWC,GAAalB,GAAwBS,CAAC,CAAC,GAE1DiB,IACJ,gBAAAJ,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,kEACb,UAAA;AAAA,QAAA,gBAAAC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAIZ;AAAA,YACJ,WAAU;AAAA,YAET,UAAAG;AAAA,UAAA;AAAA,QAAA;AAAA,QAEFM,IACC,gBAAAG,EAAC,OAAA,EAAI,WAAU,kDACZ,aACH,IACE;AAAA,MAAA,GACN;AAAA,MACA,gBAAAD,EAAC,KAAA,EAAE,WAAU,+HACX,UAAA;AAAA,QAAA,gBAAAA,EAAC,QAAA,EACE,UAAA;AAAA,UAAAb,EAAE,4BAA4B,EAAE,cAAc,WAAA,CAAY;AAAA,UAAG;AAAA,4BAC7DkB,GAAA,EAAU,OAAO9B,GAAS,QAAO,YAAW,OAAM,OAAA,CAAO;AAAA,QAAA,GAC5D;AAAA,QACCC,IACC,gBAAAwB,EAAC,QAAA,EAAK,WAAU,sDACd,UAAA;AAAA,UAAA,gBAAAC,EAAC,QAAA,EAAK,eAAY,QAAO,UAAA,KAAC;AAAA,4BACzB,QAAA,EACE,UAAA;AAAA,YAAAd,EAAE,2BAA2B,EAAE,cAAc,YAAA,CAAa;AAAA,YAAG;AAAA,YAC9D,gBAAAc;AAAA,cAACI;AAAA,cAAA;AAAA,gBACC,OAAO7B;AAAA,gBACP,QAAO;AAAA,gBACP,OAAM;AAAA,cAAA;AAAA,YAAA;AAAA,UACR,EAAA,CACF;AAAA,QAAA,EAAA,CACF,IACE;AAAA,MAAA,EAAA,CACN;AAAA,IAAA,GACF,GAGI8B,IACJT,IAAc,IACZ,gBAAAI,EAACM,KAAgB,QAAO,WAAU,SAAQ,WAAU,SAAQ,WACzD,UAAA3B,EAAS,IAAI,CAAC4B,GAAKC,MAClB,gBAAAT;AAAA,MAACO,EAAgB;AAAA,MAAhB;AAAA,QAEC,WACEC,EAAI,YACA,0GACA;AAAA,QAGN,UAAA;AAAA,UAAA,gBAAAP,EAACM,EAAgB,MAAhB,EACC,UAAA,gBAAAP,EAAC,QAAA,EAAK,WAAU,sDACd,UAAA;AAAA,YAAA,gBAAAC,EAAC,QAAA,EAAM,YAAI,SAAA,CAAS;AAAA,YACnBO,EAAI,YACH,gBAAAP;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,SAAO;AAAA,gBACP,SAAS,gBAAAD,EAACE,GAAA,EAAc,eAAY,OAAA,CAAO;AAAA,gBAC3C,cAAYhB,EAAE,iCAAiC;AAAA,kBAC7C,cAAc;AAAA,gBAAA,CACf;AAAA,cAAA;AAAA,YAAA,IAED;AAAA,UAAA,EAAA,CACN,EAAA,CACF;AAAA,UACA,gBAAAc,EAACM,EAAgB,QAAhB,EAAwB,YAAI,OAAA,CAAO;AAAA,QAAA;AAAA,MAAA;AAAA,MAvB/BE;AAAA,IAAA,CAyBR,GACH,IAEA,gBAAAR,EAAC,OAAE,WAAU,+DACV,YAAE,uBAAuB;AAAA,MACxB,cAAc;AAAA,IAAA,CACf,GACH,GAGES,IACJ,gBAAAV,EAAC,OAAA,EAAI,WAAU,kDACZ,UAAA;AAAA,MAAAI;AAAA,MACD,gBAAAH,EAACU,GAAA,EAAU,MAAK,UAAS,aAAW,IAAC,SAAQ,aAC3C,UAAA,gBAAAX,EAACY,GAAA,EAAc,OAAOrB,GACpB,UAAA;AAAA,QAAA,gBAAAU,EAACY,GAAA,EACE,YAAE,iCAAiC;AAAA,UAClC,OAAOhB;AAAA,UACP,cAAc;AAAA,QAAA,CACf,GACH;AAAA,QACA,gBAAAI,EAACa,KAAkB,UAAAR,EAAA,CAAU;AAAA,MAAA,EAAA,CAC/B,EAAA,CACF;AAAA,IAAA,GACF;AAGF,WACE,gBAAAL;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAf;AAAA,QACA,MAAK;AAAA,QACL,cAAYO;AAAA,QACZ,mBAAiBJ;AAAA,QACjB,kBAAe;AAAA,QACf,qBAAmBN;AAAA,QACnB,kBAAgBW,KAAY;AAAA,QAC5B,IAAAX;AAAA,QACA,WAAWZ,EAAa,EAAE,SAAAU,GAAS,WAAAG,GAAW;AAAA,QAC7C,GAAGC;AAAA,QAEH,UAAAJ,MAAY,aACX,gBAAAoB,EAACc,GAAA,EAAK,SAAQ,YACZ,UAAA,gBAAAd,EAACc,EAAK,MAAL,EAAW,UAAAL,EAAA,CAAM,EAAA,CACpB,IAEAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEArC,EAAc,cAAc;"}
1
+ {"version":3,"file":"anamnesis-card-DvYCa16e.js","sources":["../../src/components/anamnesis-card/anamnesis-card.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n useMemo,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { AlertTriangle } from 'lucide-react';\nimport { Badge } from '../badge/badge';\nimport { Card } from '../card/card';\nimport {\n Accordion,\n AccordionItem,\n AccordionTrigger,\n AccordionContent,\n} from '../accordion/accordion';\nimport { DescriptionList } from '../description-list/description-list';\nimport { Timestamp } from '../timestamp/timestamp';\n\n/* -------------------------------------------------------------------- */\n/* AnamnesisCard */\n/* */\n/* A completed medical-history questionnaire (anamnesi) rendered as a */\n/* collapsible interview. Replaces the bespoke \"scheda anamnestica\" */\n/* cards every clinical surface composes by hand: a header summarising */\n/* the form (compiled date, form name) with status chips, and a */\n/* collapsible body listing each question/answer pair as a */\n/* DescriptionList (dt = question, dd = answer). */\n/* */\n/* The clinical red-flag count (`highlightedAnswerCount`) is the most */\n/* prominent signal: an `error` Badge carrying a NON-colour cue */\n/* (warning glyph + dot) so colour-blind clinicians still read it. The */\n/* expired / corrupted statuses surface as warning / error chips beside */\n/* it. Per-answer `highlight` flags emphasise the matching rows inside */\n/* the interview. */\n/* */\n/* All visible text flows through `useTranslation('ui')` against the */\n/* `anamnesisCard.*` namespace. Consumers pass IDENTIFIERS + structural */\n/* data; the kit owns the chrome + i18n. No PHI lives in the agent layer. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* CVA — root */\n/* -------------------------------------------------------------------- */\n\nconst rootVariants = cva('ds:w-full ds:text-[color:var(--foreground)]', {\n variants: {\n // Matches the kit's other `surface` props. `'elevated'` (default)\n // wraps in `<Card variant=\"elevated\">`; `'flat'` drops the chrome\n // for use inside an existing Card / Sheet.\n surface: {\n flat: '',\n elevated: '',\n },\n },\n defaultVariants: { surface: 'elevated' },\n});\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\nexport interface AnamnesisCardAnswer {\n /** The questionnaire question text. Rendered as the `<dt>` term. */\n question: string;\n /** The patient's recorded answer. Rendered as the `<dd>` detail. */\n answer: ReactNode;\n /**\n * Marks this row as a clinical red-flag answer. Highlighted rows render\n * a `bordered` divider + an inline-end warning chip so they stand out\n * within the interview body — with the warning glyph carrying the cue,\n * not colour alone.\n */\n highlight?: boolean;\n}\n\nexport interface AnamnesisCardStatus {\n /** The questionnaire is past its validity window — surfaces a warning chip. */\n expired?: boolean;\n /** The submission is corrupted / incomplete — surfaces an error chip. */\n corrupted?: boolean;\n}\n\nexport interface AnamnesisCardProps extends Omit<\n ComponentPropsWithoutRef<'div'>,\n 'aria-label' | 'children' | 'title'\n> {\n /**\n * The questionnaire's compiled / reference date as an ISO-8601 string.\n * Rendered as an absolute `<Timestamp>` in the header.\n */\n dateIso: string;\n /**\n * Optional submission / creation timestamp as an ISO-8601 string.\n * Rendered as a relative `<Timestamp>` caption beneath the heading.\n */\n createdAtIso?: string;\n /**\n * Form / template name (e.g. \"Anamnesi generale\"). When omitted, a\n * localised generic heading is used.\n */\n formName?: string;\n /**\n * Count of answers flagged as clinical red-flags. When `> 0`, renders\n * the prominent `error` Badge with a warning glyph + colour-blind dot.\n * Omit / `0` hides the chip.\n */\n highlightedAnswerCount?: number;\n /** Lifecycle / integrity status — drives the warning / error chips. */\n status?: AnamnesisCardStatus;\n /**\n * The question/answer pairs. Rendered inside the collapsible interview\n * as a `<DescriptionList>` (dt = question, dd = answer). When empty or\n * omitted, the interview shows a localised \"no answers\" line.\n */\n answers?: AnamnesisCardAnswer[];\n /**\n * `'elevated'` (default) wraps in `<Card variant=\"elevated\">`. `'flat'`\n * drops the Card — use inside another card / sheet.\n */\n surface?: 'flat' | 'elevated';\n\n /* ----- a11y ----- */\n\n /** Override the default region aria-label. */\n 'aria-label'?: string;\n /** Agent-readiness consumer id, surfaced as `data-component-id`. */\n id?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const AnamnesisCard = forwardRef<HTMLDivElement, AnamnesisCardProps>(\n (\n {\n dateIso,\n createdAtIso,\n formName,\n highlightedAnswerCount = 0,\n status,\n answers,\n surface = 'elevated',\n 'aria-label': ariaLabel,\n id,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const headingId = useId();\n const accordionItemValue = useId();\n\n const resolvedFormName =\n formName ??\n t('anamnesisCard.defaultFormName', { defaultValue: 'Medical history' });\n const resolvedAriaLabel = ariaLabel ?? resolvedFormName;\n\n const hasFlags = highlightedAnswerCount > 0;\n const isExpired = status?.expired === true;\n const isCorrupted = status?.corrupted === true;\n\n const answerCount = answers?.length ?? 0;\n\n // Chip strip — the red-flag count first (most prominent), then the\n // integrity statuses. Each carries a non-colour cue (glyph / dot) so\n // colour-blind clinicians read the signal without relying on hue.\n const statusChips = useMemo<ReactNode>(() => {\n if (!hasFlags && !isExpired && !isCorrupted) return null;\n return (\n <div\n role=\"list\"\n aria-label={t('anamnesisCard.statusGroupLabel', {\n defaultValue: 'Questionnaire status',\n })}\n className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-2xs)]\"\n >\n {hasFlags ? (\n <Badge\n variant=\"error\"\n withDot\n leading={<AlertTriangle aria-hidden=\"true\" />}\n role=\"listitem\"\n >\n {t('anamnesisCard.status.highlighted', {\n count: highlightedAnswerCount,\n defaultValue: '{{count}} flagged answers',\n })}\n </Badge>\n ) : null}\n {isExpired ? (\n <Badge variant=\"warning\" withDot role=\"listitem\">\n {t('anamnesisCard.status.expired', { defaultValue: 'Expired' })}\n </Badge>\n ) : null}\n {isCorrupted ? (\n <Badge variant=\"error\" withDot role=\"listitem\">\n {t('anamnesisCard.status.corrupted', {\n defaultValue: 'Corrupted',\n })}\n </Badge>\n ) : null}\n </div>\n );\n }, [hasFlags, isExpired, isCorrupted, highlightedAnswerCount, t]);\n\n const header = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <div className=\"ds:flex ds:flex-wrap ds:items-start ds:gap-[var(--spacing-sm)]\">\n <h3\n id={headingId}\n className=\"type-title-card ds:m-0 ds:text-[color:var(--foreground)]\"\n >\n {resolvedFormName}\n </h3>\n {statusChips ? (\n <div className=\"ds:ms-auto ds:flex ds:shrink-0 ds:items-center\">\n {statusChips}\n </div>\n ) : null}\n </div>\n <p className=\"type-body-sm ds:m-0 ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)] ds:text-[color:var(--muted-foreground)]\">\n <span>\n {t('anamnesisCard.compiledOn', { defaultValue: 'Compiled' })}{' '}\n <Timestamp value={dateIso} format=\"absolute\" shape=\"bare\" />\n </span>\n {createdAtIso ? (\n <span className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <span aria-hidden=\"true\">·</span>\n <span>\n {t('anamnesisCard.submitted', { defaultValue: 'Submitted' })}{' '}\n <Timestamp\n value={createdAtIso}\n format=\"relative\"\n shape=\"bare\"\n />\n </span>\n </span>\n ) : null}\n </p>\n </div>\n );\n\n const interview =\n answerCount > 0 ? (\n <DescriptionList layout=\"stacked\" density=\"compact\" divider=\"between\">\n {answers!.map((row, index) => (\n <DescriptionList.Row\n key={index}\n className={\n row.highlight\n ? 'ds:border ds:border-[color:var(--destructive)] ds:rounded-[var(--radius-sm)] ds:p-[var(--spacing-sm)]'\n : undefined\n }\n >\n <DescriptionList.Term>\n <span className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <span>{row.question}</span>\n {row.highlight ? (\n <Badge\n variant=\"error\"\n size=\"sm\"\n withDot\n leading={<AlertTriangle aria-hidden=\"true\" />}\n aria-label={t('anamnesisCard.answerFlagLabel', {\n defaultValue: 'Flagged answer',\n })}\n />\n ) : null}\n </span>\n </DescriptionList.Term>\n <DescriptionList.Detail>{row.answer}</DescriptionList.Detail>\n </DescriptionList.Row>\n ))}\n </DescriptionList>\n ) : (\n <p className=\"type-body-sm ds:m-0 ds:text-[color:var(--muted-foreground)]\">\n {t('anamnesisCard.empty', {\n defaultValue: 'No answers were recorded.',\n })}\n </p>\n );\n\n const inner = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n {header}\n <Accordion type=\"single\" collapsible variant=\"separated\">\n <AccordionItem value={accordionItemValue}>\n <AccordionTrigger>\n {t('anamnesisCard.interviewToggle', {\n count: answerCount,\n defaultValue: 'Interview ({{count}} answers)',\n })}\n </AccordionTrigger>\n <AccordionContent>{interview}</AccordionContent>\n </AccordionItem>\n </Accordion>\n </div>\n );\n\n return (\n <div\n ref={ref}\n role=\"region\"\n aria-label={resolvedAriaLabel}\n aria-labelledby={headingId}\n data-component=\"anamnesis-card\"\n data-component-id={id}\n data-has-flags={hasFlags || undefined}\n id={id}\n className={rootVariants({ surface, className })}\n {...rest}\n >\n {surface === 'elevated' ? (\n <Card variant=\"elevated\">\n <Card.Body>{inner}</Card.Body>\n </Card>\n ) : (\n inner\n )}\n </div>\n );\n },\n);\n\nAnamnesisCard.displayName = 'AnamnesisCard';\n\nexport type AnamnesisCardSurface = NonNullable<\n VariantProps<typeof rootVariants>['surface']\n>;\n"],"names":["rootVariants","cva","AnamnesisCard","forwardRef","dateIso","createdAtIso","formName","highlightedAnswerCount","status","answers","surface","ariaLabel","id","className","rest","ref","t","useTranslation","headingId","useId","accordionItemValue","resolvedFormName","resolvedAriaLabel","hasFlags","isExpired","isCorrupted","answerCount","statusChips","useMemo","jsxs","jsx","Badge","AlertTriangle","header","Timestamp","interview","DescriptionList","row","index","inner","Accordion","AccordionItem","AccordionTrigger","AccordionContent","Card"],"mappings":"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"}