@alfadocs/ui-kit-debug 0.70.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 (568) hide show
  1. package/dist/_chunks/address-fields-CPbFJ8e8.js +246 -0
  2. package/dist/_chunks/address-fields-CPbFJ8e8.js.map +1 -0
  3. package/dist/_chunks/{ai-prompt-input-CuhTo9mh.js → ai-prompt-input-V4DdOeqv.js} +2 -2
  4. package/dist/_chunks/{ai-prompt-input-CuhTo9mh.js.map → ai-prompt-input-V4DdOeqv.js.map} +1 -1
  5. package/dist/_chunks/{alia-sidebar-B47qRQb5.js → alia-sidebar-DvIUzIX9.js} +107 -106
  6. package/dist/_chunks/alia-sidebar-DvIUzIX9.js.map +1 -0
  7. package/dist/_chunks/{anatomy-scheme-CJB6dI6p.js → anatomy-scheme-CXSk11UJ.js} +2 -2
  8. package/dist/_chunks/{anatomy-scheme-CJB6dI6p.js.map → anatomy-scheme-CXSk11UJ.js.map} +1 -1
  9. package/dist/_chunks/{app-frame-BYx1gcV7.js → app-frame-DIEMIC5V.js} +67 -56
  10. package/dist/_chunks/app-frame-DIEMIC5V.js.map +1 -0
  11. package/dist/_chunks/{appointment-card-C06aZqA7.js → appointment-card-DVaeJNVB.js} +82 -98
  12. package/dist/_chunks/appointment-card-DVaeJNVB.js.map +1 -0
  13. package/dist/_chunks/{appointment-timeline-BJM0S_Fg.js → appointment-timeline-PJgnrjFb.js} +159 -157
  14. package/dist/_chunks/appointment-timeline-PJgnrjFb.js.map +1 -0
  15. package/dist/_chunks/{appointment-tray-DRRw5ROi.js → appointment-tray-B16QPGbm.js} +2 -2
  16. package/dist/_chunks/{appointment-tray-DRRw5ROi.js.map → appointment-tray-B16QPGbm.js.map} +1 -1
  17. package/dist/_chunks/{audio-recorder-Cpdk5qpQ.js → audio-recorder-DNDsOLqO.js} +2 -2
  18. package/dist/_chunks/{audio-recorder-Cpdk5qpQ.js.map → audio-recorder-DNDsOLqO.js.map} +1 -1
  19. package/dist/_chunks/{autocomplete-DOeGouCL.js → autocomplete-BrONKN8l.js} +168 -146
  20. package/dist/_chunks/autocomplete-BrONKN8l.js.map +1 -0
  21. package/dist/_chunks/{bishop-score-DnYWtZa_.js → bishop-score-Cym_TeQY.js} +2 -2
  22. package/dist/_chunks/{bishop-score-DnYWtZa_.js.map → bishop-score-Cym_TeQY.js.map} +1 -1
  23. package/dist/_chunks/{booking-DUBI0oqt.js → booking-C7do4vaR.js} +4 -4
  24. package/dist/_chunks/{booking-DUBI0oqt.js.map → booking-C7do4vaR.js.map} +1 -1
  25. package/dist/_chunks/{button-group-Ciq6J4IW.js → button-group-CvEnVzY7.js} +32 -35
  26. package/dist/_chunks/{button-group-Ciq6J4IW.js.map → button-group-CvEnVzY7.js.map} +1 -1
  27. package/dist/_chunks/{care-plan-card-C5sTfY9G.js → care-plan-card-DzPDYgtK.js} +3 -3
  28. package/dist/_chunks/{care-plan-card-C5sTfY9G.js.map → care-plan-card-DzPDYgtK.js.map} +1 -1
  29. package/dist/_chunks/{care-plan-entry-card-CXnxGCWA.js → care-plan-entry-card-CEnQy7YP.js} +3 -3
  30. package/dist/_chunks/{care-plan-entry-card-CXnxGCWA.js.map → care-plan-entry-card-CEnQy7YP.js.map} +1 -1
  31. package/dist/_chunks/care-plan-header-DcXFXWit.js +198 -0
  32. package/dist/_chunks/care-plan-header-DcXFXWit.js.map +1 -0
  33. package/dist/_chunks/{chat-message-3V54YipB.js → chat-message-DzpcJR-q.js} +25 -23
  34. package/dist/_chunks/chat-message-DzpcJR-q.js.map +1 -0
  35. package/dist/_chunks/city-input-Dkgaak7I.js +169 -0
  36. package/dist/_chunks/city-input-Dkgaak7I.js.map +1 -0
  37. package/dist/_chunks/clipboard-list-S7s-MXQq.js +25 -0
  38. package/dist/_chunks/clipboard-list-S7s-MXQq.js.map +1 -0
  39. package/dist/_chunks/{combobox-Clum7gJ1.js → combobox-DnqSF0IH.js} +131 -114
  40. package/dist/_chunks/combobox-DnqSF0IH.js.map +1 -0
  41. package/dist/_chunks/connection-status-CY1HV8Wg.js +108 -0
  42. package/dist/_chunks/connection-status-CY1HV8Wg.js.map +1 -0
  43. package/dist/_chunks/control-room-rail-FAQZrGVL.js +333 -0
  44. package/dist/_chunks/control-room-rail-FAQZrGVL.js.map +1 -0
  45. package/dist/_chunks/country-select-BwUZQvTa.js +709 -0
  46. package/dist/_chunks/country-select-BwUZQvTa.js.map +1 -0
  47. package/dist/_chunks/editable-currency-cell-renderer-CGELrkIj.js +410 -0
  48. package/dist/_chunks/editable-currency-cell-renderer-CGELrkIj.js.map +1 -0
  49. package/dist/_chunks/{entity-card-9_62gY7l.js → entity-card-DmrgYSEX.js} +4 -4
  50. package/dist/_chunks/{entity-card-9_62gY7l.js.map → entity-card-DmrgYSEX.js.map} +1 -1
  51. package/dist/_chunks/entity-summary-CaM1Y-xE.js +291 -0
  52. package/dist/_chunks/entity-summary-CaM1Y-xE.js.map +1 -0
  53. package/dist/_chunks/field-array-siUZzfYe.js +146 -0
  54. package/dist/_chunks/field-array-siUZzfYe.js.map +1 -0
  55. package/dist/_chunks/{field-value-NXYczdpO.js → field-value-3jMM0uDx.js} +2 -2
  56. package/dist/_chunks/field-value-3jMM0uDx.js.map +1 -0
  57. package/dist/_chunks/{gestational-age-calculator-CF2ISaYQ.js → gestational-age-calculator-DKzEV5Qi.js} +2 -2
  58. package/dist/_chunks/{gestational-age-calculator-CF2ISaYQ.js.map → gestational-age-calculator-DKzEV5Qi.js.map} +1 -1
  59. package/dist/_chunks/iban-input-B0TWzR1R.js +436 -0
  60. package/dist/_chunks/iban-input-B0TWzR1R.js.map +1 -0
  61. package/dist/_chunks/icon-picker-0B7KhrF1.js +272 -0
  62. package/dist/_chunks/icon-picker-0B7KhrF1.js.map +1 -0
  63. package/dist/_chunks/image-cropper-D9jqJy19.js +367 -0
  64. package/dist/_chunks/image-cropper-D9jqJy19.js.map +1 -0
  65. package/dist/_chunks/{link-cell-renderer-CTXqtXV-.js → link-cell-renderer-De_SLjSq.js} +262 -261
  66. package/dist/_chunks/link-cell-renderer-De_SLjSq.js.map +1 -0
  67. package/dist/_chunks/list-checks-BUs75d_o.js +18 -0
  68. package/dist/_chunks/list-checks-BUs75d_o.js.map +1 -0
  69. package/dist/_chunks/{marketplace-app-shell-Skhfp6vK.js → marketplace-app-shell-BGqkywsi.js} +3 -3
  70. package/dist/_chunks/{marketplace-app-shell-Skhfp6vK.js.map → marketplace-app-shell-BGqkywsi.js.map} +1 -1
  71. package/dist/_chunks/message-card-DsHFFiL1.js +319 -0
  72. package/dist/_chunks/message-card-DsHFFiL1.js.map +1 -0
  73. package/dist/_chunks/{message-tray-DwrBLJlf.js → message-tray-C0a6CL1_.js} +172 -135
  74. package/dist/_chunks/message-tray-C0a6CL1_.js.map +1 -0
  75. package/dist/_chunks/{multi-select-BdHHDrRN.js → multi-select-WE4S9FIF.js} +75 -63
  76. package/dist/_chunks/{multi-select-BdHHDrRN.js.map → multi-select-WE4S9FIF.js.map} +1 -1
  77. package/dist/_chunks/nav-grid-9xphY3FM.js +169 -0
  78. package/dist/_chunks/nav-grid-9xphY3FM.js.map +1 -0
  79. package/dist/_chunks/notes-panel-DXiMfuvp.js +320 -0
  80. package/dist/_chunks/notes-panel-DXiMfuvp.js.map +1 -0
  81. package/dist/_chunks/notification-card-BMqNzCIt.js +290 -0
  82. package/dist/_chunks/notification-card-BMqNzCIt.js.map +1 -0
  83. package/dist/_chunks/{notification-tray-AEun6DN2.js → notification-tray-BmUlCx3g.js} +201 -166
  84. package/dist/_chunks/notification-tray-BmUlCx3g.js.map +1 -0
  85. package/dist/_chunks/{operator-hero-CR0Rqh4-.js → operator-hero-BO8TqzX2.js} +2 -2
  86. package/dist/_chunks/{operator-hero-CR0Rqh4-.js.map → operator-hero-BO8TqzX2.js.map} +1 -1
  87. package/dist/_chunks/panel-header-D313n_9-.js +105 -0
  88. package/dist/_chunks/panel-header-D313n_9-.js.map +1 -0
  89. package/dist/_chunks/{patient-details-Dlhqb5ig.js → patient-details-DgfTJimE.js} +280 -196
  90. package/dist/_chunks/patient-details-DgfTJimE.js.map +1 -0
  91. package/dist/_chunks/{patient-search-Be6cLrHR.js → patient-search-CSWQKOSP.js} +2 -2
  92. package/dist/_chunks/{patient-search-Be6cLrHR.js.map → patient-search-CSWQKOSP.js.map} +1 -1
  93. package/dist/_chunks/{patient-shell-DV3XEtIB.js → patient-shell-BMwsIKlW.js} +3 -3
  94. package/dist/_chunks/{patient-shell-DV3XEtIB.js.map → patient-shell-BMwsIKlW.js.map} +1 -1
  95. package/dist/_chunks/{patient-summary-card-WySCMwwA.js → patient-summary-card-D4NdgYJB.js} +27 -12
  96. package/dist/_chunks/{patient-summary-card-WySCMwwA.js.map → patient-summary-card-D4NdgYJB.js.map} +1 -1
  97. package/dist/_chunks/{patient-table-CHxf3Oqk.js → patient-table-CERknpd8.js} +3 -3
  98. package/dist/_chunks/{patient-table-CHxf3Oqk.js.map → patient-table-CERknpd8.js.map} +1 -1
  99. package/dist/_chunks/{payment-request-card-BcZJwu9z.js → payment-request-card-Blf-MFNY.js} +2 -2
  100. package/dist/_chunks/{payment-request-card-BcZJwu9z.js.map → payment-request-card-Blf-MFNY.js.map} +1 -1
  101. package/dist/_chunks/permission-matrix-Bw5oexUt.js +174 -0
  102. package/dist/_chunks/permission-matrix-Bw5oexUt.js.map +1 -0
  103. package/dist/_chunks/position-grid-CcvqHaKN.js +169 -0
  104. package/dist/_chunks/position-grid-CcvqHaKN.js.map +1 -0
  105. package/dist/_chunks/postal-code-input-UCOYuRY2.js +192 -0
  106. package/dist/_chunks/postal-code-input-UCOYuRY2.js.map +1 -0
  107. package/dist/_chunks/{practice-results-C6qDfxos.js → practice-results-El5Z-oVp.js} +2 -2
  108. package/dist/_chunks/{practice-results-C6qDfxos.js.map → practice-results-El5Z-oVp.js.map} +1 -1
  109. package/dist/_chunks/{pregnancy-dating-CRVWswD-.js → pregnancy-dating-CunHrOpO.js} +2 -2
  110. package/dist/_chunks/{pregnancy-dating-CRVWswD-.js.map → pregnancy-dating-CunHrOpO.js.map} +1 -1
  111. package/dist/_chunks/{product-hub-panel-e6pW220e.js → product-hub-panel-DtU7KXxm.js} +257 -217
  112. package/dist/_chunks/product-hub-panel-DtU7KXxm.js.map +1 -0
  113. package/dist/_chunks/province-select-D_TZvix3.js +261 -0
  114. package/dist/_chunks/province-select-D_TZvix3.js.map +1 -0
  115. package/dist/_chunks/{public-header.agent-DqkqA-ca.js → public-header.agent-TxmC_x1I.js} +2 -2
  116. package/dist/_chunks/{public-header.agent-DqkqA-ca.js.map → public-header.agent-TxmC_x1I.js.map} +1 -1
  117. package/dist/_chunks/radiograph-panel.agent-tWjN2nHX.js +553 -0
  118. package/dist/_chunks/radiograph-panel.agent-tWjN2nHX.js.map +1 -0
  119. package/dist/_chunks/reviews-panel-DxkSrgMl.js +559 -0
  120. package/dist/_chunks/reviews-panel-DxkSrgMl.js.map +1 -0
  121. package/dist/_chunks/rich-text-editor-C8tyGjfb.js +2621 -0
  122. package/dist/_chunks/rich-text-editor-C8tyGjfb.js.map +1 -0
  123. package/dist/_chunks/{scroll-area-5wNK0Cyz.js → scroll-area-BZOvUhwQ.js} +2 -2
  124. package/dist/_chunks/scroll-area-BZOvUhwQ.js.map +1 -0
  125. package/dist/_chunks/{select-DMLG44F5.js → select-KsyRr8WH.js} +114 -102
  126. package/dist/_chunks/select-KsyRr8WH.js.map +1 -0
  127. package/dist/_chunks/{sheet-BxsE7eQm.js → sheet-umkfZjF6.js} +53 -42
  128. package/dist/_chunks/sheet-umkfZjF6.js.map +1 -0
  129. package/dist/_chunks/{sidebar-DY9jGjgt.js → sidebar-QCp9wHNP.js} +125 -113
  130. package/dist/_chunks/sidebar-QCp9wHNP.js.map +1 -0
  131. package/dist/_chunks/{tabs-BxcOziCo.js → tabs-CYZVKKDl.js} +2 -2
  132. package/dist/_chunks/{tabs-BxcOziCo.js.map → tabs-CYZVKKDl.js.map} +1 -1
  133. package/dist/_chunks/task-card-DCdsI0ZT.js +189 -0
  134. package/dist/_chunks/task-card-DCdsI0ZT.js.map +1 -0
  135. package/dist/_chunks/{task-tray-qOEQflu4.js → task-tray-DNVejijD.js} +2 -2
  136. package/dist/_chunks/{task-tray-qOEQflu4.js.map → task-tray-DNVejijD.js.map} +1 -1
  137. package/dist/_chunks/tasks-panel-C9odmawT.js +757 -0
  138. package/dist/_chunks/tasks-panel-C9odmawT.js.map +1 -0
  139. package/dist/_chunks/token-insert-menu-CFQqTe_n.js +147 -0
  140. package/dist/_chunks/token-insert-menu-CFQqTe_n.js.map +1 -0
  141. package/dist/_chunks/{ai-tools-rail-B5NEghsp.js → tool-rail-BZx0-yIr.js} +152 -139
  142. package/dist/_chunks/tool-rail-BZx0-yIr.js.map +1 -0
  143. package/dist/_chunks/{tooth-scheme-BhQoPNBD.js → tooth-scheme-DJZtzfeY.js} +470 -468
  144. package/dist/_chunks/tooth-scheme-DJZtzfeY.js.map +1 -0
  145. package/dist/_chunks/{transcript-panel-3THQX6nJ.js → transcript-panel-CHGHHHdT.js} +95 -83
  146. package/dist/_chunks/transcript-panel-CHGHHHdT.js.map +1 -0
  147. package/dist/_chunks/{unit-converter-YEpD9evj.js → unit-converter-CwlZbfdn.js} +2 -2
  148. package/dist/_chunks/{unit-converter-YEpD9evj.js.map → unit-converter-CwlZbfdn.js.map} +1 -1
  149. package/dist/_chunks/use-edge-resize-ZnGG7gyO.js.map +1 -1
  150. package/dist/_chunks/{workflow-map-Dy8mLCqF.js → workflow-map-M8MBBHQm.js} +106 -118
  151. package/dist/_chunks/workflow-map-M8MBBHQm.js.map +1 -0
  152. package/dist/agent-catalog.json +2062 -226
  153. package/dist/agent-i18n/en.json +206 -8
  154. package/dist/components/_shared/option.d.ts +2 -0
  155. package/dist/components/_shared/option.d.ts.map +1 -1
  156. package/dist/components/_shared/patient-fields.d.ts +1 -1
  157. package/dist/components/_shared/patient-fields.d.ts.map +1 -1
  158. package/dist/components/address-fields/address-fields.agent.d.ts +9 -0
  159. package/dist/components/address-fields/address-fields.agent.d.ts.map +1 -0
  160. package/dist/components/address-fields/address-fields.d.ts +29 -0
  161. package/dist/components/address-fields/address-fields.d.ts.map +1 -0
  162. package/dist/components/address-fields/index.d.ts +5 -0
  163. package/dist/components/address-fields/index.d.ts.map +1 -0
  164. package/dist/components/address-fields/index.js +6 -0
  165. package/dist/components/ai-prompt-input/index.js +1 -1
  166. package/dist/components/anatomy-scheme/index.js +1 -1
  167. package/dist/components/app-frame/app-frame.d.ts +2 -2
  168. package/dist/components/app-frame/app-frame.d.ts.map +1 -1
  169. package/dist/components/app-frame/index.js +1 -1
  170. package/dist/components/appointment-card/appointment-card.d.ts.map +1 -1
  171. package/dist/components/appointment-card/index.js +2 -2
  172. package/dist/components/appointment-timeline/appointment-timeline.d.ts.map +1 -1
  173. package/dist/components/appointment-timeline/index.js +1 -1
  174. package/dist/components/audio-recorder/index.js +1 -1
  175. package/dist/components/autocomplete/autocomplete.d.ts +10 -0
  176. package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
  177. package/dist/components/autocomplete/index.js +1 -1
  178. package/dist/components/bishop-score/index.js +1 -1
  179. package/dist/components/booking/index.js +1 -1
  180. package/dist/components/button-group/button-group.d.ts.map +1 -1
  181. package/dist/components/button-group/index.js +1 -1
  182. package/dist/components/care-plan-card/index.js +1 -1
  183. package/dist/components/care-plan-entry-card/index.js +1 -1
  184. package/dist/components/care-plan-header/care-plan-header.d.ts +16 -5
  185. package/dist/components/care-plan-header/care-plan-header.d.ts.map +1 -1
  186. package/dist/components/care-plan-header/index.js +1 -1
  187. package/dist/components/chat-message/chat-message.d.ts.map +1 -1
  188. package/dist/components/chat-message/index.js +1 -1
  189. package/dist/components/city-input/city-input.agent.d.ts +8 -0
  190. package/dist/components/city-input/city-input.agent.d.ts.map +1 -0
  191. package/dist/components/city-input/city-input.d.ts +57 -0
  192. package/dist/components/city-input/city-input.d.ts.map +1 -0
  193. package/dist/components/city-input/index.d.ts +5 -0
  194. package/dist/components/city-input/index.d.ts.map +1 -0
  195. package/dist/components/city-input/index.js +6 -0
  196. package/dist/components/city-input/index.js.map +1 -0
  197. package/dist/components/combobox/combobox.d.ts +17 -0
  198. package/dist/components/combobox/combobox.d.ts.map +1 -1
  199. package/dist/components/combobox/index.js +1 -1
  200. package/dist/components/connection-status/connection-status.agent.d.ts +4 -0
  201. package/dist/components/connection-status/connection-status.agent.d.ts.map +1 -0
  202. package/dist/components/connection-status/connection-status.d.ts +36 -0
  203. package/dist/components/connection-status/connection-status.d.ts.map +1 -0
  204. package/dist/components/connection-status/index.d.ts +4 -0
  205. package/dist/components/connection-status/index.d.ts.map +1 -0
  206. package/dist/components/connection-status/index.js +6 -0
  207. package/dist/components/connection-status/index.js.map +1 -0
  208. package/dist/components/control-room-rail/control-room-context.d.ts +5 -5
  209. package/dist/components/control-room-rail/control-room-context.d.ts.map +1 -1
  210. package/dist/components/control-room-rail/control-room-rail.agent.d.ts +4 -0
  211. package/dist/components/control-room-rail/control-room-rail.agent.d.ts.map +1 -0
  212. package/dist/components/control-room-rail/control-room-rail.d.ts +5 -5
  213. package/dist/components/control-room-rail/control-room-rail.d.ts.map +1 -1
  214. package/dist/components/control-room-rail/index.d.ts +1 -0
  215. package/dist/components/control-room-rail/index.d.ts.map +1 -1
  216. package/dist/components/control-room-rail/index.js +4 -3
  217. package/dist/components/counter/counter.d.ts +1 -1
  218. package/dist/components/country-select/country-select.agent.d.ts +8 -0
  219. package/dist/components/country-select/country-select.agent.d.ts.map +1 -0
  220. package/dist/components/country-select/country-select.d.ts +51 -0
  221. package/dist/components/country-select/country-select.d.ts.map +1 -0
  222. package/dist/components/country-select/index.d.ts +6 -0
  223. package/dist/components/country-select/index.d.ts.map +1 -0
  224. package/dist/components/country-select/index.js +9 -0
  225. package/dist/components/country-select/index.js.map +1 -0
  226. package/dist/components/country-select/iso-3166.d.ts +15 -0
  227. package/dist/components/country-select/iso-3166.d.ts.map +1 -0
  228. package/dist/components/data-table/cell-renderers/reorder-cell-renderer.d.ts +34 -0
  229. package/dist/components/data-table/cell-renderers/reorder-cell-renderer.d.ts.map +1 -0
  230. package/dist/components/data-table/filters/select-filter.d.ts.map +1 -1
  231. package/dist/components/data-table/index.d.ts +2 -0
  232. package/dist/components/data-table/index.d.ts.map +1 -1
  233. package/dist/components/data-table/index.js +13 -11
  234. package/dist/components/entity-summary/entity-summary.agent.d.ts +4 -0
  235. package/dist/components/entity-summary/entity-summary.agent.d.ts.map +1 -0
  236. package/dist/components/entity-summary/entity-summary.d.ts +53 -4
  237. package/dist/components/entity-summary/entity-summary.d.ts.map +1 -1
  238. package/dist/components/entity-summary/index.js +1 -1
  239. package/dist/components/field-array/field-array.agent.d.ts +4 -0
  240. package/dist/components/field-array/field-array.agent.d.ts.map +1 -0
  241. package/dist/components/field-array/field-array.d.ts +45 -0
  242. package/dist/components/field-array/field-array.d.ts.map +1 -0
  243. package/dist/components/field-array/index.d.ts +4 -0
  244. package/dist/components/field-array/index.d.ts.map +1 -0
  245. package/dist/components/field-array/index.js +6 -0
  246. package/dist/components/field-array/index.js.map +1 -0
  247. package/dist/components/freemium-paywall/freemium-paywall.d.ts +1 -1
  248. package/dist/components/gestational-age-calculator/index.js +1 -1
  249. package/dist/components/iban-input/iban-input.agent.d.ts +4 -0
  250. package/dist/components/iban-input/iban-input.agent.d.ts.map +1 -0
  251. package/dist/components/iban-input/iban-input.d.ts +51 -0
  252. package/dist/components/iban-input/iban-input.d.ts.map +1 -0
  253. package/dist/components/iban-input/index.d.ts +5 -0
  254. package/dist/components/iban-input/index.d.ts.map +1 -0
  255. package/dist/components/iban-input/index.js +13 -0
  256. package/dist/components/iban-input/index.js.map +1 -0
  257. package/dist/components/iban-input/is-valid-iban.d.ts +31 -0
  258. package/dist/components/iban-input/is-valid-iban.d.ts.map +1 -0
  259. package/dist/components/icon-picker/icon-picker.agent.d.ts +4 -0
  260. package/dist/components/icon-picker/icon-picker.agent.d.ts.map +1 -0
  261. package/dist/components/icon-picker/icon-picker.d.ts +41 -0
  262. package/dist/components/icon-picker/icon-picker.d.ts.map +1 -0
  263. package/dist/components/icon-picker/index.d.ts +4 -0
  264. package/dist/components/icon-picker/index.d.ts.map +1 -0
  265. package/dist/components/icon-picker/index.js +6 -0
  266. package/dist/components/icon-picker/index.js.map +1 -0
  267. package/dist/components/image-cropper/crop-geometry.d.ts +30 -0
  268. package/dist/components/image-cropper/crop-geometry.d.ts.map +1 -0
  269. package/dist/components/image-cropper/image-cropper.agent.d.ts +4 -0
  270. package/dist/components/image-cropper/image-cropper.agent.d.ts.map +1 -0
  271. package/dist/components/image-cropper/image-cropper.d.ts +32 -0
  272. package/dist/components/image-cropper/image-cropper.d.ts.map +1 -0
  273. package/dist/components/image-cropper/index.d.ts +5 -0
  274. package/dist/components/image-cropper/index.d.ts.map +1 -0
  275. package/dist/components/image-cropper/index.js +11 -0
  276. package/dist/components/image-cropper/index.js.map +1 -0
  277. package/dist/components/index.d.ts +16 -1
  278. package/dist/components/index.d.ts.map +1 -1
  279. package/dist/components/message-card/index.js +1 -1
  280. package/dist/components/message-card/message-card.d.ts +14 -0
  281. package/dist/components/message-card/message-card.d.ts.map +1 -1
  282. package/dist/components/message-tray/index.js +1 -1
  283. package/dist/components/message-tray/message-tray.agent.d.ts.map +1 -1
  284. package/dist/components/message-tray/message-tray.d.ts +4 -0
  285. package/dist/components/message-tray/message-tray.d.ts.map +1 -1
  286. package/dist/components/multi-select/index.js +1 -1
  287. package/dist/components/multi-select/multi-select.d.ts.map +1 -1
  288. package/dist/components/nav-grid/index.d.ts +4 -0
  289. package/dist/components/nav-grid/index.d.ts.map +1 -0
  290. package/dist/components/nav-grid/index.js +7 -0
  291. package/dist/components/nav-grid/index.js.map +1 -0
  292. package/dist/components/nav-grid/nav-grid.agent.d.ts +4 -0
  293. package/dist/components/nav-grid/nav-grid.agent.d.ts.map +1 -0
  294. package/dist/components/nav-grid/nav-grid.d.ts +41 -0
  295. package/dist/components/nav-grid/nav-grid.d.ts.map +1 -0
  296. package/dist/components/notes-panel/index.js +1 -1
  297. package/dist/components/notes-panel/notes-panel.agent.d.ts +4 -0
  298. package/dist/components/notes-panel/notes-panel.agent.d.ts.map +1 -0
  299. package/dist/components/notes-panel/notes-panel.d.ts +30 -0
  300. package/dist/components/notes-panel/notes-panel.d.ts.map +1 -1
  301. package/dist/components/notification-card/index.js +1 -1
  302. package/dist/components/notification-card/notification-card.d.ts +15 -0
  303. package/dist/components/notification-card/notification-card.d.ts.map +1 -1
  304. package/dist/components/notification-tray/index.js +1 -1
  305. package/dist/components/notification-tray/notification-tray.agent.d.ts.map +1 -1
  306. package/dist/components/notification-tray/notification-tray.d.ts +4 -0
  307. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  308. package/dist/components/operator-hero/index.js +1 -1
  309. package/dist/components/panel-header/index.d.ts +3 -0
  310. package/dist/components/panel-header/index.d.ts.map +1 -0
  311. package/dist/components/panel-header/index.js +7 -0
  312. package/dist/components/panel-header/index.js.map +1 -0
  313. package/dist/components/panel-header/panel-header.d.ts +41 -0
  314. package/dist/components/panel-header/panel-header.d.ts.map +1 -0
  315. package/dist/components/patient-details/index.js +1 -1
  316. package/dist/components/patient-details/patient-details.d.ts.map +1 -1
  317. package/dist/components/patient-search/index.js +1 -1
  318. package/dist/components/patient-summary-card/index.js +1 -1
  319. package/dist/components/patient-summary-card/patient-summary-card.d.ts.map +1 -1
  320. package/dist/components/patient-table/index.js +1 -1
  321. package/dist/components/payment-card/index.js +1 -1
  322. package/dist/components/permission-matrix/index.d.ts +4 -0
  323. package/dist/components/permission-matrix/index.d.ts.map +1 -0
  324. package/dist/components/permission-matrix/index.js +7 -0
  325. package/dist/components/permission-matrix/index.js.map +1 -0
  326. package/dist/components/permission-matrix/permission-matrix.agent.d.ts +4 -0
  327. package/dist/components/permission-matrix/permission-matrix.agent.d.ts.map +1 -0
  328. package/dist/components/permission-matrix/permission-matrix.d.ts +47 -0
  329. package/dist/components/permission-matrix/permission-matrix.d.ts.map +1 -0
  330. package/dist/components/position-grid/index.d.ts +4 -0
  331. package/dist/components/position-grid/index.d.ts.map +1 -0
  332. package/dist/components/position-grid/index.js +7 -0
  333. package/dist/components/position-grid/index.js.map +1 -0
  334. package/dist/components/position-grid/position-grid.agent.d.ts +4 -0
  335. package/dist/components/position-grid/position-grid.agent.d.ts.map +1 -0
  336. package/dist/components/position-grid/position-grid.d.ts +39 -0
  337. package/dist/components/position-grid/position-grid.d.ts.map +1 -0
  338. package/dist/components/postal-code-input/index.d.ts +5 -0
  339. package/dist/components/postal-code-input/index.d.ts.map +1 -0
  340. package/dist/components/postal-code-input/index.js +6 -0
  341. package/dist/components/postal-code-input/index.js.map +1 -0
  342. package/dist/components/postal-code-input/postal-code-input.agent.d.ts +8 -0
  343. package/dist/components/postal-code-input/postal-code-input.agent.d.ts.map +1 -0
  344. package/dist/components/postal-code-input/postal-code-input.d.ts +27 -0
  345. package/dist/components/postal-code-input/postal-code-input.d.ts.map +1 -0
  346. package/dist/components/practice-results/index.js +1 -1
  347. package/dist/components/pregnancy-dating/index.js +1 -1
  348. package/dist/components/product-hub-tray/index.js +1 -1
  349. package/dist/components/product-hub-tray/product-hub-tray.d.ts +13 -1
  350. package/dist/components/product-hub-tray/product-hub-tray.d.ts.map +1 -1
  351. package/dist/components/province-select/index.d.ts +6 -0
  352. package/dist/components/province-select/index.d.ts.map +1 -0
  353. package/dist/components/province-select/index.js +7 -0
  354. package/dist/components/province-select/index.js.map +1 -0
  355. package/dist/components/province-select/it-provinces.d.ts +8 -0
  356. package/dist/components/province-select/it-provinces.d.ts.map +1 -0
  357. package/dist/components/province-select/province-select.agent.d.ts +8 -0
  358. package/dist/components/province-select/province-select.agent.d.ts.map +1 -0
  359. package/dist/components/province-select/province-select.d.ts +38 -0
  360. package/dist/components/province-select/province-select.d.ts.map +1 -0
  361. package/dist/components/public-footer/public-footer.d.ts +1 -1
  362. package/dist/components/public-header/index.js +1 -1
  363. package/dist/components/radiograph-panel/index.js +1 -1
  364. package/dist/components/radiograph-panel/radiograph-panel.d.ts.map +1 -1
  365. package/dist/components/reviews-panel/index.js +1 -1
  366. package/dist/components/reviews-panel/reviews-panel.d.ts.map +1 -1
  367. package/dist/components/rich-text-editor/editor-toolbar.d.ts +17 -0
  368. package/dist/components/rich-text-editor/editor-toolbar.d.ts.map +1 -1
  369. package/dist/components/rich-text-editor/index.js +1 -1
  370. package/dist/components/rich-text-editor/rich-text-editor.agent.d.ts.map +1 -1
  371. package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
  372. package/dist/components/scroll-area/index.js +1 -1
  373. package/dist/components/select/index.js +1 -1
  374. package/dist/components/select/select.d.ts +8 -2
  375. package/dist/components/select/select.d.ts.map +1 -1
  376. package/dist/components/sheet/index.js +1 -1
  377. package/dist/components/sheet/sheet.d.ts.map +1 -1
  378. package/dist/components/sidebar/index.js +1 -1
  379. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  380. package/dist/components/skeleton/skeleton.d.ts +1 -1
  381. package/dist/components/tabs/index.js +1 -1
  382. package/dist/components/task-card/index.js +1 -1
  383. package/dist/components/task-card/task-card.d.ts +14 -6
  384. package/dist/components/task-card/task-card.d.ts.map +1 -1
  385. package/dist/components/task-tray/index.js +1 -1
  386. package/dist/components/tasks-panel/index.d.ts +4 -0
  387. package/dist/components/tasks-panel/index.d.ts.map +1 -0
  388. package/dist/components/tasks-panel/index.js +6 -0
  389. package/dist/components/tasks-panel/index.js.map +1 -0
  390. package/dist/components/tasks-panel/tasks-panel.agent.d.ts +4 -0
  391. package/dist/components/tasks-panel/tasks-panel.agent.d.ts.map +1 -0
  392. package/dist/components/tasks-panel/tasks-panel.d.ts +152 -0
  393. package/dist/components/tasks-panel/tasks-panel.d.ts.map +1 -0
  394. package/dist/components/token-insert-menu/index.d.ts +4 -0
  395. package/dist/components/token-insert-menu/index.d.ts.map +1 -0
  396. package/dist/components/token-insert-menu/index.js +6 -0
  397. package/dist/components/token-insert-menu/index.js.map +1 -0
  398. package/dist/components/token-insert-menu/token-insert-menu.agent.d.ts +4 -0
  399. package/dist/components/token-insert-menu/token-insert-menu.agent.d.ts.map +1 -0
  400. package/dist/components/token-insert-menu/token-insert-menu.d.ts +33 -0
  401. package/dist/components/token-insert-menu/token-insert-menu.d.ts.map +1 -0
  402. package/dist/components/tool-rail/index.d.ts +4 -0
  403. package/dist/components/tool-rail/index.d.ts.map +1 -0
  404. package/dist/components/tool-rail/index.js +6 -0
  405. package/dist/components/tool-rail/index.js.map +1 -0
  406. package/dist/components/tool-rail/tool-rail.agent.d.ts +4 -0
  407. package/dist/components/tool-rail/tool-rail.agent.d.ts.map +1 -0
  408. package/dist/components/{ai-tools-rail/ai-tools-rail.d.ts → tool-rail/tool-rail.d.ts} +29 -12
  409. package/dist/components/tool-rail/tool-rail.d.ts.map +1 -0
  410. package/dist/components/tooth-scheme/index.js +1 -1
  411. package/dist/components/tooth-scheme/tooth-scheme.d.ts +9 -0
  412. package/dist/components/tooth-scheme/tooth-scheme.d.ts.map +1 -1
  413. package/dist/components/transcript-panel/index.js +1 -1
  414. package/dist/components/transcript-panel/transcript-panel.d.ts +2 -2
  415. package/dist/components/transcript-panel/transcript-panel.d.ts.map +1 -1
  416. package/dist/components/unit-converter/index.js +1 -1
  417. package/dist/components/workflow/index.js +1 -1
  418. package/dist/hooks/use-edge-resize.d.ts +2 -2
  419. package/dist/i18n/locales/ar.d.ts +167 -2
  420. package/dist/i18n/locales/ar.d.ts.map +1 -1
  421. package/dist/i18n/locales/ar.js +157 -5
  422. package/dist/i18n/locales/ar.js.map +1 -1
  423. package/dist/i18n/locales/de.d.ts +167 -2
  424. package/dist/i18n/locales/de.d.ts.map +1 -1
  425. package/dist/i18n/locales/de.js +159 -5
  426. package/dist/i18n/locales/de.js.map +1 -1
  427. package/dist/i18n/locales/el.d.ts +167 -2
  428. package/dist/i18n/locales/el.d.ts.map +1 -1
  429. package/dist/i18n/locales/el.js +164 -5
  430. package/dist/i18n/locales/el.js.map +1 -1
  431. package/dist/i18n/locales/en.d.ts +167 -2
  432. package/dist/i18n/locales/en.d.ts.map +1 -1
  433. package/dist/i18n/locales/en.js +170 -5
  434. package/dist/i18n/locales/en.js.map +1 -1
  435. package/dist/i18n/locales/es.d.ts +167 -2
  436. package/dist/i18n/locales/es.d.ts.map +1 -1
  437. package/dist/i18n/locales/es.js +156 -5
  438. package/dist/i18n/locales/es.js.map +1 -1
  439. package/dist/i18n/locales/fr.d.ts +167 -2
  440. package/dist/i18n/locales/fr.d.ts.map +1 -1
  441. package/dist/i18n/locales/fr.js +159 -5
  442. package/dist/i18n/locales/fr.js.map +1 -1
  443. package/dist/i18n/locales/hi.d.ts +167 -2
  444. package/dist/i18n/locales/hi.d.ts.map +1 -1
  445. package/dist/i18n/locales/hi.js +155 -5
  446. package/dist/i18n/locales/hi.js.map +1 -1
  447. package/dist/i18n/locales/it.d.ts +167 -2
  448. package/dist/i18n/locales/it.d.ts.map +1 -1
  449. package/dist/i18n/locales/it.js +159 -5
  450. package/dist/i18n/locales/it.js.map +1 -1
  451. package/dist/i18n/locales/ja.d.ts +167 -2
  452. package/dist/i18n/locales/ja.d.ts.map +1 -1
  453. package/dist/i18n/locales/ja.js +160 -5
  454. package/dist/i18n/locales/ja.js.map +1 -1
  455. package/dist/i18n/locales/nl.d.ts +167 -2
  456. package/dist/i18n/locales/nl.d.ts.map +1 -1
  457. package/dist/i18n/locales/nl.js +152 -5
  458. package/dist/i18n/locales/nl.js.map +1 -1
  459. package/dist/i18n/locales/pl.d.ts +167 -2
  460. package/dist/i18n/locales/pl.d.ts.map +1 -1
  461. package/dist/i18n/locales/pl.js +160 -5
  462. package/dist/i18n/locales/pl.js.map +1 -1
  463. package/dist/i18n/locales/pt.d.ts +167 -2
  464. package/dist/i18n/locales/pt.d.ts.map +1 -1
  465. package/dist/i18n/locales/pt.js +164 -5
  466. package/dist/i18n/locales/pt.js.map +1 -1
  467. package/dist/i18n/locales/ro.d.ts +167 -2
  468. package/dist/i18n/locales/ro.d.ts.map +1 -1
  469. package/dist/i18n/locales/ro.js +164 -5
  470. package/dist/i18n/locales/ro.js.map +1 -1
  471. package/dist/i18n/locales/ru.d.ts +167 -2
  472. package/dist/i18n/locales/ru.d.ts.map +1 -1
  473. package/dist/i18n/locales/ru.js +157 -5
  474. package/dist/i18n/locales/ru.js.map +1 -1
  475. package/dist/i18n/locales/sq.d.ts +167 -2
  476. package/dist/i18n/locales/sq.d.ts.map +1 -1
  477. package/dist/i18n/locales/sq.js +161 -5
  478. package/dist/i18n/locales/sq.js.map +1 -1
  479. package/dist/i18n/locales/sv.d.ts +167 -2
  480. package/dist/i18n/locales/sv.d.ts.map +1 -1
  481. package/dist/i18n/locales/sv.js +159 -5
  482. package/dist/i18n/locales/sv.js.map +1 -1
  483. package/dist/i18n/locales/tr.d.ts +167 -2
  484. package/dist/i18n/locales/tr.d.ts.map +1 -1
  485. package/dist/i18n/locales/tr.js +157 -5
  486. package/dist/i18n/locales/tr.js.map +1 -1
  487. package/dist/i18n/locales/zh.d.ts +167 -2
  488. package/dist/i18n/locales/zh.d.ts.map +1 -1
  489. package/dist/i18n/locales/zh.js +152 -5
  490. package/dist/i18n/locales/zh.js.map +1 -1
  491. package/dist/index.js +823 -755
  492. package/dist/index.js.map +1 -1
  493. package/dist/locales/ar.json +170 -5
  494. package/dist/locales/de.json +170 -5
  495. package/dist/locales/el.json +170 -5
  496. package/dist/locales/en.json +170 -5
  497. package/dist/locales/es.json +170 -5
  498. package/dist/locales/fr.json +170 -5
  499. package/dist/locales/hi.json +170 -5
  500. package/dist/locales/it.json +170 -5
  501. package/dist/locales/ja.json +170 -5
  502. package/dist/locales/nl.json +170 -5
  503. package/dist/locales/pl.json +170 -5
  504. package/dist/locales/pt.json +170 -5
  505. package/dist/locales/ro.json +170 -5
  506. package/dist/locales/ru.json +170 -5
  507. package/dist/locales/sq.json +170 -5
  508. package/dist/locales/sv.json +170 -5
  509. package/dist/locales/tr.json +170 -5
  510. package/dist/locales/zh.json +170 -5
  511. package/dist/patterns/alia-assistant/alia-chat-surface.d.ts.map +1 -1
  512. package/dist/patterns/alia-assistant/alia-types.d.ts +9 -0
  513. package/dist/patterns/alia-assistant/alia-types.d.ts.map +1 -1
  514. package/dist/patterns/alia-assistant/index.js +1 -1
  515. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  516. package/dist/patterns/patient-shell/index.js +1 -1
  517. package/dist/tokens.css +9 -1
  518. package/package.json +65 -5
  519. package/dist/_chunks/ai-tools-rail-B5NEghsp.js.map +0 -1
  520. package/dist/_chunks/alia-sidebar-B47qRQb5.js.map +0 -1
  521. package/dist/_chunks/app-frame-BYx1gcV7.js.map +0 -1
  522. package/dist/_chunks/appointment-card-C06aZqA7.js.map +0 -1
  523. package/dist/_chunks/appointment-timeline-BJM0S_Fg.js.map +0 -1
  524. package/dist/_chunks/autocomplete-DOeGouCL.js.map +0 -1
  525. package/dist/_chunks/care-plan-header-BUwqDTtz.js +0 -206
  526. package/dist/_chunks/care-plan-header-BUwqDTtz.js.map +0 -1
  527. package/dist/_chunks/chat-message-3V54YipB.js.map +0 -1
  528. package/dist/_chunks/combobox-Clum7gJ1.js.map +0 -1
  529. package/dist/_chunks/control-room-rail-Y8ryLYsP.js +0 -229
  530. package/dist/_chunks/control-room-rail-Y8ryLYsP.js.map +0 -1
  531. package/dist/_chunks/editable-currency-cell-renderer-C9twtALM.js +0 -328
  532. package/dist/_chunks/editable-currency-cell-renderer-C9twtALM.js.map +0 -1
  533. package/dist/_chunks/entity-summary-BxRjFh_4.js +0 -138
  534. package/dist/_chunks/entity-summary-BxRjFh_4.js.map +0 -1
  535. package/dist/_chunks/field-value-NXYczdpO.js.map +0 -1
  536. package/dist/_chunks/link-cell-renderer-CTXqtXV-.js.map +0 -1
  537. package/dist/_chunks/message-card-Bx4GmLvf.js +0 -277
  538. package/dist/_chunks/message-card-Bx4GmLvf.js.map +0 -1
  539. package/dist/_chunks/message-tray-DwrBLJlf.js.map +0 -1
  540. package/dist/_chunks/notes-panel-ay8_lPrA.js +0 -158
  541. package/dist/_chunks/notes-panel-ay8_lPrA.js.map +0 -1
  542. package/dist/_chunks/notification-card-D2jiKSJJ.js +0 -259
  543. package/dist/_chunks/notification-card-D2jiKSJJ.js.map +0 -1
  544. package/dist/_chunks/notification-tray-AEun6DN2.js.map +0 -1
  545. package/dist/_chunks/patient-details-Dlhqb5ig.js.map +0 -1
  546. package/dist/_chunks/product-hub-panel-e6pW220e.js.map +0 -1
  547. package/dist/_chunks/radiograph-panel.agent-CAX-C3g3.js +0 -558
  548. package/dist/_chunks/radiograph-panel.agent-CAX-C3g3.js.map +0 -1
  549. package/dist/_chunks/reviews-panel-Dq7LMDcH.js +0 -555
  550. package/dist/_chunks/reviews-panel-Dq7LMDcH.js.map +0 -1
  551. package/dist/_chunks/rich-text-editor-DlCqPixb.js +0 -2158
  552. package/dist/_chunks/rich-text-editor-DlCqPixb.js.map +0 -1
  553. package/dist/_chunks/scroll-area-5wNK0Cyz.js.map +0 -1
  554. package/dist/_chunks/select-DMLG44F5.js.map +0 -1
  555. package/dist/_chunks/sheet-BxsE7eQm.js.map +0 -1
  556. package/dist/_chunks/sidebar-DY9jGjgt.js.map +0 -1
  557. package/dist/_chunks/task-card-BwY9jaV1.js +0 -124
  558. package/dist/_chunks/task-card-BwY9jaV1.js.map +0 -1
  559. package/dist/_chunks/tooth-scheme-BhQoPNBD.js.map +0 -1
  560. package/dist/_chunks/transcript-panel-3THQX6nJ.js.map +0 -1
  561. package/dist/_chunks/workflow-map-Dy8mLCqF.js.map +0 -1
  562. package/dist/components/ai-tools-rail/ai-tools-rail.agent.d.ts +0 -4
  563. package/dist/components/ai-tools-rail/ai-tools-rail.agent.d.ts.map +0 -1
  564. package/dist/components/ai-tools-rail/ai-tools-rail.d.ts.map +0 -1
  565. package/dist/components/ai-tools-rail/index.d.ts +0 -4
  566. package/dist/components/ai-tools-rail/index.d.ts.map +0 -1
  567. package/dist/components/ai-tools-rail/index.js +0 -6
  568. /package/dist/components/{ai-tools-rail → address-fields}/index.js.map +0 -0
