@alfadocs/ui-kit-debug 1.6.0 → 1.7.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 (400) hide show
  1. package/dist/_chunks/{actions-cell-renderer-BD-jruqA.js → actions-cell-renderer-ALEAGO3j.js} +6 -6
  2. package/dist/_chunks/{actions-cell-renderer-BD-jruqA.js.map → actions-cell-renderer-ALEAGO3j.js.map} +1 -1
  3. package/dist/_chunks/{agenda-tray-CYR-znfE.js → agenda-tray-BweO8pDo.js} +3 -3
  4. package/dist/_chunks/{agenda-tray-CYR-znfE.js.map → agenda-tray-BweO8pDo.js.map} +1 -1
  5. package/dist/_chunks/{ai-consent-banner-DLF6FNXv.js → ai-consent-banner-OggpS5hW.js} +2 -2
  6. package/dist/_chunks/{ai-consent-banner-DLF6FNXv.js.map → ai-consent-banner-OggpS5hW.js.map} +1 -1
  7. package/dist/_chunks/{ai-prompt-input-BgAubYKd.js → ai-prompt-input-DnbfEJnr.js} +2 -2
  8. package/dist/_chunks/{ai-prompt-input-BgAubYKd.js.map → ai-prompt-input-DnbfEJnr.js.map} +1 -1
  9. package/dist/_chunks/{alia-sidebar-Bg53-ZOT.js → alia-sidebar-BWcWZivN.js} +7 -7
  10. package/dist/_chunks/{alia-sidebar-Bg53-ZOT.js.map → alia-sidebar-BWcWZivN.js.map} +1 -1
  11. package/dist/_chunks/{anamnesis-card-BylMLHYj.js → anamnesis-card-NTi4LLzI.js} +2 -2
  12. package/dist/_chunks/{anamnesis-card-BylMLHYj.js.map → anamnesis-card-NTi4LLzI.js.map} +1 -1
  13. package/dist/_chunks/{anamnesis-summary-rows-BpYztFUv.js → anamnesis-summary-rows-F-cCmFAn.js} +7 -7
  14. package/dist/_chunks/{anamnesis-summary-rows-BpYztFUv.js.map → anamnesis-summary-rows-F-cCmFAn.js.map} +1 -1
  15. package/dist/_chunks/{appointment-timeline-DT1uFp8z.js → appointment-timeline-CMPvzlGZ.js} +4 -4
  16. package/dist/_chunks/{appointment-timeline-DT1uFp8z.js.map → appointment-timeline-CMPvzlGZ.js.map} +1 -1
  17. package/dist/_chunks/{appointment-tray-DvyVK7um.js → appointment-tray-3c_FLxXJ.js} +3 -3
  18. package/dist/_chunks/{appointment-tray-DvyVK7um.js.map → appointment-tray-3c_FLxXJ.js.map} +1 -1
  19. package/dist/_chunks/{audio-recorder-nVRN4PSK.js → audio-recorder-EWBCNIsd.js} +3 -3
  20. package/dist/_chunks/{audio-recorder-nVRN4PSK.js.map → audio-recorder-EWBCNIsd.js.map} +1 -1
  21. package/dist/_chunks/{bishop-score-BV1JAEMV.js → bishop-score-Cnu0xs-z.js} +2 -2
  22. package/dist/_chunks/{bishop-score-BV1JAEMV.js.map → bishop-score-Cnu0xs-z.js.map} +1 -1
  23. package/dist/_chunks/{bmi-calculator-CdR-RLFj.js → bmi-calculator-CcH6upht.js} +2 -2
  24. package/dist/_chunks/{bmi-calculator-CdR-RLFj.js.map → bmi-calculator-CcH6upht.js.map} +1 -1
  25. package/dist/_chunks/{booking-D84O6H2X.js → booking-CQMJUFG-.js} +5 -5
  26. package/dist/_chunks/{booking-D84O6H2X.js.map → booking-CQMJUFG-.js.map} +1 -1
  27. package/dist/_chunks/{button-group-Be_In68J.js → button-group-CaxRJsNG.js} +2 -2
  28. package/dist/_chunks/{button-group-Be_In68J.js.map → button-group-CaxRJsNG.js.map} +1 -1
  29. package/dist/_chunks/{button-BvNtqHAS.js → button-nJaPh_HC.js} +68 -38
  30. package/dist/_chunks/button-nJaPh_HC.js.map +1 -0
  31. package/dist/_chunks/{care-plan-card-CehAU7F_.js → care-plan-card-DQjVRDxO.js} +2 -2
  32. package/dist/_chunks/{care-plan-card-CehAU7F_.js.map → care-plan-card-DQjVRDxO.js.map} +1 -1
  33. package/dist/_chunks/{care-plan-entry-card-ChWRMfMw.js → care-plan-entry-card-CMpoeNkb.js} +2 -2
  34. package/dist/_chunks/{care-plan-entry-card-ChWRMfMw.js.map → care-plan-entry-card-CMpoeNkb.js.map} +1 -1
  35. package/dist/_chunks/{care-plan-header-_B0TTWT1.js → care-plan-header-CxYoq23f.js} +2 -2
  36. package/dist/_chunks/{care-plan-header-_B0TTWT1.js.map → care-plan-header-CxYoq23f.js.map} +1 -1
  37. package/dist/_chunks/{carousel.agent-pjORsMS8.js → carousel.agent-CLxdHEBP.js} +2 -2
  38. package/dist/_chunks/{carousel.agent-pjORsMS8.js.map → carousel.agent-CLxdHEBP.js.map} +1 -1
  39. package/dist/_chunks/{chart-Y-gso_Uz.js → chart-Bkr1Sh4o.js} +3 -3
  40. package/dist/_chunks/{chart-Y-gso_Uz.js.map → chart-Bkr1Sh4o.js.map} +1 -1
  41. package/dist/_chunks/{chat-input-BqI9GXQh.js → chat-input-BsB5Umpj.js} +2 -2
  42. package/dist/_chunks/{chat-input-BqI9GXQh.js.map → chat-input-BsB5Umpj.js.map} +1 -1
  43. package/dist/_chunks/{chat-message-DHNUbjXA.js → chat-message-DBQu10rs.js} +3 -3
  44. package/dist/_chunks/{chat-message-DHNUbjXA.js.map → chat-message-DBQu10rs.js.map} +1 -1
  45. package/dist/_chunks/{code-block-BONe9fJi.js → code-block-BIkpRLkl.js} +2 -2
  46. package/dist/_chunks/{code-block-BONe9fJi.js.map → code-block-BIkpRLkl.js.map} +1 -1
  47. package/dist/_chunks/{connection-status-NT8hUtYl.js → connection-status-DRZIcMqM.js} +3 -3
  48. package/dist/_chunks/{connection-status-NT8hUtYl.js.map → connection-status-DRZIcMqM.js.map} +1 -1
  49. package/dist/_chunks/{contact-profile-card-BxHiG8e6.js → contact-profile-card-CE9OJKcl.js} +2 -2
  50. package/dist/_chunks/{contact-profile-card-BxHiG8e6.js.map → contact-profile-card-CE9OJKcl.js.map} +1 -1
  51. package/dist/_chunks/{control-room-rail-DDyPDBji.js → control-room-rail-IH1eBjrK.js} +3 -3
  52. package/dist/_chunks/{control-room-rail-DDyPDBji.js.map → control-room-rail-IH1eBjrK.js.map} +1 -1
  53. package/dist/_chunks/{copy-field-B-DoMBH_.js → copy-field-fYKpl6aN.js} +2 -2
  54. package/dist/_chunks/{copy-field-B-DoMBH_.js.map → copy-field-fYKpl6aN.js.map} +1 -1
  55. package/dist/_chunks/{cycle-calculator-DJZYvNhw.js → cycle-calculator-DzgO1vzP.js} +2 -2
  56. package/dist/_chunks/{cycle-calculator-DJZYvNhw.js.map → cycle-calculator-DzgO1vzP.js.map} +1 -1
  57. package/dist/_chunks/{dashboard-grid-bd0QW2a8.js → dashboard-grid-BFtdHqfn.js} +2 -2
  58. package/dist/_chunks/{dashboard-grid-bd0QW2a8.js.map → dashboard-grid-BFtdHqfn.js.map} +1 -1
  59. package/dist/_chunks/{data-table-tabs-C8uDThT3.js → data-table-tabs-C1kRUzat.js} +3 -3
  60. package/dist/_chunks/{data-table-tabs-C8uDThT3.js.map → data-table-tabs-C1kRUzat.js.map} +1 -1
  61. package/dist/_chunks/{description-list-Ck7fKdt5.js → description-list-CjJqR8WK.js} +2 -2
  62. package/dist/_chunks/{description-list-Ck7fKdt5.js.map → description-list-CjJqR8WK.js.map} +1 -1
  63. package/dist/_chunks/{document-preview-Aae2yKvY.js → document-preview-oyx9RhCo.js} +2 -2
  64. package/dist/_chunks/{document-preview-Aae2yKvY.js.map → document-preview-oyx9RhCo.js.map} +1 -1
  65. package/dist/_chunks/{document-scanner-qNZLhH_r.js → document-scanner-C5Vrbu21.js} +2 -2
  66. package/dist/_chunks/{document-scanner-qNZLhH_r.js.map → document-scanner-C5Vrbu21.js.map} +1 -1
  67. package/dist/_chunks/{due-date-calculator-ajaQ4ya5.js → due-date-calculator-wK8Tajzz.js} +2 -2
  68. package/dist/_chunks/{due-date-calculator-ajaQ4ya5.js.map → due-date-calculator-wK8Tajzz.js.map} +1 -1
  69. package/dist/_chunks/{editable-currency-cell-renderer-DyMbSyDK.js → editable-currency-cell-renderer-DYdzKpjL.js} +3 -3
  70. package/dist/_chunks/{editable-currency-cell-renderer-DyMbSyDK.js.map → editable-currency-cell-renderer-DYdzKpjL.js.map} +1 -1
  71. package/dist/_chunks/{editor-overlay-DE-gxj9L.js → editor-overlay-DEc5yYwo.js} +2 -2
  72. package/dist/_chunks/{editor-overlay-DE-gxj9L.js.map → editor-overlay-DEc5yYwo.js.map} +1 -1
  73. package/dist/_chunks/{empty-state-Df0tM6Kn.js → empty-state-X0sVPfVo.js} +2 -2
  74. package/dist/_chunks/{empty-state-Df0tM6Kn.js.map → empty-state-X0sVPfVo.js.map} +1 -1
  75. package/dist/_chunks/{entity-summary-DBOI5di6.js → entity-summary-B_vO5Ur4.js} +3 -3
  76. package/dist/_chunks/{entity-summary-DBOI5di6.js.map → entity-summary-B_vO5Ur4.js.map} +1 -1
  77. package/dist/_chunks/{face-scheme-D7Pub04e.js → face-scheme-BfDi4YkW.js} +5 -5
  78. package/dist/_chunks/{face-scheme-D7Pub04e.js.map → face-scheme-BfDi4YkW.js.map} +1 -1
  79. package/dist/_chunks/{fetal-weight-jon6GIfQ.js → fetal-weight-Dqy0T1fP.js} +2 -2
  80. package/dist/_chunks/{fetal-weight-jon6GIfQ.js.map → fetal-weight-Dqy0T1fP.js.map} +1 -1
  81. package/dist/_chunks/{field-array-BQFX5OYi.js → field-array-BjkXZzSr.js} +3 -3
  82. package/dist/_chunks/{field-array-BQFX5OYi.js.map → field-array-BjkXZzSr.js.map} +1 -1
  83. package/dist/_chunks/{field-value-BbiDRyNh.js → field-value-DG8zaZvo.js} +4 -4
  84. package/dist/_chunks/{field-value-BbiDRyNh.js.map → field-value-DG8zaZvo.js.map} +1 -1
  85. package/dist/_chunks/{file-manager-CML_C6_h.js → file-manager-Cc_upjZX.js} +6 -6
  86. package/dist/_chunks/{file-manager-CML_C6_h.js.map → file-manager-Cc_upjZX.js.map} +1 -1
  87. package/dist/_chunks/{finished-terminal-BWNVh7Y8.js → finished-terminal-Br61Ip4e.js} +2 -2
  88. package/dist/_chunks/{finished-terminal-BWNVh7Y8.js.map → finished-terminal-Br61Ip4e.js.map} +1 -1
  89. package/dist/_chunks/{fiscal-code-input-Nx1N9r72.js → fiscal-code-input-B_nYMSEM.js} +2 -2
  90. package/dist/_chunks/{fiscal-code-input-Nx1N9r72.js.map → fiscal-code-input-B_nYMSEM.js.map} +1 -1
  91. package/dist/_chunks/{freemium-paywall-HG3pFvMp.js → freemium-paywall-DrXzYfv-.js} +2 -2
  92. package/dist/_chunks/{freemium-paywall-HG3pFvMp.js.map → freemium-paywall-DrXzYfv-.js.map} +1 -1
  93. package/dist/_chunks/{gestational-age-calculator-dEpQDWcb.js → gestational-age-calculator-C_uDAeP_.js} +2 -2
  94. package/dist/_chunks/{gestational-age-calculator-dEpQDWcb.js.map → gestational-age-calculator-C_uDAeP_.js.map} +1 -1
  95. package/dist/_chunks/{hcg-doubling-CC6TLtHd.js → hcg-doubling-BaXkJhT-.js} +2 -2
  96. package/dist/_chunks/{hcg-doubling-CC6TLtHd.js.map → hcg-doubling-BaXkJhT-.js.map} +1 -1
  97. package/dist/_chunks/{header-CimZS-J9.js → header-DUXRIPyM.js} +2 -2
  98. package/dist/_chunks/{header-CimZS-J9.js.map → header-DUXRIPyM.js.map} +1 -1
  99. package/dist/_chunks/{header-settings-C0zHLXJE.js → header-settings-CVC_davE.js} +4 -4
  100. package/dist/_chunks/{header-settings-C0zHLXJE.js.map → header-settings-CVC_davE.js.map} +1 -1
  101. package/dist/_chunks/{icon-button-9c9Gp41m.js → icon-button-DA2CAGHZ.js} +2 -2
  102. package/dist/_chunks/{icon-button-9c9Gp41m.js.map → icon-button-DA2CAGHZ.js.map} +1 -1
  103. package/dist/_chunks/{icon-button-group-DrvuWPGJ.js → icon-button-group-D6SVMteH.js} +2 -2
  104. package/dist/_chunks/{icon-button-group-DrvuWPGJ.js.map → icon-button-group-D6SVMteH.js.map} +1 -1
  105. package/dist/_chunks/{icon-picker-DXV3sDp1.js → icon-picker-ChzpCnZ-.js} +3 -3
  106. package/dist/_chunks/{icon-picker-DXV3sDp1.js.map → icon-picker-ChzpCnZ-.js.map} +1 -1
  107. package/dist/_chunks/{image-cropper-DWSnyLwW.js → image-cropper-C84NDTB7.js} +2 -2
  108. package/dist/_chunks/{image-cropper-DWSnyLwW.js.map → image-cropper-C84NDTB7.js.map} +1 -1
  109. package/dist/_chunks/{info-tip-C4mPSJbS.js → info-tip-C119cwQl.js} +2 -2
  110. package/dist/_chunks/{info-tip-C4mPSJbS.js.map → info-tip-C119cwQl.js.map} +1 -1
  111. package/dist/_chunks/{insert-result-98J1QEp7.js → insert-result-LCNTskNJ.js} +2 -2
  112. package/dist/_chunks/{insert-result-98J1QEp7.js.map → insert-result-LCNTskNJ.js.map} +1 -1
  113. package/dist/_chunks/{key-value-pair-DGkGlgCF.js → key-value-pair-BubG4fUa.js} +2 -2
  114. package/dist/_chunks/{key-value-pair-DGkGlgCF.js.map → key-value-pair-BubG4fUa.js.map} +1 -1
  115. package/dist/_chunks/{link-cell-renderer-D3IsW_2R.js → link-cell-renderer-DH4JYpKU.js} +2 -2
  116. package/dist/_chunks/{link-cell-renderer-D3IsW_2R.js.map → link-cell-renderer-DH4JYpKU.js.map} +1 -1
  117. package/dist/_chunks/{locale-picker-sI0HWgZy.js → locale-picker-BvbVjDQ-.js} +3 -3
  118. package/dist/_chunks/{locale-picker-sI0HWgZy.js.map → locale-picker-BvbVjDQ-.js.map} +1 -1
  119. package/dist/_chunks/{map-view-iwSDRW3t.js → map-view-CCAlC9IL.js} +2 -2
  120. package/dist/_chunks/{map-view-iwSDRW3t.js.map → map-view-CCAlC9IL.js.map} +1 -1
  121. package/dist/_chunks/{marketplace-app-shell-b5hN-Q0m.js → marketplace-app-shell-Chfdia7m.js} +4 -4
  122. package/dist/_chunks/{marketplace-app-shell-b5hN-Q0m.js.map → marketplace-app-shell-Chfdia7m.js.map} +1 -1
  123. package/dist/_chunks/{message-card-BCJ-Jgs6.js → message-card-D8GB4FdF.js} +3 -3
  124. package/dist/_chunks/{message-card-BCJ-Jgs6.js.map → message-card-D8GB4FdF.js.map} +1 -1
  125. package/dist/_chunks/{message-tray-DHtm_WaF.js → message-tray-CGIRQjx5.js} +4 -4
  126. package/dist/_chunks/{message-tray-DHtm_WaF.js.map → message-tray-CGIRQjx5.js.map} +1 -1
  127. package/dist/_chunks/{notes-panel-D6HKLLS-.js → notes-panel-DlnENphf.js} +3 -3
  128. package/dist/_chunks/{notes-panel-D6HKLLS-.js.map → notes-panel-DlnENphf.js.map} +1 -1
  129. package/dist/_chunks/{notification-card-CcMQn2RX.js → notification-card-CtrzoTUO.js} +3 -3
  130. package/dist/_chunks/{notification-card-CcMQn2RX.js.map → notification-card-CtrzoTUO.js.map} +1 -1
  131. package/dist/_chunks/{notification-tray-nr7dv-Q8.js → notification-tray-BiRzXHDf.js} +4 -4
  132. package/dist/_chunks/{notification-tray-nr7dv-Q8.js.map → notification-tray-BiRzXHDf.js.map} +1 -1
  133. package/dist/_chunks/{optical-prescription-DtzEqFQm.js → optical-prescription-Dj3Eh5Ok.js} +2 -2
  134. package/dist/_chunks/{optical-prescription-DtzEqFQm.js.map → optical-prescription-Dj3Eh5Ok.js.map} +1 -1
  135. package/dist/_chunks/{patient-details-rENrE_qY.js → patient-details-qnsqYBGQ.js} +5 -5
  136. package/dist/_chunks/{patient-details-rENrE_qY.js.map → patient-details-qnsqYBGQ.js.map} +1 -1
  137. package/dist/_chunks/{patient-search-NQemeJlL.js → patient-search-D5ufYoRc.js} +2 -2
  138. package/dist/_chunks/{patient-search-NQemeJlL.js.map → patient-search-D5ufYoRc.js.map} +1 -1
  139. package/dist/_chunks/{patient-summary-card-DQJgOOrA.js → patient-summary-card-CBfuDvJ5.js} +3 -3
  140. package/dist/_chunks/{patient-summary-card-DQJgOOrA.js.map → patient-summary-card-CBfuDvJ5.js.map} +1 -1
  141. package/dist/_chunks/{patient-table-BubxfOWL.js → patient-table-DwshfVsQ.js} +3 -3
  142. package/dist/_chunks/{patient-table-BubxfOWL.js.map → patient-table-DwshfVsQ.js.map} +1 -1
  143. package/dist/_chunks/{payment-automation-upsell-CnaBPt5e.js → payment-automation-upsell-BBIG7NFL.js} +2 -2
  144. package/dist/_chunks/{payment-automation-upsell-CnaBPt5e.js.map → payment-automation-upsell-BBIG7NFL.js.map} +1 -1
  145. package/dist/_chunks/{payment-request-card-CvhDzDNk.js → payment-request-card-BjjBMdsp.js} +3 -3
  146. package/dist/_chunks/{payment-request-card-CvhDzDNk.js.map → payment-request-card-BjjBMdsp.js.map} +1 -1
  147. package/dist/_chunks/{periodontal-chart-C0nNQKKK.js → periodontal-chart-BatZEFar.js} +2 -2
  148. package/dist/_chunks/{periodontal-chart-C0nNQKKK.js.map → periodontal-chart-BatZEFar.js.map} +1 -1
  149. package/dist/_chunks/{periodontal-chart-card-Bz-ebteE.js → periodontal-chart-card-BBpY_rBc.js} +2 -2
  150. package/dist/_chunks/{periodontal-chart-card-Bz-ebteE.js.map → periodontal-chart-card-BBpY_rBc.js.map} +1 -1
  151. package/dist/_chunks/{popover-Btj6N25H.js → popover-Cqcjx-Ny.js} +2 -2
  152. package/dist/_chunks/{popover-Btj6N25H.js.map → popover-Cqcjx-Ny.js.map} +1 -1
  153. package/dist/_chunks/{practice-results-CKoLD_x5.js → practice-results-BEsAdW-B.js} +719 -633
  154. package/dist/_chunks/practice-results-BEsAdW-B.js.map +1 -0
  155. package/dist/_chunks/{pregnancy-dating-DQVpFs_f.js → pregnancy-dating-BVS_9YU2.js} +2 -2
  156. package/dist/_chunks/{pregnancy-dating-DQVpFs_f.js.map → pregnancy-dating-BVS_9YU2.js.map} +1 -1
  157. package/dist/_chunks/{pregnancy-weight-gain-hm3QJALe.js → pregnancy-weight-gain-CJwbs9W-.js} +2 -2
  158. package/dist/_chunks/{pregnancy-weight-gain-hm3QJALe.js.map → pregnancy-weight-gain-CJwbs9W-.js.map} +1 -1
  159. package/dist/_chunks/{privacy-lock-SQYFRSuH.js → privacy-lock-CkAUo6Dz.js} +3 -3
  160. package/dist/_chunks/{privacy-lock-SQYFRSuH.js.map → privacy-lock-CkAUo6Dz.js.map} +1 -1
  161. package/dist/_chunks/{product-hub-panel-BjnD9pdl.js → product-hub-panel-BScCotGD.js} +3 -3
  162. package/dist/_chunks/{product-hub-panel-BjnD9pdl.js.map → product-hub-panel-BScCotGD.js.map} +1 -1
  163. package/dist/_chunks/{public-header.agent-DseNK2NQ.js → public-header.agent-kth2SdXn.js} +3 -3
  164. package/dist/_chunks/{public-header.agent-DseNK2NQ.js.map → public-header.agent-kth2SdXn.js.map} +1 -1
  165. package/dist/_chunks/{radiograph-panel.agent-CAXFgCyn.js → radiograph-panel.agent-CiHwgISa.js} +4 -4
  166. package/dist/_chunks/{radiograph-panel.agent-CAXFgCyn.js.map → radiograph-panel.agent-CiHwgISa.js.map} +1 -1
  167. package/dist/_chunks/{reviews-panel-Cd3SxJdW.js → reviews-panel-BKHEfqVQ.js} +4 -4
  168. package/dist/_chunks/{reviews-panel-Cd3SxJdW.js.map → reviews-panel-BKHEfqVQ.js.map} +1 -1
  169. package/dist/_chunks/{rich-text-editor-DGtn_4sb.js → rich-text-editor-DARnq_6N.js} +5 -5
  170. package/dist/_chunks/{rich-text-editor-DGtn_4sb.js.map → rich-text-editor-DARnq_6N.js.map} +1 -1
  171. package/dist/_chunks/{session-countdown-q4r5TlCo.js → session-countdown-QMsnRa1x.js} +2 -2
  172. package/dist/_chunks/{session-countdown-q4r5TlCo.js.map → session-countdown-QMsnRa1x.js.map} +1 -1
  173. package/dist/_chunks/{sheet-CD99CdXr.js → sheet-BSznOyJs.js} +2 -2
  174. package/dist/_chunks/{sheet-CD99CdXr.js.map → sheet-BSznOyJs.js.map} +1 -1
  175. package/dist/_chunks/{sign-in-with-alfadocs-button-_JxVRO5d.js → sign-in-with-alfadocs-button-BLe_quy5.js} +2 -2
  176. package/dist/_chunks/{sign-in-with-alfadocs-button-_JxVRO5d.js.map → sign-in-with-alfadocs-button-BLe_quy5.js.map} +1 -1
  177. package/dist/_chunks/{signature-request-C4UBfVRZ.js → signature-request-DXhpphlp.js} +4 -4
  178. package/dist/_chunks/{signature-request-C4UBfVRZ.js.map → signature-request-DXhpphlp.js.map} +1 -1
  179. package/dist/_chunks/{slot-grid-P_e9p5t5.js → slot-grid-BuZOKfcd.js} +4 -4
  180. package/dist/_chunks/{slot-grid-P_e9p5t5.js.map → slot-grid-BuZOKfcd.js.map} +1 -1
  181. package/dist/_chunks/{streaming-text-BuW7I0Zu.js → streaming-text-CvsjIQ7S.js} +2 -2
  182. package/dist/_chunks/{streaming-text-BuW7I0Zu.js.map → streaming-text-CvsjIQ7S.js.map} +1 -1
  183. package/dist/_chunks/{task-tray-BT288xoM.js → task-tray-CYG6rj2s.js} +3 -3
  184. package/dist/_chunks/{task-tray-BT288xoM.js.map → task-tray-CYG6rj2s.js.map} +1 -1
  185. package/dist/_chunks/{tasks-panel-BBkZuejF.js → tasks-panel-Do5SFp-j.js} +5 -5
  186. package/dist/_chunks/{tasks-panel-BBkZuejF.js.map → tasks-panel-Do5SFp-j.js.map} +1 -1
  187. package/dist/_chunks/{theme-toggle-Bi-CmV6M.js → theme-toggle-DuMhQNFS.js} +3 -3
  188. package/dist/_chunks/{theme-toggle-Bi-CmV6M.js.map → theme-toggle-DuMhQNFS.js.map} +1 -1
  189. package/dist/_chunks/{toast.agent-C44mtGrW.js → toast.agent-D1tdg6DS.js} +2 -2
  190. package/dist/_chunks/{toast.agent-C44mtGrW.js.map → toast.agent-D1tdg6DS.js.map} +1 -1
  191. package/dist/_chunks/{token-insert-menu-D8FgXl33.js → token-insert-menu-9Um0JinI.js} +2 -2
  192. package/dist/_chunks/{token-insert-menu-D8FgXl33.js.map → token-insert-menu-9Um0JinI.js.map} +1 -1
  193. package/dist/_chunks/{tool-rail-BF3F2Ihq.js → tool-rail-CHyUmulN.js} +2 -2
  194. package/dist/_chunks/{tool-rail-BF3F2Ihq.js.map → tool-rail-CHyUmulN.js.map} +1 -1
  195. package/dist/_chunks/{tooth-scheme-BPXE1_3N.js → tooth-scheme-WdyVymQ1.js} +3 -3
  196. package/dist/_chunks/{tooth-scheme-BPXE1_3N.js.map → tooth-scheme-WdyVymQ1.js.map} +1 -1
  197. package/dist/_chunks/{unit-converter-iDxlxKmm.js → unit-converter-BPumXMA6.js} +2 -2
  198. package/dist/_chunks/{unit-converter-iDxlxKmm.js.map → unit-converter-BPumXMA6.js.map} +1 -1
  199. package/dist/_chunks/{warning-stack-nczJf52p.js → warning-stack-DQz0Jyir.js} +3 -3
  200. package/dist/_chunks/{warning-stack-nczJf52p.js.map → warning-stack-DQz0Jyir.js.map} +1 -1
  201. package/dist/_chunks/{workflow-map-BVofnDYh.js → workflow-map-DE_ribRM.js} +5 -5
  202. package/dist/_chunks/{workflow-map-BVofnDYh.js.map → workflow-map-DE_ribRM.js.map} +1 -1
  203. package/dist/agent-catalog.json +2 -2
  204. package/dist/components/agenda-tray/index.js +1 -1
  205. package/dist/components/ai-consent-banner/index.js +1 -1
  206. package/dist/components/ai-prompt-input/index.js +1 -1
  207. package/dist/components/anamnesis-card/index.js +1 -1
  208. package/dist/components/appointment-card/index.js +1 -1
  209. package/dist/components/appointment-timeline/index.js +1 -1
  210. package/dist/components/audio-recorder/index.js +1 -1
  211. package/dist/components/bishop-score/index.js +1 -1
  212. package/dist/components/bmi-calculator/index.js +1 -1
  213. package/dist/components/booking/index.js +1 -1
  214. package/dist/components/button/button.d.ts +10 -0
  215. package/dist/components/button/button.d.ts.map +1 -1
  216. package/dist/components/button/index.js +2 -2
  217. package/dist/components/button-group/index.js +1 -1
  218. package/dist/components/care-plan-card/index.js +1 -1
  219. package/dist/components/care-plan-entry-card/index.js +1 -1
  220. package/dist/components/care-plan-header/index.js +1 -1
  221. package/dist/components/carousel/index.js +1 -1
  222. package/dist/components/chart/index.js +1 -1
  223. package/dist/components/chat-input/index.js +1 -1
  224. package/dist/components/chat-message/index.js +1 -1
  225. package/dist/components/connection-status/index.js +1 -1
  226. package/dist/components/contact-profile-card/index.js +1 -1
  227. package/dist/components/control-room-rail/index.js +1 -1
  228. package/dist/components/copy-field/index.js +1 -1
  229. package/dist/components/cycle-calculator/index.js +1 -1
  230. package/dist/components/dashboard-grid/index.js +1 -1
  231. package/dist/components/data-table/index.js +3 -3
  232. package/dist/components/data-table-tabs/index.js +1 -1
  233. package/dist/components/description-list/index.js +1 -1
  234. package/dist/components/document-preview/index.js +1 -1
  235. package/dist/components/document-scanner/index.js +1 -1
  236. package/dist/components/due-date-calculator/index.js +1 -1
  237. package/dist/components/editor-overlay/index.js +1 -1
  238. package/dist/components/empty-state/index.js +1 -1
  239. package/dist/components/entity-summary/index.js +1 -1
  240. package/dist/components/face-scheme/index.js +1 -1
  241. package/dist/components/fetal-weight/index.js +1 -1
  242. package/dist/components/field-array/index.js +1 -1
  243. package/dist/components/file-manager/index.js +1 -1
  244. package/dist/components/finished-terminal/index.js +1 -1
  245. package/dist/components/fiscal-code-input/index.js +1 -1
  246. package/dist/components/freemium-paywall/index.js +1 -1
  247. package/dist/components/gestational-age-calculator/index.js +1 -1
  248. package/dist/components/hcg-doubling/index.js +1 -1
  249. package/dist/components/header/index.js +1 -1
  250. package/dist/components/header-settings/index.js +1 -1
  251. package/dist/components/icon-button/index.js +1 -1
  252. package/dist/components/icon-button-group/index.js +1 -1
  253. package/dist/components/icon-picker/index.js +1 -1
  254. package/dist/components/image-cropper/index.js +1 -1
  255. package/dist/components/info-tip/index.js +1 -1
  256. package/dist/components/key-value-pair/index.js +1 -1
  257. package/dist/components/locale-picker/index.js +1 -1
  258. package/dist/components/map-view/index.js +1 -1
  259. package/dist/components/matrix-rain/matrix-rain.d.ts +1 -1
  260. package/dist/components/message-card/index.js +1 -1
  261. package/dist/components/message-tray/index.js +1 -1
  262. package/dist/components/notes-panel/index.js +1 -1
  263. package/dist/components/notification-card/index.js +1 -1
  264. package/dist/components/notification-tray/index.js +1 -1
  265. package/dist/components/optical-prescription/index.js +1 -1
  266. package/dist/components/patient-details/index.js +1 -1
  267. package/dist/components/patient-search/index.js +1 -1
  268. package/dist/components/patient-summary-card/index.js +1 -1
  269. package/dist/components/patient-table/index.js +1 -1
  270. package/dist/components/payment-card/index.js +1 -1
  271. package/dist/components/periodontal-chart/index.js +1 -1
  272. package/dist/components/periodontal-chart-card/index.js +1 -1
  273. package/dist/components/popover/index.js +1 -1
  274. package/dist/components/practice-results/index.js +1 -1
  275. package/dist/components/practice-results/practice-results.d.ts +47 -7
  276. package/dist/components/practice-results/practice-results.d.ts.map +1 -1
  277. package/dist/components/pregnancy-dating/index.js +1 -1
  278. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  279. package/dist/components/privacy-lock/index.js +1 -1
  280. package/dist/components/product-hub-tray/index.js +1 -1
  281. package/dist/components/public-header/index.js +1 -1
  282. package/dist/components/public-header/public-header.d.ts +1 -1
  283. package/dist/components/radiograph-panel/index.js +1 -1
  284. package/dist/components/reviews-panel/index.js +1 -1
  285. package/dist/components/rich-text-editor/index.js +1 -1
  286. package/dist/components/session-countdown/index.js +1 -1
  287. package/dist/components/sheet/index.js +1 -1
  288. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  289. package/dist/components/slot-grid/index.js +1 -1
  290. package/dist/components/streaming-text/index.js +1 -1
  291. package/dist/components/task-tray/index.js +1 -1
  292. package/dist/components/tasks-panel/index.js +1 -1
  293. package/dist/components/theme-toggle/index.js +1 -1
  294. package/dist/components/toast/index.js +1 -1
  295. package/dist/components/token-insert-menu/index.js +1 -1
  296. package/dist/components/tool-rail/index.js +1 -1
  297. package/dist/components/tooth-scheme/index.js +1 -1
  298. package/dist/components/unit-converter/index.js +1 -1
  299. package/dist/components/warning-stack/index.js +1 -1
  300. package/dist/components/workflow/index.js +1 -1
  301. package/dist/i18n/locales/ar.d.ts +1 -0
  302. package/dist/i18n/locales/ar.d.ts.map +1 -1
  303. package/dist/i18n/locales/ar.js +2 -1
  304. package/dist/i18n/locales/ar.js.map +1 -1
  305. package/dist/i18n/locales/de.d.ts +1 -0
  306. package/dist/i18n/locales/de.d.ts.map +1 -1
  307. package/dist/i18n/locales/de.js +2 -1
  308. package/dist/i18n/locales/de.js.map +1 -1
  309. package/dist/i18n/locales/el.d.ts +1 -0
  310. package/dist/i18n/locales/el.d.ts.map +1 -1
  311. package/dist/i18n/locales/el.js +2 -1
  312. package/dist/i18n/locales/el.js.map +1 -1
  313. package/dist/i18n/locales/en.d.ts +1 -0
  314. package/dist/i18n/locales/en.d.ts.map +1 -1
  315. package/dist/i18n/locales/en.js +2 -1
  316. package/dist/i18n/locales/en.js.map +1 -1
  317. package/dist/i18n/locales/es.d.ts +1 -0
  318. package/dist/i18n/locales/es.d.ts.map +1 -1
  319. package/dist/i18n/locales/es.js +2 -1
  320. package/dist/i18n/locales/es.js.map +1 -1
  321. package/dist/i18n/locales/fr.d.ts +1 -0
  322. package/dist/i18n/locales/fr.d.ts.map +1 -1
  323. package/dist/i18n/locales/fr.js +2 -1
  324. package/dist/i18n/locales/fr.js.map +1 -1
  325. package/dist/i18n/locales/hi.d.ts +1 -0
  326. package/dist/i18n/locales/hi.d.ts.map +1 -1
  327. package/dist/i18n/locales/hi.js +2 -1
  328. package/dist/i18n/locales/hi.js.map +1 -1
  329. package/dist/i18n/locales/it.d.ts +1 -0
  330. package/dist/i18n/locales/it.d.ts.map +1 -1
  331. package/dist/i18n/locales/it.js +2 -1
  332. package/dist/i18n/locales/it.js.map +1 -1
  333. package/dist/i18n/locales/ja.d.ts +1 -0
  334. package/dist/i18n/locales/ja.d.ts.map +1 -1
  335. package/dist/i18n/locales/ja.js +2 -1
  336. package/dist/i18n/locales/ja.js.map +1 -1
  337. package/dist/i18n/locales/nl.d.ts +1 -0
  338. package/dist/i18n/locales/nl.d.ts.map +1 -1
  339. package/dist/i18n/locales/nl.js +2 -1
  340. package/dist/i18n/locales/nl.js.map +1 -1
  341. package/dist/i18n/locales/pl.d.ts +1 -0
  342. package/dist/i18n/locales/pl.d.ts.map +1 -1
  343. package/dist/i18n/locales/pl.js +2 -1
  344. package/dist/i18n/locales/pl.js.map +1 -1
  345. package/dist/i18n/locales/pt.d.ts +1 -0
  346. package/dist/i18n/locales/pt.d.ts.map +1 -1
  347. package/dist/i18n/locales/pt.js +2 -1
  348. package/dist/i18n/locales/pt.js.map +1 -1
  349. package/dist/i18n/locales/ro.d.ts +1 -0
  350. package/dist/i18n/locales/ro.d.ts.map +1 -1
  351. package/dist/i18n/locales/ro.js +2 -1
  352. package/dist/i18n/locales/ro.js.map +1 -1
  353. package/dist/i18n/locales/ru.d.ts +1 -0
  354. package/dist/i18n/locales/ru.d.ts.map +1 -1
  355. package/dist/i18n/locales/ru.js +2 -1
  356. package/dist/i18n/locales/ru.js.map +1 -1
  357. package/dist/i18n/locales/sq.d.ts +1 -0
  358. package/dist/i18n/locales/sq.d.ts.map +1 -1
  359. package/dist/i18n/locales/sq.js +2 -1
  360. package/dist/i18n/locales/sq.js.map +1 -1
  361. package/dist/i18n/locales/sv.d.ts +1 -0
  362. package/dist/i18n/locales/sv.d.ts.map +1 -1
  363. package/dist/i18n/locales/sv.js +2 -1
  364. package/dist/i18n/locales/sv.js.map +1 -1
  365. package/dist/i18n/locales/tr.d.ts +1 -0
  366. package/dist/i18n/locales/tr.d.ts.map +1 -1
  367. package/dist/i18n/locales/tr.js +2 -1
  368. package/dist/i18n/locales/tr.js.map +1 -1
  369. package/dist/i18n/locales/zh.d.ts +1 -0
  370. package/dist/i18n/locales/zh.d.ts.map +1 -1
  371. package/dist/i18n/locales/zh.js +2 -1
  372. package/dist/i18n/locales/zh.js.map +1 -1
  373. package/dist/index.js +96 -96
  374. package/dist/locales/ar.json +2 -1
  375. package/dist/locales/de.json +2 -1
  376. package/dist/locales/el.json +2 -1
  377. package/dist/locales/en.json +2 -1
  378. package/dist/locales/es.json +2 -1
  379. package/dist/locales/fr.json +2 -1
  380. package/dist/locales/hi.json +2 -1
  381. package/dist/locales/it.json +2 -1
  382. package/dist/locales/ja.json +2 -1
  383. package/dist/locales/nl.json +2 -1
  384. package/dist/locales/pl.json +2 -1
  385. package/dist/locales/pt.json +2 -1
  386. package/dist/locales/ro.json +2 -1
  387. package/dist/locales/ru.json +2 -1
  388. package/dist/locales/sq.json +2 -1
  389. package/dist/locales/sv.json +2 -1
  390. package/dist/locales/tr.json +2 -1
  391. package/dist/locales/zh.json +2 -1
  392. package/dist/patterns/alia-assistant/index.js +1 -1
  393. package/dist/patterns/anamnesis/index.js +1 -1
  394. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  395. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  396. package/dist/patterns/signature-request/index.js +1 -1
  397. package/dist/tokens.css +1 -1
  398. package/package.json +1 -1
  399. package/dist/_chunks/button-BvNtqHAS.js.map +0 -1
  400. package/dist/_chunks/practice-results-CKoLD_x5.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"care-plan-entry-card-ChWRMfMw.js","sources":["../../src/components/care-plan-entry-card/care-plan-entry-card.agent.ts","../../src/components/care-plan-entry-card/care-plan-entry-card.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — CarePlanEntryCard. */\n/* */\n/* Read-only surface: expose the execution flag and phase-progress */\n/* counts so an agent can introspect a treatment line's status. Counts + */\n/* booleans only — never the treatment name, operator, or any patient */\n/* identity. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { CarePlanEntryCardHandle } from './care-plan-entry-card';\n\nexport const carePlanEntryCardAgent: AgentAdapter<CarePlanEntryCardHandle> = {\n id: 'care-plan-entry-card',\n // `expand` is host-delegated: the per-phase breakdown is an in-component\n // Collapsible the user (or a host) drives directly — there is no handle\n // method for it, so no backing action is registered. `view_change` was\n // dropped: the card has no view modes to switch between.\n capabilities: ['expand'],\n state: {\n done: {\n type: 'boolean',\n descriptionKey: 'ui.agent.carePlanEntryCard.state.done',\n description: 'Whether the treatment line is marked executed.',\n read: (handle) => handle.isDone(),\n },\n phaseProgress: {\n type: '{ executed: number; total: number }',\n descriptionKey: 'ui.agent.carePlanEntryCard.state.phaseProgress',\n description:\n 'Phase progress as executed / total counts. Counts only — never phase labels or operator identity.',\n read: (handle) => handle.getPhaseProgress(),\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'care-plan-entry-card',\n description: 'Marks the CarePlanEntryCard root region.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop. Addresses a specific line.',\n },\n },\n};\n","import { forwardRef, useId, type HTMLAttributes, type ReactNode } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ChevronDown } from 'lucide-react';\nimport { Badge } from '../badge/badge';\nimport { Progress } from '../progress/progress';\nimport { Tag } from '../tag/tag';\nimport { Timestamp } from '../timestamp/timestamp';\nimport { TransactionChip } from '../transaction-chip/transaction-chip';\nimport { ToothScheme } from '../tooth-scheme/tooth-scheme';\nimport type { FdiId, ToothCondition } from '../tooth-scheme/tooth-data';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '../collapsible/collapsible';\nimport { entitySurfaceVariants } from '../_shared/entity-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { carePlanEntryCardAgent } from './care-plan-entry-card.agent';\n\n/* -------------------------------------------------------------------- */\n/* CarePlanEntryCard */\n/* */\n/* A single granular treatment line within a care plan / estimate */\n/* (\"voce di preventivo\"). Replaces the hand-rolled platform treatment */\n/* row that interleaves the treatment label, FDI tooth codes, an */\n/* execution badge, a phase-progress bar, a price chip, and an */\n/* expandable per-phase breakdown. */\n/* */\n/* Composes: entitySurfaceVariants (shared card surface) + Tag / ToothScheme*/\n/* (elements) + Badge (lifecycle flags) + Timestamp (execution / planned) */\n/* + Progress (phases) + TransactionChip (price) + Collapsible (per-phase */\n/* detail). */\n/* */\n/* All visible text flows through useTranslation('ui') against the */\n/* `carePlanEntryCard.*` namespace. Identifiers + structural state only */\n/* reach the agent layer — never patient identity. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\n/** A planned (not-yet-executed) appointment the line is scheduled into. */\nexport interface CarePlanEntryPlannedAppointment {\n /** ISO-8601 date / datetime string. */\n dateIso: string;\n /** Stable appointment id (identifier only — never PHI). */\n appointmentId: string;\n /** Optional deep link to the appointment. */\n url?: string;\n}\n\n/** Price breakdown for the line, all amounts in integer cents. */\nexport interface CarePlanEntryPrice {\n /** List price in cents (non-negative). */\n priceCents?: number;\n /** Discounted price in cents (non-negative), when a discount applies. */\n discountedPriceCents?: number;\n /** Discount percentage (0–100), for the discount label. */\n discountPercentage?: number;\n}\n\n/** One row of the per-phase execution breakdown. */\nexport interface CarePlanEntryPhaseDetail {\n /** Short localised phase label (consumer-localised). */\n label: string;\n /** Whether this phase has been executed. */\n executed: boolean;\n /** ISO-8601 execution date, when executed. */\n executionDateIso?: string;\n /** Operator display name for the phase. */\n operator?: string;\n /** Unique Device Identifier / lot string for traceable materials. */\n udi?: string;\n}\n\n/** Phase progress summary + optional drill-down detail. */\nexport interface CarePlanEntryPhases {\n /** Number of executed phases. */\n executed: number;\n /** Total number of phases. */\n total: number;\n /** Optional per-phase breakdown rendered inside the Collapsible. */\n detail?: CarePlanEntryPhaseDetail[];\n}\n\n/** Operator the line is assigned to. */\nexport interface CarePlanEntryOperator {\n /** Operator display name (consumer-localised). */\n name: string;\n}\n\n/** Curated read-only handle exposed to the agent registry. */\nexport interface CarePlanEntryCardHandle {\n /** Whether the line is marked executed. */\n isDone: () => boolean;\n /** Phase progress as `{ executed, total }` — counts only, no PHI. */\n getPhaseProgress: () => { executed: number; total: number };\n}\n\nexport interface CarePlanEntryCardProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'aria-label' | 'title' | 'children'\n> {\n /**\n * Stable instance id — surfaced as `data-component-id` for the agent\n * registry and used to wire up the heading ↔ region relationship.\n */\n id?: string;\n /** Treatment / service name. Rendered as the line heading. */\n careName: string;\n /** Optional treatment code (e.g. tariff code) shown beside the name. */\n code?: string;\n /** Optional secondary label (e.g. category) under the name. */\n label?: string;\n /** FDI tooth codes the line applies to (e.g. `['16', '36']`). */\n elements?: string[];\n /** Whether the line has been executed / completed. */\n done?: boolean;\n /** ISO-8601 execution date — rendered next to the \"done\" badge. */\n executionDateIso?: string;\n /** A planned appointment the line is scheduled into, when not yet done. */\n plannedAppointment?: CarePlanEntryPlannedAppointment;\n /** Operator the line is assigned to. */\n operator?: CarePlanEntryOperator;\n /** Price breakdown (list / discounted). */\n price?: CarePlanEntryPrice;\n /** Phase progress + optional drill-down detail. */\n phases?: CarePlanEntryPhases;\n /** Whether the line has been billed / invoiced. */\n billed?: boolean;\n /** Whether the line falls outside the accepted estimate. */\n outsideOfEstimate?: boolean;\n /** Count of attached notes — rendered as a neutral count badge when > 0. */\n notesCount?: number;\n /**\n * How to render `elements`: `'chips'` (default) lists each FDI code as a\n * Tag; `'scheme'` renders a read-only `ToothScheme` highlighting them.\n */\n toothDisplay?: 'scheme' | 'chips';\n /** BCP 47 locale override for dates / currency. Defaults to i18n.language. */\n locale?: string;\n /** ISO 4217 currency code for the price chip. Defaults to `EUR`. */\n currency?: string;\n /**\n * `elevated` (default) paints the kit card chrome; `flat` drops it for use\n * inside an existing Card / Sheet.\n */\n surface?: 'flat' | 'elevated';\n /** Accessible label override for the line region. */\n 'aria-label'?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------- */\n\nconst DEFAULT_CURRENCY = 'EUR';\n\n/**\n * Map the FDI element codes to a `ToothScheme` conditions shortcut. Codes\n * outside the FDI vocabulary are dropped (the scheme ignores unknown ids).\n * Every applied tooth is flagged `filled` so the display-mode chart marks\n * them with both colour and pattern — colour-not-alone.\n */\nfunction elementsToConditions(\n elements: string[],\n): Partial<Record<FdiId, ToothCondition[]>> {\n const conditions: Partial<Record<FdiId, ToothCondition[]>> = {};\n for (const code of elements) {\n conditions[code as FdiId] = ['filled'];\n }\n return conditions;\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const CarePlanEntryCard = forwardRef<\n HTMLDivElement,\n CarePlanEntryCardProps\n>(\n (\n {\n id,\n careName,\n code,\n label,\n elements,\n done = false,\n executionDateIso,\n plannedAppointment,\n operator,\n price,\n phases,\n billed = false,\n outsideOfEstimate = false,\n notesCount,\n toothDisplay = 'chips',\n locale,\n currency = DEFAULT_CURRENCY,\n surface = 'elevated',\n 'aria-label': ariaLabel,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const headingId = useId();\n const phasesLabelId = useId();\n const detailTriggerId = useId();\n const detailContentId = useId();\n const activeLocale = locale ?? i18n.language ?? 'en';\n\n useAgentRegistration(\n carePlanEntryCardAgent,\n {\n isDone: () => done,\n getPhaseProgress: () => ({\n executed: phases?.executed ?? 0,\n total: phases?.total ?? 0,\n }),\n },\n id,\n );\n\n const hasElements = !!elements && elements.length > 0;\n const hasPhaseDetail = !!phases?.detail && phases.detail.length > 0;\n\n // Price: prefer the discounted amount when present; show the list price\n // struck through beside it. Both are \"to-invoice\" until billed, then\n // settled.\n const priceState = billed ? 'settled' : 'to-invoice';\n const listCents = price?.priceCents;\n const discountedCents = price?.discountedPriceCents;\n const hasDiscount =\n discountedCents !== undefined &&\n listCents !== undefined &&\n discountedCents < listCents;\n const payableCents = discountedCents ?? listCents;\n\n const formatMoney = (cents: number): string =>\n new Intl.NumberFormat(activeLocale, {\n style: 'currency',\n currency,\n }).format(cents / 100);\n\n return (\n <div\n ref={ref}\n role=\"region\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabel ? undefined : headingId}\n data-component=\"care-plan-entry-card\"\n data-component-id={id}\n data-done={done ? 'true' : 'false'}\n id={id}\n className={entitySurfaceVariants({ surface, className })}\n {...rest}\n >\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\">\n {/* Heading row: name + code + trailing status flags */}\n <div className=\"ds:flex ds:items-start ds:gap-[var(--spacing-sm)]\">\n <div className=\"ds:flex ds:min-w-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n <div className=\"ds:flex ds:flex-wrap ds:items-baseline ds:gap-[var(--spacing-xs)]\">\n <h3\n id={headingId}\n className=\"type-title-item ds:m-0 ds:text-[color:var(--foreground)]\"\n >\n {careName}\n </h3>\n {code ? (\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)] ds:tabular-nums\">\n {code}\n </span>\n ) : null}\n </div>\n {label ? (\n <span className=\"type-body-sm ds:text-[color:var(--muted-foreground)]\">\n {label}\n </span>\n ) : null}\n </div>\n\n <div className=\"ds:flex ds:shrink-0 ds:flex-wrap ds:items-center ds:justify-end ds:gap-[var(--spacing-2xs)]\">\n {done ? (\n <Badge variant=\"success\" size=\"sm\" withDot>\n {t('carePlanEntryCard.flag.done', 'Done')}\n </Badge>\n ) : null}\n {outsideOfEstimate ? (\n <Badge variant=\"warning\" size=\"sm\" withDot>\n {t(\n 'carePlanEntryCard.flag.outsideOfEstimate',\n 'Outside estimate',\n )}\n </Badge>\n ) : null}\n {billed ? (\n <Badge variant=\"neutral\" size=\"sm\">\n {t('carePlanEntryCard.flag.billed', 'Billed')}\n </Badge>\n ) : null}\n {typeof notesCount === 'number' && notesCount > 0 ? (\n <Badge\n variant=\"neutral\"\n size=\"sm\"\n aria-label={t('carePlanEntryCard.notesLabel', {\n count: notesCount,\n defaultValue: '{{count}} notes',\n })}\n >\n {notesCount}\n </Badge>\n ) : null}\n </div>\n </div>\n\n {/* Elements: tooth scheme (display mode) or FDI tag chips */}\n {hasElements ? (\n toothDisplay === 'scheme' ? (\n <ToothScheme\n mode=\"display\"\n conditions={elementsToConditions(elements)}\n ariaLabel={t('carePlanEntryCard.toothSchemeLabel', {\n count: elements.length,\n defaultValue: 'Teeth involved: {{count}}',\n })}\n />\n ) : (\n <div\n role=\"list\"\n aria-label={t(\n 'carePlanEntryCard.elementsLabel',\n 'Teeth involved',\n )}\n className=\"ds:flex ds:flex-wrap ds:gap-[var(--spacing-2xs)]\"\n >\n {elements.map((element) => (\n <div role=\"listitem\" key={element}>\n <Tag label={element} variant=\"info\" size=\"sm\" />\n </div>\n ))}\n </div>\n )\n ) : null}\n\n {/* Schedule / execution line */}\n {done && executionDateIso ? (\n <p className=\"type-body-sm ds:m-0 ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)] ds:text-[color:var(--muted-foreground)]\">\n <span>{t('carePlanEntryCard.executedOn', 'Executed on')}</span>\n <Timestamp\n value={executionDateIso}\n format=\"absolute\"\n locale={activeLocale}\n />\n {operator ? (\n <span>\n {t('carePlanEntryCard.byOperator', {\n operator: operator.name,\n defaultValue: 'by {{operator}}',\n })}\n </span>\n ) : null}\n </p>\n ) : plannedAppointment ? (\n <p className=\"type-body-sm ds:m-0 ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)] ds:text-[color:var(--muted-foreground)]\">\n <span>{t('carePlanEntryCard.plannedFor', 'Planned for')}</span>\n <Timestamp\n value={plannedAppointment.dateIso}\n format=\"absolute\"\n locale={activeLocale}\n />\n {operator ? (\n <span>\n {t('carePlanEntryCard.byOperator', {\n operator: operator.name,\n defaultValue: 'by {{operator}}',\n })}\n </span>\n ) : null}\n </p>\n ) : operator ? (\n <p className=\"type-body-sm ds:m-0 ds:text-[color:var(--muted-foreground)]\">\n {t('carePlanEntryCard.assignedTo', {\n operator: operator.name,\n defaultValue: 'Assigned to {{operator}}',\n })}\n </p>\n ) : null}\n\n {/* Phase progress */}\n {phases && phases.total > 0 ? (\n <Progress\n value={phases.executed}\n max={phases.total}\n size=\"sm\"\n aria-label={t('carePlanEntryCard.phasesLabel', {\n executed: phases.executed,\n total: phases.total,\n defaultValue: 'Phases: {{executed}} of {{total}} executed',\n })}\n >\n <div className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]\">\n <Progress.Label id={phasesLabelId}>\n {t('carePlanEntryCard.phasesHeading', 'Phases')}\n </Progress.Label>\n <span className=\"type-body-sm ds:tabular-nums ds:text-[color:var(--muted-foreground)]\">\n {t('carePlanEntryCard.phasesCount', {\n executed: phases.executed,\n total: phases.total,\n defaultValue: '{{executed}} / {{total}}',\n })}\n </span>\n </div>\n </Progress>\n ) : null}\n\n {/* Footer: price + (optional) phase-detail disclosure */}\n {payableCents !== undefined || hasPhaseDetail ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]\">\n {payableCents !== undefined ? (\n <div className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <TransactionChip\n state={priceState}\n amount={payableCents / 100}\n currency={currency}\n locale={activeLocale}\n size=\"md\"\n />\n {hasDiscount && listCents !== undefined ? (\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)] ds:line-through ds:tabular-nums\">\n {formatMoney(listCents)}\n </span>\n ) : null}\n {hasDiscount && price?.discountPercentage !== undefined ? (\n <Badge variant=\"success\" size=\"sm\">\n {t('carePlanEntryCard.discountLabel', {\n percentage: price.discountPercentage,\n defaultValue: '-{{percentage}}%',\n })}\n </Badge>\n ) : null}\n </div>\n ) : null}\n\n {hasPhaseDetail ? (\n <Collapsible\n variant=\"default\"\n className=\"ds:ms-auto ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\"\n >\n <CollapsibleTrigger asChild>\n <button\n type=\"button\"\n id={detailTriggerId}\n aria-controls={detailContentId}\n className=\"ds:group ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)] ds:rounded-[var(--radius-sm)] ds:border-0 ds:bg-transparent type-body-sm ds:text-[color:var(--foreground)] ds:cursor-pointer ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]\"\n >\n <span>\n {t(\n 'carePlanEntryCard.phaseDetail.toggle',\n 'Phase detail',\n )}\n </span>\n <ChevronDown\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:shrink-0 ds:text-[color:var(--muted-foreground)] ds:transition-transform ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none ds:group-data-[state=open]:rotate-180\"\n />\n </button>\n </CollapsibleTrigger>\n <CollapsibleContent\n id={detailContentId}\n aria-labelledby={detailTriggerId}\n >\n <ul className=\"ds:m-0 ds:flex ds:list-none ds:flex-col ds:gap-[var(--spacing-xs)] ds:p-0\">\n {phases?.detail?.map((phase, index) => (\n <PhaseDetailRow\n key={`${phase.label}-${index}`}\n phase={phase}\n locale={activeLocale}\n />\n ))}\n </ul>\n </CollapsibleContent>\n </Collapsible>\n ) : null}\n </div>\n ) : null}\n </div>\n </div>\n );\n },\n);\n\nCarePlanEntryCard.displayName = 'CarePlanEntryCard';\n\n/* -------------------------------------------------------------------- */\n/* PhaseDetailRow — one row inside the per-phase Collapsible */\n/* -------------------------------------------------------------------- */\n\nfunction PhaseDetailRow({\n phase,\n locale,\n}: {\n phase: CarePlanEntryPhaseDetail;\n locale: string;\n}): ReactNode {\n const { t } = useTranslation();\n return (\n <li className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]\">\n <Badge variant={phase.executed ? 'success' : 'neutral'} size=\"sm\" withDot>\n {phase.executed\n ? t('carePlanEntryCard.phaseDetail.executed', 'Executed')\n : t('carePlanEntryCard.phaseDetail.pending', 'Pending')}\n </Badge>\n <span className=\"type-body-sm ds:text-[color:var(--foreground)]\">\n {phase.label}\n </span>\n {phase.executed && phase.executionDateIso ? (\n <Timestamp\n value={phase.executionDateIso}\n format=\"absolute\"\n locale={locale}\n />\n ) : null}\n {phase.operator ? (\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)]\">\n {t('carePlanEntryCard.byOperator', {\n operator: phase.operator,\n defaultValue: 'by {{operator}}',\n })}\n </span>\n ) : null}\n {phase.udi ? (\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)] ds:tabular-nums\">\n {t('carePlanEntryCard.phaseDetail.udi', {\n udi: phase.udi,\n defaultValue: 'UDI {{udi}}',\n })}\n </span>\n ) : null}\n </li>\n );\n}\n\nexport type CarePlanEntryCardSurface = NonNullable<\n VariantProps<typeof entitySurfaceVariants>['surface']\n>;\n"],"names":["carePlanEntryCardAgent","handle","DEFAULT_CURRENCY","elementsToConditions","elements","conditions","code","CarePlanEntryCard","forwardRef","id","careName","label","done","executionDateIso","plannedAppointment","operator","price","phases","billed","outsideOfEstimate","notesCount","toothDisplay","locale","currency","surface","ariaLabel","className","rest","ref","t","i18n","useTranslation","headingId","useId","phasesLabelId","detailTriggerId","detailContentId","activeLocale","useAgentRegistration","hasElements","hasPhaseDetail","priceState","listCents","discountedCents","hasDiscount","payableCents","formatMoney","cents","jsx","entitySurfaceVariants","jsxs","Badge","ToothScheme","element","Tag","Timestamp","Progress","TransactionChip","Collapsible","CollapsibleTrigger","ChevronDown","CollapsibleContent","phase","index","PhaseDetailRow"],"mappings":"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"}
