@alfadocs/ui-kit 0.69.0 → 0.71.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 (425) hide show
  1. package/dist/_chunks/address-fields-CPbFJ8e8.js +246 -0
  2. package/dist/_chunks/{agenda-card-BxSFkqgY.js → agenda-card-BQ-IKAru.js} +2 -2
  3. package/dist/_chunks/{agenda-tray-g0kg7HwB.js → agenda-tray-CGXRk58j.js} +2 -2
  4. package/dist/_chunks/{ai-consent-banner-CXlsNX1c.js → ai-consent-banner-Be-h9mRI.js} +3 -3
  5. package/dist/_chunks/{ai-prompt-input-CuhTo9mh.js → ai-prompt-input-V4DdOeqv.js} +2 -2
  6. package/dist/_chunks/{alert-_mUKLmwA.js → alert-CHYZ96tR.js} +150 -96
  7. package/dist/_chunks/{alia-sidebar-B47qRQb5.js → alia-sidebar-DvIUzIX9.js} +107 -106
  8. package/dist/_chunks/{anamnesis-card-DRmE24OQ.js → anamnesis-card-DvYCa16e.js} +2 -2
  9. package/dist/_chunks/anatomy-scheme-CXSk11UJ.js +2445 -0
  10. package/dist/_chunks/annotation-marker-qt5R9WZX.js +120 -0
  11. package/dist/_chunks/{antenatal-schedule-timeline-35ebkcZT.js → antenatal-schedule-timeline-CwXrQRm1.js} +2 -2
  12. package/dist/_chunks/{app-frame-BYx1gcV7.js → app-frame-DIEMIC5V.js} +67 -56
  13. package/dist/_chunks/appointment-card-DVaeJNVB.js +294 -0
  14. package/dist/_chunks/appointment-timeline-PJgnrjFb.js +388 -0
  15. package/dist/_chunks/appointment-tray-B16QPGbm.js +193 -0
  16. package/dist/_chunks/{audio-recorder-DYXXnGug.js → audio-recorder-DNDsOLqO.js} +3 -3
  17. package/dist/_chunks/{autocomplete-DOeGouCL.js → autocomplete-BrONKN8l.js} +168 -146
  18. package/dist/_chunks/{badge-CqGsX32l.js → badge-DCOqV9mI.js} +32 -27
  19. package/dist/_chunks/{bishop-score-PJI3AXzA.js → bishop-score-Cym_TeQY.js} +3 -3
  20. package/dist/_chunks/{bmi-calculator-BZtIJ53x.js → bmi-calculator-zjeY4E7J.js} +2 -2
  21. package/dist/_chunks/{booking-C3VqFReX.js → booking-C7do4vaR.js} +7 -7
  22. package/dist/_chunks/{button-group-Ciq6J4IW.js → button-group-CvEnVzY7.js} +32 -35
  23. package/dist/_chunks/{care-plan-card-CvFGXa2z.js → care-plan-card-DzPDYgtK.js} +5 -5
  24. package/dist/_chunks/{care-plan-entry-card-C3E_gClk.js → care-plan-entry-card-CEnQy7YP.js} +5 -5
  25. package/dist/_chunks/care-plan-header-DcXFXWit.js +198 -0
  26. package/dist/_chunks/{chat-message-3V54YipB.js → chat-message-DzpcJR-q.js} +25 -23
  27. package/dist/_chunks/city-input-Dkgaak7I.js +169 -0
  28. package/dist/_chunks/clinical-note-card-BUvNMNGL.js +436 -0
  29. package/dist/_chunks/clipboard-list-S7s-MXQq.js +25 -0
  30. package/dist/_chunks/{combobox-Clum7gJ1.js → combobox-DnqSF0IH.js} +131 -114
  31. package/dist/_chunks/connection-status-CY1HV8Wg.js +108 -0
  32. package/dist/_chunks/{contact-profile-card-Dramqa9C.js → contact-profile-card-DDPwRFiP.js} +2 -2
  33. package/dist/_chunks/control-room-rail-FAQZrGVL.js +333 -0
  34. package/dist/_chunks/country-select-BwUZQvTa.js +709 -0
  35. package/dist/_chunks/{cycle-calculator-DmRGJNaT.js → cycle-calculator-CCmPwcBl.js} +2 -2
  36. package/dist/_chunks/{dependent-selector-CG_FOHya.js → dependent-selector-DUV4thxX.js} +2 -2
  37. package/dist/_chunks/{document-scanner-CTubA0-N.js → document-scanner-C_AxLooF.js} +3 -3
  38. package/dist/_chunks/{due-date-calculator-BTmsIQqD.js → due-date-calculator-Brdj-euS.js} +3 -3
  39. package/dist/_chunks/editable-currency-cell-renderer-CGELrkIj.js +410 -0
  40. package/dist/_chunks/email-input-DJ7EXklP.js +397 -0
  41. package/dist/_chunks/{entity-card-COhmqHly.js → entity-card-DmrgYSEX.js} +38 -20
  42. package/dist/_chunks/entity-summary-CaM1Y-xE.js +291 -0
  43. package/dist/_chunks/{fetal-weight-CRz7KE2D.js → fetal-weight-DNCkyeVo.js} +2 -2
  44. package/dist/_chunks/field-array-siUZzfYe.js +146 -0
  45. package/dist/_chunks/field-value-3jMM0uDx.js +415 -0
  46. package/dist/_chunks/{file-upload-5ScQd4fE.js → file-upload-DwZcAK8D.js} +2 -1
  47. package/dist/_chunks/{freemium-paywall-DZ2mBS3w.js → freemium-paywall-WYlNO7yT.js} +2 -2
  48. package/dist/_chunks/{gestational-age-calculator-BleUdhbI.js → gestational-age-calculator-DKzEV5Qi.js} +4 -4
  49. package/dist/_chunks/hash-CysBBS_N.js +17 -0
  50. package/dist/_chunks/{hcg-doubling-CnjDXX6U.js → hcg-doubling-C7bmuaU3.js} +2 -2
  51. package/dist/_chunks/iban-input-B0TWzR1R.js +436 -0
  52. package/dist/_chunks/icon-picker-0B7KhrF1.js +272 -0
  53. package/dist/_chunks/image-cropper-D9jqJy19.js +367 -0
  54. package/dist/_chunks/{actions-cell-renderer-DrcaxB0w.js → link-cell-renderer-De_SLjSq.js} +792 -668
  55. package/dist/_chunks/list-checks-BUs75d_o.js +18 -0
  56. package/dist/_chunks/lock-CKOIn0IK.js +15 -0
  57. package/dist/_chunks/{marketplace-app-shell-6T9W4Knl.js → marketplace-app-shell-BGqkywsi.js} +5 -5
  58. package/dist/_chunks/message-card-DsHFFiL1.js +319 -0
  59. package/dist/_chunks/{message-tray-DwrBLJlf.js → message-tray-C0a6CL1_.js} +172 -135
  60. package/dist/_chunks/{multi-select-BdHHDrRN.js → multi-select-WE4S9FIF.js} +75 -63
  61. package/dist/_chunks/nav-grid-9xphY3FM.js +169 -0
  62. package/dist/_chunks/notes-panel-DXiMfuvp.js +320 -0
  63. package/dist/_chunks/notification-card-BMqNzCIt.js +290 -0
  64. package/dist/_chunks/{notification-tray-Btb9oQeZ.js → notification-tray-BmUlCx3g.js} +201 -166
  65. package/dist/_chunks/{operator-hero-CP2Nhupm.js → operator-hero-BO8TqzX2.js} +3 -3
  66. package/dist/_chunks/panel-header-D313n_9-.js +105 -0
  67. package/dist/_chunks/patient-details-DgfTJimE.js +759 -0
  68. package/dist/_chunks/{patient-search-CBC_ySF6.js → patient-search-CSWQKOSP.js} +3 -3
  69. package/dist/_chunks/{patient-shell-DV3XEtIB.js → patient-shell-BMwsIKlW.js} +3 -3
  70. package/dist/_chunks/patient-summary-card-D4NdgYJB.js +452 -0
  71. package/dist/_chunks/patient-table-CERknpd8.js +1110 -0
  72. package/dist/_chunks/{payment-form-DvjwYVIT.js → payment-form-CxqIXqw7.js} +2 -2
  73. package/dist/_chunks/{payment-request-card-DioWKBUq.js → payment-request-card-Blf-MFNY.js} +125 -136
  74. package/dist/_chunks/{pdf-viewer-D6BPfW2D.js → pdf-viewer-QfebdLOd.js} +192 -214
  75. package/dist/_chunks/{periodontal-chart-card-BuDEMbHE.js → periodontal-chart-card-hRRJY1NN.js} +2 -2
  76. package/dist/_chunks/permission-matrix-Bw5oexUt.js +174 -0
  77. package/dist/_chunks/position-grid-CcvqHaKN.js +169 -0
  78. package/dist/_chunks/postal-code-input-UCOYuRY2.js +192 -0
  79. package/dist/_chunks/{practice-results-KrTHqZua.js → practice-results-El5Z-oVp.js} +4 -4
  80. package/dist/_chunks/{pregnancy-dating-DORUAOHB.js → pregnancy-dating-CunHrOpO.js} +4 -4
  81. package/dist/_chunks/{pregnancy-weight-gain-DVz4rr7-.js → pregnancy-weight-gain-BUNpTsH-.js} +2 -2
  82. package/dist/_chunks/{product-hub-panel-e6pW220e.js → product-hub-panel-DtU7KXxm.js} +257 -217
  83. package/dist/_chunks/province-select-D_TZvix3.js +261 -0
  84. package/dist/_chunks/{public-header.agent-DqkqA-ca.js → public-header.agent-TxmC_x1I.js} +2 -2
  85. package/dist/_chunks/radiograph-panel.agent-tWjN2nHX.js +553 -0
  86. package/dist/_chunks/reviews-panel-DxkSrgMl.js +559 -0
  87. package/dist/_chunks/rich-text-editor-C8tyGjfb.js +2621 -0
  88. package/dist/_chunks/{scroll-area-5wNK0Cyz.js → scroll-area-BZOvUhwQ.js} +2 -2
  89. package/dist/_chunks/{select-DMLG44F5.js → select-KsyRr8WH.js} +114 -102
  90. package/dist/_chunks/{sheet-BxsE7eQm.js → sheet-umkfZjF6.js} +53 -42
  91. package/dist/_chunks/{sidebar-DY9jGjgt.js → sidebar-QCp9wHNP.js} +125 -113
  92. package/dist/_chunks/{sign-document-B4DeRhTe.js → sign-document-By6hMOra.js} +2 -2
  93. package/dist/_chunks/{stepper-accordion-Dki6r9ZE.js → stepper-accordion-DC-H-8v4.js} +38 -48
  94. package/dist/_chunks/tab-bar-Bv9nGNdO.js +262 -0
  95. package/dist/_chunks/{tabs-BxcOziCo.js → tabs-CYZVKKDl.js} +2 -2
  96. package/dist/_chunks/task-card-DCdsI0ZT.js +189 -0
  97. package/dist/_chunks/{task-tray-qOEQflu4.js → task-tray-DNVejijD.js} +2 -2
  98. package/dist/_chunks/tasks-panel-C9odmawT.js +757 -0
  99. package/dist/_chunks/token-insert-menu-CFQqTe_n.js +147 -0
  100. package/dist/_chunks/tool-rail-BZx0-yIr.js +524 -0
  101. package/dist/_chunks/tooth-scheme-DJZtzfeY.js +2133 -0
  102. package/dist/_chunks/{transaction-chip-DK84XCBU.js → transaction-chip-CscoQbxF.js} +88 -61
  103. package/dist/_chunks/{transcript-panel-3THQX6nJ.js → transcript-panel-CHGHHHdT.js} +95 -83
  104. package/dist/_chunks/{unit-converter-YEpD9evj.js → unit-converter-CwlZbfdn.js} +2 -2
  105. package/dist/_chunks/use-clamp-overflow-DQE2kwZ9.js +20 -0
  106. package/dist/_chunks/use-overflow-collapse-BIOzKbni.js +32 -0
  107. package/dist/_chunks/use-persistent-state-nZwZAnE9.js +24 -0
  108. package/dist/_chunks/{warning-stack-BsgaEbL8.js → warning-stack--sTrrBDA.js} +86 -101
  109. package/dist/_chunks/{workflow-map-Bdam9pGp.js → workflow-map-M8MBBHQm.js} +107 -119
  110. package/dist/_chunks/zoom-out-CgVtf2Wx.js +29 -0
  111. package/dist/agent/index.js +5 -4
  112. package/dist/agent/types.d.ts +19 -2
  113. package/dist/agent-catalog.json +3325 -322
  114. package/dist/agent-i18n/en.json +314 -14
  115. package/dist/components/_shared/entity-card/entity-card.d.ts +6 -0
  116. package/dist/components/_shared/entity-card/index.d.ts +1 -1
  117. package/dist/components/_shared/field-value.d.ts +21 -0
  118. package/dist/components/_shared/field-visibility-cog.d.ts +20 -0
  119. package/dist/components/_shared/field-visibility.d.ts +36 -0
  120. package/dist/components/_shared/option.d.ts +2 -0
  121. package/dist/components/_shared/patient-fields.d.ts +119 -0
  122. package/dist/components/address-fields/address-fields.agent.d.ts +9 -0
  123. package/dist/components/address-fields/address-fields.d.ts +29 -0
  124. package/dist/components/address-fields/index.d.ts +5 -0
  125. package/dist/components/address-fields/index.js +6 -0
  126. package/dist/components/agenda-card/index.js +1 -1
  127. package/dist/components/agenda-tray/index.js +1 -1
  128. package/dist/components/ai-consent-banner/index.js +1 -1
  129. package/dist/components/ai-prompt-input/index.js +1 -1
  130. package/dist/components/alert/alert.d.ts +5 -0
  131. package/dist/components/alert/index.js +1 -1
  132. package/dist/components/anamnesis-card/index.js +1 -1
  133. package/dist/components/anatomy-scheme/anatomy-face-paths.d.ts +15 -0
  134. package/dist/components/anatomy-scheme/anatomy-muscle-paths.d.ts +20 -0
  135. package/dist/components/anatomy-scheme/anatomy-scheme-data.d.ts +121 -0
  136. package/dist/components/anatomy-scheme/anatomy-scheme.agent.d.ts +6 -0
  137. package/dist/components/anatomy-scheme/anatomy-scheme.d.ts +69 -0
  138. package/dist/components/anatomy-scheme/index.d.ts +6 -0
  139. package/dist/components/anatomy-scheme/index.js +17 -0
  140. package/dist/components/annotation-marker/annotation-marker.d.ts +33 -0
  141. package/dist/components/annotation-marker/index.d.ts +3 -0
  142. package/dist/components/annotation-marker/index.js +7 -0
  143. package/dist/components/app-frame/app-frame.d.ts +2 -2
  144. package/dist/components/app-frame/index.js +1 -1
  145. package/dist/components/appointment-card/appointment-card.d.ts +25 -1
  146. package/dist/components/appointment-card/index.js +6 -5
  147. package/dist/components/appointment-timeline/appointment-timeline.agent.d.ts +4 -0
  148. package/dist/components/appointment-timeline/appointment-timeline.d.ts +66 -0
  149. package/dist/components/appointment-timeline/index.d.ts +4 -0
  150. package/dist/components/appointment-timeline/index.js +6 -0
  151. package/dist/components/audio-recorder/index.js +1 -1
  152. package/dist/components/autocomplete/autocomplete.d.ts +10 -0
  153. package/dist/components/autocomplete/index.js +1 -1
  154. package/dist/components/badge/badge.d.ts +6 -2
  155. package/dist/components/badge/index.js +1 -1
  156. package/dist/components/bishop-score/index.js +1 -1
  157. package/dist/components/bmi-calculator/index.js +1 -1
  158. package/dist/components/booking/index.js +1 -1
  159. package/dist/components/button-group/index.js +1 -1
  160. package/dist/components/care-plan-card/index.js +1 -1
  161. package/dist/components/care-plan-entry-card/index.js +1 -1
  162. package/dist/components/care-plan-header/care-plan-header.agent.d.ts +4 -0
  163. package/dist/components/care-plan-header/care-plan-header.d.ts +111 -0
  164. package/dist/components/care-plan-header/index.d.ts +4 -0
  165. package/dist/components/care-plan-header/index.js +6 -0
  166. package/dist/components/chat-message/index.js +1 -1
  167. package/dist/components/city-input/city-input.agent.d.ts +8 -0
  168. package/dist/components/city-input/city-input.d.ts +57 -0
  169. package/dist/components/city-input/index.d.ts +5 -0
  170. package/dist/components/city-input/index.js +6 -0
  171. package/dist/components/clinical-note-card/clinical-note-card.d.ts +21 -1
  172. package/dist/components/clinical-note-card/index.js +1 -1
  173. package/dist/components/combobox/combobox.d.ts +17 -0
  174. package/dist/components/combobox/index.js +1 -1
  175. package/dist/components/connection-status/connection-status.agent.d.ts +4 -0
  176. package/dist/components/connection-status/connection-status.d.ts +36 -0
  177. package/dist/components/connection-status/index.d.ts +4 -0
  178. package/dist/components/connection-status/index.js +6 -0
  179. package/dist/components/contact-profile-card/index.js +1 -1
  180. package/dist/components/control-room-rail/control-room-context.d.ts +53 -0
  181. package/dist/components/control-room-rail/control-room-rail.agent.d.ts +4 -0
  182. package/dist/components/control-room-rail/control-room-rail.d.ts +35 -0
  183. package/dist/components/control-room-rail/index.d.ts +6 -0
  184. package/dist/components/control-room-rail/index.js +10 -0
  185. package/dist/components/counter/counter.d.ts +1 -1
  186. package/dist/components/country-select/country-select.agent.d.ts +8 -0
  187. package/dist/components/country-select/country-select.d.ts +51 -0
  188. package/dist/components/country-select/index.d.ts +6 -0
  189. package/dist/components/country-select/index.js +9 -0
  190. package/dist/components/country-select/iso-3166.d.ts +15 -0
  191. package/dist/components/cycle-calculator/index.js +1 -1
  192. package/dist/components/data-table/cell-renderers/actions-cell-renderer.d.ts +18 -0
  193. package/dist/components/data-table/cell-renderers/reorder-cell-renderer.d.ts +34 -0
  194. package/dist/components/data-table/index.d.ts +3 -1
  195. package/dist/components/data-table/index.js +35 -32
  196. package/dist/components/dependent-selector/index.js +1 -1
  197. package/dist/components/document-scanner/index.js +1 -1
  198. package/dist/components/due-date-calculator/index.js +2 -2
  199. package/dist/components/email-input/index.js +1 -1
  200. package/dist/components/entity-summary/entity-summary.agent.d.ts +4 -0
  201. package/dist/components/entity-summary/entity-summary.d.ts +92 -0
  202. package/dist/components/entity-summary/index.d.ts +3 -0
  203. package/dist/components/entity-summary/index.js +5 -0
  204. package/dist/components/fetal-weight/index.js +1 -1
  205. package/dist/components/field-array/field-array.agent.d.ts +4 -0
  206. package/dist/components/field-array/field-array.d.ts +45 -0
  207. package/dist/components/field-array/index.d.ts +4 -0
  208. package/dist/components/field-array/index.js +6 -0
  209. package/dist/components/file-upload/index.js +1 -1
  210. package/dist/components/freemium-paywall/freemium-paywall.d.ts +1 -1
  211. package/dist/components/freemium-paywall/index.js +1 -1
  212. package/dist/components/gestational-age-calculator/index.js +1 -1
  213. package/dist/components/hcg-doubling/index.js +1 -1
  214. package/dist/components/iban-input/iban-input.agent.d.ts +4 -0
  215. package/dist/components/iban-input/iban-input.d.ts +51 -0
  216. package/dist/components/iban-input/index.d.ts +5 -0
  217. package/dist/components/iban-input/index.js +13 -0
  218. package/dist/components/iban-input/is-valid-iban.d.ts +31 -0
  219. package/dist/components/icon-picker/icon-picker.agent.d.ts +4 -0
  220. package/dist/components/icon-picker/icon-picker.d.ts +41 -0
  221. package/dist/components/icon-picker/index.d.ts +4 -0
  222. package/dist/components/icon-picker/index.js +6 -0
  223. package/dist/components/image-cropper/crop-geometry.d.ts +30 -0
  224. package/dist/components/image-cropper/image-cropper.agent.d.ts +4 -0
  225. package/dist/components/image-cropper/image-cropper.d.ts +32 -0
  226. package/dist/components/image-cropper/index.d.ts +5 -0
  227. package/dist/components/image-cropper/index.js +11 -0
  228. package/dist/components/index.d.ts +25 -1
  229. package/dist/components/message-card/index.js +1 -1
  230. package/dist/components/message-card/message-card.d.ts +14 -0
  231. package/dist/components/message-tray/index.js +1 -1
  232. package/dist/components/message-tray/message-tray.d.ts +4 -0
  233. package/dist/components/multi-select/index.js +1 -1
  234. package/dist/components/nav-grid/index.d.ts +4 -0
  235. package/dist/components/nav-grid/index.js +7 -0
  236. package/dist/components/nav-grid/nav-grid.agent.d.ts +4 -0
  237. package/dist/components/nav-grid/nav-grid.d.ts +41 -0
  238. package/dist/components/notes-panel/index.d.ts +3 -0
  239. package/dist/components/notes-panel/index.js +5 -0
  240. package/dist/components/notes-panel/notes-panel.agent.d.ts +4 -0
  241. package/dist/components/notes-panel/notes-panel.d.ts +94 -0
  242. package/dist/components/notification-card/index.js +1 -1
  243. package/dist/components/notification-card/notification-card.d.ts +15 -0
  244. package/dist/components/notification-tray/index.js +1 -1
  245. package/dist/components/notification-tray/notification-tray.d.ts +4 -0
  246. package/dist/components/operator-hero/index.js +1 -1
  247. package/dist/components/panel-header/index.d.ts +3 -0
  248. package/dist/components/panel-header/index.js +7 -0
  249. package/dist/components/panel-header/panel-header.d.ts +41 -0
  250. package/dist/components/patient-details/index.d.ts +5 -0
  251. package/dist/components/patient-details/index.js +6 -0
  252. package/dist/components/patient-details/patient-details.agent.d.ts +4 -0
  253. package/dist/components/patient-details/patient-details.d.ts +96 -0
  254. package/dist/components/patient-search/index.js +1 -1
  255. package/dist/components/patient-summary-card/index.js +1 -1
  256. package/dist/components/patient-summary-card/patient-summary-card.d.ts +40 -1
  257. package/dist/components/patient-table/columns.d.ts +69 -40
  258. package/dist/components/patient-table/index.d.ts +2 -6
  259. package/dist/components/patient-table/index.js +8 -9
  260. package/dist/components/patient-table/patient-table.d.ts +38 -4
  261. package/dist/components/patient-table/types.d.ts +52 -2
  262. package/dist/components/patient-table/use-responsive-columns.d.ts +8 -6
  263. package/dist/components/payment-card/index.js +1 -1
  264. package/dist/components/payment-form/index.js +1 -1
  265. package/dist/components/pdf-viewer/index.js +1 -1
  266. package/dist/components/periodontal-chart-card/index.js +1 -1
  267. package/dist/components/permission-matrix/index.d.ts +4 -0
  268. package/dist/components/permission-matrix/index.js +7 -0
  269. package/dist/components/permission-matrix/permission-matrix.agent.d.ts +4 -0
  270. package/dist/components/permission-matrix/permission-matrix.d.ts +47 -0
  271. package/dist/components/position-grid/index.d.ts +4 -0
  272. package/dist/components/position-grid/index.js +7 -0
  273. package/dist/components/position-grid/position-grid.agent.d.ts +4 -0
  274. package/dist/components/position-grid/position-grid.d.ts +39 -0
  275. package/dist/components/postal-code-input/index.d.ts +5 -0
  276. package/dist/components/postal-code-input/index.js +6 -0
  277. package/dist/components/postal-code-input/postal-code-input.agent.d.ts +8 -0
  278. package/dist/components/postal-code-input/postal-code-input.d.ts +27 -0
  279. package/dist/components/practice-results/index.js +1 -1
  280. package/dist/components/pregnancy-dating/index.js +1 -1
  281. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  282. package/dist/components/product-hub-tray/index.js +1 -1
  283. package/dist/components/product-hub-tray/product-hub-tray.d.ts +13 -1
  284. package/dist/components/province-select/index.d.ts +6 -0
  285. package/dist/components/province-select/index.js +7 -0
  286. package/dist/components/province-select/it-provinces.d.ts +8 -0
  287. package/dist/components/province-select/province-select.agent.d.ts +8 -0
  288. package/dist/components/province-select/province-select.d.ts +38 -0
  289. package/dist/components/public-footer/public-footer.d.ts +1 -1
  290. package/dist/components/public-header/index.js +1 -1
  291. package/dist/components/radiograph-panel/index.d.ts +4 -0
  292. package/dist/components/radiograph-panel/index.js +7 -0
  293. package/dist/components/radiograph-panel/radiograph-panel.agent.d.ts +13 -0
  294. package/dist/components/radiograph-panel/radiograph-panel.d.ts +36 -0
  295. package/dist/components/reviews-panel/index.js +1 -1
  296. package/dist/components/rich-text-editor/editor-toolbar.d.ts +17 -0
  297. package/dist/components/rich-text-editor/index.js +1 -1
  298. package/dist/components/scroll-area/index.js +1 -1
  299. package/dist/components/select/index.js +1 -1
  300. package/dist/components/select/select.d.ts +8 -2
  301. package/dist/components/sheet/index.js +1 -1
  302. package/dist/components/sidebar/index.js +2 -2
  303. package/dist/components/sign-document/index.js +1 -1
  304. package/dist/components/skeleton/skeleton.d.ts +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/tabs/index.js +1 -1
  309. package/dist/components/task-card/index.js +1 -1
  310. package/dist/components/task-card/task-card.d.ts +14 -6
  311. package/dist/components/task-tray/index.js +1 -1
  312. package/dist/components/tasks-panel/index.d.ts +4 -0
  313. package/dist/components/tasks-panel/index.js +6 -0
  314. package/dist/components/tasks-panel/tasks-panel.agent.d.ts +4 -0
  315. package/dist/components/tasks-panel/tasks-panel.d.ts +152 -0
  316. package/dist/components/token-insert-menu/index.d.ts +4 -0
  317. package/dist/components/token-insert-menu/index.js +6 -0
  318. package/dist/components/token-insert-menu/token-insert-menu.agent.d.ts +4 -0
  319. package/dist/components/token-insert-menu/token-insert-menu.d.ts +33 -0
  320. package/dist/components/tool-rail/index.d.ts +4 -0
  321. package/dist/components/tool-rail/index.js +6 -0
  322. package/dist/components/tool-rail/tool-rail.agent.d.ts +4 -0
  323. package/dist/components/tool-rail/tool-rail.d.ts +160 -0
  324. package/dist/components/tooth-scheme/index.d.ts +2 -2
  325. package/dist/components/tooth-scheme/index.js +30 -23
  326. package/dist/components/tooth-scheme/tooth-data.d.ts +112 -1
  327. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts +2 -2
  328. package/dist/components/tooth-scheme/tooth-scheme.d.ts +84 -11
  329. package/dist/components/transaction-chip/index.js +1 -1
  330. package/dist/components/transaction-chip/transaction-chip.d.ts +2 -2
  331. package/dist/components/transcript-panel/index.js +1 -1
  332. package/dist/components/transcript-panel/transcript-panel.d.ts +2 -2
  333. package/dist/components/unit-converter/index.js +1 -1
  334. package/dist/components/warning-stack/index.js +1 -1
  335. package/dist/components/warning-stack/warning-stack.d.ts +10 -7
  336. package/dist/components/workflow/index.js +1 -1
  337. package/dist/hooks/index.d.ts +1 -0
  338. package/dist/hooks/index.js +24 -22
  339. package/dist/hooks/use-clamp-overflow.d.ts +19 -0
  340. package/dist/hooks/use-edge-resize.d.ts +2 -2
  341. package/dist/hooks/use-overflow-collapse.d.ts +46 -0
  342. package/dist/hooks/use-persistent-state.d.ts +7 -1
  343. package/dist/hooks/use-scroll-overflow.d.ts +36 -0
  344. package/dist/i18n/locales/ar.d.ts +475 -26
  345. package/dist/i18n/locales/ar.js +478 -31
  346. package/dist/i18n/locales/de.d.ts +475 -26
  347. package/dist/i18n/locales/de.js +480 -31
  348. package/dist/i18n/locales/el.d.ts +475 -26
  349. package/dist/i18n/locales/el.js +485 -31
  350. package/dist/i18n/locales/en.d.ts +476 -34
  351. package/dist/i18n/locales/en.js +492 -39
  352. package/dist/i18n/locales/es.d.ts +475 -26
  353. package/dist/i18n/locales/es.js +477 -31
  354. package/dist/i18n/locales/fr.d.ts +475 -26
  355. package/dist/i18n/locales/fr.js +480 -31
  356. package/dist/i18n/locales/hi.d.ts +475 -26
  357. package/dist/i18n/locales/hi.js +476 -31
  358. package/dist/i18n/locales/it.d.ts +475 -26
  359. package/dist/i18n/locales/it.js +480 -31
  360. package/dist/i18n/locales/ja.d.ts +475 -26
  361. package/dist/i18n/locales/ja.js +481 -31
  362. package/dist/i18n/locales/nl.d.ts +475 -26
  363. package/dist/i18n/locales/nl.js +473 -31
  364. package/dist/i18n/locales/pl.d.ts +475 -26
  365. package/dist/i18n/locales/pl.js +481 -31
  366. package/dist/i18n/locales/pt.d.ts +475 -26
  367. package/dist/i18n/locales/pt.js +485 -31
  368. package/dist/i18n/locales/ro.d.ts +475 -26
  369. package/dist/i18n/locales/ro.js +485 -31
  370. package/dist/i18n/locales/ru.d.ts +475 -26
  371. package/dist/i18n/locales/ru.js +478 -31
  372. package/dist/i18n/locales/sq.d.ts +475 -26
  373. package/dist/i18n/locales/sq.js +482 -31
  374. package/dist/i18n/locales/sv.d.ts +475 -26
  375. package/dist/i18n/locales/sv.js +480 -31
  376. package/dist/i18n/locales/tr.d.ts +475 -26
  377. package/dist/i18n/locales/tr.js +478 -31
  378. package/dist/i18n/locales/zh.d.ts +475 -26
  379. package/dist/i18n/locales/zh.js +473 -31
  380. package/dist/index.js +826 -709
  381. package/dist/locales/ar.json +480 -31
  382. package/dist/locales/de.json +480 -31
  383. package/dist/locales/el.json +480 -31
  384. package/dist/locales/en.json +480 -31
  385. package/dist/locales/es.json +480 -31
  386. package/dist/locales/fr.json +480 -31
  387. package/dist/locales/hi.json +480 -31
  388. package/dist/locales/it.json +480 -31
  389. package/dist/locales/ja.json +480 -31
  390. package/dist/locales/nl.json +480 -31
  391. package/dist/locales/pl.json +480 -31
  392. package/dist/locales/pt.json +480 -31
  393. package/dist/locales/ro.json +480 -31
  394. package/dist/locales/ru.json +480 -31
  395. package/dist/locales/sq.json +480 -31
  396. package/dist/locales/sv.json +480 -31
  397. package/dist/locales/tr.json +480 -31
  398. package/dist/locales/zh.json +480 -31
  399. package/dist/patterns/alia-assistant/alia-types.d.ts +9 -0
  400. package/dist/patterns/alia-assistant/index.js +1 -1
  401. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  402. package/dist/patterns/patient-shell/index.js +1 -1
  403. package/dist/tokens.css +9 -1
  404. package/package.json +101 -5
  405. package/dist/_chunks/ai-tools-rail-BA_sqy1A.js +0 -373
  406. package/dist/_chunks/appointment-tray-CZtvtaH-.js +0 -431
  407. package/dist/_chunks/clinical-note-card-DqQYf_D4.js +0 -333
  408. package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js +0 -448
  409. package/dist/_chunks/email-input-B_Y55f5G.js +0 -396
  410. package/dist/_chunks/message-card-Bx4GmLvf.js +0 -277
  411. package/dist/_chunks/notification-card-BiESdm8q.js +0 -255
  412. package/dist/_chunks/patient-summary-card-B836_fDB.js +0 -435
  413. package/dist/_chunks/patient-table-CDuosVru.js +0 -889
  414. package/dist/_chunks/reviews-panel-Dq7LMDcH.js +0 -555
  415. package/dist/_chunks/rich-text-editor-BsV7zUdg.js +0 -2142
  416. package/dist/_chunks/tab-bar-B1ovILzh.js +0 -105
  417. package/dist/_chunks/task-card-BwY9jaV1.js +0 -124
  418. package/dist/_chunks/tooth-scheme-yBr53cvv.js +0 -1330
  419. package/dist/_chunks/use-persistent-state-i23OWy6G.js +0 -24
  420. package/dist/components/ai-tools-rail/ai-tools-rail.agent.d.ts +0 -4
  421. package/dist/components/ai-tools-rail/ai-tools-rail.d.ts +0 -68
  422. package/dist/components/ai-tools-rail/index.d.ts +0 -4
  423. package/dist/components/ai-tools-rail/index.js +0 -6
  424. package/dist/components/patient-table/cell-renderers/contact-cell.d.ts +0 -45
  425. package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts +0 -26
