@alfadocs/ui-kit 1.54.2 → 1.55.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 (621) hide show
  1. package/dist/_chunks/{accordion-C11v9ouP.js → accordion-Ch3xp0mX.js} +9 -9
  2. package/dist/_chunks/{actions-cell-renderer-CjzSqMgn.js → actions-cell-renderer-Dj1ZkvJj.js} +4 -4
  3. package/dist/_chunks/{address-autocomplete-BBZ0u_U1.js → address-autocomplete-bPR2mNBt.js} +2 -2
  4. package/dist/_chunks/address-fields-BfjxS05Z.js +298 -0
  5. package/dist/_chunks/{agenda-card-CakEvwnM.js → agenda-card-DauvvKX6.js} +2 -2
  6. package/dist/_chunks/{agenda-tray-B8vuZKjH.js → agenda-tray-ZKhDxlfw.js} +24 -24
  7. package/dist/_chunks/{ai-credits-notice-D9_qP2xc.js → ai-credits-notice-BoNJtOuE.js} +4 -4
  8. package/dist/_chunks/ai-fab-pill-BOu96kCx.js +30 -0
  9. package/dist/_chunks/{ai-permission-notice-Cr6o1f0f.js → ai-permission-notice-5vpblPCx.js} +3 -3
  10. package/dist/_chunks/{ai-prompt-input-DkL8W-nt.js → ai-prompt-input-Beh-O_rJ.js} +4 -4
  11. package/dist/_chunks/{alia-sidebar-DSUQ2RpK.js → alia-sidebar-DS0b54Mv.js} +12 -12
  12. package/dist/_chunks/{anamnesis-card-BT1tMt5O.js → anamnesis-card-BSlAhaoG.js} +4 -4
  13. package/dist/_chunks/{anamnesis-summary-card-Bv0CZ-mk.js → anamnesis-summary-card-2YfIYY2j.js} +2 -2
  14. package/dist/_chunks/{anamnesis-summary-rows-BMjSBqhS.js → anamnesis-summary-rows-Dtw5Hpg4.js} +425 -424
  15. package/dist/_chunks/{antenatal-schedule-timeline-BZzgjfyd.js → antenatal-schedule-timeline-Kf2Yg8uo.js} +4 -4
  16. package/dist/_chunks/{app-frame-Cos-GSfw.js → app-frame-B-0O9CrU.js} +40 -38
  17. package/dist/_chunks/{appointment-card-CA2ynsmN.js → appointment-card-Dh3fAcyf.js} +12 -12
  18. package/dist/_chunks/{appointment-peek-Cbrg36wj.js → appointment-peek-BIZaDeCi.js} +6 -6
  19. package/dist/_chunks/{appointment-timeline-CssAJLpL.js → appointment-timeline-DmqYEIT9.js} +32 -33
  20. package/dist/_chunks/{appointment-tray-EQUjllVy.js → appointment-tray-CyI_p3zU.js} +28 -28
  21. package/dist/_chunks/{appointment-workflow-status-DrWCNLbB.js → appointment-workflow-status-DMjuIK90.js} +2 -2
  22. package/dist/_chunks/{audio-recorder-BM68r6fe.js → audio-recorder-DWKKjGPt.js} +5 -6
  23. package/dist/_chunks/{auth-form-parts-Celi-TLV.js → auth-form-parts-CravOf0L.js} +6 -5
  24. package/dist/_chunks/{autocomplete-BXm1rnT0.js → autocomplete-DosDnGie.js} +3 -3
  25. package/dist/_chunks/{avatar-DYtwj1-R.js → avatar-WZY3eGE7.js} +10 -10
  26. package/dist/_chunks/{balance-badge-cell-BDX1Krdv.js → balance-badge-cell-zP-iN-Pd.js} +5 -5
  27. package/dist/_chunks/{benefit-card-DB1Kdrmc.js → benefit-card-BWBClvdF.js} +46 -45
  28. package/dist/_chunks/{bishop-score-CGAVpIWL.js → bishop-score-BxA20j9T.js} +5 -5
  29. package/dist/_chunks/{bmi-calculator-g_wjo4nq.js → bmi-calculator-DTZhRhXe.js} +5 -5
  30. package/dist/_chunks/{booking-BN7TXe27.js → booking-uZO10TLK.js} +1553 -1458
  31. package/dist/_chunks/{button-CYPx2xFq.js → button-Bn16lcFM.js} +10 -7
  32. package/dist/_chunks/{button-group-CpEycMps.js → button-group-CWlwR-A5.js} +3 -3
  33. package/dist/_chunks/{calendar-BwF5nQuW.js → calendar-6-24PQ1u.js} +4 -4
  34. package/dist/_chunks/{calendar-workspace-BbZIx2PT.js → calendar-workspace-DVajSkKA.js} +868 -883
  35. package/dist/_chunks/{card-DPmk26CL.js → card-DMO2nkt4.js} +45 -42
  36. package/dist/_chunks/{care-plan-card-BqI-_B4T.js → care-plan-card-Ddjh5Doc.js} +5 -5
  37. package/dist/_chunks/{care-plan-entry-card-CbsZmfQM.js → care-plan-entry-card-0rpR-4Te.js} +5 -5
  38. package/dist/_chunks/{care-plan-header-BIS4CGcp.js → care-plan-header-BeMYMiI7.js} +3 -3
  39. package/dist/_chunks/{carousel.agent-DW9iPLdy.js → carousel.agent-D3xthzTf.js} +44 -45
  40. package/dist/_chunks/{chart-C134Ibwm.js → chart-C2RBJERE.js} +3 -3
  41. package/dist/_chunks/{chat-container-CAfyTxat.js → chat-container-baxzy8k8.js} +21 -22
  42. package/dist/_chunks/{chat-input-Bg99kcl3.js → chat-input-PtrSu1ZC.js} +27 -27
  43. package/dist/_chunks/{chat-message-D4rvLoIJ.js → chat-message-CmGUcajG.js} +4 -4
  44. package/dist/_chunks/city-input-BC_nYINn.js +185 -0
  45. package/dist/_chunks/{clinical-note-card-gmWXEwSu.js → clinical-note-card-14JIoUR0.js} +3 -3
  46. package/dist/_chunks/{code-block-CRVa-Thh.js → code-block-BQgK70mO.js} +2 -2
  47. package/dist/_chunks/{collapsible-CTjxzGuF.js → collapsible-DVPM46bq.js} +27 -27
  48. package/dist/_chunks/{color-picker-Bu0wM8xv.js → color-picker-BRQ4Y9SO.js} +3 -3
  49. package/dist/_chunks/{combobox-DppVSuUm.js → combobox-U5yfO6o0.js} +262 -218
  50. package/dist/_chunks/{connection-status-BwTnjnUj.js → connection-status-ncTjUPt6.js} +4 -4
  51. package/dist/_chunks/{contact-card-CIVCcicP.js → contact-card-CmK05vNb.js} +2 -2
  52. package/dist/_chunks/{contact-profile-card-B-HzocbB.js → contact-profile-card-C5DbP_X3.js} +4 -4
  53. package/dist/_chunks/{control-room-rail-g4vNSPFi.js → control-room-rail-Tx2jW250.js} +3 -3
  54. package/dist/_chunks/{copy-field-CiIuVbKe.js → copy-field-CvTIuA_p.js} +3 -3
  55. package/dist/_chunks/{country-select-r3QC7cVA.js → country-select-DF5Bd_mn.js} +2 -2
  56. package/dist/_chunks/{cycle-calculator-CwDEdmda.js → cycle-calculator-Dgfqr4Q4.js} +7 -7
  57. package/dist/_chunks/{dashboard-grid--rkojX6m.js → dashboard-grid-SAGoyCtL.js} +71 -71
  58. package/dist/_chunks/{data-table-DeUoJzNn.js → data-table-C6T31E33.js} +244 -240
  59. package/dist/_chunks/{data-table-tabs-BfEmXvUk.js → data-table-tabs-Xhg5G0gU.js} +4 -4
  60. package/dist/_chunks/{date-picker-variants-B3AFKDSu.js → date-picker-variants-BnF-sHzq.js} +19 -10
  61. package/dist/_chunks/{date-picker-BnhBmcH6.js → date-picker-wRAcq2lt.js} +49 -49
  62. package/dist/_chunks/{date-range-picker-Dg050N1d.js → date-range-picker-BOvHwWO5.js} +5 -5
  63. package/dist/_chunks/{date-time-picker-Ckl6ezCL.js → date-time-picker-CLeLKuv9.js} +5 -5
  64. package/dist/_chunks/{dependent-selector-CPiolWiw.js → dependent-selector-Bet3XAFj.js} +2 -2
  65. package/dist/_chunks/{description-list-BKQMUiXv.js → description-list-DkLeHiew.js} +2 -2
  66. package/dist/_chunks/{dev-bypass-button-Y1s7gPSD.js → dev-bypass-button-BhGn6evf.js} +2 -2
  67. package/dist/_chunks/{document-preview-C_6R_VZK.js → document-preview-uoTekVR7.js} +5 -5
  68. package/dist/_chunks/{document-scanner-pADVX447.js → document-scanner-CQS9kv84.js} +17 -17
  69. package/dist/_chunks/{dropdown-menu-B5mgV1kV.js → dropdown-menu-BQSNVp4x.js} +2 -2
  70. package/dist/_chunks/{due-date-calculator-_0Dz_d7n.js → due-date-calculator-DXDJbUzo.js} +8 -8
  71. package/dist/_chunks/{editable-currency-cell-renderer-CfFp_1hI.js → editable-currency-cell-renderer-CmYcMuwi.js} +4 -4
  72. package/dist/_chunks/{editable-description-CCrAEJMq.js → editable-description-DuJlvltc.js} +3 -3
  73. package/dist/_chunks/editor-overlay-NMxzcO6J.js +90 -0
  74. package/dist/_chunks/{email-input-Cmeo4zdT.js → email-input-C7THAwh2.js} +3 -3
  75. package/dist/_chunks/{empty-state-CgvmPPvW.js → empty-state-gNG3qYCX.js} +2 -2
  76. package/dist/_chunks/{entity-card-D1Yrh9wf.js → entity-card-fpm-KUKc.js} +26 -27
  77. package/dist/_chunks/{entity-summary-C3E4JKVr.js → entity-summary-DcB0fIiv.js} +5 -5
  78. package/dist/_chunks/{error-boundary-Bzjk9Q2l.js → error-boundary-ChowhO6w.js} +2 -2
  79. package/dist/_chunks/error-page-CpuYbpOB.js +344 -0
  80. package/dist/_chunks/{error-page-illustration-bFti0VEc.js → error-page-illustration-BdJLuMdV.js} +12 -12
  81. package/dist/_chunks/error-summary-BhM8FEkl.js +101 -0
  82. package/dist/_chunks/{face-scheme-pZgT26gB.js → face-scheme-BicuUA2K.js} +8 -8
  83. package/dist/_chunks/{fetal-weight-CbE61Uyk.js → fetal-weight-BWaqqjea.js} +5 -5
  84. package/dist/_chunks/{field-array-DGiIHCdy.js → field-array-BO-kaKFK.js} +3 -3
  85. package/dist/_chunks/{file-manager-DdsAd4TQ.js → file-manager-dIJQUZvq.js} +52 -52
  86. package/dist/_chunks/{finished-terminal-BguGAUdg.js → finished-terminal-CPSDrIMB.js} +3 -3
  87. package/dist/_chunks/{fiscal-code-input-DNA_SbQx.js → fiscal-code-input-DesSQ6Fh.js} +168 -168
  88. package/dist/_chunks/floating-clearance-nIx9fFLy.js +20 -0
  89. package/dist/_chunks/forgot-password-form-DEx-M_QR.js +234 -0
  90. package/dist/_chunks/{form-field-D9WfDpYB.js → form-field-Ani72sVY.js} +72 -61
  91. package/dist/_chunks/format-price-BKle6Xwt.js +52 -0
  92. package/dist/_chunks/{freemium-paywall-CtUCj-ND.js → freemium-paywall-B6ojVXq7.js} +44 -42
  93. package/dist/_chunks/{gestational-age-calculator-BMkoLJGR.js → gestational-age-calculator-BfGpt3du.js} +9 -9
  94. package/dist/_chunks/glass-surface-CPok0jEe.js +20 -0
  95. package/dist/_chunks/{hcg-doubling-BtW2pBJX.js → hcg-doubling-BIYyI2Yo.js} +7 -7
  96. package/dist/_chunks/{header--a4ZTiM5.js → header-B9552pLh.js} +15 -14
  97. package/dist/_chunks/{header-settings-kkVm9VP3.js → header-settings-ge_3gYEq.js} +4 -4
  98. package/dist/_chunks/heatmap-BARGZZt2.js +2865 -0
  99. package/dist/_chunks/{help-me-write-templates-Cy-iO5AU.js → help-me-write-templates-B7L3zGsE.js} +28 -28
  100. package/dist/_chunks/{hover-card-CcRSI4gy.js → hover-card-BnTueNS2.js} +2 -2
  101. package/dist/_chunks/{iban-input-CpOUMMR-.js → iban-input-B9L2QDHh.js} +2 -2
  102. package/dist/_chunks/{icon-button-mKIvw90h.js → icon-button-COX76Jdj.js} +2 -2
  103. package/dist/_chunks/{icon-button-group-BsQkbCX4.js → icon-button-group-C5hhI-R5.js} +3 -3
  104. package/dist/_chunks/{icon-picker-CSViTQL9.js → icon-picker-DWrqmI1c.js} +20 -20
  105. package/dist/_chunks/{image-cropper-CNBGkG7P.js → image-cropper-D0kkQ4lG.js} +2 -2
  106. package/dist/_chunks/{info-tip-Czh1izZ6.js → info-tip-B0jmIt6M.js} +2 -2
  107. package/dist/_chunks/{input-surface-xyERuLU_.js → input-surface-iBmxVBfr.js} +11 -12
  108. package/dist/_chunks/{insert-result-BuWQl11Z.js → insert-result-C1C2OCc3.js} +2 -2
  109. package/dist/_chunks/intl-locale-ySteXlDD.js +23 -0
  110. package/dist/_chunks/{kbd-BLovyx1R.js → kbd-Bx7eQv9f.js} +70 -66
  111. package/dist/_chunks/{key-value-pair-BkXjt88Z.js → key-value-pair-Ax8IJr1M.js} +2 -2
  112. package/dist/_chunks/{kit-extensions-Kca1tkfP.js → kit-extensions-C9-v8Dih.js} +6 -6
  113. package/dist/_chunks/{link-cell-renderer-D-xv2HMS.js → link-cell-renderer-DlBVPMTi.js} +9 -9
  114. package/dist/_chunks/{locale-picker-BhNIgeXA.js → locale-picker-DfNSdOpy.js} +4 -4
  115. package/dist/_chunks/login-dev-card-DmZ1B0lB.js +309 -0
  116. package/dist/_chunks/{logo-CuaqxTGK.js → logo-hIsyVE96.js} +19 -19
  117. package/dist/_chunks/{map-view-CQmqQJwK.js → map-view-CO2v0hfp.js} +9 -9
  118. package/dist/_chunks/{marketplace-app-shell-DbEfoNxe.js → marketplace-app-shell-Dcx-JEjg.js} +11 -11
  119. package/dist/_chunks/{message-card-C1buKlzM.js → message-card-DVo8-dOm.js} +36 -28
  120. package/dist/_chunks/{message-tray-DyBVqlGj.js → message-tray-BB95DA82.js} +5 -5
  121. package/dist/_chunks/{money-GypsuFk2.js → money-CeClE1nH.js} +2 -2
  122. package/dist/_chunks/multi-select-BT23EnSA.js +688 -0
  123. package/dist/_chunks/{muscle-scheme-DfYQ0Z3v.js → muscle-scheme-BDgIaGeW.js} +2 -2
  124. package/dist/_chunks/{nav-grid-BPbmzHY0.js → nav-grid-BqCPH8sm.js} +16 -17
  125. package/dist/_chunks/{notes-panel-BPb-2ZnJ.js → notes-panel-I8ntrrUW.js} +54 -53
  126. package/dist/_chunks/{notification-card-DubeUbVJ.js → notification-card-BGCIL6Mu.js} +56 -48
  127. package/dist/_chunks/{notification-tray-DJ0gtfu6.js → notification-tray-__sJXnsz.js} +5 -5
  128. package/dist/_chunks/{number-input-DRDRYZJg.js → number-input-CVwI1ltI.js} +2 -2
  129. package/dist/_chunks/{operator-hero-BnBPxwOi.js → operator-hero-Dyd2IGbR.js} +4 -4
  130. package/dist/_chunks/{optical-prescription-DBvebioV.js → optical-prescription-Do6e3wfs.js} +5 -5
  131. package/dist/_chunks/option-row-Dc7BrbK8.js +37 -0
  132. package/dist/_chunks/{otp-input-BedEqmIV.js → otp-input-CGMu30_e.js} +2 -2
  133. package/dist/_chunks/{pagination-CzEkpfti.js → pagination-BR1_GfD_.js} +2 -2
  134. package/dist/_chunks/{panel-subview-D8HGXaUa.js → panel-subview-BT-Apwgb.js} +3 -3
  135. package/dist/_chunks/{parse-DeDYl04y.js → parse-jZ-i8Xgj.js} +2 -2
  136. package/dist/_chunks/{password-input-B7pQTk7l.js → password-input-BokZ_rnT.js} +162 -140
  137. package/dist/_chunks/{patient-details-BP9r_lNS.js → patient-details-DsTtjpuX.js} +6 -6
  138. package/dist/_chunks/{patient-field-row-BK9JjbzA.js → patient-field-row-BvZ9luz-.js} +212 -211
  139. package/dist/_chunks/{patient-search-Dm3w0jWw.js → patient-search-D5xlXmd2.js} +5 -5
  140. package/dist/_chunks/{patient-summary-card-DGbRLzF1.js → patient-summary-card-3dspc2tR.js} +7 -7
  141. package/dist/_chunks/{payment-automation-upsell-DNiraNhF.js → payment-automation-upsell-DEUfM7EU.js} +5 -5
  142. package/dist/_chunks/{payment-form-B08gHZIY.js → payment-form-v6zZuV1_.js} +60 -56
  143. package/dist/_chunks/{payment-request-card-CR7SjsRs.js → payment-request-card-DAGqh9Yx.js} +5 -5
  144. package/dist/_chunks/{pdf-viewer-zv7pkUPA.js → pdf-viewer-C3minW5b.js} +5 -5
  145. package/dist/_chunks/periodontal-chart-BqwLxy2m.js +1413 -0
  146. package/dist/_chunks/{periodontal-chart-card-Djr3en8Q.js → periodontal-chart-card-CWZ1YM1h.js} +3 -3
  147. package/dist/_chunks/{periodontal-diagnosis-DmVIqXtC.js → periodontal-diagnosis-C9IuvLId.js} +2 -2
  148. package/dist/_chunks/{periodontal-risk-chart-C1Y5f-md.js → periodontal-risk-chart-D3DjIymT.js} +2 -2
  149. package/dist/_chunks/{phone-input-BzeUr49H.js → phone-input-DxkHMYmu.js} +139 -139
  150. package/dist/_chunks/{popover-9_v-7fJc.js → popover-BI3oV3eY.js} +2 -2
  151. package/dist/_chunks/{postal-code-input-BmbqjkfD.js → postal-code-input-CfZOnIkW.js} +2 -2
  152. package/dist/_chunks/{practice-profile-hero-Bc3AyBiM.js → practice-profile-hero-C8RPACCi.js} +3 -3
  153. package/dist/_chunks/{practice-results-D3liWOz1.js → practice-results-DxOgbPDy.js} +9 -9
  154. package/dist/_chunks/{pregnancy-dating-DV3o2PPl.js → pregnancy-dating-R3q5n1Wh.js} +10 -10
  155. package/dist/_chunks/{pregnancy-weight-gain-BLjWgtS9.js → pregnancy-weight-gain-DwmNklDU.js} +5 -5
  156. package/dist/_chunks/{privacy-lock-KDPKiTpH.js → privacy-lock-WkUgwIj_.js} +4 -4
  157. package/dist/_chunks/{privacy-mask-H8yYwgIb.js → privacy-mask-ChIjELJC.js} +3 -3
  158. package/dist/_chunks/{product-hub-panel-M5X3TYzq.js → product-hub-panel-BSSiGGG4.js} +49 -49
  159. package/dist/_chunks/{progress-TIAsNHQW.js → progress-D_g_Sl2g.js} +3 -5
  160. package/dist/_chunks/{province-select-DtF2ukoC.js → province-select-Bd20Z9Br.js} +2 -2
  161. package/dist/_chunks/{public-footer-Bfs81Qzp.js → public-footer-CxpG6J1M.js} +93 -90
  162. package/dist/_chunks/{public-header.agent-CrXkGtTF.js → public-header.agent-BWusjxY8.js} +3 -3
  163. package/dist/_chunks/{qr-code-Ofx7ryyu.js → qr-code-DHEma21c.js} +47 -48
  164. package/dist/_chunks/{radiograph-panel.agent-C4j6eoQn.js → radiograph-panel.agent-BA90I3Mu.js} +8 -8
  165. package/dist/_chunks/registration-form-D7iNqMBF.js +819 -0
  166. package/dist/_chunks/{reviews-panel-CyxZ0VmZ.js → reviews-panel-CDcK6W3b.js} +6 -6
  167. package/dist/_chunks/{rich-text-editor-CCCSEPlG.js → rich-text-editor-Blp4smUr.js} +791 -799
  168. package/dist/_chunks/{scroll-area-BZOvUhwQ.js → scroll-area-ZtFCv9K7.js} +56 -46
  169. package/dist/_chunks/{search-bar-D695TCDH.js → search-bar-DQJS0wJN.js} +209 -199
  170. package/dist/_chunks/search-input-BAlDd05M.js +246 -0
  171. package/dist/_chunks/{section-card-XR2bW1Ie.js → section-card-ChJdOlBU.js} +2 -2
  172. package/dist/_chunks/{select-DHPmASkG.js → select-Ce5RMk93.js} +274 -236
  173. package/dist/_chunks/{session-countdown-DWUVDDox.js → session-countdown-CBINYw8H.js} +3 -3
  174. package/dist/_chunks/{sheet-BTgxkDJS.js → sheet-CNFW8mYZ.js} +3 -3
  175. package/dist/_chunks/{sidebar-2GBc0ZUa.js → sidebar-DLsG2AIk.js} +123 -124
  176. package/dist/_chunks/{sign-document-B_3U-S6g.js → sign-document-B6HlyCGV.js} +22 -22
  177. package/dist/_chunks/{sign-in-with-alfadocs-button-DFmgQuDo.js → sign-in-with-alfadocs-button-D91_x8DX.js} +4 -4
  178. package/dist/_chunks/{signature-capture-F6KViBF_.js → signature-capture-Chqh62Pc.js} +19 -20
  179. package/dist/_chunks/{signature-field-DLDznGnB.js → signature-field-Y01UB5DA.js} +2 -2
  180. package/dist/_chunks/{signature-request-BdolmJk4.js → signature-request-rgMsgo-C.js} +8 -8
  181. package/dist/_chunks/{signed-out-frame-dz1rLJ65.js → signed-out-frame-B2GTIeqA.js} +51 -51
  182. package/dist/_chunks/sliders-horizontal-D-F97cnE.js +22 -0
  183. package/dist/_chunks/{slot-grid-kCDoV3k4.js → slot-grid-sVZriOiQ.js} +4 -4
  184. package/dist/_chunks/{social-sign-in-button-BMGNlUWs.js → social-sign-in-button-yUqwhnPZ.js} +2 -2
  185. package/dist/_chunks/{spinner-a0FTYX9Q.js → spinner-CoflYlEx.js} +2 -2
  186. package/dist/_chunks/{stat-Ce9ymEKm.js → stat-51CDL4au.js} +25 -26
  187. package/dist/_chunks/state-backed-text-input-DECQy5aA.js +12 -0
  188. package/dist/_chunks/{stepper-accordion-BPNS6J6B.js → stepper-accordion-D7lnBGh2.js} +49 -49
  189. package/dist/_chunks/{streaming-text-BAPn_sZs.js → streaming-text-BKZmbW1Q.js} +31 -32
  190. package/dist/_chunks/subDays-DlMw8Xng.js +8 -0
  191. package/dist/_chunks/{tab-bar-DRKiomgj.js → tab-bar-Bm-rJB7Y.js} +7 -8
  192. package/dist/_chunks/{tabs-yIY-RySP.js → tabs-I2wf_nC7.js} +3 -3
  193. package/dist/_chunks/{task-card-C02Km4Gb.js → task-card-BMXMh3uE.js} +9 -9
  194. package/dist/_chunks/{task-editor-Dl27rI3J.js → task-editor-Ctxsa1BY.js} +155 -157
  195. package/dist/_chunks/{task-tray-By6DPwbT.js → task-tray-DsBO-AaP.js} +31 -31
  196. package/dist/_chunks/{tasks-panel-BkN9sROF.js → tasks-panel-CdgZQQgG.js} +130 -131
  197. package/dist/_chunks/{text-area-CDuItrvL.js → text-area-COMVJ1yE.js} +106 -96
  198. package/dist/_chunks/text-input-CaG9ApoE.js +333 -0
  199. package/dist/_chunks/{theme-toggle-BAHz3itd.js → theme-toggle-PpFcFoYK.js} +4 -4
  200. package/dist/_chunks/time-picker-DVfyAR81.js +871 -0
  201. package/dist/_chunks/{timeline-CVLjybJ3.js → timeline-DG8wAlAx.js} +3 -3
  202. package/dist/_chunks/{toast-UMUvXFsA.js → toast-CPqguP7G.js} +2 -2
  203. package/dist/_chunks/{token-insert-menu-DgtBIbNu.js → token-insert-menu-B-pWFDKX.js} +3 -3
  204. package/dist/_chunks/{tool-rail-CwXN-sDC.js → tool-rail-Bwyuw_Ot.js} +113 -110
  205. package/dist/_chunks/{tooth-scheme-BAMhwCZe.js → tooth-scheme-BAO_voUO.js} +97 -97
  206. package/dist/_chunks/{transcript-panel-CLgtyVbR.js → transcript-panel-CjsiDB1K.js} +4 -4
  207. package/dist/_chunks/{treatment-receipt-DF2Slh-x.js → treatment-receipt-BSVOfStA.js} +2 -2
  208. package/dist/_chunks/{typing-indicator-BmwMQSxw.js → typing-indicator-B1RkE8jD.js} +16 -15
  209. package/dist/_chunks/{unit-converter-CXNr5P4J.js → unit-converter-DS4UB_59.js} +5 -5
  210. package/dist/_chunks/{use-appointment-details-read-BEbLseXW.js → use-appointment-details-read-DinTrRIW.js} +214 -214
  211. package/dist/_chunks/use-dom-value-DTxHhQAN.js +16 -0
  212. package/dist/_chunks/{use-prism-DaspP8w-.js → use-prism-DBOiELx7.js} +9 -9
  213. package/dist/_chunks/use-registration-submit-eWAECgUC.js +171 -0
  214. package/dist/_chunks/use-state-backed-input-C7ESmxKB.js +59 -0
  215. package/dist/_chunks/voice-control-panel-Bg1eklL0.js +1009 -0
  216. package/dist/_chunks/{wallet-pay-button-Dew8Pmgq.js → wallet-pay-button-DFP5FW0D.js} +2 -2
  217. package/dist/_chunks/{warning-stack-B_v_qMBI.js → warning-stack-ubD0IZCy.js} +25 -25
  218. package/dist/_chunks/{widget-picker-BCbwD5Z1.js → widget-picker-D8RiWrJd.js} +38 -38
  219. package/dist/_chunks/{workflow-map-PzamnfJK.js → workflow-map-D3mezmGB.js} +8 -8
  220. package/dist/_chunks/{workflow-status-DDnsIrLt.js → workflow-status-BT27_fQp.js} +3 -3
  221. package/dist/agent-catalog.json +584 -14
  222. package/dist/agent-i18n/en.json +51 -10
  223. package/dist/components/_shared/ai-fab-pill.d.ts +18 -0
  224. package/dist/components/_shared/floating-clearance.d.ts +12 -0
  225. package/dist/components/_shared/glass-surface.d.ts +22 -0
  226. package/dist/components/_shared/input-surface.d.ts +1 -1
  227. package/dist/components/_shared/intl-locale.d.ts +7 -0
  228. package/dist/components/_shared/option-row.d.ts +30 -0
  229. package/dist/components/_shared/option.d.ts +2 -0
  230. package/dist/components/_shared/state-backed-text-input.d.ts +16 -0
  231. package/dist/components/_shared/use-dom-value.d.ts +20 -0
  232. package/dist/components/_shared/use-state-backed-input.d.ts +31 -0
  233. package/dist/components/accordion/index.js +1 -1
  234. package/dist/components/address-autocomplete/index.js +1 -1
  235. package/dist/components/address-fields/address-fields.d.ts +4 -0
  236. package/dist/components/address-fields/index.js +1 -1
  237. package/dist/components/agenda-card/index.js +1 -1
  238. package/dist/components/agenda-tray/index.js +1 -1
  239. package/dist/components/ai-credits-notice/index.js +1 -1
  240. package/dist/components/ai-permission-notice/ai-permission-notice.d.ts +34 -0
  241. package/dist/components/ai-permission-notice/index.d.ts +1 -1
  242. package/dist/components/ai-permission-notice/index.js +1 -1
  243. package/dist/components/ai-prompt-input/index.js +1 -1
  244. package/dist/components/anamnesis-card/index.js +1 -1
  245. package/dist/components/anamnesis-summary-card/index.js +1 -1
  246. package/dist/components/app-frame/index.js +1 -1
  247. package/dist/components/appointment-card/index.js +2 -2
  248. package/dist/components/appointment-details-panel/index.js +1 -1
  249. package/dist/components/appointment-peek/index.js +1 -1
  250. package/dist/components/appointment-timeline/index.js +1 -1
  251. package/dist/components/audio-recorder/index.js +1 -1
  252. package/dist/components/autocomplete/index.js +1 -1
  253. package/dist/components/avatar/index.js +1 -1
  254. package/dist/components/benefit-card/index.js +1 -1
  255. package/dist/components/bishop-score/index.js +1 -1
  256. package/dist/components/bmi-calculator/index.js +1 -1
  257. package/dist/components/booking/booking-types.d.ts +10 -5
  258. package/dist/components/booking/index.js +1 -1
  259. package/dist/components/booking/payment.d.ts +19 -0
  260. package/dist/components/button/index.js +2 -2
  261. package/dist/components/button-group/index.js +1 -1
  262. package/dist/components/calendar/index.js +1 -1
  263. package/dist/components/card/index.js +1 -1
  264. package/dist/components/care-plan-card/index.js +1 -1
  265. package/dist/components/care-plan-entry-card/index.js +1 -1
  266. package/dist/components/care-plan-header/index.js +1 -1
  267. package/dist/components/carousel/index.js +1 -1
  268. package/dist/components/chart/index.js +1 -1
  269. package/dist/components/chat-container/index.js +1 -1
  270. package/dist/components/chat-input/index.js +1 -1
  271. package/dist/components/chat-message/index.js +1 -1
  272. package/dist/components/city-input/index.js +1 -1
  273. package/dist/components/clinical-note-card/index.js +1 -1
  274. package/dist/components/collapsible/index.js +1 -1
  275. package/dist/components/color-picker/index.js +1 -1
  276. package/dist/components/combobox/combobox.d.ts +6 -0
  277. package/dist/components/combobox/index.js +1 -1
  278. package/dist/components/connection-status/index.js +1 -1
  279. package/dist/components/contact-card/index.js +1 -1
  280. package/dist/components/contact-profile-card/index.js +1 -1
  281. package/dist/components/control-room-rail/index.js +1 -1
  282. package/dist/components/copy-field/index.js +1 -1
  283. package/dist/components/country-select/index.js +1 -1
  284. package/dist/components/cycle-calculator/index.js +1 -1
  285. package/dist/components/dashboard-grid/index.js +1 -1
  286. package/dist/components/data-table/index.js +4 -4
  287. package/dist/components/data-table-tabs/index.js +1 -1
  288. package/dist/components/date-picker/date-picker.d.ts +3 -3
  289. package/dist/components/date-picker/index.js +1 -1
  290. package/dist/components/date-range-picker/date-range-picker.d.ts +3 -3
  291. package/dist/components/date-range-picker/index.js +1 -1
  292. package/dist/components/date-time-picker/index.js +1 -1
  293. package/dist/components/dependent-selector/index.js +1 -1
  294. package/dist/components/description-list/index.js +1 -1
  295. package/dist/components/dev-bypass-button/index.js +1 -1
  296. package/dist/components/document-preview/index.js +1 -1
  297. package/dist/components/document-scanner/index.js +1 -1
  298. package/dist/components/dropdown-menu/index.js +1 -1
  299. package/dist/components/due-date-calculator/index.js +2 -2
  300. package/dist/components/editable-description/index.js +1 -1
  301. package/dist/components/editor-overlay/index.js +1 -1
  302. package/dist/components/email-input/email-input.d.ts +1 -1
  303. package/dist/components/email-input/index.js +1 -1
  304. package/dist/components/empty-state/index.js +1 -1
  305. package/dist/components/entity-summary/index.js +1 -1
  306. package/dist/components/error-boundary/index.js +1 -1
  307. package/dist/components/error-summary/error-summary.d.ts +50 -0
  308. package/dist/components/error-summary/index.d.ts +2 -0
  309. package/dist/components/error-summary/index.js +5 -0
  310. package/dist/components/face-scheme/index.js +1 -1
  311. package/dist/components/fetal-weight/index.js +1 -1
  312. package/dist/components/field-array/index.js +1 -1
  313. package/dist/components/file-manager/index.js +1 -1
  314. package/dist/components/finished-terminal/index.js +1 -1
  315. package/dist/components/fiscal-code-input/index.js +1 -1
  316. package/dist/components/form-field/form-field-context.d.ts +5 -0
  317. package/dist/components/form-field/form-field.d.ts +9 -0
  318. package/dist/components/form-field/index.js +1 -1
  319. package/dist/components/freemium-paywall/index.js +1 -1
  320. package/dist/components/gestational-age-calculator/index.js +1 -1
  321. package/dist/components/hcg-doubling/index.js +1 -1
  322. package/dist/components/header/index.js +1 -1
  323. package/dist/components/header-settings/index.js +1 -1
  324. package/dist/components/heatmap/heatmap-context.d.ts +21 -0
  325. package/dist/components/heatmap/heatmap-format.d.ts +59 -0
  326. package/dist/components/heatmap/heatmap-grid.d.ts +66 -0
  327. package/dist/components/heatmap/heatmap-legend.d.ts +36 -0
  328. package/dist/components/heatmap/heatmap-model.d.ts +152 -0
  329. package/dist/components/heatmap/heatmap-scale.d.ts +125 -0
  330. package/dist/components/heatmap/heatmap-table-view.d.ts +35 -0
  331. package/dist/components/heatmap/heatmap-tooltip.d.ts +40 -0
  332. package/dist/components/heatmap/heatmap-variants.d.ts +87 -0
  333. package/dist/components/heatmap/heatmap-window.d.ts +54 -0
  334. package/dist/components/heatmap/heatmap.agent.d.ts +4 -0
  335. package/dist/components/heatmap/heatmap.d.ts +186 -0
  336. package/dist/components/heatmap/index.d.ts +8 -0
  337. package/dist/components/heatmap/index.js +8 -0
  338. package/dist/components/hover-card/index.js +1 -1
  339. package/dist/components/iban-input/index.js +1 -1
  340. package/dist/components/icon-button/index.js +1 -1
  341. package/dist/components/icon-button-group/index.js +1 -1
  342. package/dist/components/icon-picker/index.js +1 -1
  343. package/dist/components/image-cropper/index.js +1 -1
  344. package/dist/components/index.d.ts +3 -0
  345. package/dist/components/info-tip/index.js +1 -1
  346. package/dist/components/kbd/index.js +1 -1
  347. package/dist/components/key-value-pair/index.js +1 -1
  348. package/dist/components/locale-picker/index.js +1 -1
  349. package/dist/components/logo/index.js +1 -1
  350. package/dist/components/map-view/index.js +1 -1
  351. package/dist/components/message-card/index.js +1 -1
  352. package/dist/components/message-tray/index.js +1 -1
  353. package/dist/components/money/index.js +1 -1
  354. package/dist/components/multi-select/index.js +1 -1
  355. package/dist/components/multi-select/multi-select.d.ts +6 -0
  356. package/dist/components/muscle-scheme/index.js +1 -1
  357. package/dist/components/nav-grid/index.js +1 -1
  358. package/dist/components/notes-panel/index.js +1 -1
  359. package/dist/components/notification-card/index.js +1 -1
  360. package/dist/components/notification-tray/index.js +1 -1
  361. package/dist/components/number-input/index.js +1 -1
  362. package/dist/components/operator-hero/index.js +1 -1
  363. package/dist/components/optical-prescription/index.js +1 -1
  364. package/dist/components/otp-input/index.js +1 -1
  365. package/dist/components/pagination/index.js +1 -1
  366. package/dist/components/panel-subview/index.js +1 -1
  367. package/dist/components/password-input/index.js +1 -1
  368. package/dist/components/patient-details/index.js +1 -1
  369. package/dist/components/patient-search/index.js +1 -1
  370. package/dist/components/patient-summary-card/index.js +1 -1
  371. package/dist/components/patient-table/index.js +1 -1
  372. package/dist/components/payment-card/index.js +1 -1
  373. package/dist/components/payment-form/index.js +1 -1
  374. package/dist/components/pdf-viewer/index.js +1 -1
  375. package/dist/components/periodontal-chart/index.d.ts +1 -1
  376. package/dist/components/periodontal-chart/index.js +1 -1
  377. package/dist/components/periodontal-chart/periodontal-chart.d.ts +44 -1
  378. package/dist/components/periodontal-chart-card/index.js +1 -1
  379. package/dist/components/periodontal-diagnosis/index.js +1 -1
  380. package/dist/components/periodontal-risk-chart/index.js +1 -1
  381. package/dist/components/phone-input/index.js +1 -1
  382. package/dist/components/popover/index.js +1 -1
  383. package/dist/components/postal-code-input/index.js +1 -1
  384. package/dist/components/practice-profile-hero/index.js +1 -1
  385. package/dist/components/practice-results/index.js +1 -1
  386. package/dist/components/pregnancy-dating/index.js +1 -1
  387. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  388. package/dist/components/privacy-lock/index.js +1 -1
  389. package/dist/components/product-hub-tray/index.js +1 -1
  390. package/dist/components/progress/index.js +1 -1
  391. package/dist/components/province-select/index.js +1 -1
  392. package/dist/components/public-footer/index.js +1 -1
  393. package/dist/components/public-header/index.js +1 -1
  394. package/dist/components/qr-code/index.js +1 -1
  395. package/dist/components/radiograph-panel/index.js +1 -1
  396. package/dist/components/reviews-panel/index.js +1 -1
  397. package/dist/components/rich-text-editor/index.js +2 -2
  398. package/dist/components/rich-text-editor/rich-text-editor.d.ts +5 -20
  399. package/dist/components/scroll-area/index.js +1 -1
  400. package/dist/components/scroll-area/scroll-area.d.ts +17 -1
  401. package/dist/components/search-bar/index.js +1 -1
  402. package/dist/components/search-input/index.js +1 -1
  403. package/dist/components/section-card/index.js +1 -1
  404. package/dist/components/select/index.js +1 -1
  405. package/dist/components/select/select.d.ts +41 -0
  406. package/dist/components/session-countdown/index.js +1 -1
  407. package/dist/components/sheet/index.js +1 -1
  408. package/dist/components/sidebar/index.js +1 -1
  409. package/dist/components/sign-document/index.js +1 -1
  410. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  411. package/dist/components/signature-capture/index.js +1 -1
  412. package/dist/components/signature-field/index.js +1 -1
  413. package/dist/components/skeleton-scheme/index.js +1 -1
  414. package/dist/components/slot-grid/index.js +1 -1
  415. package/dist/components/social-sign-in-button/index.js +1 -1
  416. package/dist/components/spinner/index.js +1 -1
  417. package/dist/components/stat/index.js +1 -1
  418. package/dist/components/stepper-accordion/index.js +1 -1
  419. package/dist/components/streaming-text/index.js +1 -1
  420. package/dist/components/tab-bar/index.js +1 -1
  421. package/dist/components/tabs/index.js +1 -1
  422. package/dist/components/task-card/index.js +1 -1
  423. package/dist/components/task-editor/index.js +1 -1
  424. package/dist/components/task-tray/index.js +1 -1
  425. package/dist/components/tasks-panel/index.js +1 -1
  426. package/dist/components/text-area/index.js +1 -1
  427. package/dist/components/text-input/index.js +1 -1
  428. package/dist/components/text-input/text-input.d.ts +13 -0
  429. package/dist/components/theme-toggle/index.js +1 -1
  430. package/dist/components/time-picker/index.js +1 -1
  431. package/dist/components/time-picker/time-picker.d.ts +26 -5
  432. package/dist/components/timeline/index.js +1 -1
  433. package/dist/components/toast/index.js +1 -1
  434. package/dist/components/token-insert-menu/index.js +1 -1
  435. package/dist/components/tool-rail/index.js +1 -1
  436. package/dist/components/tooth-scheme/index.js +1 -1
  437. package/dist/components/transcript-panel/index.js +1 -1
  438. package/dist/components/treatment-receipt/index.js +1 -1
  439. package/dist/components/typing-indicator/index.js +1 -1
  440. package/dist/components/unit-converter/index.js +1 -1
  441. package/dist/components/voice-control-panel/index.d.ts +5 -0
  442. package/dist/components/voice-control-panel/index.js +6 -0
  443. package/dist/components/voice-control-panel/voice-control-panel.agent.d.ts +4 -0
  444. package/dist/components/voice-control-panel/voice-control-panel.d.ts +179 -0
  445. package/dist/components/wallet-pay-button/index.js +1 -1
  446. package/dist/components/warning-stack/index.js +1 -1
  447. package/dist/components/widget-picker/index.js +1 -1
  448. package/dist/components/workflow/index.js +1 -1
  449. package/dist/components/workflow-status/index.js +2 -2
  450. package/dist/error-pages/400.ar.html +1 -1
  451. package/dist/error-pages/400.de.html +1 -1
  452. package/dist/error-pages/400.el.html +1 -1
  453. package/dist/error-pages/400.en.html +1 -1
  454. package/dist/error-pages/400.es.html +1 -1
  455. package/dist/error-pages/400.fr.html +1 -1
  456. package/dist/error-pages/400.hi.html +1 -1
  457. package/dist/error-pages/400.html +1 -1
  458. package/dist/error-pages/400.it.html +1 -1
  459. package/dist/error-pages/400.ja.html +1 -1
  460. package/dist/error-pages/400.nl.html +1 -1
  461. package/dist/error-pages/400.pl.html +1 -1
  462. package/dist/error-pages/400.pt.html +1 -1
  463. package/dist/error-pages/400.ro.html +1 -1
  464. package/dist/error-pages/400.ru.html +1 -1
  465. package/dist/error-pages/400.sq.html +1 -1
  466. package/dist/error-pages/400.sv.html +1 -1
  467. package/dist/error-pages/400.tr.html +1 -1
  468. package/dist/error-pages/400.zh.html +1 -1
  469. package/dist/error-pages/410.ar.html +1 -1
  470. package/dist/error-pages/410.de.html +1 -1
  471. package/dist/error-pages/410.el.html +1 -1
  472. package/dist/error-pages/410.en.html +1 -1
  473. package/dist/error-pages/410.es.html +1 -1
  474. package/dist/error-pages/410.fr.html +1 -1
  475. package/dist/error-pages/410.hi.html +1 -1
  476. package/dist/error-pages/410.html +1 -1
  477. package/dist/error-pages/410.it.html +1 -1
  478. package/dist/error-pages/410.ja.html +1 -1
  479. package/dist/error-pages/410.nl.html +1 -1
  480. package/dist/error-pages/410.pl.html +1 -1
  481. package/dist/error-pages/410.pt.html +1 -1
  482. package/dist/error-pages/410.ro.html +1 -1
  483. package/dist/error-pages/410.ru.html +1 -1
  484. package/dist/error-pages/410.sq.html +1 -1
  485. package/dist/error-pages/410.sv.html +1 -1
  486. package/dist/error-pages/410.tr.html +1 -1
  487. package/dist/error-pages/410.zh.html +1 -1
  488. package/dist/error-pages/419.ar.html +1 -1
  489. package/dist/error-pages/419.de.html +1 -1
  490. package/dist/error-pages/419.el.html +1 -1
  491. package/dist/error-pages/419.en.html +1 -1
  492. package/dist/error-pages/419.es.html +1 -1
  493. package/dist/error-pages/419.fr.html +1 -1
  494. package/dist/error-pages/419.hi.html +1 -1
  495. package/dist/error-pages/419.html +1 -1
  496. package/dist/error-pages/419.it.html +1 -1
  497. package/dist/error-pages/419.ja.html +1 -1
  498. package/dist/error-pages/419.nl.html +1 -1
  499. package/dist/error-pages/419.pl.html +1 -1
  500. package/dist/error-pages/419.pt.html +1 -1
  501. package/dist/error-pages/419.ro.html +1 -1
  502. package/dist/error-pages/419.ru.html +1 -1
  503. package/dist/error-pages/419.sq.html +1 -1
  504. package/dist/error-pages/419.sv.html +1 -1
  505. package/dist/error-pages/419.tr.html +1 -1
  506. package/dist/error-pages/419.zh.html +1 -1
  507. package/dist/error-pages/429.ar.html +1 -1
  508. package/dist/error-pages/429.de.html +1 -1
  509. package/dist/error-pages/429.el.html +1 -1
  510. package/dist/error-pages/429.en.html +1 -1
  511. package/dist/error-pages/429.es.html +1 -1
  512. package/dist/error-pages/429.fr.html +1 -1
  513. package/dist/error-pages/429.hi.html +1 -1
  514. package/dist/error-pages/429.html +1 -1
  515. package/dist/error-pages/429.it.html +1 -1
  516. package/dist/error-pages/429.ja.html +1 -1
  517. package/dist/error-pages/429.nl.html +1 -1
  518. package/dist/error-pages/429.pl.html +1 -1
  519. package/dist/error-pages/429.pt.html +1 -1
  520. package/dist/error-pages/429.ro.html +1 -1
  521. package/dist/error-pages/429.ru.html +1 -1
  522. package/dist/error-pages/429.sq.html +1 -1
  523. package/dist/error-pages/429.sv.html +1 -1
  524. package/dist/error-pages/429.tr.html +1 -1
  525. package/dist/error-pages/429.zh.html +1 -1
  526. package/dist/hooks/index.js +1 -1
  527. package/dist/hooks/use-field-match.d.ts +3 -2
  528. package/dist/host-compat.css +9 -2
  529. package/dist/host-legacy.css +86 -0
  530. package/dist/i18n/locales/ar.d.ts +121 -1
  531. package/dist/i18n/locales/ar.js +122 -2
  532. package/dist/i18n/locales/de.d.ts +121 -1
  533. package/dist/i18n/locales/de.js +122 -2
  534. package/dist/i18n/locales/el.d.ts +121 -1
  535. package/dist/i18n/locales/el.js +122 -2
  536. package/dist/i18n/locales/en.d.ts +121 -1
  537. package/dist/i18n/locales/en.js +122 -2
  538. package/dist/i18n/locales/es.d.ts +121 -1
  539. package/dist/i18n/locales/es.js +122 -2
  540. package/dist/i18n/locales/fr.d.ts +121 -1
  541. package/dist/i18n/locales/fr.js +122 -2
  542. package/dist/i18n/locales/hi.d.ts +121 -1
  543. package/dist/i18n/locales/hi.js +122 -2
  544. package/dist/i18n/locales/it.d.ts +121 -1
  545. package/dist/i18n/locales/it.js +122 -2
  546. package/dist/i18n/locales/ja.d.ts +121 -1
  547. package/dist/i18n/locales/ja.js +122 -2
  548. package/dist/i18n/locales/nl.d.ts +121 -1
  549. package/dist/i18n/locales/nl.js +122 -2
  550. package/dist/i18n/locales/pl.d.ts +121 -1
  551. package/dist/i18n/locales/pl.js +122 -2
  552. package/dist/i18n/locales/pt.d.ts +121 -1
  553. package/dist/i18n/locales/pt.js +122 -2
  554. package/dist/i18n/locales/ro.d.ts +121 -1
  555. package/dist/i18n/locales/ro.js +122 -2
  556. package/dist/i18n/locales/ru.d.ts +121 -1
  557. package/dist/i18n/locales/ru.js +122 -2
  558. package/dist/i18n/locales/sq.d.ts +121 -1
  559. package/dist/i18n/locales/sq.js +122 -2
  560. package/dist/i18n/locales/sv.d.ts +121 -1
  561. package/dist/i18n/locales/sv.js +122 -2
  562. package/dist/i18n/locales/tr.d.ts +121 -1
  563. package/dist/i18n/locales/tr.js +122 -2
  564. package/dist/i18n/locales/zh.d.ts +121 -1
  565. package/dist/i18n/locales/zh.js +122 -2
  566. package/dist/index.js +763 -753
  567. package/dist/locales/ar.json +122 -2
  568. package/dist/locales/de.json +122 -2
  569. package/dist/locales/el.json +122 -2
  570. package/dist/locales/en.json +122 -2
  571. package/dist/locales/es.json +122 -2
  572. package/dist/locales/fr.json +122 -2
  573. package/dist/locales/hi.json +122 -2
  574. package/dist/locales/it.json +122 -2
  575. package/dist/locales/ja.json +122 -2
  576. package/dist/locales/nl.json +122 -2
  577. package/dist/locales/pl.json +122 -2
  578. package/dist/locales/pt.json +122 -2
  579. package/dist/locales/ro.json +122 -2
  580. package/dist/locales/ru.json +122 -2
  581. package/dist/locales/sq.json +122 -2
  582. package/dist/locales/sv.json +122 -2
  583. package/dist/locales/tr.json +122 -2
  584. package/dist/locales/zh.json +122 -2
  585. package/dist/patterns/_shared/auth-form-parts.d.ts +4 -0
  586. package/dist/patterns/_shared/use-error-summary.d.ts +34 -0
  587. package/dist/patterns/alia-assistant/index.js +1 -1
  588. package/dist/patterns/anamnesis/index.js +1 -1
  589. package/dist/patterns/calendar/index.js +1 -1
  590. package/dist/patterns/error-page/error-page.d.ts +29 -5
  591. package/dist/patterns/error-page/index.js +2 -2
  592. package/dist/patterns/forgot-password-form/forgot-password-form.d.ts +3 -2
  593. package/dist/patterns/forgot-password-form/index.js +1 -1
  594. package/dist/patterns/help-me-write-templates/index.js +1 -1
  595. package/dist/patterns/login-form/index.js +1 -1
  596. package/dist/patterns/login-form/login-form.d.ts +5 -4
  597. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  598. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  599. package/dist/patterns/registration-form/index.d.ts +1 -1
  600. package/dist/patterns/registration-form/index.js +1 -1
  601. package/dist/patterns/registration-form/registration-form.d.ts +19 -2
  602. package/dist/patterns/signature-request/index.js +1 -1
  603. package/dist/patterns/signed-out-frame/index.js +1 -1
  604. package/dist/tokens.css +10 -13
  605. package/package.json +19 -2
  606. package/dist/_chunks/address-fields-1pD-8hML.js +0 -292
  607. package/dist/_chunks/city-input-DyxVWSRQ.js +0 -170
  608. package/dist/_chunks/editor-overlay-CWV0chPV.js +0 -93
  609. package/dist/_chunks/error-page-C15GfNEj.js +0 -312
  610. package/dist/_chunks/forgot-password-form-DVVOBEGj.js +0 -203
  611. package/dist/_chunks/format-price-DAbh61Lz.js +0 -51
  612. package/dist/_chunks/intl-locale-CXM-B8EP.js +0 -16
  613. package/dist/_chunks/login-dev-card-q7iTojvV.js +0 -275
  614. package/dist/_chunks/multi-select-CVb6PJOK.js +0 -638
  615. package/dist/_chunks/periodontal-chart-5nLsSuRM.js +0 -1305
  616. package/dist/_chunks/registration-form-CBDeXzlk.js +0 -748
  617. package/dist/_chunks/search-input-Tl-RkS5x.js +0 -237
  618. package/dist/_chunks/subDays-XBMBTVOO.js +0 -8
  619. package/dist/_chunks/text-input-lZ2-t-p2.js +0 -283
  620. package/dist/_chunks/time-picker-DKKmpFh3.js +0 -425
  621. package/dist/_chunks/use-registration-submit-DxCWic5_.js +0 -141