1
+ {"version":3,"file":"care-plan-entry-card-CMpoeNkb.js","sources":["../../src/components/care-plan-entry-card/care-plan-entry-card.agent.ts","../../src/components/care-plan-entry-card/care-plan-entry-card.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — CarePlanEntryCard. */\n/* */\n/* Read-only surface: expose the execution flag and phase-progress */\n/* counts so an agent can introspect a treatment line's status. Counts + */\n/* booleans only — never the treatment name, operator, or any patient */\n/* identity. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { CarePlanEntryCardHandle } from './care-plan-entry-card';\n\nexport const carePlanEntryCardAgent: AgentAdapter<CarePlanEntryCardHandle> = {\n id: 'care-plan-entry-card',\n // `expand` is host-delegated: the per-phase breakdown is an in-component\n // Collapsible the user (or a host) drives directly — there is no handle\n // method for it, so no backing action is registered. `view_change` was\n // dropped: the card has no view modes to switch between.\n capabilities: ['expand'],\n state: {\n done: {\n type: 'boolean',\n descriptionKey: 'ui.agent.carePlanEntryCard.state.done',\n description: 'Whether the treatment line is marked executed.',\n read: (handle) => handle.isDone(),\n },\n phaseProgress: {\n type: '{ executed: number; total: number }',\n descriptionKey: 'ui.agent.carePlanEntryCard.state.phaseProgress',\n description:\n 'Phase progress as executed / total counts. Counts only — never phase labels or operator identity.',\n read: (handle) => handle.getPhaseProgress(),\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'care-plan-entry-card',\n description: 'Marks the CarePlanEntryCard root region.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop. Addresses a specific line.',\n },\n },\n};\n","import { forwardRef, useId, type HTMLAttributes, type ReactNode } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ChevronDown } from 'lucide-react';\nimport { Badge } from '../badge/badge';\nimport { Progress } from '../progress/progress';\nimport { Tag } from '../tag/tag';\nimport { Timestamp } from '../timestamp/timestamp';\nimport { TransactionChip } from '../transaction-chip/transaction-chip';\nimport { ToothScheme } from '../tooth-scheme/tooth-scheme';\nimport type { FdiId, ToothCondition } from '../tooth-scheme/tooth-data';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '../collapsible/collapsible';\nimport { entitySurfaceVariants } from '../_shared/entity-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { carePlanEntryCardAgent } from './care-plan-entry-card.agent';\n\n/* -------------------------------------------------------------------- */\n/* CarePlanEntryCard */\n/* */\n/* A single granular treatment line within a care plan / estimate */\n/* (\"voce di preventivo\"). Replaces the hand-rolled platform treatment */\n/* row that interleaves the treatment label, FDI tooth codes, an */\n/* execution badge, a phase-progress bar, a price chip, and an */\n/* expandable per-phase breakdown. */\n/* */\n/* Composes: entitySurfaceVariants (shared card surface) + Tag / ToothScheme*/\n/* (elements) + Badge (lifecycle flags) + Timestamp (execution / planned) */\n/* + Progress (phases) + TransactionChip (price) + Collapsible (per-phase */\n/* detail). */\n/* */\n/* All visible text flows through useTranslation('ui') against the */\n/* `carePlanEntryCard.*` namespace. Identifiers + structural state only */\n/* reach the agent layer — never patient identity. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\n/** A planned (not-yet-executed) appointment the line is scheduled into. */\nexport interface CarePlanEntryPlannedAppointment {\n /** ISO-8601 date / datetime string. */\n dateIso: string;\n /** Stable appointment id (identifier only — never PHI). */\n appointmentId: string;\n /** Optional deep link to the appointment. */\n url?: string;\n}\n\n/** Price breakdown for the line, all amounts in integer cents. */\nexport interface CarePlanEntryPrice {\n /** List price in cents (non-negative). */\n priceCents?: number;\n /** Discounted price in cents (non-negative), when a discount applies. */\n discountedPriceCents?: number;\n /** Discount percentage (0–100), for the discount label. */\n discountPercentage?: number;\n}\n\n/** One row of the per-phase execution breakdown. */\nexport interface CarePlanEntryPhaseDetail {\n /** Short localised phase label (consumer-localised). */\n label: string;\n /** Whether this phase has been executed. */\n executed: boolean;\n /** ISO-8601 execution date, when executed. */\n executionDateIso?: string;\n /** Operator display name for the phase. */\n operator?: string;\n /** Unique Device Identifier / lot string for traceable materials. */\n udi?: string;\n}\n\n/** Phase progress summary + optional drill-down detail. */\nexport interface CarePlanEntryPhases {\n /** Number of executed phases. */\n executed: number;\n /** Total number of phases. */\n total: number;\n /** Optional per-phase breakdown rendered inside the Collapsible. */\n detail?: CarePlanEntryPhaseDetail[];\n}\n\n/** Operator the line is assigned to. */\nexport interface CarePlanEntryOperator {\n /** Operator display name (consumer-localised). */\n name: string;\n}\n\n/** Curated read-only handle exposed to the agent registry. */\nexport interface CarePlanEntryCardHandle {\n /** Whether the line is marked executed. */\n isDone: () => boolean;\n /** Phase progress as `{ executed, total }` — counts only, no PHI. */\n getPhaseProgress: () => { executed: number; total: number };\n}\n\nexport interface CarePlanEntryCardProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'aria-label' | 'title' | 'children'\n> {\n /**\n * Stable instance id — surfaced as `data-component-id` for the agent\n * registry and used to wire up the heading ↔ region relationship.\n */\n id?: string;\n /** Treatment / service name. Rendered as the line heading. */\n careName: string;\n /** Optional treatment code (e.g. tariff code) shown beside the name. */\n code?: string;\n /** Optional secondary label (e.g. category) under the name. */\n label?: string;\n /** FDI tooth codes the line applies to (e.g. `['16', '36']`). */\n elements?: string[];\n /** Whether the line has been executed / completed. */\n done?: boolean;\n /** ISO-8601 execution date — rendered next to the \"done\" badge. */\n executionDateIso?: string;\n /** A planned appointment the line is scheduled into, when not yet done. */\n plannedAppointment?: CarePlanEntryPlannedAppointment;\n /** Operator the line is assigned to. */\n operator?: CarePlanEntryOperator;\n /** Price breakdown (list / discounted). */\n price?: CarePlanEntryPrice;\n /** Phase progress + optional drill-down detail. */\n phases?: CarePlanEntryPhases;\n /** Whether the line has been billed / invoiced. */\n billed?: boolean;\n /** Whether the line falls outside the accepted estimate. */\n outsideOfEstimate?: boolean;\n /** Count of attached notes — rendered as a neutral count badge when > 0. */\n notesCount?: number;\n /**\n * How to render `elements`: `'chips'` (default) lists each FDI code as a\n * Tag; `'scheme'` renders a read-only `ToothScheme` highlighting them.\n */\n toothDisplay?: 'scheme' | 'chips';\n /** BCP 47 locale override for dates / currency. Defaults to i18n.language. */\n locale?: string;\n /** ISO 4217 currency code for the price chip. Defaults to `EUR`. */\n currency?: string;\n /**\n * `elevated` (default) paints the kit card chrome; `flat` drops it for use\n * inside an existing Card / Sheet.\n */\n surface?: 'flat' | 'elevated';\n /** Accessible label override for the line region. */\n 'aria-label'?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------- */\n\nconst DEFAULT_CURRENCY = 'EUR';\n\n/**\n * Map the FDI element codes to a `ToothScheme` conditions shortcut. Codes\n * outside the FDI vocabulary are dropped (the scheme ignores unknown ids).\n * Every applied tooth is flagged `filled` so the display-mode chart marks\n * them with both colour and pattern — colour-not-alone.\n */\nfunction elementsToConditions(\n elements: string[],\n): Partial<Record<FdiId, ToothCondition[]>> {\n const conditions: Partial<Record<FdiId, ToothCondition[]>> = {};\n for (const code of elements) {\n conditions[code as FdiId] = ['filled'];\n }\n return conditions;\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const CarePlanEntryCard = forwardRef<\n HTMLDivElement,\n CarePlanEntryCardProps\n>(\n (\n {\n id,\n careName,\n code,\n label,\n elements,\n done = false,\n executionDateIso,\n plannedAppointment,\n operator,\n price,\n phases,\n billed = false,\n outsideOfEstimate = false,\n notesCount,\n toothDisplay = 'chips',\n locale,\n currency = DEFAULT_CURRENCY,\n surface = 'elevated',\n 'aria-label': ariaLabel,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const headingId = useId();\n const phasesLabelId = useId();\n const detailTriggerId = useId();\n const detailContentId = useId();\n const activeLocale = locale ?? i18n.language ?? 'en';\n\n useAgentRegistration(\n carePlanEntryCardAgent,\n {\n isDone: () => done,\n getPhaseProgress: () => ({\n executed: phases?.executed ?? 0,\n total: phases?.total ?? 0,\n }),\n },\n id,\n );\n\n const hasElements = !!elements && elements.length > 0;\n const hasPhaseDetail = !!phases?.detail && phases.detail.length > 0;\n\n // Price: prefer the discounted amount when present; show the list price\n // struck through beside it. Both are \"to-invoice\" until billed, then\n // settled.\n const priceState = billed ? 'settled' : 'to-invoice';\n const listCents = price?.priceCents;\n const discountedCents = price?.discountedPriceCents;\n const hasDiscount =\n discountedCents !== undefined &&\n listCents !== undefined &&\n discountedCents < listCents;\n const payableCents = discountedCents ?? listCents;\n\n const formatMoney = (cents: number): string =>\n new Intl.NumberFormat(activeLocale, {\n style: 'currency',\n currency,\n }).format(cents / 100);\n\n return (\n <div\n ref={ref}\n role=\"region\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabel ? undefined : headingId}\n data-component=\"care-plan-entry-card\"\n data-component-id={id}\n data-done={done ? 'true' : 'false'}\n id={id}\n className={entitySurfaceVariants({ surface, className })}\n {...rest}\n >\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\">\n {/* Heading row: name + code + trailing status flags */}\n <div className=\"ds:flex ds:items-start ds:gap-[var(--spacing-sm)]\">\n <div className=\"ds:flex ds:min-w-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n <div className=\"ds:flex ds:flex-wrap ds:items-baseline ds:gap-[var(--spacing-xs)]\">\n <h3\n id={headingId}\n className=\"type-title-item ds:m-0 ds:text-[color:var(--foreground)]\"\n >\n {careName}\n </h3>\n {code ? (\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)] ds:tabular-nums\">\n {code}\n </span>\n ) : null}\n </div>\n {label ? (\n <span className=\"type-body-sm ds:text-[color:var(--muted-foreground)]\">\n {label}\n </span>\n ) : null}\n </div>\n\n <div className=\"ds:flex ds:shrink-0 ds:flex-wrap ds:items-center ds:justify-end ds:gap-[var(--spacing-2xs)]\">\n {done ? (\n <Badge variant=\"success\" size=\"sm\" withDot>\n {t('carePlanEntryCard.flag.done', 'Done')}\n </Badge>\n ) : null}\n {outsideOfEstimate ? (\n <Badge variant=\"warning\" size=\"sm\" withDot>\n {t(\n 'carePlanEntryCard.flag.outsideOfEstimate',\n 'Outside estimate',\n )}\n </Badge>\n ) : null}\n {billed ? (\n <Badge variant=\"neutral\" size=\"sm\">\n {t('carePlanEntryCard.flag.billed', 'Billed')}\n </Badge>\n ) : null}\n {typeof notesCount === 'number' && notesCount > 0 ? (\n <Badge\n variant=\"neutral\"\n size=\"sm\"\n aria-label={t('carePlanEntryCard.notesLabel', {\n count: notesCount,\n defaultValue: '{{count}} notes',\n })}\n >\n {notesCount}\n </Badge>\n ) : null}\n </div>\n </div>\n\n {/* Elements: tooth scheme (display mode) or FDI tag chips */}\n {hasElements ? (\n toothDisplay === 'scheme' ? (\n <ToothScheme\n mode=\"display\"\n conditions={elementsToConditions(elements)}\n ariaLabel={t('carePlanEntryCard.toothSchemeLabel', {\n count: elements.length,\n defaultValue: 'Teeth involved: {{count}}',\n })}\n />\n ) : (\n <div\n role=\"list\"\n aria-label={t(\n 'carePlanEntryCard.elementsLabel',\n 'Teeth involved',\n )}\n className=\"ds:flex ds:flex-wrap ds:gap-[var(--spacing-2xs)]\"\n >\n {elements.map((element) => (\n <div role=\"listitem\" key={element}>\n <Tag label={element} variant=\"info\" size=\"sm\" />\n </div>\n ))}\n </div>\n )\n ) : null}\n\n {/* Schedule / execution line */}\n {done && executionDateIso ? (\n <p className=\"type-body-sm ds:m-0 ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)] ds:text-[color:var(--muted-foreground)]\">\n <span>{t('carePlanEntryCard.executedOn', 'Executed on')}</span>\n <Timestamp\n value={executionDateIso}\n format=\"absolute\"\n locale={activeLocale}\n />\n {operator ? (\n <span>\n {t('carePlanEntryCard.byOperator', {\n operator: operator.name,\n defaultValue: 'by {{operator}}',\n })}\n </span>\n ) : null}\n </p>\n ) : plannedAppointment ? (\n <p className=\"type-body-sm ds:m-0 ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)] ds:text-[color:var(--muted-foreground)]\">\n <span>{t('carePlanEntryCard.plannedFor', 'Planned for')}</span>\n <Timestamp\n value={plannedAppointment.dateIso}\n format=\"absolute\"\n locale={activeLocale}\n />\n {operator ? (\n <span>\n {t('carePlanEntryCard.byOperator', {\n operator: operator.name,\n defaultValue: 'by {{operator}}',\n })}\n </span>\n ) : null}\n </p>\n ) : operator ? (\n <p className=\"type-body-sm ds:m-0 ds:text-[color:var(--muted-foreground)]\">\n {t('carePlanEntryCard.assignedTo', {\n operator: operator.name,\n defaultValue: 'Assigned to {{operator}}',\n })}\n </p>\n ) : null}\n\n {/* Phase progress */}\n {phases && phases.total > 0 ? (\n <Progress\n value={phases.executed}\n max={phases.total}\n size=\"sm\"\n aria-label={t('carePlanEntryCard.phasesLabel', {\n executed: phases.executed,\n total: phases.total,\n defaultValue: 'Phases: {{executed}} of {{total}} executed',\n })}\n >\n <div className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]\">\n <Progress.Label id={phasesLabelId}>\n {t('carePlanEntryCard.phasesHeading', 'Phases')}\n </Progress.Label>\n <span className=\"type-body-sm ds:tabular-nums ds:text-[color:var(--muted-foreground)]\">\n {t('carePlanEntryCard.phasesCount', {\n executed: phases.executed,\n total: phases.total,\n defaultValue: '{{executed}} / {{total}}',\n })}\n </span>\n </div>\n </Progress>\n ) : null}\n\n {/* Footer: price + (optional) phase-detail disclosure */}\n {payableCents !== undefined || hasPhaseDetail ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]\">\n {payableCents !== undefined ? (\n <div className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <TransactionChip\n state={priceState}\n amount={payableCents / 100}\n currency={currency}\n locale={activeLocale}\n size=\"md\"\n />\n {hasDiscount && listCents !== undefined ? (\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)] ds:line-through ds:tabular-nums\">\n {formatMoney(listCents)}\n </span>\n ) : null}\n {hasDiscount && price?.discountPercentage !== undefined ? (\n <Badge variant=\"success\" size=\"sm\">\n {t('carePlanEntryCard.discountLabel', {\n percentage: price.discountPercentage,\n defaultValue: '-{{percentage}}%',\n })}\n </Badge>\n ) : null}\n </div>\n ) : null}\n\n {hasPhaseDetail ? (\n <Collapsible\n variant=\"default\"\n className=\"ds:ms-auto ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\"\n >\n <CollapsibleTrigger asChild>\n <button\n type=\"button\"\n id={detailTriggerId}\n aria-controls={detailContentId}\n className=\"ds:group ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)] ds:rounded-[var(--radius-sm)] ds:border-0 ds:bg-transparent type-body-sm ds:text-[color:var(--foreground)] ds:cursor-pointer ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]\"\n >\n <span>\n {t(\n 'carePlanEntryCard.phaseDetail.toggle',\n 'Phase detail',\n )}\n </span>\n <ChevronDown\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:shrink-0 ds:text-[color:var(--muted-foreground)] ds:transition-transform ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none ds:group-data-[state=open]:rotate-180\"\n />\n </button>\n </CollapsibleTrigger>\n <CollapsibleContent\n id={detailContentId}\n aria-labelledby={detailTriggerId}\n >\n <ul className=\"ds:m-0 ds:flex ds:list-none ds:flex-col ds:gap-[var(--spacing-xs)] ds:p-0\">\n {phases?.detail?.map((phase, index) => (\n <PhaseDetailRow\n key={`${phase.label}-${index}`}\n phase={phase}\n locale={activeLocale}\n />\n ))}\n </ul>\n </CollapsibleContent>\n </Collapsible>\n ) : null}\n </div>\n ) : null}\n </div>\n </div>\n );\n },\n);\n\nCarePlanEntryCard.displayName = 'CarePlanEntryCard';\n\n/* -------------------------------------------------------------------- */\n/* PhaseDetailRow — one row inside the per-phase Collapsible */\n/* -------------------------------------------------------------------- */\n\nfunction PhaseDetailRow({\n phase,\n locale,\n}: {\n phase: CarePlanEntryPhaseDetail;\n locale: string;\n}): ReactNode {\n const { t } = useTranslation();\n return (\n <li className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]\">\n <Badge variant={phase.executed ? 'success' : 'neutral'} size=\"sm\" withDot>\n {phase.executed\n ? t('carePlanEntryCard.phaseDetail.executed', 'Executed')\n : t('carePlanEntryCard.phaseDetail.pending', 'Pending')}\n </Badge>\n <span className=\"type-body-sm ds:text-[color:var(--foreground)]\">\n {phase.label}\n </span>\n {phase.executed && phase.executionDateIso ? (\n <Timestamp\n value={phase.executionDateIso}\n format=\"absolute\"\n locale={locale}\n />\n ) : null}\n {phase.operator ? (\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)]\">\n {t('carePlanEntryCard.byOperator', {\n operator: phase.operator,\n defaultValue: 'by {{operator}}',\n })}\n </span>\n ) : null}\n {phase.udi ? (\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)] ds:tabular-nums\">\n {t('carePlanEntryCard.phaseDetail.udi', {\n udi: phase.udi,\n defaultValue: 'UDI {{udi}}',\n })}\n </span>\n ) : null}\n </li>\n );\n}\n\nexport type CarePlanEntryCardSurface = NonNullable<\n VariantProps<typeof entitySurfaceVariants>['surface']\n>;\n"],"names":["carePlanEntryCardAgent","handle","DEFAULT_CURRENCY","elementsToConditions","elements","conditions","code","CarePlanEntryCard","forwardRef","id","careName","label","done","executionDateIso","plannedAppointment","operator","price","phases","billed","outsideOfEstimate","notesCount","toothDisplay","locale","currency","surface","ariaLabel","className","rest","ref","t","i18n","useTranslation","headingId","useId","phasesLabelId","detailTriggerId","detailContentId","activeLocale","useAgentRegistration","hasElements","hasPhaseDetail","priceState","listCents","discountedCents","hasDiscount","payableCents","formatMoney","cents","jsx","entitySurfaceVariants","jsxs","Badge","ToothScheme","element","Tag","Timestamp","Progress","TransactionChip","Collapsible","CollapsibleTrigger","ChevronDown","CollapsibleContent","phase","index","PhaseDetailRow"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { jsx as r, jsxs as n, Fragment as N } from "react/jsx-runtime";
2
2
  import { forwardRef as F, useId as M } from "react";
3
3
  import { useTranslation as U } from "react-i18next";
4
4
  import { B as P } from "./badge-sTusUqZD.js";
5
- import { a as G } from "./key-value-pair-DGkGlgCF.js";
5
+ import { a as G } from "./key-value-pair-BubG4fUa.js";
6
6
  import { L as O } from "./link-CPb_pZPr.js";
7
7
  import { S as $ } from "./separator-CYU_bGFn.js";
8
8
  import { T as A } from "./timestamp-BV2lC-wV.js";
@@ -195,4 +195,4 @@ export {
195
195
  ee as C,
196
196
  X as c
197
197
  };
198
- //# sourceMappingURL=care-plan-header-_B0TTWT1.js.map
198
+ //# sourceMappingURL=care-plan-header-CxYoq23f.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"care-plan-header-_B0TTWT1.js","sources":["../../src/components/care-plan-header/care-plan-header.agent.ts","../../src/components/care-plan-header/care-plan-header.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — CarePlanHeader. */\n/* */\n/* Read-only surface: expose the plan's lifecycle state and the count of */\n/* attention alerts so an agent can introspect a plan header's status. */\n/* Enum + count only — never the plan name, the meta values (operator, */\n/* price list, …), or any patient identity. The actions slot is */\n/* consumer-provided, so no backing action is registered. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { CarePlanHeaderHandle } from './care-plan-header';\n\nexport const carePlanHeaderAgent: AgentAdapter<CarePlanHeaderHandle> = {\n id: 'care-plan-header',\n capabilities: [],\n state: {\n state: {\n type: \"'estimate' | 'accepted' | 'discarded' | 'closed'\",\n descriptionKey: 'ui.agent.carePlanHeader.state.state',\n description:\n 'The plan lifecycle state. Enum value only — never the localised label or any PHI.',\n read: (handle) => handle.getState(),\n },\n alertCount: {\n type: 'number',\n descriptionKey: 'ui.agent.carePlanHeader.state.alertCount',\n description:\n 'How many attention alerts (e.g. missing signature) are showing. Count only — never the alert labels.',\n read: (handle) => handle.getAlertCount(),\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'care-plan-header',\n description: 'Marks the CarePlanHeader root region.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the id prop. Addresses a specific plan header.',\n },\n },\n};\n","import {\n forwardRef,\n useId,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Badge, type BadgeProps } from '../badge/badge';\nimport { KeyValuePair } from '../key-value-pair/key-value-pair';\nimport { Link } from '../link/link';\nimport { Separator } from '../separator/separator';\nimport { Timestamp } from '../timestamp/timestamp';\nimport {\n entitySurfaceVariants,\n CARE_PLAN_STATE_BADGE,\n isSafeEntityUrl,\n type CarePlanState,\n} from '../_shared/entity-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { carePlanHeaderAgent } from './care-plan-header.agent';\n\n/* -------------------------------------------------------------------- */\n/* CarePlanHeader */\n/* */\n/* The identity + meta BANNER for a care plan / estimate — the header */\n/* that crowns an editor or a detail view. The lighter sibling of */\n/* `CarePlanCard`: where that card is the read-only WHOLE-plan summary */\n/* (financials + a phase-progress bar + an entries accordion), */\n/* CarePlanHeader is just the plan's identity (number, name, lifecycle */\n/* badge), its attention alerts (e.g. a missing signature), a consumer- */\n/* labelled meta strip (operator, price list, …), lifecycle dates, and an */\n/* actions slot. It carries NO entries / financials, so it sits cleanly */\n/* atop an EDITABLE surface (odontogram + treatments table) without */\n/* duplicating it. */\n/* */\n/* Composes: entitySurfaceVariants (the shared entity-card surface) + */\n/* Badge (lifecycle state + alerts) + Timestamp (dates) + Link (deep */\n/* link) + KeyValuePair (meta). Reuses the `carePlanCard.*` lifecycle / */\n/* number / date vocabulary, so the header and the summary card speak the */\n/* SAME localised plan language. Identifiers + structural state only reach */\n/* the agent layer — never patient identity. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\nexport type { CarePlanState } from '../_shared/entity-card';\n\n/** Heading element the plan name / number renders as. */\nexport type CarePlanHeaderHeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n/** Tone of an attention alert chip → the Badge variant it paints with. */\nexport type CarePlanHeaderAlertTone = 'warning' | 'error' | 'info';\n\n/**\n * One attention alert shown as a chip beneath the heading — e.g. a missing\n * signature, an expired estimate. The kit owns the chip; the consumer owns the\n * (already-localised) label and the meaning.\n */\nexport interface CarePlanHeaderAlert {\n /** Stable key — identifier only, never PHI. Keys the chip + agent count. */\n id: string;\n /** Already-localised label (consumer-provided). */\n label: ReactNode;\n /** Severity tone. Defaults to `warning`. */\n tone?: CarePlanHeaderAlertTone;\n /** Optional leading glyph (a single lucide element). */\n icon?: ReactElement;\n}\n\n/**\n * One meta fact in the footer strip — operator, price list, referrer, …. The\n * label is consumer-localised; the value is any node (text, an Avatar + name,\n * a Link). Rendered through the shared `KeyValuePair`.\n */\nexport interface CarePlanHeaderMetaItem {\n /** Stable key — identifier only, never PHI. */\n id: string;\n /** Already-localised label (consumer-provided). */\n label: string;\n /** Value node. */\n value: ReactNode;\n /** Optional leading glyph for the pair (a single lucide element). */\n icon?: ReactElement | null;\n}\n\n/** Lifecycle dates — each an ISO-8601 string, rendered via `Timestamp`. */\nexport interface CarePlanHeaderDates {\n /** Acceptance date. */\n acceptedIso?: string;\n /** Closure date. */\n closedIso?: string;\n /** Discard date. */\n discardedIso?: string;\n}\n\n/**\n * Imperative handle the agent adapter drives. Reads only structural state —\n * the lifecycle enum and the count of alerts. Never the plan name, the meta\n * values, or any patient identity.\n */\nexport interface CarePlanHeaderHandle {\n /** The plan lifecycle state (enum, never the localised label). */\n getState: () => CarePlanState;\n /** How many attention alerts are showing. */\n getAlertCount: () => number;\n}\n\nexport interface CarePlanHeaderProps extends Omit<\n HTMLAttributes<HTMLElement>,\n 'title'\n> {\n /** Agent-readiness instance id, surfaced as `data-component-id`. */\n id?: string;\n /**\n * Plan number — used as the heading when no `name` is given (matching\n * platform's `getPresentationName()`, which falls back to `Piano #{number}`)\n * and as the plan's structural identity for the agent layer.\n */\n number: string | number;\n /**\n * Override the number-as-heading label (e.g. a consumer's own `Plan #15`),\n * used ONLY when no `name` is given. Defaults to the localised\n * `Care plan {{number}}` shared with `CarePlanCard`, so the two surfaces read\n * alike unless a consumer opts out. With a `name` present the number is not\n * shown — platform draws no separate plan-number eyebrow.\n */\n numberLabel?: ReactNode;\n /** Plan name — the title heading. Omit for a number-only header. */\n name?: ReactNode;\n /** Lifecycle state — drives the badge variant + localised label. */\n state: CarePlanState;\n /** Deep link for the heading. Rendered only when it passes the safe-URL gate. */\n url?: string;\n /** Attention alerts (e.g. signature missing) shown as chips under the heading. */\n alerts?: CarePlanHeaderAlert[];\n /** Consumer-labelled meta facts (operator, price list, …) in the footer. */\n meta?: CarePlanHeaderMetaItem[];\n /**\n * Lifecycle dates. The date matching the current `state` is folded into the\n * lifecycle badge (e.g. \"Accepted · {date}\"), making the badge self-describing;\n * any other date (e.g. the acceptance date of a now-closed plan) renders as a\n * muted `Timestamp` line beneath the meta.\n */\n dates?: CarePlanHeaderDates;\n /** Inline-end actions slot (e.g. Share / Print). */\n actions?: ReactNode;\n /** Heading element the name / number renders as. Defaults to `h3`. */\n headingTag?: CarePlanHeaderHeadingTag;\n /** `elevated` (default) paints the kit card chrome; `flat` drops it. */\n surface?: 'flat' | 'elevated';\n /** Internal padding density. Defaults to `comfortable`. */\n density?: 'comfortable' | 'compact';\n /** BCP-47 locale override for the dates. Defaults to `i18n.language`. */\n locale?: string;\n /** Fires when the plan deep link / heading is activated. */\n onActivate?: () => void;\n /** Accessible name override for the plan region (defaults to the heading). */\n 'aria-label'?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------- */\n\n/** English fallbacks for the (reused) lifecycle-state labels. */\nconst STATE_LABEL_FALLBACK: Record<CarePlanState, string> = {\n estimate: 'Estimate',\n accepted: 'Accepted',\n discarded: 'Discarded',\n closed: 'Closed',\n};\n\nconst ALERT_TONE_VARIANT: Record<\n CarePlanHeaderAlertTone,\n NonNullable<BadgeProps['variant']>\n> = {\n warning: 'warning',\n error: 'error',\n info: 'info',\n};\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const CarePlanHeader = forwardRef<HTMLElement, CarePlanHeaderProps>(\n function CarePlanHeader(\n {\n id,\n number,\n numberLabel,\n name,\n state,\n url,\n alerts,\n meta,\n dates,\n actions,\n headingTag = 'h3',\n surface = 'elevated',\n density = 'comfortable',\n locale,\n onActivate,\n 'aria-label': ariaLabel,\n className,\n ...rest\n },\n ref,\n ) {\n const { t, i18n } = useTranslation();\n const headingId = useId();\n const activeLocale = locale ?? i18n.language ?? 'en';\n\n useAgentRegistration(\n carePlanHeaderAgent,\n {\n getState: () => state,\n getAlertCount: () => alerts?.length ?? 0,\n },\n id,\n );\n\n const resolvedNumberLabel =\n numberLabel ??\n t('carePlanCard.number', {\n number,\n defaultValue: 'Care plan {{number}}',\n });\n const stateLabel = t(`carePlanCard.state.${state}`, {\n defaultValue: STATE_LABEL_FALLBACK[state],\n });\n\n const hasName = name != null && name !== '';\n const hasSafeUrl = !!url && isSafeEntityUrl(url);\n const hasAlerts = !!alerts && alerts.length > 0;\n const hasMeta = !!meta && meta.length > 0;\n\n // The date that matches the CURRENT lifecycle state rides INSIDE the state\n // badge (e.g. \"Accepted · {date}\") — the badge becomes self-describing. Any\n // OTHER dates (e.g. the acceptance date of a now-closed plan) remain in the\n // muted footer line below.\n const stateDateIso =\n state === 'accepted'\n ? dates?.acceptedIso\n : state === 'closed'\n ? dates?.closedIso\n : state === 'discarded'\n ? dates?.discardedIso\n : undefined;\n\n const footerDates: Array<{ key: string; label: string; iso: string }> = [];\n if (dates?.acceptedIso && state !== 'accepted') {\n footerDates.push({\n key: 'accepted',\n label: t('carePlanCard.date.accepted', 'Accepted on'),\n iso: dates.acceptedIso,\n });\n }\n if (dates?.closedIso && state !== 'closed') {\n footerDates.push({\n key: 'closed',\n label: t('carePlanCard.date.closed', 'Closed on'),\n iso: dates.closedIso,\n });\n }\n if (dates?.discardedIso && state !== 'discarded') {\n footerDates.push({\n key: 'discarded',\n label: t('carePlanCard.date.discarded', 'Discarded on'),\n iso: dates.discardedIso,\n });\n }\n const hasDates = footerDates.length > 0;\n\n const Heading = headingTag;\n const headingNode = (\n <Heading\n id={headingId}\n className=\"type-title-card ds:m-0 ds:text-[color:var(--foreground)]\"\n >\n {hasName ? name : resolvedNumberLabel}\n </Heading>\n );\n\n const datesLine = hasDates ? (\n <div className=\"type-body-sm ds:flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-md)] ds:gap-y-[var(--spacing-2xs)] ds:text-[color:var(--muted-foreground)]\">\n {footerDates.map((d) => (\n <span\n key={d.key}\n className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]\"\n >\n <span>{d.label}</span>\n <Timestamp value={d.iso} format=\"absolute\" locale={activeLocale} />\n </span>\n ))}\n </div>\n ) : null;\n\n return (\n <section\n ref={ref}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabel ? undefined : headingId}\n data-component=\"care-plan-header\"\n data-component-id={id}\n data-state={state}\n id={id}\n className={entitySurfaceVariants({ surface, density, className })}\n {...rest}\n >\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n {/* Heading row: the plan's single title (name, or the number label as\n a fallback when unnamed — platform's `getPresentationName()`) on\n the inline-start, the document actions docked inline-end. */}\n <div className=\"ds:flex ds:items-start ds:gap-[var(--spacing-sm)]\">\n <div className=\"ds:min-w-0 ds:flex-1\">\n {hasSafeUrl ? (\n <Link\n href={url as string}\n weight=\"strong\"\n onClick={(event) => {\n if (\n event.defaultPrevented ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey\n ) {\n return;\n }\n onActivate?.();\n }}\n >\n {headingNode}\n </Link>\n ) : (\n headingNode\n )}\n </div>\n {actions ? (\n <div className=\"ds:flex ds:shrink-0 ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]\">\n {actions}\n </div>\n ) : null}\n </div>\n\n {/* Lifecycle state + attention alerts — chips beneath the title. The\n state badge always leads the row; consumer alerts (e.g. a missing\n signature) follow. Size + gap match the shared metadata-chip strip\n (Badge `md` default + `gap-xs`) used by PatientSummaryCard and the\n PatientDetails header, so every card on a patient screen reads with\n one chip rhythm. */}\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]\">\n <Badge variant={CARE_PLAN_STATE_BADGE[state]} size=\"md\" withDot>\n {stateLabel}\n {stateDateIso ? (\n <>\n {' · '}\n <Timestamp\n value={stateDateIso}\n format=\"absolute\"\n locale={activeLocale}\n shape=\"bare\"\n />\n </>\n ) : null}\n </Badge>\n {hasAlerts\n ? alerts!.map((alert) => (\n <Badge\n key={alert.id}\n variant={ALERT_TONE_VARIANT[alert.tone ?? 'warning']}\n size=\"md\"\n leading={alert.icon}\n >\n {alert.label}\n </Badge>\n ))\n : null}\n </div>\n\n {/* Footer: meta (operator, price list, …) + lifecycle dates. */}\n {hasMeta || hasDates ? (\n <>\n <Separator orientation=\"horizontal\" />\n <div className=\"ds:flex ds:min-w-0 ds:flex-col ds:gap-[var(--spacing-xs)]\">\n {hasMeta ? (\n <div className=\"ds:flex ds:flex-wrap ds:gap-x-[var(--spacing-lg)] ds:gap-y-[var(--spacing-xs)]\">\n {meta!.map((item) => (\n <KeyValuePair\n key={item.id}\n label={item.label}\n value={item.value}\n icon={item.icon ?? undefined}\n data-field-id={item.id}\n />\n ))}\n </div>\n ) : null}\n {datesLine}\n </div>\n </>\n ) : null}\n </div>\n </section>\n );\n },\n);\n\nCarePlanHeader.displayName = 'CarePlanHeader';\n\n/** Surface variant union re-exported for downstream typing. */\nexport type CarePlanHeaderSurface = NonNullable<\n VariantProps<typeof entitySurfaceVariants>['surface']\n>;\n"],"names":["carePlanHeaderAgent","handle","STATE_LABEL_FALLBACK","ALERT_TONE_VARIANT","CarePlanHeader","forwardRef","id","number","numberLabel","name","state","url","alerts","meta","dates","actions","headingTag","surface","density","locale","onActivate","ariaLabel","className","rest","ref","t","i18n","useTranslation","headingId","useId","activeLocale","useAgentRegistration","resolvedNumberLabel","stateLabel","hasName","hasSafeUrl","isSafeEntityUrl","hasAlerts","hasMeta","stateDateIso","footerDates","hasDates","headingNode","jsx","datesLine","d","jsxs","Timestamp","entitySurfaceVariants","Link","event","Badge","CARE_PLAN_STATE_BADGE","Fragment","alert","Separator","item","KeyValuePair"],"mappings":"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"}
1
+ {"version":3,"file":"care-plan-header-CxYoq23f.js","sources":["../../src/components/care-plan-header/care-plan-header.agent.ts","../../src/components/care-plan-header/care-plan-header.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — CarePlanHeader. */\n/* */\n/* Read-only surface: expose the plan's lifecycle state and the count of */\n/* attention alerts so an agent can introspect a plan header's status. */\n/* Enum + count only — never the plan name, the meta values (operator, */\n/* price list, …), or any patient identity. The actions slot is */\n/* consumer-provided, so no backing action is registered. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { CarePlanHeaderHandle } from './care-plan-header';\n\nexport const carePlanHeaderAgent: AgentAdapter<CarePlanHeaderHandle> = {\n id: 'care-plan-header',\n capabilities: [],\n state: {\n state: {\n type: \"'estimate' | 'accepted' | 'discarded' | 'closed'\",\n descriptionKey: 'ui.agent.carePlanHeader.state.state',\n description:\n 'The plan lifecycle state. Enum value only — never the localised label or any PHI.',\n read: (handle) => handle.getState(),\n },\n alertCount: {\n type: 'number',\n descriptionKey: 'ui.agent.carePlanHeader.state.alertCount',\n description:\n 'How many attention alerts (e.g. missing signature) are showing. Count only — never the alert labels.',\n read: (handle) => handle.getAlertCount(),\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'care-plan-header',\n description: 'Marks the CarePlanHeader root region.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the id prop. Addresses a specific plan header.',\n },\n },\n};\n","import {\n forwardRef,\n useId,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Badge, type BadgeProps } from '../badge/badge';\nimport { KeyValuePair } from '../key-value-pair/key-value-pair';\nimport { Link } from '../link/link';\nimport { Separator } from '../separator/separator';\nimport { Timestamp } from '../timestamp/timestamp';\nimport {\n entitySurfaceVariants,\n CARE_PLAN_STATE_BADGE,\n isSafeEntityUrl,\n type CarePlanState,\n} from '../_shared/entity-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { carePlanHeaderAgent } from './care-plan-header.agent';\n\n/* -------------------------------------------------------------------- */\n/* CarePlanHeader */\n/* */\n/* The identity + meta BANNER for a care plan / estimate — the header */\n/* that crowns an editor or a detail view. The lighter sibling of */\n/* `CarePlanCard`: where that card is the read-only WHOLE-plan summary */\n/* (financials + a phase-progress bar + an entries accordion), */\n/* CarePlanHeader is just the plan's identity (number, name, lifecycle */\n/* badge), its attention alerts (e.g. a missing signature), a consumer- */\n/* labelled meta strip (operator, price list, …), lifecycle dates, and an */\n/* actions slot. It carries NO entries / financials, so it sits cleanly */\n/* atop an EDITABLE surface (odontogram + treatments table) without */\n/* duplicating it. */\n/* */\n/* Composes: entitySurfaceVariants (the shared entity-card surface) + */\n/* Badge (lifecycle state + alerts) + Timestamp (dates) + Link (deep */\n/* link) + KeyValuePair (meta). Reuses the `carePlanCard.*` lifecycle / */\n/* number / date vocabulary, so the header and the summary card speak the */\n/* SAME localised plan language. Identifiers + structural state only reach */\n/* the agent layer — never patient identity. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\nexport type { CarePlanState } from '../_shared/entity-card';\n\n/** Heading element the plan name / number renders as. */\nexport type CarePlanHeaderHeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n/** Tone of an attention alert chip → the Badge variant it paints with. */\nexport type CarePlanHeaderAlertTone = 'warning' | 'error' | 'info';\n\n/**\n * One attention alert shown as a chip beneath the heading — e.g. a missing\n * signature, an expired estimate. The kit owns the chip; the consumer owns the\n * (already-localised) label and the meaning.\n */\nexport interface CarePlanHeaderAlert {\n /** Stable key — identifier only, never PHI. Keys the chip + agent count. */\n id: string;\n /** Already-localised label (consumer-provided). */\n label: ReactNode;\n /** Severity tone. Defaults to `warning`. */\n tone?: CarePlanHeaderAlertTone;\n /** Optional leading glyph (a single lucide element). */\n icon?: ReactElement;\n}\n\n/**\n * One meta fact in the footer strip — operator, price list, referrer, …. The\n * label is consumer-localised; the value is any node (text, an Avatar + name,\n * a Link). Rendered through the shared `KeyValuePair`.\n */\nexport interface CarePlanHeaderMetaItem {\n /** Stable key — identifier only, never PHI. */\n id: string;\n /** Already-localised label (consumer-provided). */\n label: string;\n /** Value node. */\n value: ReactNode;\n /** Optional leading glyph for the pair (a single lucide element). */\n icon?: ReactElement | null;\n}\n\n/** Lifecycle dates — each an ISO-8601 string, rendered via `Timestamp`. */\nexport interface CarePlanHeaderDates {\n /** Acceptance date. */\n acceptedIso?: string;\n /** Closure date. */\n closedIso?: string;\n /** Discard date. */\n discardedIso?: string;\n}\n\n/**\n * Imperative handle the agent adapter drives. Reads only structural state —\n * the lifecycle enum and the count of alerts. Never the plan name, the meta\n * values, or any patient identity.\n */\nexport interface CarePlanHeaderHandle {\n /** The plan lifecycle state (enum, never the localised label). */\n getState: () => CarePlanState;\n /** How many attention alerts are showing. */\n getAlertCount: () => number;\n}\n\nexport interface CarePlanHeaderProps extends Omit<\n HTMLAttributes<HTMLElement>,\n 'title'\n> {\n /** Agent-readiness instance id, surfaced as `data-component-id`. */\n id?: string;\n /**\n * Plan number — used as the heading when no `name` is given (matching\n * platform's `getPresentationName()`, which falls back to `Piano #{number}`)\n * and as the plan's structural identity for the agent layer.\n */\n number: string | number;\n /**\n * Override the number-as-heading label (e.g. a consumer's own `Plan #15`),\n * used ONLY when no `name` is given. Defaults to the localised\n * `Care plan {{number}}` shared with `CarePlanCard`, so the two surfaces read\n * alike unless a consumer opts out. With a `name` present the number is not\n * shown — platform draws no separate plan-number eyebrow.\n */\n numberLabel?: ReactNode;\n /** Plan name — the title heading. Omit for a number-only header. */\n name?: ReactNode;\n /** Lifecycle state — drives the badge variant + localised label. */\n state: CarePlanState;\n /** Deep link for the heading. Rendered only when it passes the safe-URL gate. */\n url?: string;\n /** Attention alerts (e.g. signature missing) shown as chips under the heading. */\n alerts?: CarePlanHeaderAlert[];\n /** Consumer-labelled meta facts (operator, price list, …) in the footer. */\n meta?: CarePlanHeaderMetaItem[];\n /**\n * Lifecycle dates. The date matching the current `state` is folded into the\n * lifecycle badge (e.g. \"Accepted · {date}\"), making the badge self-describing;\n * any other date (e.g. the acceptance date of a now-closed plan) renders as a\n * muted `Timestamp` line beneath the meta.\n */\n dates?: CarePlanHeaderDates;\n /** Inline-end actions slot (e.g. Share / Print). */\n actions?: ReactNode;\n /** Heading element the name / number renders as. Defaults to `h3`. */\n headingTag?: CarePlanHeaderHeadingTag;\n /** `elevated` (default) paints the kit card chrome; `flat` drops it. */\n surface?: 'flat' | 'elevated';\n /** Internal padding density. Defaults to `comfortable`. */\n density?: 'comfortable' | 'compact';\n /** BCP-47 locale override for the dates. Defaults to `i18n.language`. */\n locale?: string;\n /** Fires when the plan deep link / heading is activated. */\n onActivate?: () => void;\n /** Accessible name override for the plan region (defaults to the heading). */\n 'aria-label'?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------- */\n\n/** English fallbacks for the (reused) lifecycle-state labels. */\nconst STATE_LABEL_FALLBACK: Record<CarePlanState, string> = {\n estimate: 'Estimate',\n accepted: 'Accepted',\n discarded: 'Discarded',\n closed: 'Closed',\n};\n\nconst ALERT_TONE_VARIANT: Record<\n CarePlanHeaderAlertTone,\n NonNullable<BadgeProps['variant']>\n> = {\n warning: 'warning',\n error: 'error',\n info: 'info',\n};\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const CarePlanHeader = forwardRef<HTMLElement, CarePlanHeaderProps>(\n function CarePlanHeader(\n {\n id,\n number,\n numberLabel,\n name,\n state,\n url,\n alerts,\n meta,\n dates,\n actions,\n headingTag = 'h3',\n surface = 'elevated',\n density = 'comfortable',\n locale,\n onActivate,\n 'aria-label': ariaLabel,\n className,\n ...rest\n },\n ref,\n ) {\n const { t, i18n } = useTranslation();\n const headingId = useId();\n const activeLocale = locale ?? i18n.language ?? 'en';\n\n useAgentRegistration(\n carePlanHeaderAgent,\n {\n getState: () => state,\n getAlertCount: () => alerts?.length ?? 0,\n },\n id,\n );\n\n const resolvedNumberLabel =\n numberLabel ??\n t('carePlanCard.number', {\n number,\n defaultValue: 'Care plan {{number}}',\n });\n const stateLabel = t(`carePlanCard.state.${state}`, {\n defaultValue: STATE_LABEL_FALLBACK[state],\n });\n\n const hasName = name != null && name !== '';\n const hasSafeUrl = !!url && isSafeEntityUrl(url);\n const hasAlerts = !!alerts && alerts.length > 0;\n const hasMeta = !!meta && meta.length > 0;\n\n // The date that matches the CURRENT lifecycle state rides INSIDE the state\n // badge (e.g. \"Accepted · {date}\") — the badge becomes self-describing. Any\n // OTHER dates (e.g. the acceptance date of a now-closed plan) remain in the\n // muted footer line below.\n const stateDateIso =\n state === 'accepted'\n ? dates?.acceptedIso\n : state === 'closed'\n ? dates?.closedIso\n : state === 'discarded'\n ? dates?.discardedIso\n : undefined;\n\n const footerDates: Array<{ key: string; label: string; iso: string }> = [];\n if (dates?.acceptedIso && state !== 'accepted') {\n footerDates.push({\n key: 'accepted',\n label: t('carePlanCard.date.accepted', 'Accepted on'),\n iso: dates.acceptedIso,\n });\n }\n if (dates?.closedIso && state !== 'closed') {\n footerDates.push({\n key: 'closed',\n label: t('carePlanCard.date.closed', 'Closed on'),\n iso: dates.closedIso,\n });\n }\n if (dates?.discardedIso && state !== 'discarded') {\n footerDates.push({\n key: 'discarded',\n label: t('carePlanCard.date.discarded', 'Discarded on'),\n iso: dates.discardedIso,\n });\n }\n const hasDates = footerDates.length > 0;\n\n const Heading = headingTag;\n const headingNode = (\n <Heading\n id={headingId}\n className=\"type-title-card ds:m-0 ds:text-[color:var(--foreground)]\"\n >\n {hasName ? name : resolvedNumberLabel}\n </Heading>\n );\n\n const datesLine = hasDates ? (\n <div className=\"type-body-sm ds:flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-md)] ds:gap-y-[var(--spacing-2xs)] ds:text-[color:var(--muted-foreground)]\">\n {footerDates.map((d) => (\n <span\n key={d.key}\n className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]\"\n >\n <span>{d.label}</span>\n <Timestamp value={d.iso} format=\"absolute\" locale={activeLocale} />\n </span>\n ))}\n </div>\n ) : null;\n\n return (\n <section\n ref={ref}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabel ? undefined : headingId}\n data-component=\"care-plan-header\"\n data-component-id={id}\n data-state={state}\n id={id}\n className={entitySurfaceVariants({ surface, density, className })}\n {...rest}\n >\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n {/* Heading row: the plan's single title (name, or the number label as\n a fallback when unnamed — platform's `getPresentationName()`) on\n the inline-start, the document actions docked inline-end. */}\n <div className=\"ds:flex ds:items-start ds:gap-[var(--spacing-sm)]\">\n <div className=\"ds:min-w-0 ds:flex-1\">\n {hasSafeUrl ? (\n <Link\n href={url as string}\n weight=\"strong\"\n onClick={(event) => {\n if (\n event.defaultPrevented ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey\n ) {\n return;\n }\n onActivate?.();\n }}\n >\n {headingNode}\n </Link>\n ) : (\n headingNode\n )}\n </div>\n {actions ? (\n <div className=\"ds:flex ds:shrink-0 ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]\">\n {actions}\n </div>\n ) : null}\n </div>\n\n {/* Lifecycle state + attention alerts — chips beneath the title. The\n state badge always leads the row; consumer alerts (e.g. a missing\n signature) follow. Size + gap match the shared metadata-chip strip\n (Badge `md` default + `gap-xs`) used by PatientSummaryCard and the\n PatientDetails header, so every card on a patient screen reads with\n one chip rhythm. */}\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]\">\n <Badge variant={CARE_PLAN_STATE_BADGE[state]} size=\"md\" withDot>\n {stateLabel}\n {stateDateIso ? (\n <>\n {' · '}\n <Timestamp\n value={stateDateIso}\n format=\"absolute\"\n locale={activeLocale}\n shape=\"bare\"\n />\n </>\n ) : null}\n </Badge>\n {hasAlerts\n ? alerts!.map((alert) => (\n <Badge\n key={alert.id}\n variant={ALERT_TONE_VARIANT[alert.tone ?? 'warning']}\n size=\"md\"\n leading={alert.icon}\n >\n {alert.label}\n </Badge>\n ))\n : null}\n </div>\n\n {/* Footer: meta (operator, price list, …) + lifecycle dates. */}\n {hasMeta || hasDates ? (\n <>\n <Separator orientation=\"horizontal\" />\n <div className=\"ds:flex ds:min-w-0 ds:flex-col ds:gap-[var(--spacing-xs)]\">\n {hasMeta ? (\n <div className=\"ds:flex ds:flex-wrap ds:gap-x-[var(--spacing-lg)] ds:gap-y-[var(--spacing-xs)]\">\n {meta!.map((item) => (\n <KeyValuePair\n key={item.id}\n label={item.label}\n value={item.value}\n icon={item.icon ?? undefined}\n data-field-id={item.id}\n />\n ))}\n </div>\n ) : null}\n {datesLine}\n </div>\n </>\n ) : null}\n </div>\n </section>\n );\n },\n);\n\nCarePlanHeader.displayName = 'CarePlanHeader';\n\n/** Surface variant union re-exported for downstream typing. */\nexport type CarePlanHeaderSurface = NonNullable<\n VariantProps<typeof entitySurfaceVariants>['surface']\n>;\n"],"names":["carePlanHeaderAgent","handle","STATE_LABEL_FALLBACK","ALERT_TONE_VARIANT","CarePlanHeader","forwardRef","id","number","numberLabel","name","state","url","alerts","meta","dates","actions","headingTag","surface","density","locale","onActivate","ariaLabel","className","rest","ref","t","i18n","useTranslation","headingId","useId","activeLocale","useAgentRegistration","resolvedNumberLabel","stateLabel","hasName","hasSafeUrl","isSafeEntityUrl","hasAlerts","hasMeta","stateDateIso","footerDates","hasDates","headingNode","jsx","datesLine","d","jsxs","Timestamp","entitySurfaceVariants","Link","event","Badge","CARE_PLAN_STATE_BADGE","Fragment","alert","Separator","item","KeyValuePair"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { jsx as F, jsxs as ke } from "react/jsx-runtime";
2
2
  import { useRef as De, useState as ne, useCallback as le, useEffect as fe, forwardRef as Se, useId as St, useMemo as Qe, useImperativeHandle as yt, Children as et, isValidElement as tt, createContext as It, useContext as Ct } from "react";
3
3
  import { c as nt } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as ye } from "react-i18next";
5
- import { I as Je } from "./icon-button-9c9Gp41m.js";
5
+ import { I as Je } from "./icon-button-DA2CAGHZ.js";
6
6
  import { C as Lt } from "./chevron-left-B8cOyH-V.js";
7
7
  import { C as wt } from "./chevron-right-I9AeSxH2.js";
8
8
  function Tt(e) {
@@ -1751,4 +1751,4 @@ export {
1751
1751
  yn as C,
1752
1752
  In as c
1753
1753
  };
1754
- //# sourceMappingURL=carousel.agent-pjORsMS8.js.map
1754
+ //# sourceMappingURL=carousel.agent-CLxdHEBP.js.map