@@ -10,6 +10,35 @@ export interface ToothState {
10
10
  notes?: string;
11
11
  }
12
12
  export type ToothChart = Record<FdiId, ToothState>;
13
+ /** Radiograph (x-ray) type. `'periapical'` is the intraoral *endorale*. */
14
+ export type RadiographKind = 'periapical' | 'bitewing' | 'panoramic' | 'other';
15
+ /**
16
+ * A single radiograph attached to a tooth. Image urls are opaque,
17
+ * consumer-hosted strings, interpolated into an SVG `<image href>` / `<img src>`
18
+ * (which cannot execute scripts) — never bundled and never runtime-validated.
19
+ * Real radiographs are PHI: stories and demos must use synthetic placeholders.
20
+ */
21
+ export interface Radiograph {
22
+ /** Stable id — keys the archive list and the imperative open call. */
23
+ id: string;
24
+ /** Full-resolution image url. */
25
+ url: string;
26
+ /** Optional smaller preview url (falls back to `url`). */
27
+ thumbnailUrl?: string;
28
+ /** ISO acquisition date (`YYYY-MM-DD`). */
29
+ date?: string;
30
+ /** Free-text clinical note. */
31
+ note?: string;
32
+ /** Radiograph type. Default `'periapical'` (an *endorale*). */
33
+ kind?: RadiographKind;
34
+ /**
35
+ * Accessible description for the FULL-SIZE image, consumed by a downstream
36
+ * viewer (e.g. the Dental Imaging Hub archive `<img>`). The chart's slot
37
+ * render is decorative (`aria-hidden` — the tooth's accessible name carries
38
+ * the radiograph count), so `alt` is intentionally not read by the chart.
39
+ */
40
+ alt?: string;
41
+ }
13
42
  export type Anatomy = 'incisor' | 'canine' | 'premolar' | 'molar';