@@ -1,1305 +0,0 @@
1
- import { jsx as n, jsxs as m } from "react/jsx-runtime";
2
- import { forwardRef as et, useRef as Re, useState as tt, useCallback as O, useMemo as Ie, useImperativeHandle as st } from "react";
3
- import { c as qe } from "./index-D2ZczOXr.js";
4
- import { useTranslation as rt } from "react-i18next";
5
- import { u as nt } from "./registry-DvAUVLHh.js";
6
- import { P as ve, i as ye, h as at, g as it, f as ot, Y as lt } from "./tooth-data-DR8Kdnup.js";
7
- import { P as je } from "./periodontal-chart-card-Djr3en8Q.js";
8
- const j = {
9
- type: "string",
10
- description: "FDI tooth id ('11'–'48' permanent, '51'–'85' primary)."
11
- }, $ = {
12
- enum: ["db", "b", "mb", "dl", "l", "ml"],
13
- description: "Probing site: (m/d)b = mesio-/disto-/mid buccal, (m/d)l = mesio-/disto-/mid lingual."
14
- }, fe = {
15
- type: "integer",
16
- description: "Whole millimetres — perio probing is recorded in integer mm."
17
- }, ct = {
18
- type: "object",
19
- properties: {
20
- meanPocketDepthMm: { type: ["number", "null"] },
21
- meanAttachmentLevelMm: { type: ["number", "null"] },
22
- plaquePercent: { type: ["number", "null"] },
23
- bleedingPercent: { type: ["number", "null"] },
24
- scoredSiteCount: { type: "number" },
25
- deepPocketCount: { type: "number" }
26
- }
27
- }, dt = {
28
- type: "array",
29
- description: "One entry per flagged tooth, in clinical order; each tooth’s pockets are deepest-first.",
30
- items: {
31
- type: "object",
32
- properties: {
33
- fdi: j,
34
- status: {
35
- enum: ["present", "missing", "implant"],
36
- description: "Structural status of the tooth."
37
- },
38
- severity: {
39
- enum: ["normal", "moderate", "severe"],
40
- description: "Worst pocket severity band across the tooth."
41
- },
42
- maxPocketDepthMm: { type: ["integer", "null"] },
43
- pockets: {
44
- type: "array",
45
- description: "Sites at/above the moderate threshold, deepest first.",
46
- items: {
47
- type: "object",
48
- properties: {
49
- site: $,
50
- pocketDepthMm: fe,
51
- severity: { enum: ["moderate", "severe"] }
52
- }
53
- }
54
- },
55
- bleedingSites: { type: "array", items: $ },
56
- plaqueSites: { type: "array", items: $ },
57
- suppurationSites: { type: "array", items: $ },
58
- maxRecessionMm: { type: ["number", "null"] },
59
- mobility: {
60
- type: ["integer", "null"],
61
- description: "Miller mobility grade 1–3, or null when none."
62
- },
63
- furcation: { type: "array", items: { enum: ["buccal", "lingual"] } }
64
- }
65
- }
66
- };
67
- function ut(s) {
68
- if (!s) return null;
69
- const t = { ...s };
70
- return delete t.note, t;
71
- }
72
- const pt = {
73
- id: "periodontal-chart",
74
- // pick — focus a measurement input (transient); set_value / edit_inline —
75
- // record per-site probing readings and per-tooth flags.
76
- capabilities: ["pick", "set_value", "edit_inline"],
77
- state: {
78
- indices: {
79
- type: "object",
80
- descriptionKey: "ui.agent.periodontalChart.state.indices",
81
- description: "Derived whole-mouth indices: mean probing depth, mean attachment level, plaque %, bleeding %, scored-site and deep-pocket counts. Aggregates only — no per-site or patient data.",
82
- read: (s) => s.getIndices()
83
- },
84
- findings: {
85
- type: "object[]",
86
- descriptionKey: "ui.agent.periodontalChart.state.findings",
87
- description: "Narratable per-tooth problem list — one entry per flagged tooth (missing, implant, a pocket at/above the moderate threshold, bleeding, suppuration, mobility ≥ 1, or furcation), in clinical order with each tooth’s pockets deepest-first. Each entry carries fdi, status, severity, maxPocketDepthMm, pockets, bleeding/plaque/suppuration sites, maxRecessionMm, mobility and furcation. Read this to summarise the chart aloud. Structural readings + FDI ids only — never the free-text note or patient identity.",
88
- read: (s) => s.getFindings()
89
- },
90
- missingTeeth: {
91
- type: "string[]",
92
- descriptionKey: "ui.agent.periodontalChart.state.missingTeeth",
93
- description: "FDI ids of every tooth flagged as missing.",
94
- read: (s) => s.missingTeeth()
95
- },
96
- chartedTeeth: {
97
- type: "string[]",
98
- descriptionKey: "ui.agent.periodontalChart.state.chartedTeeth",
99
- description: "FDI ids of teeth carrying at least one probing reading or flag. Identifiers only — never patient identity or the free-text note.",
100
- read: (s) => Object.entries(s.getValue()).filter(([, t]) => t.missing || t.implant || t.mobility != null || t.furcation && Object.keys(t.furcation).length > 0 ? !0 : (t.sites ? Object.values(t.sites) : []).some(
101
- (d) => d != null && (d.pocketDepthMm != null || d.recessionMm != null || d.bleeding || d.plaque || d.suppuration)
102
- )).map(([t]) => t)
103
- }
104
- },
105
- actions: {
106
- focus_site: {
107
- safety: "read",
108
- argsType: '{ fdi: string; site: PeriodontalSiteId; field: "pocketDepthMm" | "recessionMm" }',
109
- argsSchema: {
110
- type: "object",
111
- properties: {
112
- fdi: j,
113
- site: $,
114
- field: { enum: ["pocketDepthMm", "recessionMm"] }
115
- },
116
- required: ["fdi", "site", "field"]
117
- },
118
- idempotent: !0,
119
- descriptionKey: "ui.agent.periodontalChart.actions.focusSite",
120
- description: "Move focus to a specific probing-measurement input.",
121
- invoke: (s, t) => {
122
- s.focusSite(t.fdi, t.site, t.field);
123
- }
124
- },
125
- get_tooth: {
126
- safety: "read",
127
- argsType: "{ fdi: string }",
128
- argsSchema: {
129
- type: "object",
130
- properties: { fdi: j },
131
- required: ["fdi"]
132
- },
133
- returns: "object | null",
134
- returnsSchema: { type: ["object", "null"] },
135
- idempotent: !0,
136
- descriptionKey: "ui.agent.periodontalChart.actions.getTooth",
137
- description: "Read one tooth’s structural readings (sites, flags, mobility, furcation). The free-text note is never returned.",
138
- invoke: (s, t) => ut(s.getTooth(t.fdi))
139
- },
140
- get_indices: {
141
- safety: "read",
142
- argsType: "{}",
143
- argsSchema: { type: "object", properties: {} },
144
- returns: "PeriodontalIndices",
145
- returnsSchema: ct,
146
- idempotent: !0,
147
- descriptionKey: "ui.agent.periodontalChart.actions.getIndices",
148
- description: "Read the derived whole-mouth summary indices.",
149
- invoke: (s) => s.getIndices()
150
- },
151
- get_findings: {
152
- safety: "read",
153
- argsType: "{}",
154
- argsSchema: { type: "object", properties: {} },
155
- returns: "PeriodontalToothFinding[]",
156
- returnsSchema: dt,
157
- idempotent: !0,
158
- descriptionKey: "ui.agent.periodontalChart.actions.getFindings",
159
- description: "Read the narratable per-tooth problem list (flagged teeth only). Use it to summarise the chart aloud — e.g. “46: 8 mm disto-buccal pocket, bleeding, grade 2 mobility”. Structural readings and FDI ids only; the free-text note is never returned.",
160
- invoke: (s) => s.getFindings()
161
- },
162
- set_depth: {
163
- safety: "write",
164
- argsType: "{ fdi: string; site: PeriodontalSiteId; mm: number }",
165
- argsSchema: {
166
- type: "object",
167
- properties: { fdi: j, site: $, mm: fe },
168
- required: ["fdi", "site", "mm"]
169
- },
170
- idempotent: !0,
171
- descriptionKey: "ui.agent.periodontalChart.actions.setDepth",
172
- description: "Record the probing pocket depth (mm) at a site.",
173
- invoke: (s, t) => {
174
- s.setSite(t.fdi, t.site, {
175
- pocketDepthMm: Math.max(0, t.mm)
176
- });
177
- }
178
- },
179
- set_recession: {
180
- safety: "write",
181
- argsType: "{ fdi: string; site: PeriodontalSiteId; mm: number }",
182
- argsSchema: {
183
- type: "object",
184
- properties: { fdi: j, site: $, mm: fe },
185
- required: ["fdi", "site", "mm"]
186
- },
187
- idempotent: !0,
188
- descriptionKey: "ui.agent.periodontalChart.actions.setRecession",
189
- description: "Record the gingival recession (mm) at a site.",
190
- invoke: (s, t) => {
191
- s.setSite(t.fdi, t.site, { recessionMm: t.mm });
192
- }
193
- },
194
- toggle_bleeding: {
195
- safety: "write",
196
- argsType: "{ fdi: string; site: PeriodontalSiteId; value: boolean }",
197
- argsSchema: {
198
- type: "object",
199
- properties: {
200
- fdi: j,
201
- site: $,
202
- value: { type: "boolean" }
203
- },
204
- required: ["fdi", "site", "value"]
205
- },
206
- idempotent: !0,
207
- descriptionKey: "ui.agent.periodontalChart.actions.toggleBleeding",
208
- description: "Set bleeding on probing at a site.",
209
- invoke: (s, t) => {
210
- s.setSite(t.fdi, t.site, { bleeding: t.value });
211
- }
212
- },
213
- toggle_plaque: {
214
- safety: "write",
215
- argsType: "{ fdi: string; site: PeriodontalSiteId; value: boolean }",
216
- argsSchema: {
217
- type: "object",
218
- properties: {
219
- fdi: j,
220
- site: $,
221
- value: { type: "boolean" }
222
- },
223
- required: ["fdi", "site", "value"]
224
- },
225
- idempotent: !0,
226
- descriptionKey: "ui.agent.periodontalChart.actions.togglePlaque",
227
- description: "Set plaque presence at a site.",
228
- invoke: (s, t) => {
229
- s.setSite(t.fdi, t.site, { plaque: t.value });
230
- }
231
- },
232
- set_mobility: {
233
- safety: "write",
234
- argsType: "{ fdi: string; grade: 0 | 1 | 2 | 3 }",
235
- argsSchema: {
236
- type: "object",
237
- properties: {
238
- fdi: j,
239
- grade: { enum: [0, 1, 2, 3] }
240
- },
241
- required: ["fdi", "grade"]
242
- },
243
- idempotent: !0,
244
- descriptionKey: "ui.agent.periodontalChart.actions.setMobility",
245
- description: "Set a tooth’s Miller mobility grade (0–3).",
246
- invoke: (s, t) => {
247
- s.setTooth(t.fdi, { mobility: t.grade });
248
- }
249
- },
250
- set_missing: {
251
- safety: "write",
252
- argsType: "{ fdi: string; value: boolean }",
253
- argsSchema: {
254
- type: "object",
255
- properties: { fdi: j, value: { type: "boolean" } },
256
- required: ["fdi", "value"]
257
- },
258
- idempotent: !0,
259
- descriptionKey: "ui.agent.periodontalChart.actions.setMissing",
260
- description: "Flag a tooth present or absent.",
261
- invoke: (s, t) => {
262
- s.setTooth(t.fdi, { missing: t.value });
263
- }
264
- },
265
- clear_tooth: {
266
- safety: "destructive",
267
- argsType: "{ fdi: string }",
268
- argsSchema: {
269
- type: "object",
270
- properties: { fdi: j },
271
- required: ["fdi"]
272
- },
273
- idempotent: !0,
274
- descriptionKey: "ui.agent.periodontalChart.actions.clearTooth",
275
- description: "Clear every reading from a tooth.",
276
- invoke: (s, t) => {
277
- s.clearTooth(t.fdi);
278
- }
279
- }
280
- },
281
- domHooks: {
282
- root: {
283
- attr: "data-component",
284
- value: "periodontal-chart",
285
- description: "Marks the PeriodontalChart root group."
286
- },
287
- instanceId: {
288
- attr: "data-component-id",
289
- sourceProp: "id",
290
- description: "Sourced from the id prop."
291
- },
292
- item: {
293
- attr: "data-fdi",
294
- description: "Each tooth column header carries its FDI id as `data-fdi`. Every measurement input also carries `data-fdi` + `data-site` + `data-field`. The root `data-mode` exposes interactive vs display."
295
- }
296
- }
297
- }, be = ["db", "b", "mb"], mt = ["dl", "l", "ml"];
298
- function Ae(s) {
299
- return s === "buccal" ? be : mt;
300
- }
301
- const xe = 4, oe = 6, ht = 20, gt = 5;
302
- function Fe(s, t = xe, h = oe) {
303
- return s == null || !Number.isFinite(s) ? "normal" : s >= h ? "severe" : s >= t ? "moderate" : "normal";
304
- }
305
- const ft = {
306
- 18: { buccal: 1, lingual: 2 },
307
- 17: { buccal: 1, lingual: 2 },
308
- 16: { buccal: 1, lingual: 2 },
309
- 15: { buccal: 2, lingual: 2 },
310
- 14: { buccal: 0, lingual: 2 },
311
- 24: { buccal: 0, lingual: 2 },
312
- 25: { buccal: 2, lingual: 2 },
313
- 26: { buccal: 1, lingual: 2 },
314
- 27: { buccal: 1, lingual: 2 },
315
- 28: { buccal: 1, lingual: 2 },
316
- 48: { buccal: 1, lingual: 1 },
317
- 47: { buccal: 1, lingual: 1 },
318
- 46: { buccal: 1, lingual: 1 },
319
- 36: { buccal: 1, lingual: 1 },
320
- 37: { buccal: 1, lingual: 1 },
321
- 38: { buccal: 1, lingual: 1 }
322
- };
323
- function bt(s, t) {
324
- var h;
325
- return ((h = ft[s]) == null ? void 0 : h[t]) ?? 0;
326
- }
327
- const vt = ve.slice(0, 16), yt = ve.slice(16), xt = ye.slice(0, 10), Nt = ye.slice(10);
328
- function Oe(s) {
329
- return s === "primary" ? { upper: xt, lower: Nt } : {
330
- upper: vt,
331
- lower: yt
332
- };
333
- }
334
- function _e(s, t) {
335
- return t === "universal" ? at[s] ?? s : t === "palmer" ? it[s] ?? s : s;
336
- }
337
- function ie(s) {
338
- const t = Math.round(s * 10) / 10;
339
- return t === 0 ? 0 : t;
340
- }
341
- function Le(s) {
342
- let t = 0, h = 0, d = 0, f = 0, E = 0, S = 0;
343
- for (const L of Object.values(s))
344
- if (!(L.missing || !L.sites))
345
- for (const P of Object.values(L.sites)) {
346
- if (!P) continue;
347
- const y = P.pocketDepthMm;
348
- y == null || !Number.isFinite(y) || (d += 1, t += y, h += y + (P.recessionMm ?? 0), y >= oe && (S += 1), P.bleeding && (f += 1), P.plaque && (E += 1));
349
- }
350
- return d === 0 ? {
351
- meanPocketDepthMm: null,
352
- meanAttachmentLevelMm: null,
353
- plaquePercent: null,
354
- bleedingPercent: null,
355
- scoredSiteCount: 0,
356
- deepPocketCount: 0
357
- } : {
358
- meanPocketDepthMm: ie(t / d),
359
- meanAttachmentLevelMm: ie(h / d),
360
- plaquePercent: ie(E / d * 100),
361
- bleedingPercent: ie(f / d * 100),
362
- scoredSiteCount: d,
363
- deepPocketCount: S
364
- };
365
- }
366
- const Mt = [...ve, ...ye];
367
- function kt(s, t) {
368
- var L, P;
369
- const h = (t == null ? void 0 : t.moderate) ?? xe, d = (t == null ? void 0 : t.severe) ?? oe, f = /* @__PURE__ */ new Map();
370
- Mt.forEach((y, C) => f.set(y, C));
371
- const E = Object.keys(s).sort(
372
- (y, C) => (f.get(y) ?? Number.MAX_SAFE_INTEGER) - (f.get(C) ?? Number.MAX_SAFE_INTEGER)
373
- ), S = [];
374
- for (const y of E) {
375
- const C = s[y];
376
- if (!C) continue;
377
- if (C.missing) {
378
- S.push({
379
- fdi: y,
380
- status: "missing",
381
- severity: "normal",
382
- maxPocketDepthMm: null,
383
- pockets: [],
384
- bleedingSites: [],
385
- plaqueSites: [],
386
- suppurationSites: [],
387
- maxRecessionMm: null,
388
- mobility: null,
389
- furcation: []
390
- });
391
- continue;
392
- }
393
- const G = C.implant ? "implant" : "present", q = [], Z = [], te = [], z = [];
394
- let Y = null, X = null;
395
- for (const M of je) {
396
- const V = (L = C.sites) == null ? void 0 : L[M];
397
- if (!V) continue;
398
- const { pocketDepthMm: K, recessionMm: B, bleeding: b, plaque: H, suppuration: D } = V;
399
- if (K != null && Number.isFinite(K)) {
400
- Y = Y == null ? K : Math.max(Y, K);
401
- const F = Fe(K, h, d);
402
- F !== "normal" && q.push({ site: M, pocketDepthMm: K, severity: F });
403
- }
404
- B != null && Number.isFinite(B) && B > 0 && (X = X == null ? B : Math.max(X, B)), b && Z.push(M), H && te.push(M), D && z.push(M);
405
- }
406
- q.sort((M, V) => V.pocketDepthMm - M.pocketDepthMm);
407
- const se = C.mobility != null && C.mobility >= 1 ? C.mobility : null, i = [];
408
- if (C.furcation)
409
- for (const M of ["buccal", "lingual"])
410
- (P = C.furcation[M]) != null && P.some(Boolean) && i.push(M);
411
- const le = q.some(
412
- (M) => M.severity === "severe"
413
- ) ? "severe" : q.length > 0 ? "moderate" : "normal";
414
- (G === "implant" || q.length > 0 || Z.length > 0 || z.length > 0 || se != null || i.length > 0) && S.push({
415
- fdi: y,
416
- status: G,
417
- severity: le,
418
- maxPocketDepthMm: Y,
419
- pockets: q,
420
- bleedingSites: Z,
421
- plaqueSites: te,
422
- suppurationSites: z,
423
- maxRecessionMm: X,
424
- mobility: se,
425
- furcation: i
426
- });
427
- }
428
- return S;
429
- }
430
- function Ft(s = "permanent") {
431
- const { upper: t, lower: h } = Oe(s), d = {};
432
- for (const f of [...t, ...h]) d[f] = {};
433
- return d;
434
- }
435
- function Ot(s) {
436
- const t = [];
437
- for (const [h, d] of Object.entries(s))
438
- if (!(d.missing || !d.sites))
439
- for (const f of je) {
440
- const E = d.sites[f];
441
- if (!E) continue;
442
- const { pocketDepthMm: S, recessionMm: L, bleeding: P, suppuration: y } = E;
443
- S == null && L == null && !P && !y || t.push({
444
- tooth: h,
445
- site: f,
446
- pocketDepthMm: S,
447
- recessionMm: L,
448
- bleeding: P,
449
- suppuration: y
450
- });
451
- }
452
- return t;
453
- }
454
- function $t(s) {
455
- const t = {};
456
- for (const [h, d] of Object.entries(s))
457
- d.mobility != null && (t[h] = d.mobility);
458
- return t;
459
- }
460
- const Ct = qe(
461
- "ds:w-full ds:flex ds:flex-col ds:gap-[var(--spacing-lg)] ds:text-[color:var(--foreground)]",
462
- {
463
- variants: {
464
- // Disabled is conveyed by the inputs' own `disabled` state (native
465
- // disabled controls are excluded from the axe contrast check). We must
466
- // NOT dim the whole root with opacity — that would drop the legend,
467
- // captions and headers below the AA contrast floor.
468
- disabled: { true: "ds:cursor-not-allowed", false: "" }
469
- },
470
- defaultVariants: { disabled: !1 }
471
- }
472
- ), wt = qe(
473
- "ds:h-6 ds:w-[3.5ch] ds:rounded-[var(--radius-sm)] ds:border ds:bg-[var(--background)] ds:text-center ds:tabular-nums ds:[font-variant-numeric:var(--font-feature-tabular)] ds:outline-none 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)] ds:disabled:cursor-not-allowed ds:disabled:opacity-50",
474
- {
475
- variants: {
476
- severity: {
477
- normal: "ds:border-[color:var(--input)] ds:text-[color:var(--foreground)]",
478
- moderate: "ds:border-[color:var(--warning)] ds:font-semibold ds:text-[color:var(--warning-foreground)]",
479
- severe: "ds:border-[color:var(--destructive)] ds:font-bold ds:text-[color:var(--destructive)]"
480
- }
481
- },
482
- defaultVariants: { severity: "normal" }
483
- }
484
- );
485
- function St(s, t, h) {
486
- return { ...s, [t]: { ...s[t], ...h } };
487
- }
488
- function Pt(s, t, h, d) {
489
- const f = s[t] ?? {}, E = f.sites ?? {};
490
- return {
491
- ...s,
492
- [t]: {
493
- ...f,
494
- sites: { ...E, [h]: { ...E[h], ...d } }
495
- }
496
- };
497
- }
498
- function Tt(s) {
499
- return s === "severe" ? "ds:font-bold ds:text-[color:var(--destructive)]" : s === "moderate" ? "ds:font-semibold ds:text-[color:var(--warning-foreground)]" : "";
500
- }
501
- const Et = {
502
- db: "disto-buccal",
503
- b: "buccal",
504
- mb: "mesio-buccal",
505
- dl: "disto-lingual",
506
- l: "lingual",
507
- ml: "mesio-lingual"
508
- }, Dt = et(
509
- ({
510
- value: s,
511
- defaultValue: t,
512
- onChange: h,
513
- mode: d = "interactive",
514
- disabled: f = !1,
515
- dentition: E = "permanent",
516
- numbering: S = "fdi",
517
- showTeeth: L = !0,
518
- assetBaseUrl: P = "/toothscheme/teeth",
519
- showCurves: y = !0,
520
- showIndices: C = !0,
521
- moderatePocketMm: G = xe,
522
- severePocketMm: q = oe,
523
- locale: Z,
524
- "aria-label": te,
525
- id: z,
526
- className: Y,
527
- ...X
528
- }, se) => {
529
- const { t: i, i18n: le } = rt("ui"), ce = Z ?? le.language ?? "en", M = Re(null), V = s !== void 0, [K, B] = tt(
530
- () => t ?? {}
531
- ), b = V ? s : K, H = d === "display", D = Re(b);
532
- D.current = b;
533
- const F = O(
534
- (e) => {
535
- D.current = e, V || B(e), h == null || h(e);
536
- },
537
- [V, h]
538
- ), re = O(
539
- (e, r, a) => F(Pt(D.current, e, r, a)),
540
- [F]
541
- ), Q = O(
542
- (e, r) => F(St(D.current, e, r)),
543
- [F]
544
- ), Ne = O(
545
- (e) => {
546
- const r = { ...D.current };
547
- delete r[e], F(r);
548
- },
549
- [F]
550
- ), Me = O(
551
- (e, r, a) => {
552
- var o, l;
553
- try {
554
- (l = (o = M.current) == null ? void 0 : o.querySelector(
555
- `[data-perio-input][data-fdi="${e}"][data-site="${r}"][data-field="${a}"]`
556
- )) == null || l.focus();
557
- } catch {
558
- }
559
- },
560
- []
561
- ), R = Ie(
562
- () => Le(b),
563
- [b]
564
- ), de = Ie(
565
- () => ({
566
- getValue: () => D.current,
567
- getTooth: (e) => D.current[e],
568
- getIndices: () => Le(D.current),
569
- getFindings: () => kt(D.current, {
570
- moderate: G,
571
- severe: q
572
- }),
573
- missingTeeth: () => Object.entries(D.current).filter(([, e]) => e.missing).map(([e]) => e),
574
- setSite: re,
575
- setTooth: Q,
576
- clearTooth: Ne,
577
- focusSite: Me
578
- }),
579
- [
580
- re,
581
- Q,
582
- Ne,
583
- Me,
584
- G,
585
- q
586
- ]
587
- );
588
- st(se, () => de, [de]), nt(pt, de, z);
589
- const ke = Oe(E), $e = te ?? i("periodontalChart.ariaLabel", "Periodontal chart"), ee = O(
590
- (e) => {
591
- try {
592
- return new Intl.NumberFormat(ce, {
593
- maximumFractionDigits: 1
594
- }).format(e);
595
- } catch {
596
- return String(e);
597
- }
598
- },
599
- [ce]
600
- ), Ce = O(
601
- (e) => i(`periodontalChart.site.${e}`, {
602
- defaultValue: Et[e]
603
- }),
604
- [i]
605
- ), U = O(
606
- (e) => _e(e, S),
607
- [S]
608
- ), I = /* @__PURE__ */ n(
609
- "span",
610
- {
611
- "aria-hidden": "true",
612
- className: "ds:text-[color:var(--muted-foreground)]",
613
- children: i("periodontalChart.cell.empty", "–")
614
- }
615
- ), Ve = O((e) => {
616
- var k;
617
- const r = e.target;
618
- if (!((k = r.matches) != null && k.call(r, "[data-perio-input]"))) return;
619
- const a = e.key;
620
- if (a !== "ArrowLeft" && a !== "ArrowRight" && a !== "ArrowUp" && a !== "ArrowDown")
621
- return;
622
- e.preventDefault();
623
- const o = M.current;
624
- if (!o) return;
625
- if (a === "ArrowUp" || a === "ArrowDown") {
626
- const v = r.getAttribute("data-fdi"), A = r.getAttribute("data-site"), N = r.getAttribute("data-field") === "pocketDepthMm" ? "recessionMm" : "pocketDepthMm", _ = o.querySelector(
627
- `[data-perio-input][data-fdi="${v}"][data-site="${A}"][data-field="${N}"]`
628
- );
629
- _ == null || _.focus(), _ == null || _.select();
630
- return;
631
- }
632
- const l = Array.from(
633
- o.querySelectorAll("[data-perio-input]")
634
- ), p = l.indexOf(r);
635
- if (p === -1) return;
636
- const c = l[p + (a === "ArrowRight" ? 1 : -1)];
637
- c == null || c.focus(), c == null || c.select();
638
- }, []), T = "ds:px-[var(--spacing-2xs)] ds:py-[var(--spacing-2xs)] ds:text-center ds:border-b ds:border-[color:var(--border)]", W = "ds:px-[var(--spacing-xs)] ds:py-[var(--spacing-2xs)] ds:text-start ds:font-medium ds:border-b ds:border-[color:var(--border)] ds:whitespace-nowrap", Ke = (e, r, a) => {
639
- var c, k, v;
640
- const o = (v = (k = (c = b[e]) == null ? void 0 : c.sites) == null ? void 0 : k[r]) == null ? void 0 : v[a], l = a === "pocketDepthMm" ? Fe(o, G, q) : "normal", p = i(`periodontalChart.input.${a}`, {
641
- tooth: U(e),
642
- site: Ce(r),
643
- defaultValue: a === "pocketDepthMm" ? "Tooth {{tooth}} {{site}} pocket depth, millimetres" : "Tooth {{tooth}} {{site}} recession, millimetres"
644
- }), g = l === "severe" ? i("periodontalChart.flag.severe", "severe pocket") : l === "moderate" ? i("periodontalChart.flag.moderate", "moderate pocket") : "";
645
- return H ? o == null || !Number.isFinite(o) ? /* @__PURE__ */ n("span", { className: "ds:inline-block ds:w-[3.5ch]", children: I }) : /* @__PURE__ */ m(
646
- "span",
647
- {
648
- className: `ds:inline-block ds:w-[3.5ch] ds:tabular-nums ds:[font-variant-numeric:var(--font-feature-tabular)] ${Tt(
649
- l
650
- )}`,
651
- children: [
652
- /* @__PURE__ */ n("span", { children: ee(o) }),
653
- g ? /* @__PURE__ */ m("span", { className: "ds:sr-only", children: [
654
- " ",
655
- g
656
- ] }) : null
657
- ]
658
- }
659
- ) : /* @__PURE__ */ n(
660
- "input",
661
- {
662
- type: "text",
663
- inputMode: "numeric",
664
- autoComplete: "off",
665
- disabled: f,
666
- "aria-label": g ? `${p}, ${g}` : p,
667
- "data-perio-input": "",
668
- "data-fdi": e,
669
- "data-site": r,
670
- "data-field": a,
671
- value: o == null ? "" : String(o),
672
- onFocus: (A) => A.currentTarget.select(),
673
- onChange: (A) => {
674
- const x = A.target.value.trim();
675
- let N;
676
- if (x === "" || x === "-")
677
- N = void 0;
678
- else {
679
- const _ = Number(x);
680
- if (!Number.isFinite(_)) return;
681
- N = a === "pocketDepthMm" ? Math.max(0, _) : _;
682
- }
683
- re(
684
- e,
685
- r,
686
- a === "pocketDepthMm" ? { pocketDepthMm: N } : { recessionMm: N }
687
- );
688
- },
689
- className: wt({ severity: l })
690
- }
691
- );
692
- }, He = (e, r, a) => {
693
- var g, c, k;
694
- const o = !!((k = (c = (g = b[e]) == null ? void 0 : g.sites) == null ? void 0 : c[r]) != null && k[a]), l = i(`periodontalChart.toggle.${a}`, {
695
- tooth: U(e),
696
- site: Ce(r),
697
- defaultValue: a === "bleeding" ? "Tooth {{tooth}} {{site}} bleeding on probing" : "Tooth {{tooth}} {{site}} plaque"
698
- }), p = a === "bleeding" ? "ds:accent-[var(--destructive)]" : "ds:accent-[var(--warning)]";
699
- return H ? o ? /* @__PURE__ */ n(
700
- "span",
701
- {
702
- role: "img",
703
- "aria-label": l,
704
- className: `ds:inline-block ds:size-2 ds:rounded-[var(--radius-full)] ${a === "bleeding" ? "ds:bg-[var(--destructive)]" : "ds:bg-[var(--warning)]"}`
705
- }
706
- ) : /* @__PURE__ */ n("span", { className: "ds:inline-block ds:size-6", children: I }) : /* @__PURE__ */ m("label", { className: "ds:inline-flex ds:size-6 ds:cursor-pointer ds:items-center ds:justify-center", children: [
707
- /* @__PURE__ */ n("span", { className: "ds:sr-only", children: l }),
708
- /* @__PURE__ */ n(
709
- "input",
710
- {
711
- type: "checkbox",
712
- disabled: f,
713
- checked: o,
714
- onChange: (v) => re(
715
- e,
716
- r,
717
- a === "bleeding" ? { bleeding: v.target.checked } : { plaque: v.target.checked }
718
- ),
719
- className: `ds:size-4 ${p} 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)] ds:disabled:cursor-not-allowed ds:disabled:opacity-50`
720
- }
721
- )
722
- ] });
723
- }, ze = (e, r) => {
724
- var p;
725
- const a = b[e], o = bt(e, r);
726
- if (a != null && a.missing || o === 0) return I;
727
- const l = ((p = a == null ? void 0 : a.furcation) == null ? void 0 : p[r]) ?? [];
728
- return /* @__PURE__ */ n("span", { className: "ds:inline-flex ds:items-center ds:justify-center ds:gap-[var(--spacing-2xs)]", children: Array.from({ length: o }, (g, c) => {
729
- const k = !!l[c], v = i("periodontalChart.toggle.furcation", {
730
- tooth: U(e),
731
- side: i(`periodontalChart.side.${r}`, {
732
- defaultValue: r === "buccal" ? "buccal" : "lingual"
733
- }),
734
- n: c + 1,
735
- defaultValue: "Tooth {{tooth}} {{side}} furcation {{n}}"
736
- });
737
- return H ? k ? /* @__PURE__ */ n(
738
- "span",
739
- {
740
- role: "img",
741
- "aria-label": v,
742
- className: "ds:inline-block ds:size-2 ds:rounded-[var(--radius-full)] ds:bg-[var(--primary)]"
743
- },
744
- c
745
- ) : /* @__PURE__ */ n(
746
- "span",
747
- {
748
- "aria-hidden": "true",
749
- className: "ds:inline-block ds:size-2 ds:rounded-[var(--radius-full)] ds:border ds:border-[color:var(--border)]"
750
- },
751
- c
752
- ) : /* @__PURE__ */ m(
753
- "label",
754
- {
755
- className: "ds:inline-flex ds:size-6 ds:cursor-pointer ds:items-center ds:justify-center",
756
- children: [
757
- /* @__PURE__ */ n("span", { className: "ds:sr-only", children: v }),
758
- /* @__PURE__ */ n(
759
- "input",
760
- {
761
- type: "checkbox",
762
- disabled: f,
763
- checked: k,
764
- onChange: (A) => {
765
- var N;
766
- const x = [...((N = a == null ? void 0 : a.furcation) == null ? void 0 : N[r]) ?? []];
767
- for (; x.length < o; ) x.push(!1);
768
- x[c] = A.target.checked, Q(e, {
769
- furcation: { ...a == null ? void 0 : a.furcation, [r]: x }
770
- });
771
- },
772
- className: "ds:size-4 ds:accent-[var(--primary)] 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)] ds:disabled:cursor-not-allowed ds:disabled:opacity-50"
773
- }
774
- )
775
- ]
776
- },
777
- c
778
- );
779
- }) });
780
- }, ne = (e, r, a, o, l) => /* @__PURE__ */ m("tr", { children: [
781
- /* @__PURE__ */ n("th", { scope: "row", className: W, children: i(r, a) }),
782
- e.map((p) => {
783
- var g;
784
- return /* @__PURE__ */ n("td", { className: T, children: (g = b[p]) != null && g.missing ? I : /* @__PURE__ */ n("span", { className: "ds:flex ds:items-center ds:justify-center ds:gap-[var(--spacing-2xs)]", children: Ae(o).map((c) => /* @__PURE__ */ n("span", { children: Ke(p, c, l) }, c)) }) }, p);
785
- })
786
- ] }), ae = (e, r, a, o, l) => /* @__PURE__ */ m("tr", { children: [
787
- /* @__PURE__ */ n("th", { scope: "row", className: W, children: i(r, a) }),
788
- e.map((p) => {
789
- var g;
790
- return /* @__PURE__ */ n("td", { className: T, children: (g = b[p]) != null && g.missing ? I : /* @__PURE__ */ n("span", { className: "ds:flex ds:items-center ds:justify-center ds:gap-[var(--spacing-2xs)]", children: Ae(o).map((c) => /* @__PURE__ */ n("span", { children: He(p, c, l) }, c)) }) }, p);
791
- })
792
- ] }), we = (e, r) => /* @__PURE__ */ m("tr", { children: [
793
- /* @__PURE__ */ n("th", { scope: "row", className: W, children: i("periodontalChart.row.furcation", "Furcation") }),
794
- e.map((a) => /* @__PURE__ */ n("td", { className: T, children: ze(a, r) }, a))
795
- ] }), Se = (e, r, a, o) => /* @__PURE__ */ m("tr", { children: [
796
- /* @__PURE__ */ n("th", { scope: "row", className: W, children: i(r, a) }),
797
- e.map((l) => {
798
- var c, k;
799
- if (o === "implant" && ((c = b[l]) != null && c.missing))
800
- return /* @__PURE__ */ n("td", { className: T, children: I }, l);
801
- const p = !!((k = b[l]) != null && k[o]), g = i(`periodontalChart.flag.${o}Label`, {
802
- tooth: U(l),
803
- defaultValue: o === "missing" ? "Tooth {{tooth}} missing" : "Tooth {{tooth}} implant"
804
- });
805
- return /* @__PURE__ */ n("td", { className: T, children: H ? p ? /* @__PURE__ */ n(
806
- "span",
807
- {
808
- role: "img",
809
- "aria-label": g,
810
- className: "type-meta ds:font-semibold",
811
- children: o === "missing" ? i("periodontalChart.flag.missingShort", "×") : i("periodontalChart.flag.implantShort", "I")
812
- }
813
- ) : I : /* @__PURE__ */ m("label", { className: "ds:inline-flex ds:size-6 ds:cursor-pointer ds:items-center ds:justify-center", children: [
814
- /* @__PURE__ */ n("span", { className: "ds:sr-only", children: g }),
815
- /* @__PURE__ */ n(
816
- "input",
817
- {
818
- type: "checkbox",
819
- disabled: f,
820
- checked: p,
821
- onChange: (v) => Q(
822
- l,
823
- o === "missing" ? { missing: v.target.checked } : { implant: v.target.checked }
824
- ),
825
- className: "ds:size-4 ds:accent-[var(--primary)] 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)] ds:disabled:cursor-not-allowed ds:disabled:opacity-50"
826
- }
827
- )
828
- ] }) }, l);
829
- })
830
- ] }), Be = (e) => /* @__PURE__ */ m("tr", { children: [
831
- /* @__PURE__ */ n("th", { scope: "row", className: W, children: i("periodontalChart.row.mobility", "Mobility") }),
832
- e.map((r) => {
833
- var l, p;
834
- if ((l = b[r]) != null && l.missing)
835
- return /* @__PURE__ */ n("td", { className: T, children: I }, r);
836
- const a = (p = b[r]) == null ? void 0 : p.mobility, o = i("periodontalChart.mobility.label", {
837
- tooth: U(r),
838
- defaultValue: "Tooth {{tooth}} mobility grade"
839
- });
840
- return H ? /* @__PURE__ */ n("td", { className: T, children: a == null ? I : /* @__PURE__ */ n("span", { role: "img", "aria-label": o, className: "type-meta", children: a }) }, r) : /* @__PURE__ */ n("td", { className: T, children: /* @__PURE__ */ m(
841
- "select",
842
- {
843
- disabled: f,
844
- "aria-label": o,
845
- value: a == null ? "" : String(a),
846
- onChange: (g) => Q(r, {
847
- mobility: g.target.value === "" ? void 0 : Number(g.target.value)
848
- }),
849
- className: "ds:h-6 ds:rounded-[var(--radius-sm)] ds:border ds:border-[color:var(--input)] ds:bg-[var(--background)] ds:text-[color:var(--foreground)] ds:text-center ds:outline-none 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)] ds:disabled:cursor-not-allowed ds:disabled:opacity-50",
850
- children: [
851
- /* @__PURE__ */ n("option", { value: "", children: i("periodontalChart.mobility.none", "–") }),
852
- /* @__PURE__ */ n("option", { value: "0", children: "0" }),
853
- /* @__PURE__ */ n("option", { value: "1", children: "1" }),
854
- /* @__PURE__ */ n("option", { value: "2", children: "2" }),
855
- /* @__PURE__ */ n("option", { value: "3", children: "3" })
856
- ]
857
- }
858
- ) }, r);
859
- })
860
- ] }), Ue = (e) => /* @__PURE__ */ m("tr", { children: [
861
- /* @__PURE__ */ n("th", { scope: "row", className: W, children: i("periodontalChart.row.note", "Note") }),
862
- e.map((r) => {
863
- var l, p;
864
- if ((l = b[r]) != null && l.missing)
865
- return /* @__PURE__ */ n("td", { className: T, children: I }, r);
866
- const a = ((p = b[r]) == null ? void 0 : p.note) ?? "", o = i("periodontalChart.note.label", {
867
- tooth: U(r),
868
- defaultValue: "Tooth {{tooth}} note"
869
- });
870
- return H ? /* @__PURE__ */ n("td", { className: `${T} ds:text-start`, children: a ? /* @__PURE__ */ n("span", { className: "type-meta", children: a }) : I }, r) : /* @__PURE__ */ n("td", { className: T, children: /* @__PURE__ */ n(
871
- "input",
872
- {
873
- type: "text",
874
- disabled: f,
875
- "aria-label": o,
876
- value: a,
877
- onChange: (g) => Q(r, { note: g.target.value }),
878
- className: "ds:h-6 ds:w-[6ch] ds:rounded-[var(--radius-sm)] ds:border ds:border-[color:var(--input)] ds:bg-[var(--background)] ds:text-[color:var(--foreground)] ds:px-[var(--spacing-2xs)] ds:outline-none 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)] ds:disabled:cursor-not-allowed ds:disabled:opacity-50"
879
- }
880
- ) }, r);
881
- })
882
- ] }), We = (e) => /* @__PURE__ */ m("tr", { children: [
883
- /* @__PURE__ */ n("th", { scope: "row", className: W, children: i("periodontalChart.row.tooth", "Tooth") }),
884
- e.map((r) => {
885
- const a = b[r], o = ot[r];
886
- if (a != null && a.missing || !o)
887
- return /* @__PURE__ */ n("td", { className: T, children: I }, r);
888
- const l = a != null && a.implant ? "implant" : "default";
889
- return /* @__PURE__ */ n("td", { className: T, children: /* @__PURE__ */ n(
890
- "img",
891
- {
892
- src: lt(o, P, l, "side"),
893
- alt: "",
894
- "aria-hidden": "true",
895
- loading: "lazy",
896
- className: "ds:mx-auto ds:h-12 ds:w-auto ds:max-w-full ds:object-contain"
897
- }
898
- ) }, r);
899
- })
900
- ] }), Ge = (e) => {
901
- var Te, Ee, De;
902
- const c = (u) => 38 + Math.min(Math.max(0, u), 13) * 6, k = (u) => 38 - Math.min(Math.max(0, u), 5) * 6, v = [], A = [];
903
- let x = [], N = [];
904
- const _ = () => {
905
- x.length && v.push(x), N.length && A.push(N), x = [], N = [];
906
- };
907
- let ue = 12;
908
- for (const u of e) {
909
- const w = (Te = b[u]) == null ? void 0 : Te.missing;
910
- for (const Ze of be) {
911
- const J = w || (De = (Ee = b[u]) == null ? void 0 : Ee.sites) == null ? void 0 : De[Ze], he = J == null ? void 0 : J.pocketDepthMm, ge = J == null ? void 0 : J.recessionMm;
912
- he != null && Number.isFinite(he) ? x.push({ x: ue, y: c(he) }) : x.length && (v.push(x), x = []), ge != null && Number.isFinite(ge) ? N.push({ x: ue, y: k(ge) }) : N.length && (A.push(N), N = []), ue += 24;
913
- }
914
- }
915
- _();
916
- const pe = e.length * be.length * 24, me = (u) => u.map((w) => `${w.x},${w.y}`).join(" "), Qe = v.flat(), Je = A.flat();
917
- return /* @__PURE__ */ m(
918
- "svg",
919
- {
920
- viewBox: `0 0 ${pe} 124`,
921
- className: "ds:h-[132px] ds:w-full",
922
- preserveAspectRatio: "none",
923
- "aria-hidden": "true",
924
- focusable: "false",
925
- children: [
926
- [3, 6, 9, 12].map((u) => /* @__PURE__ */ n(
927
- "line",
928
- {
929
- x1: 0,
930
- x2: pe,
931
- y1: c(u),
932
- y2: c(u),
933
- stroke: "var(--border)",
934
- strokeWidth: 1,
935
- strokeDasharray: "2 4"
936
- },
937
- u
938
- )),
939
- /* @__PURE__ */ n(
940
- "line",
941
- {
942
- x1: 0,
943
- x2: pe,
944
- y1: 38,
945
- y2: 38,
946
- stroke: "var(--border)",
947
- strokeWidth: 1.5
948
- }
949
- ),
950
- v.map(
951
- (u, w) => u.length >= 2 ? /* @__PURE__ */ n(
952
- "polygon",
953
- {
954
- points: `${u[0].x},38 ${me(u)} ${u[u.length - 1].x},38`,
955
- fill: "var(--success)",
956
- fillOpacity: 0.14
957
- },
958
- `fill-${w}`
959
- ) : null
960
- ),
961
- v.map(
962
- (u, w) => u.length >= 2 ? /* @__PURE__ */ n(
963
- "polyline",
964
- {
965
- points: me(u),
966
- fill: "none",
967
- stroke: "var(--success)",
968
- strokeWidth: 2.5,
969
- strokeLinejoin: "round",
970
- strokeLinecap: "round"
971
- },
972
- `depth-${w}`
973
- ) : null
974
- ),
975
- A.map(
976
- (u, w) => u.length >= 2 ? /* @__PURE__ */ n(
977
- "polyline",
978
- {
979
- points: me(u),
980
- fill: "none",
981
- stroke: "var(--accent)",
982
- strokeWidth: 2.5,
983
- strokeLinejoin: "round",
984
- strokeLinecap: "round"
985
- },
986
- `margin-${w}`
987
- ) : null
988
- ),
989
- Qe.map((u, w) => /* @__PURE__ */ n(
990
- "circle",
991
- {
992
- cx: u.x,
993
- cy: u.y,
994
- r: 2,
995
- fill: "var(--success)"
996
- },
997
- `dp-${w}`
998
- )),
999
- Je.map((u, w) => /* @__PURE__ */ n(
1000
- "circle",
1001
- {
1002
- cx: u.x,
1003
- cy: u.y,
1004
- r: 2,
1005
- fill: "var(--accent)"
1006
- },
1007
- `mp-${w}`
1008
- ))
1009
- ]
1010
- }
1011
- );
1012
- }, Pe = (e, r, a) => /* @__PURE__ */ n("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: /* @__PURE__ */ m(
1013
- "div",
1014
- {
1015
- tabIndex: 0,
1016
- role: "group",
1017
- dir: "ltr",
1018
- "aria-label": i(r, a),
1019
- className: "ds:overflow-x-auto ds:rounded-[var(--radius-sm)] ds:outline-none 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)]",
1020
- children: [
1021
- /* @__PURE__ */ m("table", { className: "type-body-sm ds:w-full ds:border-collapse", children: [
1022
- /* @__PURE__ */ n("caption", { className: "type-label ds:text-start ds:mb-[var(--spacing-2xs)] ds:text-[color:var(--muted-foreground)]", children: i(r, a) }),
1023
- /* @__PURE__ */ n("thead", { children: /* @__PURE__ */ m("tr", { children: [
1024
- /* @__PURE__ */ n(
1025
- "th",
1026
- {
1027
- scope: "col",
1028
- className: "ds:px-[var(--spacing-xs)] ds:py-[var(--spacing-2xs)] ds:text-start ds:border-b ds:border-[color:var(--border)]",
1029
- children: i("periodontalChart.column.measure", "Measurement")
1030
- }
1031
- ),
1032
- e.map((o) => /* @__PURE__ */ m(
1033
- "th",
1034
- {
1035
- scope: "col",
1036
- "data-fdi": o,
1037
- className: "ds:px-[var(--spacing-2xs)] ds:py-[var(--spacing-2xs)] ds:text-center ds:border-b ds:border-[color:var(--border)] ds:tabular-nums ds:[font-variant-numeric:var(--font-feature-tabular)]",
1038
- children: [
1039
- /* @__PURE__ */ n("span", { className: "ds:sr-only", children: i("periodontalChart.toothHeader", {
1040
- tooth: U(o),
1041
- defaultValue: "Tooth {{tooth}}"
1042
- }) }),
1043
- /* @__PURE__ */ n("span", { "aria-hidden": "true", children: _e(o, S) })
1044
- ]
1045
- },
1046
- o
1047
- ))
1048
- ] }) }),
1049
- /* @__PURE__ */ m("tbody", { children: [
1050
- Se(
1051
- e,
1052
- "periodontalChart.row.missing",
1053
- "Missing",
1054
- "missing"
1055
- ),
1056
- Se(
1057
- e,
1058
- "periodontalChart.row.implant",
1059
- "Implant",
1060
- "implant"
1061
- ),
1062
- Be(e),
1063
- ne(
1064
- e,
1065
- "periodontalChart.row.pocketDepthBuccal",
1066
- "Pocket depth — buccal",
1067
- "buccal",
1068
- "pocketDepthMm"
1069
- ),
1070
- ne(
1071
- e,
1072
- "periodontalChart.row.recessionBuccal",
1073
- "Recession — buccal",
1074
- "buccal",
1075
- "recessionMm"
1076
- ),
1077
- ae(
1078
- e,
1079
- "periodontalChart.row.bleedingBuccal",
1080
- "Bleeding — buccal",
1081
- "buccal",
1082
- "bleeding"
1083
- ),
1084
- ae(
1085
- e,
1086
- "periodontalChart.row.plaqueBuccal",
1087
- "Plaque — buccal",
1088
- "buccal",
1089
- "plaque"
1090
- ),
1091
- we(e, "buccal"),
1092
- L ? We(e) : null,
1093
- ne(
1094
- e,
1095
- "periodontalChart.row.pocketDepthLingual",
1096
- "Pocket depth — lingual",
1097
- "lingual",
1098
- "pocketDepthMm"
1099
- ),
1100
- ne(
1101
- e,
1102
- "periodontalChart.row.recessionLingual",
1103
- "Recession — lingual",
1104
- "lingual",
1105
- "recessionMm"
1106
- ),
1107
- ae(
1108
- e,
1109
- "periodontalChart.row.bleedingLingual",
1110
- "Bleeding — lingual",
1111
- "lingual",
1112
- "bleeding"
1113
- ),
1114
- ae(
1115
- e,
1116
- "periodontalChart.row.plaqueLingual",
1117
- "Plaque — lingual",
1118
- "lingual",
1119
- "plaque"
1120
- ),
1121
- we(e, "lingual"),
1122
- Ue(e)
1123
- ] })
1124
- ] }),
1125
- y ? /* @__PURE__ */ n(
1126
- "figure",
1127
- {
1128
- className: "ds:m-0 ds:mt-[var(--spacing-2xs)]",
1129
- "aria-label": i("periodontalChart.curve.label", {
1130
- arch: i(r, a),
1131
- defaultValue: "{{arch}} probing depth and recession profile"
1132
- }),
1133
- children: Ge(e)
1134
- }
1135
- ) : null
1136
- ]
1137
- }
1138
- ) }), Ye = () => {
1139
- const e = [
1140
- {
1141
- key: "meanPd",
1142
- label: i("periodontalChart.index.meanPocketDepth", "Mean PD"),
1143
- value: R.meanPocketDepthMm == null ? "–" : i("periodontalChart.unit.mm", {
1144
- value: ee(R.meanPocketDepthMm),
1145
- defaultValue: "{{value}} mm"
1146
- }),
1147
- elevated: !1
1148
- },
1149
- {
1150
- key: "meanCal",
1151
- label: i("periodontalChart.index.meanAttachment", "Mean CAL"),
1152
- value: R.meanAttachmentLevelMm == null ? "–" : i("periodontalChart.unit.mm", {
1153
- value: ee(R.meanAttachmentLevelMm),
1154
- defaultValue: "{{value}} mm"
1155
- }),
1156
- elevated: !1
1157
- },
1158
- {
1159
- key: "plaque",
1160
- label: i("periodontalChart.index.plaque", "Plaque"),
1161
- value: R.plaquePercent == null ? "–" : i("periodontalChart.unit.percent", {
1162
- value: ee(R.plaquePercent),
1163
- defaultValue: "{{value}}%"
1164
- }),
1165
- elevated: R.plaquePercent != null && R.plaquePercent > ht
1166
- },
1167
- {
1168
- key: "bleeding",
1169
- label: i("periodontalChart.index.bleeding", "BoP"),
1170
- value: R.bleedingPercent == null ? "–" : i("periodontalChart.unit.percent", {
1171
- value: ee(R.bleedingPercent),
1172
- defaultValue: "{{value}}%"
1173
- }),
1174
- elevated: R.bleedingPercent != null && R.bleedingPercent > gt
1175
- }
1176
- ];
1177
- return /* @__PURE__ */ n(
1178
- "dl",
1179
- {
1180
- className: "type-body-sm ds:flex ds:flex-wrap ds:gap-[var(--spacing-lg)] ds:m-0",
1181
- "aria-label": i("periodontalChart.index.label", "Summary indices"),
1182
- children: e.map((r) => /* @__PURE__ */ m(
1183
- "div",
1184
- {
1185
- className: "ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]",
1186
- children: [
1187
- /* @__PURE__ */ n("dt", { className: "type-meta ds:text-[color:var(--muted-foreground)]", children: r.label }),
1188
- /* @__PURE__ */ m(
1189
- "dd",
1190
- {
1191
- className: `ds:m-0 ds:tabular-nums ds:[font-variant-numeric:var(--font-feature-tabular)] ${r.elevated ? "ds:font-bold ds:text-[color:var(--destructive)]" : "ds:text-[color:var(--foreground)]"}`,
1192
- children: [
1193
- /* @__PURE__ */ n("span", { children: r.value }),
1194
- r.elevated ? /* @__PURE__ */ m("span", { className: "ds:sr-only", children: [
1195
- " ",
1196
- i("periodontalChart.index.elevated", "elevated")
1197
- ] }) : null
1198
- ]
1199
- }
1200
- )
1201
- ]
1202
- },
1203
- r.key
1204
- ))
1205
- }
1206
- );
1207
- }, Xe = /* @__PURE__ */ m(
1208
- "div",
1209
- {
1210
- role: "group",
1211
- "aria-label": i("periodontalChart.legend.label", "Chart legend"),
1212
- className: "type-meta ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-md)] ds:text-[color:var(--muted-foreground)]",
1213
- children: [
1214
- /* @__PURE__ */ m("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]", children: [
1215
- /* @__PURE__ */ n(
1216
- "span",
1217
- {
1218
- "aria-hidden": "true",
1219
- className: "ds:inline-block ds:h-[2px] ds:w-4 ds:bg-[var(--success)]"
1220
- }
1221
- ),
1222
- i("periodontalChart.legend.depth", "Pocket depth")
1223
- ] }),
1224
- /* @__PURE__ */ m("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]", children: [
1225
- /* @__PURE__ */ n(
1226
- "span",
1227
- {
1228
- "aria-hidden": "true",
1229
- className: "ds:inline-block ds:h-[2px] ds:w-4 ds:bg-[var(--accent)]"
1230
- }
1231
- ),
1232
- i("periodontalChart.legend.recession", "Recession")
1233
- ] }),
1234
- /* @__PURE__ */ m("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]", children: [
1235
- /* @__PURE__ */ n(
1236
- "span",
1237
- {
1238
- "aria-hidden": "true",
1239
- className: "ds:inline-block ds:size-2 ds:rounded-[var(--radius-full)] ds:bg-[var(--destructive)]"
1240
- }
1241
- ),
1242
- i("periodontalChart.legend.bleeding", "Bleeding on probing")
1243
- ] }),
1244
- /* @__PURE__ */ m("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]", children: [
1245
- /* @__PURE__ */ n(
1246
- "span",
1247
- {
1248
- "aria-hidden": "true",
1249
- className: "ds:inline-block ds:size-2 ds:rounded-[var(--radius-full)] ds:bg-[var(--warning)]"
1250
- }
1251
- ),
1252
- i("periodontalChart.legend.plaque", "Plaque")
1253
- ] })
1254
- ]
1255
- }
1256
- );
1257
- return (
1258
- // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- roving-tabindex arrow-key nav across the chart group; each input is individually focusable and labelled
1259
- /* @__PURE__ */ m(
1260
- "div",
1261
- {
1262
- ref: M,
1263
- role: "group",
1264
- "aria-label": $e,
1265
- "data-component": "periodontal-chart",
1266
- "data-component-id": z,
1267
- "data-mode": d,
1268
- id: z,
1269
- ...X,
1270
- onKeyDown: Ve,
1271
- className: Ct({ disabled: f, className: Y }),
1272
- children: [
1273
- C ? Ye() : null,
1274
- Pe(ke.upper, "periodontalChart.arch.upper", "Upper arch"),
1275
- Pe(ke.lower, "periodontalChart.arch.lower", "Lower arch"),
1276
- Xe
1277
- ]
1278
- }
1279
- )
1280
- );
1281
- }
1282
- );
1283
- Dt.displayName = "PeriodontalChart";
1284
- export {
1285
- gt as B,
1286
- xe as M,
1287
- be as P,
1288
- oe as S,
1289
- ft as a,
1290
- mt as b,
1291
- ht as c,
1292
- Dt as d,
1293
- kt as e,
1294
- Le as f,
1295
- Ft as g,
1296
- bt as h,
1297
- pt as i,
1298
- _e as j,
1299
- Fe as k,
1300
- Ot as l,
1301
- Oe as p,
1302
- Ae as s,
1303
- $t as t
1304
- };
1305
- //# sourceMappingURL=periodontal-chart-5nLsSuRM.js.map