@@ -1,8 +1,9 @@
1
- import { jsxs as n, jsx as s } from "react/jsx-runtime";
2
- import { forwardRef as N, useState as S, useCallback as V } from "react";
1
+ import { jsxs as i, jsx as s } from "react/jsx-runtime";
2
+ import { forwardRef as S, useRef as k, useState as _, useEffect as A } from "react";
3
3
  import { c as a } from "./index-D2ZczOXr.js";
4
- import { useTranslation as _ } from "react-i18next";
5
- const T = a(
4
+ import { useTranslation as E } from "react-i18next";
5
+ import { S as L } from "./scroll-area-BZOvUhwQ.js";
6
+ const R = a(
6
7
  [
7
8
  "ds:h-dvh ds:w-full",
8
9
  "ds:flex ds:flex-col",
@@ -22,9 +23,9 @@ const T = a(
22
23
  "ds:print:[&_[role=banner]]:shadow-none",
23
24
  "ds:print:[&_[role=banner]]:[border-block-end-color:var(--border)]"
24
25
  ].join(" ")
25
- ), A = a(
26
+ ), T = a(
26
27
  ["ds:flex ds:flex-1 ds:items-stretch ds:min-h-0"].join(" ")
27
- ), M = a(
28
+ ), y = a(
28
29
  [
29
30
  // Hidden in the inline flow on mobile — consumers should flip their
30
31
  // Sidebar into overlay mode at narrow viewports, where it portals via
@@ -39,83 +40,93 @@ const T = a(
39
40
  ["ds:hidden ds:md:flex", "ds:shrink-0", "ds:h-full"].join(" ")
40
41
  ), F = a(
41
42
  [
42
- // <main> owns the scroll: the viewport body never scrolls, but this
43
- // element does. That keeps the header + sidebar pinned as chrome.
44
- "ds:flex-1 ds:min-w-0 ds:overflow-auto",
43
+ "ds:flex-1 ds:min-w-0",
44
+ "ds:flex ds:flex-col ds:min-h-0",
45
45
  // Focusable via the header's SkipLink — tabIndex={-1} is on the
46
46
  // element itself so keyboard users land inside the main region.
47
47
  "ds:focus:outline-none"
48
- ].join(" "),
49
- {
50
- variants: {
51
- padded: {
52
- true: [
53
- "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]",
54
- "ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-md)]"
55
- ].join(" "),
56
- false: ""
57
- }
58
- },
59
- defaultVariants: { padded: !0 }
60
- }
61
- ), y = a("ds:shrink-0"), I = N(
48
+ ].join(" ")
49
+ ), M = a("", {
50
+ variants: {
51
+ padded: {
52
+ true: [
53
+ "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]",
54
+ "ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-md)]"
55
+ ].join(" "),
56
+ false: ""
57
+ }
58
+ },
59
+ defaultVariants: { padded: !0 }
60
+ }), I = a("ds:shrink-0"), q = S(
62
61
  ({
63
- header: l,
64
- sidebar: t,
65
- children: i,
66
- endSidebar: r,
62
+ header: c,
63
+ sidebar: m,
64
+ children: p,
65
+ endSidebar: n,
67
66
  footer: d,
68
- mainId: c = "main-content",
69
- mainAriaLabel: m,
70
- padded: p = !0,
71
- className: f,
67
+ mainId: f = "main-content",
68
+ mainAriaLabel: v,
69
+ padded: u = !0,
70
+ className: h,
72
71
  mainClassName: b,
73
- ...u
74
- }, h) => {
75
- const { t: v } = _(), x = m ?? v("navigation.main.label", "Main content"), [w, g] = S(!1), j = V((k) => {
76
- const e = k.currentTarget.scrollTop > 0;
77
- g((o) => o === e ? o : e);
78
- }, []);
79
- return /* @__PURE__ */ n(
72
+ ...x
73
+ }, w) => {
74
+ const { t: N } = E(), V = v ?? N("navigation.main.label", "Main content"), o = k(null), [g, j] = _(!1);
75
+ return A(() => {
76
+ const e = o.current;
77
+ if (!e) return;
78
+ const r = () => {
79
+ const t = e.scrollTop > 0;
80
+ j((l) => l === t ? l : t);
81
+ };
82
+ return r(), e.addEventListener("scroll", r, { passive: !0 }), () => e.removeEventListener("scroll", r);
83
+ }, []), /* @__PURE__ */ i(
80
84
  "div",
81
85
  {
82
- ref: h,
83
- "data-app-scrolled": w ? "true" : void 0,
86
+ ref: w,
87
+ "data-app-scrolled": g ? "true" : void 0,
84
88
  "data-component": "app-frame",
85
- className: T({ className: f }),
86
- ...u,
89
+ className: R({ className: h }),
90
+ ...x,
87
91
  children: [
88
- l,
89
- /* @__PURE__ */ n("div", { className: A(), "data-app-frame-slot": "row", children: [
90
- /* @__PURE__ */ s("div", { className: M(), "data-app-frame-slot": "sidebar", children: t }),
92
+ c,
93
+ /* @__PURE__ */ i("div", { className: T(), "data-app-frame-slot": "row", children: [
94
+ /* @__PURE__ */ s("div", { className: y(), "data-app-frame-slot": "sidebar", children: m }),
91
95
  /* @__PURE__ */ s(
92
96
  "main",
93
97
  {
94
- id: c,
98
+ id: f,
95
99
  tabIndex: -1,
96
- "aria-label": x,
97
- onScroll: j,
98
- className: F({ padded: p, className: b }),
99
- children: i
100
+ "aria-label": V,
101
+ className: F({ className: b }),
102
+ children: /* @__PURE__ */ s(
103
+ L,
104
+ {
105
+ ref: o,
106
+ orientation: "vertical",
107
+ className: "ds:flex-1 ds:min-h-0",
108
+ children: /* @__PURE__ */ s("div", { className: M({ padded: u }), children: p })
109
+ }
110
+ )
100
111
  }
101
112
  ),
102
- r ? /* @__PURE__ */ s(
113
+ n ? /* @__PURE__ */ s(
103
114
  "div",
104
115
  {
105
116
  className: C(),
106
117
  "data-app-frame-slot": "end-sidebar",
107
- children: r
118
+ children: n
108
119
  }
109
120
  ) : null
110
121
  ] }),
111
- d ? /* @__PURE__ */ s("div", { className: y(), "data-app-frame-slot": "footer", children: d }) : null
122
+ d ? /* @__PURE__ */ s("div", { className: I(), "data-app-frame-slot": "footer", children: d }) : null
112
123
  ]
113
124
  }
114
125
  );
115
126
  }
116
127
  );
117
- I.displayName = "AppFrame";
128
+ q.displayName = "AppFrame";
118
129
  export {
119
- I as A
130
+ q as A
120
131
  };
121
- //# sourceMappingURL=app-frame-BYx1gcV7.js.map
132
+ //# sourceMappingURL=app-frame-DIEMIC5V.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-frame-DIEMIC5V.js","sources":["../../src/components/app-frame/app-frame.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* AppFrame — the always-present application shell. */\n/* */\n/* Layout */\n/* ------ */\n/* */\n/* ┌───────────────────────────────────────────────────────────┐ */\n/* │ Header (100% inline-size, block-start) │ */\n/* ├──────────┬──────────────────────────────────┬──────────────┤ */\n/* │ Sidebar │ Main (<main>) │ endSidebar │ */\n/* │ │ │ (optional) │ */\n/* │ │ │ │ */\n/* ├──────────┴──────────────────────────────────┴──────────────┤ */\n/* │ Footer (optional) │ */\n/* └───────────────────────────────────────────────────────────┘ */\n/* */\n/* Header spans the full inline-size of the shell. Sidebar sits beneath */\n/* the header on the inline-start edge and shares the row with <main>. */\n/* `endSidebar`, when provided, sits on the inline-end edge of the same */\n/* row — used for co-pilot / assistant panels (e.g. AliaSidebar) that */\n/* should dock opposite the nav rail. Footer, when provided, spans the */\n/* full inline-size at the block-end. */\n/* */\n/* Responsive behaviour */\n/* --------------------- */\n/* ≥ md viewports: the sidebar slot renders inline-start of the row */\n/* below the header, sticky to the header's block-end, full remaining */\n/* viewport height. */\n/* < md viewports: the sidebar slot is hidden from the inline flow. */\n/* Consumers should control their sidebar's `state` to `'overlay'` */\n/* on small viewports (the Sidebar portals via Radix Dialog so it */\n/* renders outside AppFrame's subtree in that mode) and wire the */\n/* `<HeaderMenuButton>` to toggle it. */\n/* -------------------------------------------------------------------- */\n\nimport {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ScrollArea } from '../scroll-area/scroll-area';\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\n// Canonical app-shell layout: the root is a VIEWPORT-SIZED flex-col with\n// its own overflow clamp. Header and the row fill it together. The only\n// thing that scrolls is the content region — a kit ScrollArea nested inside\n// <main> — so the header never leaves the top and the sidebar never needs\n// position: sticky. (Using a ScrollArea rather than letting <main> scroll\n// natively gives the main content the same 8px branded overlay scrollbar as\n// the Sidebar and ToolRail, instead of the wider OS-native bar.) This matches\n// the way Gmail / Linear / Notion frame their app surfaces and avoids the\n// flex-item-sticky edge cases that position: sticky has inside a\n// column-flex container.\n//\n// Because the viewport itself never scrolls in this model, the Header's\n// built-in IntersectionObserver (which watches a sentinel against the\n// viewport) cannot detect scroll. AppFrame instead tracks the main\n// ScrollArea viewport's scrollTop, reflects it onto the root via\n// `data-app-scrolled`, and the descendant selectors below drive the\n// `<header role=\"banner\">` border and shadow — producing the same elevation\n// the Header would show in a viewport-scroll context.\nconst rootVariants = cva(\n [\n 'ds:h-dvh ds:w-full',\n 'ds:flex ds:flex-col',\n 'ds:overflow-hidden',\n 'ds:bg-[var(--background)] ds:text-[color:var(--foreground)]',\n // Elevation cascade driven by main's scrollTop (data-app-scrolled).\n // Mirrors the Header's native scroll-linked recipe (see `Brand/Shadows`\n // — one tier up from rest, never two) so the banner looks identical\n // whether it's in a viewport-scroll context (sticky) or slotted into\n // AppFrame where <main> owns the scroll.\n 'ds:data-[app-scrolled=true]:[&_[role=banner]]:shadow-[var(--shadow-md)]',\n 'ds:data-[app-scrolled=true]:[&_[role=banner]]:[border-block-end-color:var(--border)]',\n // Forced-colors: UA strips box-shadow, so the border is the only\n // separation cue. Always render it.\n 'ds:forced-colors:[&_[role=banner]]:[border-block-end-color:CanvasText]',\n // Print: strip shadow, keep border so the banner still reads on paper.\n 'ds:print:[&_[role=banner]]:shadow-none',\n 'ds:print:[&_[role=banner]]:[border-block-end-color:var(--border)]',\n ].join(' '),\n);\n\nconst rowVariants = cva(\n ['ds:flex ds:flex-1 ds:items-stretch ds:min-h-0'].join(' '),\n);\n\nconst sidebarSlotVariants = cva(\n [\n // Hidden in the inline flow on mobile — consumers should flip their\n // Sidebar into overlay mode at narrow viewports, where it portals via\n // Radix Dialog and therefore renders outside AppFrame entirely.\n 'ds:hidden ds:md:flex',\n 'ds:shrink-0',\n // The rail fills the row's full height because the row is `flex\n // items-stretch`. No sticky needed — the row itself never scrolls.\n 'ds:h-full',\n ].join(' '),\n);\n\n// Inline-end slot — same hide-on-mobile behaviour as the nav rail because\n// a 22rem co-pilot panel can't share a phone viewport. Consuming apps\n// should flip Alia (or any inline-end panel) to its overlay/popout mode\n// at narrow viewports.\nconst endSidebarSlotVariants = cva(\n ['ds:hidden ds:md:flex', 'ds:shrink-0', 'ds:h-full'].join(' '),\n);\n\n// <main> is the landmark + skip-link target, but it NO LONGER owns the scroll.\n// A kit `ScrollArea` inside it owns the scroll instead, so the main content's\n// scrollbar is the same 8px branded overlay as the Sidebar and ToolRail\n// (both ScrollArea) rather than the wider OS-native bar that made \"the general\n// scroll area look bigger\". <main> is a flex-col so the ScrollArea (flex-1\n// min-h-0) fills its height; the body still never scrolls — only the viewport.\nconst mainVariants = cva(\n [\n 'ds:flex-1 ds:min-w-0',\n 'ds:flex ds:flex-col ds:min-h-0',\n // Focusable via the header's SkipLink — tabIndex={-1} is on the\n // element itself so keyboard users land inside the main region.\n 'ds:focus:outline-none',\n ].join(' '),\n);\n\n// Inner content wrapper INSIDE the ScrollArea viewport. It owns the `padded`\n// inset so the scrollbar sits at the viewport's true edge (matching the\n// ScrollArea convention used by the rail/sidebar) and the padding scrolls\n// with the content.\nconst mainContentVariants = cva('', {\n variants: {\n padded: {\n true: [\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]',\n 'ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-md)]',\n ].join(' '),\n false: '',\n },\n },\n defaultVariants: { padded: true },\n});\n\nconst footerSlotVariants = cva('ds:shrink-0');\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport interface AppFrameProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'children'>,\n VariantProps<typeof mainContentVariants> {\n /** `<Header>` instance rendered full-width at the block-start of the shell. */\n header: ReactNode;\n /** `<Sidebar>` instance rendered inline-start of the row beneath the header on ≥ md viewports. */\n sidebar: ReactNode;\n /** Main content — rendered inside a `<main>` landmark. */\n children: ReactNode;\n /** Optional inline-end docked panel (typically `<AliaSidebar />`) sharing the same row as the main region on ≥ md viewports. Hidden on narrow viewports — consumers should flip to an overlay/popout mode there. */\n endSidebar?: ReactNode;\n /** Optional block-end footer — renders full-width below the sidebar + main row. */\n footer?: ReactNode;\n /**\n * Id applied to the `<main>` element so `<HeaderSkipLink href=\"#{mainId}\" />`\n * can target it. Must be a valid HTML id (letters, digits, `-`, `_`, no\n * spaces). Defaults to `'main-content'`.\n */\n mainId?: string;\n /**\n * Override the landmark's accessible name. Defaults to the i18n'd\n * `ui.navigation.main.label` (\"Main content\").\n */\n mainAriaLabel?: string;\n /** Extra classes applied to the `<main>` landmark. */\n mainClassName?: string;\n}\n\nexport const AppFrame = forwardRef<HTMLDivElement, AppFrameProps>(\n (\n {\n header,\n sidebar,\n children,\n endSidebar,\n footer,\n mainId = 'main-content',\n mainAriaLabel,\n padded = true,\n className,\n mainClassName,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const mainLabel =\n mainAriaLabel ?? t('navigation.main.label', 'Main content');\n\n // The ScrollArea inside <main> owns the scroll, so the header-elevation\n // cascade (data-app-scrolled) is driven off the ScrollArea's viewport\n // rather than <main>. ScrollArea forwards its ref to that viewport.\n const mainViewportRef = useRef<HTMLDivElement>(null);\n const [mainScrolled, setMainScrolled] = useState(false);\n useEffect(() => {\n const viewport = mainViewportRef.current;\n if (!viewport) return;\n const sync = () => {\n const next = viewport.scrollTop > 0;\n setMainScrolled((prev) => (prev === next ? prev : next));\n };\n sync();\n viewport.addEventListener('scroll', sync, { passive: true });\n return () => viewport.removeEventListener('scroll', sync);\n }, []);\n\n return (\n <div\n ref={ref}\n data-app-scrolled={mainScrolled ? 'true' : undefined}\n data-component=\"app-frame\"\n className={rootVariants({ className })}\n {...rest}\n >\n {/* Header is rendered as a direct flex child — NOT wrapped in a slot\n div — so it sits at the block-start of the shell. The root's\n `overflow-hidden` keeps it pinned; no `position: sticky` needed. */}\n {header}\n <div className={rowVariants()} data-app-frame-slot=\"row\">\n <div className={sidebarSlotVariants()} data-app-frame-slot=\"sidebar\">\n {sidebar}\n </div>\n <main\n id={mainId}\n tabIndex={-1}\n aria-label={mainLabel}\n className={mainVariants({ className: mainClassName })}\n >\n <ScrollArea\n ref={mainViewportRef}\n orientation=\"vertical\"\n className=\"ds:flex-1 ds:min-h-0\"\n >\n <div className={mainContentVariants({ padded })}>{children}</div>\n </ScrollArea>\n </main>\n {endSidebar ? (\n <div\n className={endSidebarSlotVariants()}\n data-app-frame-slot=\"end-sidebar\"\n >\n {endSidebar}\n </div>\n ) : null}\n </div>\n {footer ? (\n <div className={footerSlotVariants()} data-app-frame-slot=\"footer\">\n {footer}\n </div>\n ) : null}\n </div>\n );\n },\n);\nAppFrame.displayName = 'AppFrame';\n"],"names":["rootVariants","cva","rowVariants","sidebarSlotVariants","endSidebarSlotVariants","mainVariants","mainContentVariants","footerSlotVariants","AppFrame","forwardRef","header","sidebar","children","endSidebar","footer","mainId","mainAriaLabel","padded","className","mainClassName","rest","ref","t","useTranslation","mainLabel","mainViewportRef","useRef","mainScrolled","setMainScrolled","useState","useEffect","viewport","sync","next","prev","jsxs","jsx","ScrollArea"],"mappings":"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"}
@@ -1,27 +1,28 @@
1
1
  import { jsx as r, jsxs as o } from "react/jsx-runtime";
2
2
  import { forwardRef as F } from "react";
3
- import { c as W } from "./index-D2ZczOXr.js";
4
- import { useTranslation as Y } from "react-i18next";
5
- import { A as O } from "./avatar-BNQNhoyL.js";
3
+ import { c as H } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as W } from "react-i18next";
5
+ import { A as _ } from "./avatar-BNQNhoyL.js";
6
6
  import { B as i } from "./badge-DCOqV9mI.js";
7
- import { T as J } from "./tag-BQXwuJq1.js";
8
- import { T as Q } from "./timestamp-BV2lC-wV.js";
9
- import { T as X } from "./transaction-chip-CscoQbxF.js";
10
- import { i as Z } from "./is-safe-url-DkETxeHz.js";
11
- import { V as aa } from "./video-BAeICxCT.js";
12
- import { M as ra } from "./map-pin-B8STOPMJ.js";
13
- import { a as ea, b as sa, c as oa } from "./entity-card-9_62gY7l.js";
14
- import { S as ta } from "./star-vav0SJ9e.js";
15
- import { c as E } from "./createLucideIcon-CrFbzy84.js";
16
- import { G as na } from "./globe-BkEFMNSg.js";
17
- import { C as da } from "./chevron-right-BrpYejk0.js";
7
+ import { T as Y } from "./tag-BQXwuJq1.js";
8
+ import { T as J } from "./timestamp-BV2lC-wV.js";
9
+ import { T as Q } from "./transaction-chip-CscoQbxF.js";
10
+ import { i as X } from "./is-safe-url-DkETxeHz.js";
11
+ import { V as Z } from "./video-BAeICxCT.js";
12
+ import { M as aa } from "./map-pin-B8STOPMJ.js";
13
+ import { c as ra, a as sa, b as ea } from "./entity-card-DmrgYSEX.js";
14
+ import { S as oa } from "./star-vav0SJ9e.js";
15
+ import { C as na } from "./clipboard-list-S7s-MXQq.js";
16
+ import { c as ta } from "./createLucideIcon-CrFbzy84.js";
17
+ import { G as da } from "./globe-BkEFMNSg.js";
18
+ import { C as ia } from "./chevron-right-BrpYejk0.js";
18
19
  /**
19
20
  * @license lucide-react v1.8.0 - ISC
20
21
  *
21
22
  * This source code is licensed under the ISC license.
22
23
  * See the LICENSE file in the root directory of this source tree.
23
24
  */
24
- const ia = [
25
+ const la = [
25
26
  ["path", { d: "M19 9V6a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v3", key: "irtipd" }],
26
27
  [
27
28
  "path",
@@ -32,27 +33,7 @@ const ia = [
32
33
  ],
33
34
  ["path", { d: "M5 18v2", key: "ppbyun" }],
34
35
  ["path", { d: "M19 18v2", key: "gy7782" }]
35
- ], la = E("armchair", ia);
36
- /**
37
- * @license lucide-react v1.8.0 - ISC
38
- *
39
- * This source code is licensed under the ISC license.
40
- * See the LICENSE file in the root directory of this source tree.
41
- */
42
- const ca = [
43
- ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
44
- [
45
- "path",
46
- {
47
- d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",
48
- key: "116196"
49
- }
50
- ],
51
- ["path", { d: "M12 11h4", key: "1jrz19" }],
52
- ["path", { d: "M12 16h4", key: "n85exb" }],
53
- ["path", { d: "M8 11h.01", key: "1dfujw" }],
54
- ["path", { d: "M8 16h.01", key: "18s6g9" }]
55
- ], pa = E("clipboard-list", ca), ma = {
36
+ ], ca = ta("armchair", la), pa = {
56
37
  "var(--color-violet-500)": "ds:bg-[var(--color-violet-500)]",
57
38
  "var(--color-purple-500)": "ds:bg-[var(--color-purple-500)]",
58
39
  "var(--color-magenta-500)": "ds:bg-[var(--color-magenta-500)]",
@@ -65,10 +46,10 @@ const ca = [
65
46
  "var(--color-fuchsia-500)": "ds:bg-[var(--color-fuchsia-500)]",
66
47
  "var(--color-grey-700)": "ds:bg-[var(--color-grey-700)]"
67
48
  };
68
- function ua(a) {
69
- return ma[oa(a)] ?? "ds:bg-[var(--color-grey-700)]";
49
+ function ma(a) {
50
+ return pa[ea(a)] ?? "ds:bg-[var(--color-grey-700)]";
70
51
  }
71
- const fa = W(
52
+ const ua = H(
72
53
  [
73
54
  "ds:relative ds:flex ds:items-start ds:gap-[var(--spacing-sm)]",
74
55
  "ds:rounded-[var(--radius-md)]",
@@ -92,8 +73,11 @@ const fa = W(
92
73
  // `flat` (default) is the chrome-less row used inside a bordered
93
74
  // AppointmentTray. `elevated` gives each row its own card chrome
94
75
  // (border + shadow) for use directly on a rail, e.g. AppointmentTimeline.
76
+ // Uses `--shadow-sm` (a row lift), not `--shadow-card`/`--shadow-lg`:
77
+ // the rail's `overflow-y:auto` scroll region clips `overflow-x` at a
78
+ // narrow gutter, so a wide 30px-blur shadow gets a hard-edged clip.
95
79
  flat: "",
96
- elevated: "ds:border ds:border-[color:var(--card-border)] ds:[.theme-accessible_&]:border-2 ds:shadow-[var(--shadow-card)]"
80
+ elevated: "ds:border ds:border-[color:var(--card-border)] ds:[.theme-accessible_&]:border-2 ds:shadow-[var(--shadow-sm)]"
97
81
  }
98
82
  },
99
83
  defaultVariants: {
@@ -102,7 +86,7 @@ const fa = W(
102
86
  surface: "flat"
103
87
  }
104
88
  }
105
- ), P = [
89
+ ), j = [
106
90
  "ds:focus-visible:outline-none",
107
91
  "ds:after:content-[''] ds:after:absolute ds:after:inset-0 ds:after:rounded-[var(--radius-md)]",
108
92
  "ds:after:pointer-events-auto",
@@ -111,35 +95,35 @@ const fa = W(
111
95
  "ds:focus-visible:after:outline-[color:var(--ring)]",
112
96
  "ds:focus-visible:after:outline-offset-[length:var(--focus-ring-offset)]",
113
97
  "ds:forced-colors:focus-visible:after:outline-[CanvasText]"
114
- ].join(" "), va = {
115
- inPractice: ra,
116
- telehealth: aa
117
- }, ga = F(
98
+ ].join(" "), fa = {
99
+ inPractice: aa,
100
+ telehealth: Z
101
+ }, va = F(
118
102
  ({
119
103
  item: a,
120
104
  size: v = "sm",
121
- surface: U = "flat",
105
+ surface: E = "flat",
122
106
  locale: g,
123
- currency: $ = "EUR",
107
+ currency: U = "EUR",
124
108
  showPatient: d = !0,
125
- onActivate: t,
109
+ onActivate: n,
126
110
  className: A,
127
111
  ...D
128
- }, B) => {
129
- var k, C, w, z, T, M, R, S, V, I, L, _, j;
130
- const { t: e } = Y(), l = !!t, G = !!a.url && Z(a.url), p = ((k = a.patient) == null ? void 0 : k.name) ?? e("appointmentCard.noPatient"), n = (C = a.operator) == null ? void 0 : C.name, m = e(`appointmentCard.state.${a.state}`), h = v === "md" ? "md" : "sm", K = va[a.type], b = d ? p : n ?? e("appointmentCard.appointment"), y = d ? e("appointmentCard.itemLabel", {
112
+ }, $) => {
113
+ var C, k, T, z, w, R, S, I, L, V, M, O, P;
114
+ const { t: s } = W(), l = !!n, B = !!a.url && X(a.url), p = ((C = a.patient) == null ? void 0 : C.name) ?? s("appointmentCard.noPatient"), t = (k = a.operator) == null ? void 0 : k.name, m = s(`appointmentCard.state.${a.state}`), h = v === "md" ? "md" : "sm", G = fa[a.type], b = d ? p : t ?? s("appointmentCard.appointment"), y = d ? s("appointmentCard.itemLabel", {
131
115
  patient: p,
132
116
  state: m
133
- }) : e("appointmentCard.itemLabelGeneric", { title: b, state: m }), u = /* @__PURE__ */ r("span", { className: "ds:min-w-0 ds:truncate type-title-item ds:text-[color:var(--foreground)]", children: b });
117
+ }) : s("appointmentCard.itemLabelGeneric", { title: b, state: m }), u = /* @__PURE__ */ r("span", { className: "ds:min-w-0 ds:truncate type-title-item ds:text-[color:var(--foreground)]", children: b });
134
118
  let c;
135
- l && G ? c = /* @__PURE__ */ r(
119
+ l && B ? c = /* @__PURE__ */ r(
136
120
  "a",
137
121
  {
138
122
  href: a.url,
139
123
  "aria-label": y,
140
- className: P + " ds:contents",
141
- onClick: (s) => {
142
- s.defaultPrevented || s.metaKey || s.ctrlKey || s.shiftKey || t == null || t(a);
124
+ className: j + " ds:contents",
125
+ onClick: (e) => {
126
+ e.defaultPrevented || e.metaKey || e.ctrlKey || e.shiftKey || n == null || n(a);
143
127
  },
144
128
  children: u
145
129
  }
@@ -148,18 +132,18 @@ const fa = W(
148
132
  {
149
133
  type: "button",
150
134
  "aria-label": y,
151
- className: P + " ds:contents ds:bg-transparent ds:border-0 ds:p-0 ds:text-start",
152
- onClick: () => t == null ? void 0 : t(a),
135
+ className: j + " ds:contents ds:bg-transparent ds:border-0 ds:p-0 ds:text-start",
136
+ onClick: () => n == null ? void 0 : n(a),
153
137
  children: u
154
138
  }
155
139
  ) : c = u;
156
- const x = (a.treatments ?? []).map((s, H) => {
157
- const q = s.elements && s.elements.length > 0 ? e("appointmentCard.treatmentWithElements", {
158
- care: s.careName,
159
- elements: s.elements.join(", ")
160
- }) : s.careName;
140
+ const x = (a.treatments ?? []).map((e, K) => {
141
+ const q = e.elements && e.elements.length > 0 ? s("appointmentCard.treatmentWithElements", {
142
+ care: e.careName,
143
+ elements: e.elements.join(", ")
144
+ }) : e.careName;
161
145
  return /* @__PURE__ */ r(
162
- J,
146
+ Y,
163
147
  {
164
148
  label: q,
165
149
  variant: "neutral",
@@ -167,32 +151,32 @@ const fa = W(
167
151
  size: "sm",
168
152
  maxInlineSize: "12rem"
169
153
  },
170
- `${s.careName}-${H}`
154
+ `${e.careName}-${K}`
171
155
  );
172
- }), f = (w = a.bookingReason) == null ? void 0 : w.advanceAmountCents, N = typeof f == "number" && f > 0;
156
+ }), f = (T = a.bookingReason) == null ? void 0 : T.advanceAmountCents, N = typeof f == "number" && f > 0;
173
157
  return /* @__PURE__ */ o(
174
158
  "div",
175
159
  {
176
- ref: B,
160
+ ref: $,
177
161
  role: "listitem",
178
162
  "data-component": "appointment-card",
179
163
  "data-component-id": a.id,
180
164
  "data-state": a.state,
181
165
  "data-type": a.type,
182
- className: fa({
166
+ className: ua({
183
167
  size: v,
184
168
  interactive: l,
185
- surface: U,
169
+ surface: E,
186
170
  className: A
187
171
  }),
188
172
  ...D,
189
173
  children: [
190
174
  /* @__PURE__ */ o("span", { className: "ds:flex ds:w-16 ds:shrink-0 ds:flex-col ds:items-start ds:gap-[var(--spacing-2xs)]", children: [
191
175
  /* @__PURE__ */ o("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ds:text-[color:var(--muted-foreground)]", children: [
192
- /* @__PURE__ */ r(K, { "aria-hidden": "true", className: "ds:size-3.5 ds:shrink-0" }),
193
- /* @__PURE__ */ r("span", { className: "ds:sr-only", children: e(`appointmentCard.type.${a.type}`) }),
176
+ /* @__PURE__ */ r(G, { "aria-hidden": "true", className: "ds:size-3.5 ds:shrink-0" }),
177
+ /* @__PURE__ */ r("span", { className: "ds:sr-only", children: s(`appointmentCard.type.${a.type}`) }),
194
178
  /* @__PURE__ */ r(
195
- Q,
179
+ J,
196
180
  {
197
181
  value: a.startIso,
198
182
  format: "absolute",
@@ -203,14 +187,14 @@ const fa = W(
203
187
  }
204
188
  )
205
189
  ] }),
206
- /* @__PURE__ */ r("span", { className: "type-eyebrow ds:text-[color:var(--muted-foreground)]", children: e("appointmentCard.duration", { count: a.durationMin }) })
190
+ /* @__PURE__ */ r("span", { className: "type-eyebrow ds:text-[color:var(--muted-foreground)]", children: s("appointmentCard.duration", { count: a.durationMin }) })
207
191
  ] }),
208
- n ? /* @__PURE__ */ o("span", { className: "ds:relative ds:shrink-0", children: [
192
+ t ? /* @__PURE__ */ o("span", { className: "ds:relative ds:shrink-0", children: [
209
193
  /* @__PURE__ */ r(
210
- O,
194
+ _,
211
195
  {
212
- name: n,
213
- color: ea((z = a.operator) == null ? void 0 : z.colorId),
196
+ name: t,
197
+ color: ra((z = a.operator) == null ? void 0 : z.colorId),
214
198
  size: h,
215
199
  "aria-hidden": "true",
216
200
  role: "presentation",
@@ -221,15 +205,15 @@ const fa = W(
221
205
  "span",
222
206
  {
223
207
  "aria-hidden": "true",
224
- className: "ds:absolute ds:bottom-0 ds:end-0 ds:size-2.5 ds:rounded-[var(--radius-full)] ds:border ds:border-[color:var(--card)] " + ua((T = a.operator) == null ? void 0 : T.colorId)
208
+ className: "ds:absolute ds:bottom-0 ds:end-0 ds:size-2.5 ds:rounded-[var(--radius-full)] ds:border ds:border-[color:var(--card)] " + ma((w = a.operator) == null ? void 0 : w.colorId)
225
209
  }
226
210
  )
227
211
  ] }) : null,
228
212
  /* @__PURE__ */ o("div", { className: "ds:flex-1 ds:min-w-0 ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
229
213
  /* @__PURE__ */ o("div", { className: "ds:flex ds:items-start ds:gap-[var(--spacing-sm)]", children: [
230
214
  /* @__PURE__ */ o("div", { className: "ds:flex-1 ds:min-w-0 ds:flex ds:items-center ds:gap-[var(--spacing-xs)]", children: [
231
- d && ((M = a.patient) != null && M.avatarUrl) ? /* @__PURE__ */ r(
232
- O,
215
+ d && ((R = a.patient) != null && R.avatarUrl) ? /* @__PURE__ */ r(
216
+ _,
233
217
  {
234
218
  name: p,
235
219
  src: a.patient.avatarUrl,
@@ -253,37 +237,37 @@ const fa = W(
253
237
  }
254
238
  )
255
239
  ] }),
256
- d && n || (R = a.bookingReason) != null && R.specialty || a.firstVisit === "yes" ? /* @__PURE__ */ o("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-sm)] ds:gap-y-[var(--spacing-2xs)] type-eyebrow ds:text-[color:var(--muted-foreground)]", children: [
257
- d && n ? /* @__PURE__ */ r("span", { children: n }) : null,
258
- (S = a.bookingReason) != null && S.specialty ? /* @__PURE__ */ r("span", { children: a.bookingReason.specialty }) : null,
240
+ d && t || (S = a.bookingReason) != null && S.specialty || a.firstVisit === "yes" ? /* @__PURE__ */ o("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-sm)] ds:gap-y-[var(--spacing-2xs)] type-eyebrow ds:text-[color:var(--muted-foreground)]", children: [
241
+ d && t ? /* @__PURE__ */ r("span", { children: t }) : null,
242
+ (I = a.bookingReason) != null && I.specialty ? /* @__PURE__ */ r("span", { children: a.bookingReason.specialty }) : null,
259
243
  a.firstVisit === "yes" ? /* @__PURE__ */ o("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]", children: [
260
- /* @__PURE__ */ r(ta, { "aria-hidden": "true", className: "ds:size-3 ds:shrink-0" }),
261
- e("appointmentCard.firstVisit")
244
+ /* @__PURE__ */ r(oa, { "aria-hidden": "true", className: "ds:size-3 ds:shrink-0" }),
245
+ s("appointmentCard.firstVisit")
262
246
  ] }) : null
263
247
  ] }) : null,
264
- (V = a.bookingReason) != null && V.description ? /* @__PURE__ */ r("span", { className: "type-body-sm ds:text-[color:var(--foreground)] ds:truncate", children: a.bookingReason.description }) : null,
248
+ (L = a.bookingReason) != null && L.description ? /* @__PURE__ */ r("span", { className: "type-body-sm ds:text-[color:var(--foreground)] ds:truncate", children: a.bookingReason.description }) : null,
265
249
  x.length > 0 ? /* @__PURE__ */ r("div", { className: "ds:flex ds:flex-wrap ds:gap-[var(--spacing-2xs)]", children: x }) : null,
266
- a.carePlan || a.chair || (I = a.flags) != null && I.bookedOnline || (L = a.flags) != null && L.highlightedAnamnesis || N ? /* @__PURE__ */ o("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
250
+ a.carePlan || a.chair || (V = a.flags) != null && V.bookedOnline || (M = a.flags) != null && M.highlightedAnamnesis || N ? /* @__PURE__ */ o("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
267
251
  a.carePlan ? /* @__PURE__ */ r(
268
252
  i,
269
253
  {
270
254
  variant: "accentSoft",
271
255
  size: "sm",
272
- leading: /* @__PURE__ */ r(pa, {}),
273
- children: e("appointmentCard.carePlan", {
256
+ leading: /* @__PURE__ */ r(na, {}),
257
+ children: s("appointmentCard.carePlan", {
274
258
  number: a.carePlan.number
275
259
  })
276
260
  }
277
261
  ) : null,
278
- a.chair ? /* @__PURE__ */ r(i, { variant: "neutral", size: "sm", leading: /* @__PURE__ */ r(la, {}), children: e("appointmentCard.chair", { chair: a.chair }) }) : null,
279
- (_ = a.flags) != null && _.bookedOnline ? /* @__PURE__ */ r(i, { variant: "info", size: "sm", leading: /* @__PURE__ */ r(na, {}), children: e("appointmentCard.flag.bookedOnline") }) : null,
280
- (j = a.flags) != null && j.highlightedAnamnesis ? /* @__PURE__ */ r(i, { variant: "warning", size: "sm", withDot: !0, children: e("appointmentCard.flag.highlightedAnamnesis") }) : null,
262
+ a.chair ? /* @__PURE__ */ r(i, { variant: "neutral", size: "sm", leading: /* @__PURE__ */ r(ca, {}), children: s("appointmentCard.chair", { chair: a.chair }) }) : null,
263
+ (O = a.flags) != null && O.bookedOnline ? /* @__PURE__ */ r(i, { variant: "info", size: "sm", leading: /* @__PURE__ */ r(da, {}), children: s("appointmentCard.flag.bookedOnline") }) : null,
264
+ (P = a.flags) != null && P.highlightedAnamnesis ? /* @__PURE__ */ r(i, { variant: "warning", size: "sm", withDot: !0, children: s("appointmentCard.flag.highlightedAnamnesis") }) : null,
281
265
  N ? /* @__PURE__ */ r(
282
- X,
266
+ Q,
283
267
  {
284
268
  state: "to-invoice",
285
269
  amount: f / 100,
286
- currency: $,
270
+ currency: U,
287
271
  locale: g,
288
272
  size: "sm",
289
273
  showLabel: !0
@@ -292,7 +276,7 @@ const fa = W(
292
276
  ] }) : null
293
277
  ] }),
294
278
  l ? /* @__PURE__ */ r(
295
- da,
279
+ ia,
296
280
  {
297
281
  "aria-hidden": "true",
298
282
  className: "ds:size-4 ds:shrink-0 ds:self-center ds:text-[color:var(--muted-foreground)] ds:opacity-0 ds:transition-opacity ds:motion-reduce:transition-none ds:group-hover:opacity-100 ds:group-focus-within:opacity-100 ds:rtl:rotate-180"
@@ -303,8 +287,8 @@ const fa = W(
303
287
  );
304
288
  }
305
289
  );
306
- ga.displayName = "AppointmentCard";
290
+ va.displayName = "AppointmentCard";
307
291
  export {
308
- ga as A
292
+ va as A
309
293
  };
310
- //# sourceMappingURL=appointment-card-C06aZqA7.js.map
294
+ //# sourceMappingURL=appointment-card-DVaeJNVB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appointment-card-DVaeJNVB.js","sources":["../../node_modules/lucide-react/dist/esm/icons/armchair.js","../../src/components/appointment-card/appointment-card.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 [\"path\", { d: \"M19 9V6a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v3\", key: \"irtipd\" }],\n [\n \"path\",\n {\n d: \"M3 16a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-5a2 2 0 0 0-4 0v1.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V11a2 2 0 0 0-4 0z\",\n key: \"1qyhux\"\n }\n ],\n [\"path\", { d: \"M5 18v2\", key: \"ppbyun\" }],\n [\"path\", { d: \"M19 18v2\", key: \"gy7782\" }]\n];\nconst Armchair = createLucideIcon(\"armchair\", __iconNode);\n\nexport { __iconNode, Armchair as default };\n//# sourceMappingURL=armchair.js.map\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport {\n Armchair,\n ChevronRight,\n ClipboardList,\n Globe,\n MapPin,\n Star,\n Video,\n} from 'lucide-react';\nimport { Avatar } from '../avatar/avatar';\nimport { Badge } from '../badge/badge';\nimport { Tag } from '../tag/tag';\nimport { Timestamp } from '../timestamp/timestamp';\nimport { TransactionChip } from '../transaction-chip/transaction-chip';\nimport {\n appointmentStateBadge,\n colorIdToToken,\n colorIdToAvatarToken,\n isSafeEntityUrl,\n} from '../_shared/entity-card';\nimport type { AppointmentState } from '../_shared/entity-card';\n\n/*\n * Closed colour-dot class map. `colorIdToToken` resolves the operator's\n * numeric colour id to one of a fixed set of palette tokens; the operator\n * dot needs a *static* Tailwind class for each so the compiler can emit it\n * (dynamic `ds:bg-[…]` strings are not seen by the JIT). The keys mirror the\n * exact token strings the shared helper returns.\n */\nconst OPERATOR_DOT_CLASS: Record<string, string> = {\n 'var(--color-violet-500)': 'ds:bg-[var(--color-violet-500)]',\n 'var(--color-purple-500)': 'ds:bg-[var(--color-purple-500)]',\n 'var(--color-magenta-500)': 'ds:bg-[var(--color-magenta-500)]',\n 'var(--color-blue-500)': 'ds:bg-[var(--color-blue-500)]',\n 'var(--color-green-500)': 'ds:bg-[var(--color-green-500)]',\n 'var(--color-red-500)': 'ds:bg-[var(--color-red-500)]',\n 'var(--color-yellow-500)': 'ds:bg-[var(--color-yellow-500)]',\n 'var(--color-indigo-500)': 'ds:bg-[var(--color-indigo-500)]',\n 'var(--color-orange-500)': 'ds:bg-[var(--color-orange-500)]',\n 'var(--color-fuchsia-500)': 'ds:bg-[var(--color-fuchsia-500)]',\n 'var(--color-grey-700)': 'ds:bg-[var(--color-grey-700)]',\n};\n\nfunction operatorDotClass(colorId: number | string | undefined): string {\n return (\n OPERATOR_DOT_CLASS[colorIdToToken(colorId)] ??\n 'ds:bg-[var(--color-grey-700)]'\n );\n}\n\n/* -------------------------------------------------------------------- */\n/* AppointmentCard */\n/* */\n/* Single-row appointment surface — sibling of AgendaCard, but richer: */\n/* leading timestamp, operator + patient avatars with the operator */\n/* colour dot, a lifecycle-state Badge (announced by label, never colour */\n/* alone), treatment / tooth Tags, and an optional advance-deposit */\n/* TransactionChip. State→Badge-variant + colour-id→token + URL-safety */\n/* come from the shared `_shared/entity-card` helpers. */\n/* */\n/* All visible text flows through useTranslation('ui') against the */\n/* `appointmentCard.*` namespace (plus shared `financial.*` for money). */\n/* -------------------------------------------------------------------- */\n\n// Back-compat / one-stop import — the URL guard lives in the shared helper.\nexport { isSafeEntityUrl as isSafeAppointmentUrl } from '../_shared/is-safe-url';\n\n/* -------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------- */\n\n/** Appointment delivery channel. */\nexport type AppointmentType = 'inPractice' | 'telehealth';\n\n/** First-visit tri-state flag. */\nexport type AppointmentFirstVisit = 'yes' | 'no' | 'unknown';\n\n/** Operator (clinician) summary — name + optional palette colour id. */\nexport interface AppointmentOperator {\n /** Operator display name — drives the avatar initials + accessible name. */\n name: string;\n /** Numeric palette colour id, resolved to a kit token for the colour dot. */\n colorId?: number | string;\n}\n\n/** Patient summary — identity only, drives the avatar. */\nexport interface AppointmentPatient {\n /** Patient display name. */\n name: string;\n /** Optional avatar image URL. */\n avatarUrl?: string;\n}\n\n/** One treatment line within the appointment. */\nexport interface AppointmentTreatment {\n /** Localised care / treatment name. */\n careName: string;\n /** Optional tooth elements (e.g. FDI ids) the treatment targets. */\n elements?: string[];\n}\n\n/** Booking-reason metadata captured at online-booking time. */\nexport interface AppointmentBookingReason {\n /** Localised booking-reason description. */\n description: string;\n /** Expected duration in minutes. */\n durationMin?: number;\n /** Advance / deposit amount in cents (non-negative). */\n advanceAmountCents?: number;\n /** Localised specialty label. */\n specialty?: string;\n}\n\n/** Boolean appointment flags surfaced as chips / indicators. */\nexport interface AppointmentFlags {\n bookedOnline?: boolean;\n noPatientAssigned?: boolean;\n highlightedAnamnesis?: boolean;\n billable?: boolean;\n}\n\nexport interface AppointmentItem {\n /** Stable appointment identifier. */\n id: string;\n /** ISO-8601 start instant. */\n startIso: string;\n /** Duration in minutes. */\n durationMin: number;\n /** Lifecycle state — drives the Badge variant + label. */\n state: AppointmentState;\n /** Delivery channel — drives the leading type glyph. */\n type: AppointmentType;\n /** First-visit flag. */\n firstVisit?: AppointmentFirstVisit;\n /** Assigned operator. */\n operator?: AppointmentOperator;\n /** Chair / room label — surfaced as a chip. */\n chair?: string;\n /**\n * The care plan this appointment belongs to, when any — surfaced as a chip\n * (`Care plan {number}`). `url` is the deep link the consumer may use for\n * navigation; the chip itself is non-interactive so it never nests an anchor\n * inside the row's own stretched link.\n */\n carePlan?: { number: string; url?: string };\n /** Patient identity. */\n patient?: AppointmentPatient;\n /** Treatment lines. */\n treatments?: AppointmentTreatment[];\n /** Online booking-reason metadata. */\n bookingReason?: AppointmentBookingReason;\n /** Boolean flags. */\n flags?: AppointmentFlags;\n /** Optional deep link — when present (and safe) the row renders as an anchor. */\n url?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* CVA — row */\n/* -------------------------------------------------------------------- */\n\nconst appointmentCardVariants = cva(\n [\n 'ds:relative ds:flex ds:items-start ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:text-start ds:group',\n 'ds:bg-[var(--card)] ds:text-[color:var(--card-foreground)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)]',\n 'ds:motion-reduce:transition-none',\n 'ds:forced-colors:border ds:forced-colors:border-[CanvasText]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:p-[var(--spacing-sm)]',\n md: 'ds:p-[var(--spacing-md)]',\n },\n interactive: {\n true: 'ds:hover:bg-[color:var(--muted)]/40 ds:cursor-pointer',\n false: '',\n },\n surface: {\n // `flat` (default) is the chrome-less row used inside a bordered\n // AppointmentTray. `elevated` gives each row its own card chrome\n // (border + shadow) for use directly on a rail, e.g. AppointmentTimeline.\n // Uses `--shadow-sm` (a row lift), not `--shadow-card`/`--shadow-lg`:\n // the rail's `overflow-y:auto` scroll region clips `overflow-x` at a\n // narrow gutter, so a wide 30px-blur shadow gets a hard-edged clip.\n flat: '',\n elevated:\n 'ds:border ds:border-[color:var(--card-border)] ds:[.theme-accessible_&]:border-2 ds:shadow-[var(--shadow-sm)]',\n },\n },\n defaultVariants: {\n size: 'sm',\n interactive: false,\n surface: 'flat',\n },\n },\n);\n\nconst stretchedLinkClass = [\n 'ds:focus-visible:outline-none',\n \"ds:after:content-[''] ds:after:absolute ds:after:inset-0 ds:after:rounded-[var(--radius-md)]\",\n 'ds:after:pointer-events-auto',\n 'ds:focus-visible:after:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:after:outline-solid',\n 'ds:focus-visible:after:outline-[color:var(--ring)]',\n 'ds:focus-visible:after:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:after:outline-[CanvasText]',\n].join(' ');\n\nconst TYPE_ICON: Record<AppointmentType, typeof MapPin> = {\n inPractice: MapPin,\n telehealth: Video,\n};\n\n/* -------------------------------------------------------------------- */\n/* Props */\n/* -------------------------------------------------------------------- */\n\nexport interface AppointmentCardProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'onClick' | 'role' | 'title'>,\n VariantProps<typeof appointmentCardVariants> {\n /** The appointment to render. */\n item: AppointmentItem;\n /** Visual density. */\n size?: 'sm' | 'md';\n /**\n * `'flat'` (default) — chrome-less row for use inside a bordered\n * `AppointmentTray`. `'elevated'` — each row carries its own card chrome\n * (border + shadow), for placing rows directly on a rail (AppointmentTimeline).\n */\n surface?: 'flat' | 'elevated';\n /** BCP-47 locale override for the timestamp + currency. */\n locale?: string;\n /** ISO-4217 currency code for the advance-deposit chip. Defaults to `EUR`. */\n currency?: string;\n /**\n * Show the patient identity (avatar + name as the row title). Default `true`.\n * Set `false` in single-patient surfaces (e.g. a patient's own\n * `AppointmentTimeline`) where repeating the name is redundant — the row then\n * leads with the operator as its title, falling back to a generic label.\n */\n showPatient?: boolean;\n /** Fires when the row is activated. */\n onActivate?: (item: AppointmentItem) => void;\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const AppointmentCard = forwardRef<HTMLDivElement, AppointmentCardProps>(\n (\n {\n item,\n size = 'sm',\n surface = 'flat',\n locale,\n currency = 'EUR',\n showPatient = true,\n onActivate,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const interactive = !!onActivate;\n const hasSafeUrl = !!item.url && isSafeEntityUrl(item.url);\n\n const patientName = item.patient?.name ?? t('appointmentCard.noPatient');\n const operatorName = item.operator?.name;\n const stateLabel = t(`appointmentCard.state.${item.state}`);\n\n const avatarSize = size === 'md' ? 'md' : 'sm';\n const TypeIcon = TYPE_ICON[item.type];\n\n // In single-patient context the patient name is redundant, so the row leads\n // with the operator (the \"who am I seeing\") and falls back to a generic\n // label when no operator is set.\n const title = showPatient\n ? patientName\n : (operatorName ?? t('appointmentCard.appointment'));\n\n const ariaLabel = showPatient\n ? t('appointmentCard.itemLabel', {\n patient: patientName,\n state: stateLabel,\n })\n : t('appointmentCard.itemLabelGeneric', { title, state: stateLabel });\n\n const titleNode = (\n <span className=\"ds:min-w-0 ds:truncate type-title-item ds:text-[color:var(--foreground)]\">\n {title}\n </span>\n );\n\n let activator: ReactNode;\n if (interactive && hasSafeUrl) {\n activator = (\n <a\n href={item.url}\n aria-label={ariaLabel}\n className={stretchedLinkClass + ' ds:contents'}\n onClick={(e) => {\n if (e.defaultPrevented || e.metaKey || e.ctrlKey || e.shiftKey)\n return;\n onActivate?.(item);\n }}\n >\n {titleNode}\n </a>\n );\n } else if (interactive) {\n activator = (\n <button\n type=\"button\"\n aria-label={ariaLabel}\n className={\n stretchedLinkClass +\n ' ds:contents ds:bg-transparent ds:border-0 ds:p-0 ds:text-start'\n }\n onClick={() => onActivate?.(item)}\n >\n {titleNode}\n </button>\n );\n } else {\n activator = titleNode;\n }\n\n // Treatment / tooth-element Tags. Each treatment becomes one Tag; the\n // tooth elements (when present) are appended to the visible label.\n const treatmentTags = (item.treatments ?? []).map((tx, index) => {\n const label =\n tx.elements && tx.elements.length > 0\n ? t('appointmentCard.treatmentWithElements', {\n care: tx.careName,\n elements: tx.elements.join(', '),\n })\n : tx.careName;\n return (\n <Tag\n key={`${tx.careName}-${index}`}\n label={label}\n variant=\"neutral\"\n fill=\"outline\"\n size=\"sm\"\n maxInlineSize=\"12rem\"\n />\n );\n });\n\n const advanceCents = item.bookingReason?.advanceAmountCents;\n const hasAdvance = typeof advanceCents === 'number' && advanceCents > 0;\n\n return (\n <div\n ref={ref}\n role=\"listitem\"\n data-component=\"appointment-card\"\n data-component-id={item.id}\n data-state={item.state}\n data-type={item.type}\n className={appointmentCardVariants({\n size,\n interactive,\n surface,\n className,\n })}\n {...rest}\n >\n {/* Leading rail: type glyph + start time + duration */}\n <span className=\"ds:flex ds:w-16 ds:shrink-0 ds:flex-col ds:items-start ds:gap-[var(--spacing-2xs)]\">\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ds:text-[color:var(--muted-foreground)]\">\n <TypeIcon aria-hidden=\"true\" className=\"ds:size-3.5 ds:shrink-0\" />\n <span className=\"ds:sr-only\">\n {t(`appointmentCard.type.${item.type}`)}\n </span>\n <Timestamp\n value={item.startIso}\n format=\"absolute\"\n shape=\"bare\"\n locale={locale}\n absoluteFormat={{ hour: 'numeric', minute: '2-digit' }}\n className=\"type-body-sm ds:font-medium ds:text-[color:var(--foreground)] ds:tabular-nums\"\n />\n </span>\n <span className=\"type-eyebrow ds:text-[color:var(--muted-foreground)]\">\n {t('appointmentCard.duration', { count: item.durationMin })}\n </span>\n </span>\n\n {/* Operator avatar with colour dot */}\n {operatorName ? (\n <span className=\"ds:relative ds:shrink-0\">\n <Avatar\n name={operatorName}\n color={colorIdToAvatarToken(item.operator?.colorId)}\n size={avatarSize}\n aria-hidden=\"true\"\n role=\"presentation\"\n aria-label={undefined}\n />\n <span\n aria-hidden=\"true\"\n className={\n 'ds:absolute ds:bottom-0 ds:end-0 ds:size-2.5 ds:rounded-[var(--radius-full)] ds:border ds:border-[color:var(--card)] ' +\n operatorDotClass(item.operator?.colorId)\n }\n />\n </span>\n ) : null}\n\n {/* Main content column */}\n <div className=\"ds:flex-1 ds:min-w-0 ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <div className=\"ds:flex ds:items-start ds:gap-[var(--spacing-sm)]\">\n <div className=\"ds:flex-1 ds:min-w-0 ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n {showPatient && item.patient?.avatarUrl ? (\n <Avatar\n name={patientName}\n src={item.patient.avatarUrl}\n size={avatarSize}\n className=\"ds:shrink-0\"\n aria-hidden=\"true\"\n role=\"presentation\"\n aria-label={undefined}\n />\n ) : null}\n {activator}\n </div>\n <Badge\n variant={appointmentStateBadge(item.state)}\n size=\"sm\"\n withDot\n className=\"ds:shrink-0\"\n >\n {stateLabel}\n </Badge>\n </div>\n\n {/* Meta line: operator name · specialty · first visit\n (chair moved to a chip below). When the patient is hidden the\n operator is promoted to the title, so it drops out of the meta. */}\n {(showPatient && operatorName) ||\n item.bookingReason?.specialty ||\n item.firstVisit === 'yes' ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-sm)] ds:gap-y-[var(--spacing-2xs)] type-eyebrow ds:text-[color:var(--muted-foreground)]\">\n {showPatient && operatorName ? <span>{operatorName}</span> : null}\n {item.bookingReason?.specialty ? (\n <span>{item.bookingReason.specialty}</span>\n ) : null}\n {item.firstVisit === 'yes' ? (\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]\">\n <Star aria-hidden=\"true\" className=\"ds:size-3 ds:shrink-0\" />\n {t('appointmentCard.firstVisit')}\n </span>\n ) : null}\n </div>\n ) : null}\n\n {/* Booking reason */}\n {item.bookingReason?.description ? (\n <span className=\"type-body-sm ds:text-[color:var(--foreground)] ds:truncate\">\n {item.bookingReason.description}\n </span>\n ) : null}\n\n {/* Treatment / tooth Tags */}\n {treatmentTags.length > 0 ? (\n <div className=\"ds:flex ds:flex-wrap ds:gap-[var(--spacing-2xs)]\">\n {treatmentTags}\n </div>\n ) : null}\n\n {/* Chips: care plan · chair · flags · advance-deposit */}\n {item.carePlan ||\n item.chair ||\n item.flags?.bookedOnline ||\n item.flags?.highlightedAnamnesis ||\n hasAdvance ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]\">\n {item.carePlan ? (\n <Badge\n variant=\"accentSoft\"\n size=\"sm\"\n leading={<ClipboardList />}\n >\n {t('appointmentCard.carePlan', {\n number: item.carePlan.number,\n })}\n </Badge>\n ) : null}\n {item.chair ? (\n <Badge variant=\"neutral\" size=\"sm\" leading={<Armchair />}>\n {t('appointmentCard.chair', { chair: item.chair })}\n </Badge>\n ) : null}\n {item.flags?.bookedOnline ? (\n <Badge variant=\"info\" size=\"sm\" leading={<Globe />}>\n {t('appointmentCard.flag.bookedOnline')}\n </Badge>\n ) : null}\n {item.flags?.highlightedAnamnesis ? (\n <Badge variant=\"warning\" size=\"sm\" withDot>\n {t('appointmentCard.flag.highlightedAnamnesis')}\n </Badge>\n ) : null}\n {hasAdvance ? (\n <TransactionChip\n state=\"to-invoice\"\n amount={(advanceCents as number) / 100}\n currency={currency}\n locale={locale}\n size=\"sm\"\n showLabel\n />\n ) : null}\n </div>\n ) : null}\n </div>\n\n {interactive ? (\n <ChevronRight\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:shrink-0 ds:self-center ds:text-[color:var(--muted-foreground)] ds:opacity-0 ds:transition-opacity ds:motion-reduce:transition-none ds:group-hover:opacity-100 ds:group-focus-within:opacity-100 ds:rtl:rotate-180\"\n />\n ) : null}\n </div>\n );\n },\n);\n\nAppointmentCard.displayName = 'AppointmentCard';\n"],"names":["__iconNode","Armchair","createLucideIcon","OPERATOR_DOT_CLASS","operatorDotClass","colorId","colorIdToToken","appointmentCardVariants","cva","stretchedLinkClass","TYPE_ICON","MapPin","Video","AppointmentCard","forwardRef","item","size","surface","locale","currency","showPatient","onActivate","className","rest","ref","t","useTranslation","interactive","hasSafeUrl","isSafeEntityUrl","patientName","_a","operatorName","_b","stateLabel","avatarSize","TypeIcon","title","ariaLabel","titleNode","jsx","activator","treatmentTags","tx","index","label","Tag","advanceCents","_c","hasAdvance","jsxs","Timestamp","Avatar","colorIdToAvatarToken","_d","_e","_f","Badge","appointmentStateBadge","_g","_h","Star","_i","_j","_k","ClipboardList","_l","Globe","_m","TransactionChip","ChevronRight"],"mappings":"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","x_google_ignoreList":[0]}