14
43
  export type Arch = 'upper' | 'lower';
15
44
  export type Side = 'right' | 'left';
@@ -141,11 +170,93 @@ export interface PositionedTooth {
141
170
  * is preserved: the patient's right sits on the viewer's left in both
142
171
  * arches, regardless of document direction.
143
172
  */
144
- export declare function layoutTeeth(dentition: Dentition, slotHeight?: number): {
173
+ export declare function layoutTeeth(dentition: Dentition, slotHeight?: number, options?: {
174
+ arch?: Arch;
175
+ }): {
145
176
  teeth: PositionedTooth[];
146
177
  width: number;
147
178
  height: number;
148
179
  };
180
+ export type SpecialElementKind = 'quadrant' | 'sextant' | 'arch' | 'general';
181
+ export interface SpecialElement {
182
+ /**
183
+ * Stable id — a chart key and the value emitted by `onSelect`. Permanent:
184
+ * `Q1`–`Q4`, `S1`–`S6`, `AS`, `AI`, `general`. Primary mirrors with an `m`
185
+ * prefix: `mQ1`…, `mS1`…, `mAS`, `mAI`, `mGeneral`.
186
+ */
187
+ id: string;
188
+ kind: SpecialElementKind;
189
+ arch: Arch;
190
+ dentition: 'permanent' | 'primary';
191
+ /** i18n token under `toothScheme.special.*` for the accessible name. */
192
+ labelKey: 'quadrant' | 'sextant' | 'archUpper' | 'archLower' | 'general';
193
+ /** Interpolated into the `{{n}}` of quadrant / sextant labels (e.g. `1`). */
194
+ labelIndex?: number;
195
+ /** Short code shown in the slot, e.g. `Q1`, `S3`, `AS`, `Gen.`. */
196
+ code: string;
197
+ /**
198
+ * Member teeth (FDI) — informational for consumers that highlight or expand a
199
+ * region. Selection itself keys on `id`; the platform expands membership
200
+ * server-side. Sextants follow the WHO/CPITN convention.
201
+ */
202
+ teeth: FdiId[];
203
+ /**
204
+ * Column within the special-element block. Quadrant and its paired sextant
205
+ * share a column so they stack (Q1↕S1, Q2↕S2, AS↕S3 / S4↕Q4, S5↕Q3, S6↕AI).
206
+ */
207
+ column: number;
208
+ /** Row the element attaches to: side (quadrant/arch/general) or plan (sextant). */
209
+ row: Projection;
210
+ }
211
+ /** Every special element, flat — permanent then primary. */
212
+ export declare const SPECIAL_ELEMENTS: SpecialElement[];
213
+ /** Lookup a special element by its id (`Q1`, `mS3`, `AS`, `general`…). */
214
+ export declare const SPECIAL_BY_ID: Record<string, SpecialElement>;
215
+ /** True when an id names a special element rather than a tooth. */
216
+ export declare function isSpecialElement(id: string): boolean;
217
+ /**
218
+ * The special-element SLOTS that attach to a given row, ordered by column.
219
+ * Quadrant / arch live on the `side` row; sextants on the `plan` row. The
220
+ * whole-mouth `general` element is excluded — it renders as a switch beneath the
221
+ * chart (see `generalElement`), not as a column. Mixed dentition reuses the
222
+ * permanent set (the platform has no mixed view).
223
+ */
224
+ export declare function specialsForRow(dentition: Dentition, arch: Arch, projection: Projection): SpecialElement[];
225
+ /**
226
+ * The whole-mouth `general` element for a dentition. It is rendered as a switch
227
+ * beneath the chart rather than as a cramped icon column (the platform's vertical
228
+ * "GENERALE" glyph is illegible at column width).
229
+ */
230
+ export declare function generalElement(dentition: Dentition): SpecialElement;
231
+ /** A special-element slot placed in an SVG, to the inline-end of the teeth. */
232
+ export interface PositionedSpecial {
233
+ element: SpecialElement;
234
+ x: number;
235
+ y: number;
236
+ }
237
+ /** Special-element slot block-size — matches a tooth slot so icons read clearly. */
238
+ export declare const SPECIAL_SLOT_WIDTH = 36;
239
+ /**
240
+ * Resolve the photoreal icon URL for a special element, or `null` when it has
241
+ * none (sextants are label-only — the platform ships no sextant icon). Icons
242
+ * live in the `global/` sibling of the `teeth/` render folder; quadrants and
243
+ * arches reuse their code as the file stem (`Q1`, `AS`, …), general resolves to
244
+ * `general`, and primary elements reuse the permanent art.
245
+ */
246
+ export declare function specialIconUrl(element: SpecialElement, assetBaseUrl: string): string | null;
247
+ /** Gap between the last tooth and the first special-element column. */
248
+ export declare const SPECIAL_GAP = 8;
249
+ /** Column pitch within the special-element block. */
250
+ export declare const SPECIAL_PITCH: number;
251
+ /**
252
+ * Place a row's special elements after the teeth (inline-end) and report the
253
+ * total row width. Columns are derived from `element.column`, so a quadrant and
254
+ * its paired sextant share an x and stack across the two rows.
255
+ */
256
+ export declare function layoutSpecials(specials: SpecialElement[], teethWidth: number): {
257
+ specials: PositionedSpecial[];
258
+ width: number;
259
+ };
149
260
  export declare function labelFor(id: FdiId, numbering: Numbering): string;
150
261
  export declare function emptyChart(): ToothChart;
151
262
  export declare function chartFromConditions(conditions: Partial<Record<FdiId, ToothCondition[]>>): ToothChart;
@@ -1,6 +1,6 @@
1
1
  import type { AgentAdapter } from '../../agent/types';
2
2
  import type { ToothSchemeHandle } from './tooth-scheme';
3
- import type { Surface, ToothCondition } from './tooth-data';
3
+ import type { Radiograph, Surface, ToothCondition } from './tooth-data';
4
4
  export declare const toothSchemeAgent: AgentAdapter<ToothSchemeHandle>;
5
- export type { Surface, ToothCondition };
5
+ export type { Radiograph, Surface, ToothCondition };
6
6
  //# sourceMappingURL=tooth-scheme.agent.d.ts.map
@@ -1,4 +1,4 @@
1
- import { PERMANENT_TEETH, PRIMARY_TEETH, type ViewMode, type Dentition, type FdiId, type Numbering, type Surface, type ToothChart, type ToothCondition, type ToothMode } from './tooth-data';
1
+ import { PERMANENT_TEETH, PRIMARY_TEETH, type Arch, type ViewMode, type Dentition, type FdiId, type Numbering, type Radiograph, type Surface, type ToothChart, type ToothCondition, type ToothMode } from './tooth-data';
2
2
  export interface ToothSchemeProps {
3
3
  /** Opaque instance id — emitted as `data-component-id` for the agent registry. */
4
4
  id?: string;
@@ -10,21 +10,59 @@ export interface ToothSchemeProps {
10
10
  mode?: ToothMode;
11
11
  /**
12
12
  * `'side'` shows the facial view (whole-tooth findings); `'plan'` shows the
13
- * occlusal view (per-surface caries / fillings); `'both'` stacks the side
14
- * chart above an interactive occlusal companion that shares the chart data.
15
- * Default `'side'`.
13
+ * occlusal view (per-surface caries / fillings); `'both'` lays the two facial
14
+ * rows on the outside with the two occlusal rows between them (upper side
15
+ * upper occlusal → lower occlusal → lower side), bracketed by tooth numbers
16
+ * above and below. Default `'side'`.
16
17
  */
17
18
  projection?: ViewMode;
19
+ /**
20
+ * Show the selectable special-element slots (quadrants, sextants, arches,
21
+ * whole-mouth) to the inline-end of each arch row. When unset, they show in
22
+ * `both` view and hide in the single side / plan views; pass `true` / `false`
23
+ * to force it. They share the chart data and emit `onSelect` like a tooth.
24
+ */
25
+ specialElements?: boolean;
18
26
  /** Controlled chart state — the full `Record<FdiId, ToothState>`. */
19
27
  value?: ToothChart;
20
28
  /** Uncontrolled initial chart state. */
21
29
  defaultValue?: ToothChart;
22
30
  /** Fired whenever the chart changes — always emits FDI ids. */
23
31
  onChange?: (next: ToothChart) => void;
24
- /** Fired when a tooth is focused or clicked. */
32
+ /**
33
+ * Fired when a tooth OR special element is focused / clicked. Special
34
+ * elements emit their id (`Q1`, `S3`, `AS`, `general`, …).
35
+ */
25
36
  onSelect?: (toothId: FdiId) => void;
26
37
  /** Shortcut for pre-populating conditions: `{ '16': ['caries'], '36': ['filled'] }`. */
27
38
  conditions?: Partial<Record<FdiId, ToothCondition[]>>;
39
+ /**
40
+ * Per-tooth radiographs (x-rays / *endorali*), keyed by FDI id — mirrors the
41
+ * `conditions` shape. Teeth carrying at least one radiograph get a corner
42
+ * count badge; in `radiographDisplay="thumbnail"` the most-recent film also
43
+ * fills the slot. Image urls are opaque / consumer-hosted — never bundle real
44
+ * scans (PHI).
45
+ */
46
+ radiographs?: Partial<Record<FdiId, Radiograph[]>>;
47
+ /**
48
+ * How a tooth carrying radiographs is marked. `'badge'` (default) keeps the
49
+ * photoreal tooth render and adds a corner count badge; `'thumbnail'` shows
50
+ * the most-recent radiograph inset in the slot (still badged).
51
+ */
52
+ radiographDisplay?: 'badge' | 'thumbnail';
53
+ /**
54
+ * Fired when a tooth's radiograph archive is opened — i.e. a tooth is
55
+ * activated (click / Enter / Space) in `mode="display"`. Wire this to a
56
+ * Sheet/Dialog that manages the tooth's films. Setting this makes display-mode
57
+ * teeth focusable buttons; it is mutually exclusive with interactive
58
+ * findings-editing (`mode="interactive"` / `activeCondition`).
59
+ *
60
+ * EVERY tooth becomes an open-archive button — including unfilmed teeth, so the
61
+ * user can add the first film to an empty tooth (matching a real imaging hub).
62
+ * Filmed teeth are distinguished by the radiograph count folded into their
63
+ * accessible name and tooltip.
64
+ */
65
+ onOpenRadiographs?: (toothId: FdiId) => void;
28
66
  /**
29
67
  * The finding a tooth-click applies in interactive mode (the selected
30
68
  * tool in a Findings / "Stato dentale" panel). Clicking a tooth toggles
@@ -49,17 +87,46 @@ export interface ToothSchemeProps {
49
87
  legend?: boolean;
50
88
  /**
51
89
  * Render a built-in options affordance: a gear button that opens a popover
52
- * letting the END USER toggle the legend and switch dentition / numbering /
53
- * projection. Opt-in — when on, those four become user-overridable (seeded
54
- * from the props); when off, the props drive the chart directly. Default
55
- * `false`.
90
+ * letting the END USER toggle the legend + special elements and switch
91
+ * dentition / numbering / projection. Opt-in — when on, those become
92
+ * user-overridable (seeded from the props); when off, the props drive the
93
+ * chart directly. Default `false`.
56
94
  */
57
95
  controls?: boolean;
96
+ /**
97
+ * Where to render the `controls` gear. `undefined` (default) renders it
98
+ * inline at the top-end of the chart. Pass a DOM element (e.g. a ref'd slot in
99
+ * your card header) to portal the gear + its popover into that slot instead,
100
+ * so the chart options can sit on the title line. While the slot is mounting
101
+ * the prop will be `null`; the gear renders nothing until the element exists,
102
+ * so it never flashes inline first. No effect unless `controls` is on.
103
+ */
104
+ controlsContainer?: HTMLElement | null;
58
105
  /** Accessible label override for the chart region. */
59
106
  ariaLabel?: string;
60
107
  /** Extra class names on the wrapper. */
61
108
  className?: string;
62
109
  }
110
+ /** Number-label placement for a sub-chart. */
111
+ type NumbersPosition = 'between' | 'above' | 'below' | 'none';
112
+ /**
113
+ * Internal-only props (prefixed `_`) used when the component composes itself
114
+ * into the four-row `both` view — never part of the public API.
115
+ */
116
+ interface ToothSchemeInternalProps {
117
+ /** Render a single arch (the `both` view stacks one arch per sub-chart). */
118
+ _arch?: Arch;
119
+ /** Number-label placement for this sub-chart. */
120
+ _numbersPosition?: NumbersPosition;
121
+ /** Render only the `<svg>` (no region wrapper, controls, legend, or chrome). */
122
+ _inner?: boolean;
123
+ /**
124
+ * Force the SVG content width (the `both` view shares one width across all
125
+ * four sub-charts so they scale identically and stay column-aligned —
126
+ * otherwise rows with fewer special-element columns would scale up larger).
127
+ */
128
+ _contentWidth?: number;
129
+ }
63
130
  export interface ToothSchemeHandle {
64
131
  /** Programmatically focus a tooth by FDI id. */
65
132
  focusTooth: (id: FdiId) => void;
@@ -75,9 +142,15 @@ export interface ToothSchemeHandle {
75
142
  removeFinding: (id: FdiId, condition: ToothCondition) => void;
76
143
  /** Clear every finding from a tooth. */
77
144
  clearTooth: (id: FdiId) => void;
145
+ /** Read the radiographs attached to one tooth (empty array if none). */
146
+ getRadiographs: (id: FdiId) => Radiograph[];
147
+ /** Read the FDI ids of every tooth carrying at least one radiograph. */
148
+ teethWithRadiographs: () => FdiId[];
149
+ /** Focus a tooth and open its radiograph archive (fires `onOpenRadiographs`). */
150
+ openRadiographs: (id: FdiId) => void;
78
151
  }
79
152
  declare const rootVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
80
- export declare const ToothScheme: import("react").ForwardRefExoticComponent<ToothSchemeProps & import("react").RefAttributes<ToothSchemeHandle>>;
153
+ export declare const ToothScheme: import("react").ForwardRefExoticComponent<ToothSchemeProps & ToothSchemeInternalProps & import("react").RefAttributes<ToothSchemeHandle>>;
81
154
  export { rootVariants as toothSchemeVariants, PERMANENT_TEETH, PRIMARY_TEETH };
82
- export type { Dentition, FdiId, Numbering, ToothChart, ToothCondition, ToothMode, ToothState, } from './tooth-data';
155
+ export type { Dentition, FdiId, Numbering, SpecialElement, ToothChart, ToothCondition, ToothMode, ToothState, } from './tooth-data';
83
156
  //# sourceMappingURL=tooth-scheme.d.ts.map
@@ -1,4 +1,4 @@
1
- import { T as r } from "../../_chunks/transaction-chip-DK84XCBU.js";
1
+ import { T as r } from "../../_chunks/transaction-chip-CscoQbxF.js";
2
2
  export {
3
3
  r as TransactionChip
4
4
  };
@@ -1,8 +1,8 @@
1
1
  import { type HTMLAttributes } from 'react';
2
2
  import { type VariantProps } from 'class-variance-authority';
3
- export type TransactionState = 'debt' | 'credit' | 'to-invoice' | 'to-deliver' | 'settled';
3
+ export type TransactionState = 'debt' | 'credit' | 'to-invoice' | 'to-deliver' | 'settled' | 'discount';
4
4
  declare const chipVariants: (props?: ({
5
- state?: "debt" | "credit" | "to-invoice" | "to-deliver" | "settled" | null | undefined;
5
+ state?: "debt" | "credit" | "to-invoice" | "to-deliver" | "settled" | "discount" | null | undefined;
6
6
  size?: "sm" | "md" | "lg" | null | undefined;
7
7
  bold?: boolean | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -1,4 +1,4 @@
1
- import { T as t, t as n } from "../../_chunks/transcript-panel-3THQX6nJ.js";
1
+ import { T as t, t as n } from "../../_chunks/transcript-panel-CHGHHHdT.js";
2
2
  export {
3
3
  t as TranscriptPanel,
4
4
  n as transcriptPanelAgent
@@ -18,7 +18,7 @@ export interface TranscriptPanelHandle {
18
18
  /** Copy the turn's text to the clipboard. */
19
19
  copyTurn: (id: string) => Promise<void> | void;
20
20
  }
21
- export interface TranscriptPanelProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'>, VariantProps<typeof rootVariants> {
21
+ export interface TranscriptPanelProps extends Omit<HTMLAttributes<HTMLElement>, 'children'>, VariantProps<typeof rootVariants> {
22
22
  lines: TranscriptLine[];
23
23
  /** Current playback time in seconds — drives the active line highlight. */
24
24
  currentTime?: number;
@@ -29,6 +29,6 @@ export interface TranscriptPanelProps extends Omit<HTMLAttributes<HTMLDivElement
29
29
  declare const rootVariants: (props?: ({
30
30
  size?: "sm" | "md" | "lg" | null | undefined;
31
31
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
32
- export declare const TranscriptPanel: import("react").ForwardRefExoticComponent<TranscriptPanelProps & import("react").RefAttributes<HTMLDivElement>>;
32
+ export declare const TranscriptPanel: import("react").ForwardRefExoticComponent<TranscriptPanelProps & import("react").RefAttributes<HTMLElement>>;
33
33
  export {};
34
34
  //# sourceMappingURL=transcript-panel.d.ts.map
@@ -1,4 +1,4 @@
1
- import { C as r, U as t, a as U, b as e, c as n } from "../../_chunks/unit-converter-YEpD9evj.js";
1
+ import { C as r, U as t, a as U, b as e, c as n } from "../../_chunks/unit-converter-CwlZbfdn.js";
2
2
  export {
3
3
  r as CATEGORIES,
4
4
  t as UNITS,
@@ -1,4 +1,4 @@
1
- import { W as n } from "../../_chunks/warning-stack-BsgaEbL8.js";
1
+ import { W as n } from "../../_chunks/warning-stack--sTrrBDA.js";
2
2
  export {
3
3
  n as WarningStack
4
4
  };
@@ -11,7 +11,6 @@ export interface WarningStackItem {
11
11
  dismissible?: boolean;
12
12
  }
13
13
  declare const stackVariants: (props?: ({
14
- size?: "sm" | "md" | null | undefined;
15
14
  stretch?: boolean | null | undefined;
16
15
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
17
16
  export interface WarningStackProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'role' | 'title'>, VariantProps<typeof stackVariants> {
@@ -26,17 +25,21 @@ export interface WarningStackProps extends Omit<HTMLAttributes<HTMLDivElement>,
26
25
  title?: ReactNode;
27
26
  /** Optional short description rendered under the title. */
28
27
  description?: ReactNode;
29
- /** Cap on visible items before a "Show N more" toggle appears. */
28
+ /** Cap on visible items before a "Show N more" toggle appears. Defaults to
29
+ * `2`; pass a larger number (or `Infinity`) to show more before collapsing. */
30
30
  maxVisible?: number;
31
31
  /** Whether the stack starts collapsed when items exceed `maxVisible`. */
32
32
  defaultCollapsed?: boolean;
33
33
  /** Fires when a dismissible item's close control is activated. */
34
34
  onDismiss?: (item: WarningStackItem) => void;
35
- /** When provided, a close control is rendered at the top inline-end of the
36
- * header that clears the whole stack at once. Activating it dismisses every
37
- * currently-visible notice (folding the region away) and then fires this
38
- * callback so the consumer can mirror the bulk dismissal into its store.
39
- * Opt-in: omit it when the stack carries notices that must not be bulk-cleared. */
35
+ /** Whether the whole-stack close control is shown at the header's inline-end.
36
+ * Defaults to `true` the tray is closable. Set `false` for stacks that
37
+ * carry notices which must not be bulk-cleared (e.g. hard compliance blocks). */
38
+ closable?: boolean;
39
+ /** Fires when the whole-stack close control is activated, after every
40
+ * currently-visible notice has been dismissed (folding the region away).
41
+ * Optional — the fold happens internally regardless; supply this only to
42
+ * mirror the bulk dismissal into the consumer's own store. */
40
43
  onDismissAll?: () => void;
41
44
  /** Accessible label for the whole-stack close control. Defaults to the
42
45
  * localised "Dismiss all notices". */
@@ -1,4 +1,4 @@
1
- import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-Bdam9pGp.js";
1
+ import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-M8MBBHQm.js";
2
2
  export {
3
3
  r as CORE_PATIENT_FIELDS,
4
4
  e as WorkflowCard,
@@ -16,6 +16,7 @@ export { useFocusTrap, type UseFocusTrapOptions } from './use-focus-trap';
16
16
  export { useDirection, useDocumentDirection, type Direction, } from './use-direction';
17
17
  export { usePersistentState } from './use-persistent-state';
18
18
  export { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect';
19
+ export { useOverflowCollapse, type UseOverflowCollapseReturn, } from './use-overflow-collapse';
19
20
  export { useWebOtp, type UseWebOtpOptions } from './use-web-otp';
20
21
  export { useEdgeResize, type UseEdgeResizeOptions, type UseEdgeResizeReturn, type EdgeResizeSeparatorProps, } from './use-edge-resize';
21
22
  export { useSigningSession, type SigningField, type SigningFieldBase, type UseSigningSessionReturn, } from './use-signing-session';
@@ -1,7 +1,7 @@
1
- import { u as v } from "../_chunks/use-prefers-reduced-motion-BMwIQRjB.js";
1
+ import { u as A } from "../_chunks/use-prefers-reduced-motion-BMwIQRjB.js";
2
2
  import { u as D } from "../_chunks/use-media-query-CcAx5SMM.js";
3
- import { u as g, a as _ } from "../_chunks/use-signing-session-CyOZWinp.js";
4
- import { u as I } from "../_chunks/use-count-up-BLLetaZ8.js";
3
+ import { u as g, a as w } from "../_chunks/use-signing-session-CyOZWinp.js";
4
+ import { u as _ } from "../_chunks/use-count-up-BLLetaZ8.js";
5
5
  import { u as R } from "../_chunks/use-locale-BkCIHujH.js";
6
6
  import { A as K, T as H, a as M, r as Y, t as q, u as B } from "../_chunks/use-theme-CAuo6EYT.js";
7
7
  import { u as P } from "../_chunks/use-controllable-state-BiY4xTzM.js";
@@ -9,12 +9,13 @@ import { u as V } from "../_chunks/use-copy-to-clipboard-Cyfc_dlv.js";
9
9
  import { u as z } from "../_chunks/use-debounced-callback-BisrB-Fq.js";
10
10
  import { useState as x, useRef as b, useEffect as E } from "react";
11
11
  import { u as W, a as J } from "../_chunks/use-direction-Dp8h70PP.js";
12
- import { u as X } from "../_chunks/use-persistent-state-i23OWy6G.js";
12
+ import { u as X } from "../_chunks/use-persistent-state-nZwZAnE9.js";
13
13
  import { u as $ } from "../_chunks/use-isomorphic-layout-effect-BGfaCOP1.js";
14
- import { u as te } from "../_chunks/use-web-otp-D_utzp6S.js";
15
- import { u as oe } from "../_chunks/use-edge-resize-ZnGG7gyO.js";
16
- import { u as ne } from "../_chunks/use-countdown-Yd6ts0_a.js";
17
- function h(e, o) {
14
+ import { u as te } from "../_chunks/use-overflow-collapse-BIOzKbni.js";
15
+ import { u as oe } from "../_chunks/use-web-otp-D_utzp6S.js";
16
+ import { u as ne } from "../_chunks/use-edge-resize-ZnGG7gyO.js";
17
+ import { u as ae } from "../_chunks/use-countdown-Yd6ts0_a.js";
18
+ function C(e, o) {
18
19
  const [t, i] = x(e), u = b(null);
19
20
  return E(() => {
20
21
  if (o <= 0) {
@@ -51,7 +52,7 @@ function p(e) {
51
52
  return !0;
52
53
  });
53
54
  }
54
- function C(e, o = {}) {
55
+ function h(e, o = {}) {
55
56
  const { enabled: t = !0, autoFocus: i = !0, restoreFocus: u = !0 } = o, s = b(null);
56
57
  E(() => {
57
58
  if (!t) return;
@@ -61,7 +62,7 @@ function C(e, o = {}) {
61
62
  const n = p(a)[0] ?? (a.tabIndex >= -1 ? a : null);
62
63
  n == null || n.focus();
63
64
  }
64
- function l(r) {
65
+ function f(r) {
65
66
  if (r.key !== "Tab") return;
66
67
  const n = e.current;
67
68
  if (!n) return;
@@ -70,11 +71,11 @@ function C(e, o = {}) {
70
71
  r.preventDefault();
71
72
  return;
72
73
  }
73
- const d = c[0], m = c[c.length - 1], f = document.activeElement;
74
- r.shiftKey ? (f === d || !n.contains(f)) && (r.preventDefault(), m.focus()) : (f === m || !n.contains(f)) && (r.preventDefault(), d.focus());
74
+ const m = c[0], d = c[c.length - 1], l = document.activeElement;
75
+ r.shiftKey ? (l === m || !n.contains(l)) && (r.preventDefault(), d.focus()) : (l === d || !n.contains(l)) && (r.preventDefault(), m.focus());
75
76
  }
76
- return a.addEventListener("keydown", l), () => {
77
- if (a.removeEventListener("keydown", l), u && s.current) {
77
+ return a.addEventListener("keydown", f), () => {
78
+ if (a.removeEventListener("keydown", f), u && s.current) {
78
79
  const r = s.current;
79
80
  requestAnimationFrame(() => {
80
81
  r.isConnected && r.focus();
@@ -91,22 +92,23 @@ export {
91
92
  q as themeClassList,
92
93
  P as useControllableState,
93
94
  V as useCopyToClipboard,
94
- I as useCountUp,
95
- ne as useCountdown,
95
+ _ as useCountUp,
96
+ ae as useCountdown,
96
97
  z as useDebouncedCallback,
97
- h as useDebouncedValue,
98
+ C as useDebouncedValue,
98
99
  W as useDirection,
99
100
  J as useDocumentDirection,
100
- oe as useEdgeResize,
101
- C as useFocusTrap,
101
+ ne as useEdgeResize,
102
+ h as useFocusTrap,
102
103
  $ as useIsomorphicLayoutEffect,
103
104
  R as useLocale,
104
105
  D as useMediaQuery,
106
+ te as useOverflowCollapse,
105
107
  X as usePersistentState,
106
- v as usePrefersReducedMotion,
108
+ A as usePrefersReducedMotion,
107
109
  g as useScrollToFirstError,
108
- _ as useSigningSession,
110
+ w as useSigningSession,
109
111
  B as useTheme,
110
- te as useWebOtp
112
+ oe as useWebOtp
111
113
  };
112
114
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Reports whether a CSS line-clamped element is actually overflowing — i.e.
3
+ * its content is taller than the clamped box (`scrollHeight > clientHeight`).
4
+ *
5
+ * Used to drive "show the affordance only when the text is really cut":
6
+ * a tooltip on a clamped title, a "Read more" toggle on a clamped body.
7
+ * Because line-clamp keeps the full text in the DOM, this is purely a
8
+ * sighted-user convenience — assistive tech reads the full text regardless.
9
+ *
10
+ * Re-measures on element resize (a narrower column wraps more, so a title
11
+ * that fit at full width may clip in a two-column grid). `enabled` lets the
12
+ * caller switch measurement off — e.g. while a description is expanded, there
13
+ * is nothing to measure.
14
+ */
15
+ export declare function useClampOverflow<T extends HTMLElement>(enabled: boolean): {
16
+ ref: import("react").RefObject<T | null>;
17
+ isOverflowing: boolean;
18
+ };
19
+ //# sourceMappingURL=use-clamp-overflow.d.ts.map
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Pixel-based edge-resize for fixed-width chrome surfaces (the Sidebar's
3
- * inline-end edge, the AiToolsRail panel's inner edge). Mirrors the
3
+ * inline-end edge, the ToolRail panel's inner edge). Mirrors the
4
4
  * separator semantics of `Resizable`'s Handle — `role="separator"`,
5
5
  * arrow keys with RTL flip, Shift for coarse steps, Home/End to the
6
6
  * extremes, Enter or double-click to reset — but sizes a single target
@@ -19,7 +19,7 @@ export interface UseEdgeResizeOptions {
19
19
  /**
20
20
  * Which logical edge of the target carries the handle. `inline-end`
21
21
  * for a start-docked surface (Sidebar); `inline-start` for an
22
- * end-docked one (AiToolsRail panel with `side="end"`).
22
+ * end-docked one (ToolRail panel with `side="end"`).
23
23
  */
24
24
  edge: 'inline-start' | 'inline-end';
25
25
  /** The element being resized. The width override lands on its style. */
@@ -0,0 +1,46 @@
1
+ import { type RefObject } from 'react';
2
+ export interface UseOverflowCollapseReturn<C extends HTMLElement, N extends HTMLElement> {
3
+ /**
4
+ * Attach to the element whose inner width caps the content — the available
5
+ * space. It must stay mounted in BOTH the expanded and the collapsed render
6
+ * (it is the only thing left to measure once the content is swapped out).
7
+ */
8
+ containerRef: RefObject<C | null>;
9
+ /**
10
+ * Attach (as `ref={contentRef}`) to the natural-width content — its
11
+ * `scrollWidth` is the space it needs. A callback ref, so the hook re-measures
12
+ * the instant the content mounts or unmounts. Present only while expanded; the
13
+ * hook remembers its last width so the collapsed branch keeps a threshold.
14
+ */
15
+ contentRef: (node: N | null) => void;
16
+ /** The content does not fit the container — swap to the compact form. */
17
+ isOverflowing: boolean;
18
+ }
19
+ /**
20
+ * Reports whether a row of content is wider than the box it lives in, so a
21
+ * caller can swap an overflowing strip for a compact form (a horizontal nav for
22
+ * a dropdown, a toolbar for a "more" menu). Unlike a viewport media query, this
23
+ * reacts to the CONTAINER — the same strip collapses in a narrow column on a
24
+ * wide screen (e.g. a page squeezed between two sidebars) as on a small one.
25
+ *
26
+ * The catch with collapse-on-overflow is reversibility: once the content is
27
+ * swapped out there is nothing left to measure, so a naive check can never
28
+ * un-collapse. This remembers the content's width from the last frame it was
29
+ * mounted (`naturalWidthRef`) — captured at the moment it overflowed, that is
30
+ * its true min-content width — and keeps comparing it against the still-mounted
31
+ * container, so the strip restores the instant the container grows back.
32
+ *
33
+ * The content is tracked as STATE via a callback ref (not a plain ref), so the
34
+ * measurement effect re-subscribes whenever the content mounts/unmounts — for
35
+ * ANY reason, not just an overflow-driven flip. A caller may collapse on a
36
+ * second signal this hook can't see (a viewport media query *as well as*
37
+ * overflow); keying re-subscription on the actual content node, rather than on
38
+ * `isOverflowing`, keeps the observer attached across those transitions too.
39
+ * `enabled` switches it off — e.g. when the host never collapses this strip —
40
+ * clearing the flag so it renders expanded.
41
+ *
42
+ * Purely a layout decision; the content swap it drives stays fully in the DOM
43
+ * and keyboard-reachable in either form, so assistive tech is unaffected.
44
+ */
45
+ export declare function useOverflowCollapse<C extends HTMLElement, N extends HTMLElement>(enabled?: boolean): UseOverflowCollapseReturn<C, N>;
46
+ //# sourceMappingURL=use-overflow-collapse.d.ts.map
@@ -11,6 +11,12 @@
11
11
  *
12
12
  * SSR-safe and quota-safe (swallows serialise / storage errors so a
13
13
  * disabled-storage or quota-exceeded write never throws into render).
14
+ *
15
+ * Pass `{ disabled: true }` to make it behave like a plain `useState` seeded
16
+ * from `initial` — no read, no write. Use this when the value is controlled
17
+ * elsewhere (e.g. a controlled prop), so the hook never touches `localStorage`.
14
18
  */
15
- export declare function usePersistentState<T>(storageKey: string, initial: T | (() => T)): [T, (value: T | ((prev: T) => T)) => void];
19
+ export declare function usePersistentState<T>(storageKey: string, initial: T | (() => T), options?: {
20
+ disabled?: boolean;
21
+ }): [T, (value: T | ((prev: T) => T)) => void];
16
22
  //# sourceMappingURL=use-persistent-state.d.ts.map
@@ -0,0 +1,36 @@
1
+ import { type RefObject } from 'react';
2
+ export interface UseScrollOverflowReturn<T extends HTMLElement> {
3
+ /** Attach to the horizontally-scrollable element (the `overflow-x-auto` box). */
4
+ ref: RefObject<T | null>;
5
+ /** Content is hidden past the inline-START edge (scrolled away from the start). */
6
+ canScrollStart: boolean;
7
+ /** Content is hidden past the inline-END edge (more to reveal toward the end). */
8
+ canScrollEnd: boolean;
9
+ /**
10
+ * Scroll by ~one viewport toward the inline start (`-1`) or end (`+1`),
11
+ * smoothly unless the user prefers reduced motion. Direction-agnostic: works
12
+ * in both LTR and RTL.
13
+ */
14
+ scrollByPage: (direction: -1 | 1) => void;
15
+ }
16
+ /**
17
+ * Reports whether a horizontally-scrollable element has hidden content at its
18
+ * inline-start / inline-end edges, and exposes a paged scroll action — the
19
+ * plumbing behind a scroll strip's edge affordances (fade + chevron buttons).
20
+ *
21
+ * Direction-agnostic: distance-from-start is read as `Math.abs(scrollLeft)`,
22
+ * which is correct in both LTR (`0…max`) and modern RTL (`0…-max`), so the two
23
+ * edges are reported on the right logical side without branching. `scrollByPage`
24
+ * flips its physical sign from the element's computed `direction`.
25
+ *
26
+ * Re-measures on element resize AND on content-size change (a tab added past the
27
+ * fold widens the content without changing the container) by observing both the
28
+ * scroll box and its first child. `enabled` switches measurement off — e.g. when
29
+ * the host collapses the strip into a menu and there is nothing to scroll.
30
+ *
31
+ * Because the scrolled content stays in the DOM and is reachable by keyboard
32
+ * (focus scrolls it into view), the affordance this drives is a sighted-pointer
33
+ * convenience; assistive tech is unaffected.
34
+ */
35
+ export declare function useScrollOverflow<T extends HTMLElement>(enabled?: boolean): UseScrollOverflowReturn<T>;
36
+ //# sourceMappingURL=use-scroll-overflow.d.ts.map