@alfadocs/ui-kit-debug 0.72.2 → 0.73.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.
- package/dist/_chunks/{agenda-tray-loL2A3Cx.js → agenda-tray-CVf-jfWU.js} +3 -3
- package/dist/_chunks/{agenda-tray-loL2A3Cx.js.map → agenda-tray-CVf-jfWU.js.map} +1 -1
- package/dist/_chunks/{ai-consent-banner-Bke9m8VS.js → ai-consent-banner-DUhr1yNj.js} +2 -2
- package/dist/_chunks/{ai-consent-banner-Bke9m8VS.js.map → ai-consent-banner-DUhr1yNj.js.map} +1 -1
- package/dist/_chunks/{ai-prompt-input-TVI95hJD.js → ai-prompt-input-DFm58UjY.js} +2 -2
- package/dist/_chunks/{ai-prompt-input-TVI95hJD.js.map → ai-prompt-input-DFm58UjY.js.map} +1 -1
- package/dist/_chunks/{alia-sidebar-BV5lBSFR.js → alia-sidebar-w6B0TEx7.js} +8 -8
- package/dist/_chunks/{alia-sidebar-BV5lBSFR.js.map → alia-sidebar-w6B0TEx7.js.map} +1 -1
- package/dist/_chunks/{anamnesis-card-CWO4Ui9c.js → anamnesis-card-CJ5MNbkc.js} +2 -2
- package/dist/_chunks/{anamnesis-card-CWO4Ui9c.js.map → anamnesis-card-CJ5MNbkc.js.map} +1 -1
- package/dist/_chunks/{antenatal-schedule-timeline-CY-VsLok.js → antenatal-schedule-timeline-BzJZqS-8.js} +3 -3
- package/dist/_chunks/{antenatal-schedule-timeline-CY-VsLok.js.map → antenatal-schedule-timeline-BzJZqS-8.js.map} +1 -1
- package/dist/_chunks/{appointment-card-Cy4FOkGP.js → appointment-card-DgKI5QKD.js} +2 -2
- package/dist/_chunks/{appointment-card-Cy4FOkGP.js.map → appointment-card-DgKI5QKD.js.map} +1 -1
- package/dist/_chunks/{appointment-timeline-BWAPPk8F.js → appointment-timeline-DQTG0btW.js} +6 -6
- package/dist/_chunks/{appointment-timeline-BWAPPk8F.js.map → appointment-timeline-DQTG0btW.js.map} +1 -1
- package/dist/_chunks/{appointment-tray-D3mk04TT.js → appointment-tray-ezyCZN8v.js} +4 -4
- package/dist/_chunks/{appointment-tray-D3mk04TT.js.map → appointment-tray-ezyCZN8v.js.map} +1 -1
- package/dist/_chunks/{ar-BOqyIfoY.js → ar-B1GhtlBP.js} +2 -2
- package/dist/_chunks/{ar-BOqyIfoY.js.map → ar-B1GhtlBP.js.map} +1 -1
- package/dist/_chunks/arrow-up-right-C2v_MKsK.js +15 -0
- package/dist/_chunks/arrow-up-right-C2v_MKsK.js.map +1 -0
- package/dist/_chunks/{audio-recorder-BbjG55dP.js → audio-recorder-CjAY0GAc.js} +3 -3
- package/dist/_chunks/{audio-recorder-BbjG55dP.js.map → audio-recorder-CjAY0GAc.js.map} +1 -1
- package/dist/_chunks/{benefit-card-Xnxj4Gmo.js → benefit-card-DB1Kdrmc.js} +4 -2
- package/dist/_chunks/benefit-card-DB1Kdrmc.js.map +1 -0
- package/dist/_chunks/{bishop-score-C6eoak_j.js → bishop-score-Bs6t6Zv1.js} +2 -2
- package/dist/_chunks/{bishop-score-C6eoak_j.js.map → bishop-score-Bs6t6Zv1.js.map} +1 -1
- package/dist/_chunks/{bmi-calculator-BmQfoEGP.js → bmi-calculator-Bk2GAju7.js} +2 -2
- package/dist/_chunks/{bmi-calculator-BmQfoEGP.js.map → bmi-calculator-Bk2GAju7.js.map} +1 -1
- package/dist/_chunks/{booking-B62CMY5k.js → booking-CWnZhZ5g.js} +8 -8
- package/dist/_chunks/{booking-B62CMY5k.js.map → booking-CWnZhZ5g.js.map} +1 -1
- package/dist/_chunks/{button-DD_0Xdmr.js → button-CPGiR_bH.js} +56 -35
- package/dist/_chunks/button-CPGiR_bH.js.map +1 -0
- package/dist/_chunks/button-group-DzV5wgnx.js +289 -0
- package/dist/_chunks/button-group-DzV5wgnx.js.map +1 -0
- package/dist/_chunks/camera-VSklPDCv.js +21 -0
- package/dist/_chunks/camera-VSklPDCv.js.map +1 -0
- package/dist/_chunks/{care-plan-card-DhXbfGzE.js → care-plan-card-CfIP3Vc1.js} +3 -3
- package/dist/_chunks/{care-plan-card-DhXbfGzE.js.map → care-plan-card-CfIP3Vc1.js.map} +1 -1
- package/dist/_chunks/{care-plan-entry-card-D3YGD6rj.js → care-plan-entry-card-CRbS-G00.js} +3 -3
- package/dist/_chunks/{care-plan-entry-card-D3YGD6rj.js.map → care-plan-entry-card-CRbS-G00.js.map} +1 -1
- package/dist/_chunks/{care-plan-header-DtQxyfOb.js → care-plan-header-BXvRpGG8.js} +2 -2
- package/dist/_chunks/{care-plan-header-DtQxyfOb.js.map → care-plan-header-BXvRpGG8.js.map} +1 -1
- package/dist/_chunks/{carousel.agent-j7hWxJWr.js → carousel.agent-CtAAdsAd.js} +2 -2
- package/dist/_chunks/{carousel.agent-j7hWxJWr.js.map → carousel.agent-CtAAdsAd.js.map} +1 -1
- package/dist/_chunks/{chat-container-BVCoN06N.js → chat-container-HlFnoEIl.js} +4 -2
- package/dist/_chunks/{chat-container-BVCoN06N.js.map → chat-container-HlFnoEIl.js.map} +1 -1
- package/dist/_chunks/{chat-input-Btq_uuMZ.js → chat-input-BTCDqUDX.js} +2 -2
- package/dist/_chunks/{chat-input-Btq_uuMZ.js.map → chat-input-BTCDqUDX.js.map} +1 -1
- package/dist/_chunks/{chat-message-DXjjM8z9.js → chat-message-CdjWqZjo.js} +3 -3
- package/dist/_chunks/{chat-message-DXjjM8z9.js.map → chat-message-CdjWqZjo.js.map} +1 -1
- package/dist/_chunks/{code-block-Cwi7e3HM.js → code-block-BwanBjRh.js} +2 -2
- package/dist/_chunks/{code-block-Cwi7e3HM.js.map → code-block-BwanBjRh.js.map} +1 -1
- package/dist/_chunks/{connection-status-0HajXMXM.js → connection-status-oEUyrvev.js} +3 -3
- package/dist/_chunks/{connection-status-0HajXMXM.js.map → connection-status-oEUyrvev.js.map} +1 -1
- package/dist/_chunks/{contact-profile-card-IggiUVpN.js → contact-profile-card-veMV3W4J.js} +2 -2
- package/dist/_chunks/{contact-profile-card-IggiUVpN.js.map → contact-profile-card-veMV3W4J.js.map} +1 -1
- package/dist/_chunks/{control-room-rail-DaGcsdZ6.js → control-room-rail-CdfrZ6Vr.js} +3 -3
- package/dist/_chunks/{control-room-rail-DaGcsdZ6.js.map → control-room-rail-CdfrZ6Vr.js.map} +1 -1
- package/dist/_chunks/{copy-field-PAp0-Wr5.js → copy-field-DBc9QquW.js} +2 -2
- package/dist/_chunks/{copy-field-PAp0-Wr5.js.map → copy-field-DBc9QquW.js.map} +1 -1
- package/dist/_chunks/{cycle-calculator-BNILyVas.js → cycle-calculator-OQp8Ik5U.js} +4 -4
- package/dist/_chunks/{cycle-calculator-BNILyVas.js.map → cycle-calculator-OQp8Ik5U.js.map} +1 -1
- package/dist/_chunks/{date-picker-CVkD_lOi.js → date-picker-DzQS8mvt.js} +2 -2
- package/dist/_chunks/{date-picker-CVkD_lOi.js.map → date-picker-DzQS8mvt.js.map} +1 -1
- package/dist/_chunks/{date-picker-variants-DLg-ZrIo.js → date-picker-variants-CYQAm1Gk.js} +116 -115
- package/dist/_chunks/{date-picker-variants-DLg-ZrIo.js.map → date-picker-variants-CYQAm1Gk.js.map} +1 -1
- package/dist/_chunks/{date-range-picker-Dw12DgV8.js → date-range-picker-Cbz1SKhm.js} +3 -3
- package/dist/_chunks/{date-range-picker-Dw12DgV8.js.map → date-range-picker-Cbz1SKhm.js.map} +1 -1
- package/dist/_chunks/{date-time-picker-Cd_OJtOy.js → date-time-picker-B5IpU-nd.js} +2 -2
- package/dist/_chunks/{date-time-picker-Cd_OJtOy.js.map → date-time-picker-B5IpU-nd.js.map} +1 -1
- package/dist/_chunks/{de-DFLsUxeV.js → de-DETDHQ0o.js} +2 -2
- package/dist/_chunks/{de-DFLsUxeV.js.map → de-DETDHQ0o.js.map} +1 -1
- package/dist/_chunks/{description-list-CmBVxIF5.js → description-list-ClNLdRMy.js} +2 -2
- package/dist/_chunks/{description-list-CmBVxIF5.js.map → description-list-ClNLdRMy.js.map} +1 -1
- package/dist/_chunks/{document-scanner-B23j4w7X.js → document-scanner-BE6Jz4Ob.js} +198 -230
- package/dist/_chunks/document-scanner-BE6Jz4Ob.js.map +1 -0
- package/dist/_chunks/{due-date-calculator-CmdAl_JO.js → due-date-calculator-DASNRgnH.js} +4 -4
- package/dist/_chunks/{due-date-calculator-CmdAl_JO.js.map → due-date-calculator-DASNRgnH.js.map} +1 -1
- package/dist/_chunks/{editable-currency-cell-renderer-z9fJFw6Z.js → editable-currency-cell-renderer-GwfA9tTR.js} +3 -3
- package/dist/_chunks/{editable-currency-cell-renderer-z9fJFw6Z.js.map → editable-currency-cell-renderer-GwfA9tTR.js.map} +1 -1
- package/dist/_chunks/{editor-overlay-BIOzr8v7.js → editor-overlay-DE3esyio.js} +2 -2
- package/dist/_chunks/{editor-overlay-BIOzr8v7.js.map → editor-overlay-DE3esyio.js.map} +1 -1
- package/dist/_chunks/{el-OVjBKytp.js → el-HV3jOI0z.js} +2 -2
- package/dist/_chunks/{el-OVjBKytp.js.map → el-HV3jOI0z.js.map} +1 -1
- package/dist/_chunks/{empty-state-BLy7tigq.js → empty-state-CrLsi0XI.js} +2 -2
- package/dist/_chunks/{empty-state-BLy7tigq.js.map → empty-state-CrLsi0XI.js.map} +1 -1
- package/dist/_chunks/{entity-summary-DpGziDv5.js → entity-summary--vP698Jn.js} +3 -3
- package/dist/_chunks/{entity-summary-DpGziDv5.js.map → entity-summary--vP698Jn.js.map} +1 -1
- package/dist/_chunks/eraser-CHOGQfVv.js +21 -0
- package/dist/_chunks/eraser-CHOGQfVv.js.map +1 -0
- package/dist/_chunks/{es-DKDNrHXG.js → es-Dpo7Olwo.js} +2 -2
- package/dist/_chunks/{es-DKDNrHXG.js.map → es-Dpo7Olwo.js.map} +1 -1
- package/dist/_chunks/face-scheme-C0rk21gg.js +3146 -0
- package/dist/_chunks/face-scheme-C0rk21gg.js.map +1 -0
- package/dist/_chunks/{fetal-weight-CVAH8sJ3.js → fetal-weight-1F9N4IMx.js} +2 -2
- package/dist/_chunks/{fetal-weight-CVAH8sJ3.js.map → fetal-weight-1F9N4IMx.js.map} +1 -1
- package/dist/_chunks/{field-array-CDzc3hTM.js → field-array-DH3Mb1i8.js} +3 -3
- package/dist/_chunks/{field-array-CDzc3hTM.js.map → field-array-DH3Mb1i8.js.map} +1 -1
- package/dist/_chunks/{field-value-Dj3i52H2.js → field-value-DCXJXKab.js} +5 -5
- package/dist/_chunks/{field-value-Dj3i52H2.js.map → field-value-DCXJXKab.js.map} +1 -1
- package/dist/_chunks/{file-upload-Kw1rdvFw.js → file-upload-B2SXhRiN.js} +104 -111
- package/dist/_chunks/file-upload-B2SXhRiN.js.map +1 -0
- package/dist/_chunks/{finished-terminal-Di4gtZ50.js → finished-terminal-C0_mefrf.js} +11 -11
- package/dist/_chunks/finished-terminal-C0_mefrf.js.map +1 -0
- package/dist/_chunks/{fiscal-code-input-DKNXFXs3.js → fiscal-code-input-DWA6C8x8.js} +2 -2
- package/dist/_chunks/{fiscal-code-input-DKNXFXs3.js.map → fiscal-code-input-DWA6C8x8.js.map} +1 -1
- package/dist/_chunks/{fr-BfMvQh-v.js → fr-CgD4Jvtq.js} +2 -2
- package/dist/_chunks/{fr-BfMvQh-v.js.map → fr-CgD4Jvtq.js.map} +1 -1
- package/dist/_chunks/{freemium-paywall-DFoeedwh.js → freemium-paywall-CmV642PA.js} +7 -3
- package/dist/_chunks/freemium-paywall-CmV642PA.js.map +1 -0
- package/dist/_chunks/{gestational-age-calculator-BwCBPAGX.js → gestational-age-calculator-C9Dfis4I.js} +6 -6
- package/dist/_chunks/{gestational-age-calculator-BwCBPAGX.js.map → gestational-age-calculator-C9Dfis4I.js.map} +1 -1
- package/dist/_chunks/{hcg-doubling-CSsWxEJc.js → hcg-doubling-Dqj-EqMT.js} +3 -3
- package/dist/_chunks/{hcg-doubling-CSsWxEJc.js.map → hcg-doubling-Dqj-EqMT.js.map} +1 -1
- package/dist/_chunks/{header-DaXWDw0M.js → header-CjwasYnn.js} +88 -79
- package/dist/_chunks/header-CjwasYnn.js.map +1 -0
- package/dist/_chunks/{header-settings-B0G_u-wV.js → header-settings-CRQDCYgr.js} +4 -4
- package/dist/_chunks/{header-settings-B0G_u-wV.js.map → header-settings-CRQDCYgr.js.map} +1 -1
- package/dist/_chunks/{hi-C0GEMwlD.js → hi-Bf8CAP6b.js} +2 -2
- package/dist/_chunks/{hi-C0GEMwlD.js.map → hi-Bf8CAP6b.js.map} +1 -1
- package/dist/_chunks/highlighter-DSkckT2Q.js +15 -0
- package/dist/_chunks/highlighter-DSkckT2Q.js.map +1 -0
- package/dist/_chunks/{icon-button-LqoiKcUN.js → icon-button-C_kbcd7I.js} +2 -2
- package/dist/_chunks/{icon-button-LqoiKcUN.js.map → icon-button-C_kbcd7I.js.map} +1 -1
- package/dist/_chunks/icon-button-group-C_lqXTAj.js +391 -0
- package/dist/_chunks/icon-button-group-C_lqXTAj.js.map +1 -0
- package/dist/_chunks/{icon-picker-Di6uYDG-.js → icon-picker-BePK27S-.js} +3 -3
- package/dist/_chunks/{icon-picker-Di6uYDG-.js.map → icon-picker-BePK27S-.js.map} +1 -1
- package/dist/_chunks/{image-cropper-CdmWFrMC.js → image-cropper-DKe4AORY.js} +2 -2
- package/dist/_chunks/{image-cropper-CdmWFrMC.js.map → image-cropper-DKe4AORY.js.map} +1 -1
- package/dist/_chunks/{insert-result-C7xSDb8q.js → insert-result-D074GtHX.js} +58 -68
- package/dist/_chunks/insert-result-D074GtHX.js.map +1 -0
- package/dist/_chunks/{isSameWeek-HddDAyJG.js → isSameWeek-BYl5poz_.js} +2 -2
- package/dist/_chunks/{isSameWeek-HddDAyJG.js.map → isSameWeek-BYl5poz_.js.map} +1 -1
- package/dist/_chunks/{it-5f4hiT2e.js → it-mt1V2DFS.js} +3 -3
- package/dist/_chunks/{it-5f4hiT2e.js.map → it-mt1V2DFS.js.map} +1 -1
- package/dist/_chunks/{ja-U0_2inl_.js → ja-CbOHn2TO.js} +2 -2
- package/dist/_chunks/{ja-U0_2inl_.js.map → ja-CbOHn2TO.js.map} +1 -1
- package/dist/_chunks/{key-value-pair-Byyyc_9J.js → key-value-pair-LHKfDT_9.js} +2 -2
- package/dist/_chunks/{key-value-pair-Byyyc_9J.js.map → key-value-pair-LHKfDT_9.js.map} +1 -1
- package/dist/_chunks/{link-cell-renderer-BCppbMec.js → link-cell-renderer-CLI7sBkX.js} +803 -778
- package/dist/_chunks/link-cell-renderer-CLI7sBkX.js.map +1 -0
- package/dist/_chunks/{locale-picker-DzF7Q5Y8.js → locale-picker-Cbfqc0_N.js} +3 -3
- package/dist/_chunks/{locale-picker-DzF7Q5Y8.js.map → locale-picker-Cbfqc0_N.js.map} +1 -1
- package/dist/_chunks/{map-view-ByPvWG_9.js → map-view-CsaHfoo6.js} +2 -2
- package/dist/_chunks/{map-view-ByPvWG_9.js.map → map-view-CsaHfoo6.js.map} +1 -1
- package/dist/_chunks/{marketplace-app-shell-BCYiOvKZ.js → marketplace-app-shell-Dm6S-hun.js} +6 -6
- package/dist/_chunks/marketplace-app-shell-Dm6S-hun.js.map +1 -0
- package/dist/_chunks/{message-card-BZnnffyB.js → message-card-ievotOFa.js} +3 -3
- package/dist/_chunks/{message-card-BZnnffyB.js.map → message-card-ievotOFa.js.map} +1 -1
- package/dist/_chunks/{message-tray-cUHOCdU0.js → message-tray-BFlu8clI.js} +4 -4
- package/dist/_chunks/{message-tray-cUHOCdU0.js.map → message-tray-BFlu8clI.js.map} +1 -1
- package/dist/_chunks/{nl-CDVnnx1U.js → nl-C6Y0QXnm.js} +2 -2
- package/dist/_chunks/{nl-CDVnnx1U.js.map → nl-C6Y0QXnm.js.map} +1 -1
- package/dist/_chunks/{notes-panel-CMyjUXD4.js → notes-panel-B_8-Mebz.js} +3 -3
- package/dist/_chunks/{notes-panel-CMyjUXD4.js.map → notes-panel-B_8-Mebz.js.map} +1 -1
- package/dist/_chunks/{notification-card-BHJ07FkH.js → notification-card-D29_sVA1.js} +3 -3
- package/dist/_chunks/{notification-card-BHJ07FkH.js.map → notification-card-D29_sVA1.js.map} +1 -1
- package/dist/_chunks/{notification-tray-Dzm1c3Wy.js → notification-tray-CzIzz3bX.js} +4 -4
- package/dist/_chunks/{notification-tray-Dzm1c3Wy.js.map → notification-tray-CzIzz3bX.js.map} +1 -1
- package/dist/_chunks/optical-prescription-BQ75_kf6.js +1260 -0
- package/dist/_chunks/optical-prescription-BQ75_kf6.js.map +1 -0
- package/dist/_chunks/{patient-details-pU_E5xM2.js → patient-details-JkOI3Ijd.js} +6 -6
- package/dist/_chunks/{patient-details-pU_E5xM2.js.map → patient-details-JkOI3Ijd.js.map} +1 -1
- package/dist/_chunks/{patient-search-X9SUZGpy.js → patient-search-BaUJ_Y-N.js} +47 -45
- package/dist/_chunks/patient-search-BaUJ_Y-N.js.map +1 -0
- package/dist/_chunks/{patient-summary-card--t3BjTdU.js → patient-summary-card-CQOLMH3E.js} +4 -4
- package/dist/_chunks/{patient-summary-card--t3BjTdU.js.map → patient-summary-card-CQOLMH3E.js.map} +1 -1
- package/dist/_chunks/{patient-table-BgWgNIMf.js → patient-table-B_mOe-ZT.js} +2 -2
- package/dist/_chunks/{patient-table-BgWgNIMf.js.map → patient-table-B_mOe-ZT.js.map} +1 -1
- package/dist/_chunks/{payment-request-card-2ts7ITxd.js → payment-request-card-C0fqlKqO.js} +25 -24
- package/dist/_chunks/{payment-request-card-2ts7ITxd.js.map → payment-request-card-C0fqlKqO.js.map} +1 -1
- package/dist/_chunks/pen-line-D0De5zdl.js +21 -0
- package/dist/_chunks/pen-line-D0De5zdl.js.map +1 -0
- package/dist/_chunks/{periodontal-chart-card-6c6Lt4ws.js → periodontal-chart-card-WVjJAheq.js} +2 -2
- package/dist/_chunks/{periodontal-chart-card-6c6Lt4ws.js.map → periodontal-chart-card-WVjJAheq.js.map} +1 -1
- package/dist/_chunks/{pl-BWNumNrg.js → pl-BdazJAOp.js} +3 -3
- package/dist/_chunks/{pl-BWNumNrg.js.map → pl-BdazJAOp.js.map} +1 -1
- package/dist/_chunks/{popover-uJ6BvEU3.js → popover-DGTKfLWh.js} +2 -2
- package/dist/_chunks/{popover-uJ6BvEU3.js.map → popover-DGTKfLWh.js.map} +1 -1
- package/dist/_chunks/{practice-results-CSEHTH2V.js → practice-results-BCr7jMt1.js} +5 -5
- package/dist/_chunks/{practice-results-CSEHTH2V.js.map → practice-results-BCr7jMt1.js.map} +1 -1
- package/dist/_chunks/{pregnancy-dating-CxVAA6_4.js → pregnancy-dating-IsDVfqJX.js} +6 -6
- package/dist/_chunks/{pregnancy-dating-CxVAA6_4.js.map → pregnancy-dating-IsDVfqJX.js.map} +1 -1
- package/dist/_chunks/{pregnancy-weight-gain-C7zyrwow.js → pregnancy-weight-gain-B-CkVYnU.js} +2 -2
- package/dist/_chunks/{pregnancy-weight-gain-C7zyrwow.js.map → pregnancy-weight-gain-B-CkVYnU.js.map} +1 -1
- package/dist/_chunks/{privacy-lock-DrRmK8C7.js → privacy-lock-YYBiI_bY.js} +3 -3
- package/dist/_chunks/{privacy-lock-DrRmK8C7.js.map → privacy-lock-YYBiI_bY.js.map} +1 -1
- package/dist/_chunks/{product-hub-panel-CaZqttvm.js → product-hub-panel-CTld1r5V.js} +3 -3
- package/dist/_chunks/{product-hub-panel-CaZqttvm.js.map → product-hub-panel-CTld1r5V.js.map} +1 -1
- package/dist/_chunks/{pt-zqdQuryr.js → pt-B3UKvhHp.js} +2 -2
- package/dist/_chunks/{pt-zqdQuryr.js.map → pt-B3UKvhHp.js.map} +1 -1
- package/dist/_chunks/{public-header.agent-C-opZaOw.js → public-header.agent-rX_VA6hd.js} +107 -103
- package/dist/_chunks/public-header.agent-rX_VA6hd.js.map +1 -0
- package/dist/_chunks/{radiograph-panel.agent-D1x33moc.js → radiograph-panel.agent-e488ooH8.js} +40 -57
- package/dist/_chunks/radiograph-panel.agent-e488ooH8.js.map +1 -0
- package/dist/_chunks/{reviews-panel-liUj6OPX.js → reviews-panel-DmOjvmyH.js} +4 -4
- package/dist/_chunks/{reviews-panel-liUj6OPX.js.map → reviews-panel-DmOjvmyH.js.map} +1 -1
- package/dist/_chunks/{rich-text-editor-DUgznqOf.js → rich-text-editor-CgA2bYwi.js} +186 -195
- package/dist/_chunks/rich-text-editor-CgA2bYwi.js.map +1 -0
- package/dist/_chunks/{ro-CornQr64.js → ro-DVTEQpPK.js} +2 -2
- package/dist/_chunks/{ro-CornQr64.js.map → ro-DVTEQpPK.js.map} +1 -1
- package/dist/_chunks/{ru-CKAXNYVD.js → ru-C-Mp40SC.js} +3 -3
- package/dist/_chunks/{ru-CKAXNYVD.js.map → ru-C-Mp40SC.js.map} +1 -1
- package/dist/_chunks/{session-countdown-qr8EO5QY.js → session-countdown-C8AsE072.js} +2 -2
- package/dist/_chunks/{session-countdown-qr8EO5QY.js.map → session-countdown-C8AsE072.js.map} +1 -1
- package/dist/_chunks/{sheet-B_X54aZo.js → sheet-D5K0LB3q.js} +2 -2
- package/dist/_chunks/{sheet-B_X54aZo.js.map → sheet-D5K0LB3q.js.map} +1 -1
- package/dist/_chunks/{sidebar-B0OBmJrC.js → sidebar-CtU35PIX.js} +70 -67
- package/dist/_chunks/sidebar-CtU35PIX.js.map +1 -0
- package/dist/_chunks/{sign-document-nK03S73h.js → sign-document-Bfk0WpWV.js} +2 -2
- package/dist/_chunks/{sign-document-nK03S73h.js.map → sign-document-Bfk0WpWV.js.map} +1 -1
- package/dist/_chunks/{sign-in-with-alfadocs-button-LppxjlFt.js → sign-in-with-alfadocs-button-UlYefZpI.js} +2 -2
- package/dist/_chunks/{sign-in-with-alfadocs-button-LppxjlFt.js.map → sign-in-with-alfadocs-button-UlYefZpI.js.map} +1 -1
- package/dist/_chunks/{signature-capture-Ct_4Md4e.js → signature-capture-DN52VNKL.js} +206 -189
- package/dist/_chunks/signature-capture-DN52VNKL.js.map +1 -0
- package/dist/_chunks/{signature-field-jgwYgUhO.js → signature-field-0rFODJlW.js} +47 -41
- package/dist/_chunks/signature-field-0rFODJlW.js.map +1 -0
- package/dist/_chunks/{slot-grid-FsqumOaS.js → slot-grid-CQSULZjd.js} +4 -4
- package/dist/_chunks/{slot-grid-FsqumOaS.js.map → slot-grid-CQSULZjd.js.map} +1 -1
- package/dist/_chunks/{sq-CIIvqXZv.js → sq-DierVlw-.js} +2 -2
- package/dist/_chunks/{sq-CIIvqXZv.js.map → sq-DierVlw-.js.map} +1 -1
- package/dist/_chunks/{streaming-text-Cedc05ya.js → streaming-text-C5bYz7LL.js} +2 -2
- package/dist/_chunks/{streaming-text-Cedc05ya.js.map → streaming-text-C5bYz7LL.js.map} +1 -1
- package/dist/_chunks/subDays-DIKRViZm.js +8 -0
- package/dist/_chunks/{subDays-DGSOp9d9.js.map → subDays-DIKRViZm.js.map} +1 -1
- package/dist/_chunks/{sv-Kpk1pzjz.js → sv-gQWo_19z.js} +2 -2
- package/dist/_chunks/{sv-Kpk1pzjz.js.map → sv-gQWo_19z.js.map} +1 -1
- package/dist/_chunks/{task-tray-DP5A3Qnc.js → task-tray-Br3vc0O1.js} +3 -3
- package/dist/_chunks/{task-tray-DP5A3Qnc.js.map → task-tray-Br3vc0O1.js.map} +1 -1
- package/dist/_chunks/{tasks-panel-BuxaYtEF.js → tasks-panel-LCK5ZXvU.js} +5 -5
- package/dist/_chunks/{tasks-panel-BuxaYtEF.js.map → tasks-panel-LCK5ZXvU.js.map} +1 -1
- package/dist/_chunks/{theme-toggle-dtdy5EaL.js → theme-toggle-BJCz_UOi.js} +3 -3
- package/dist/_chunks/{theme-toggle-dtdy5EaL.js.map → theme-toggle-BJCz_UOi.js.map} +1 -1
- package/dist/_chunks/{toast.agent-BSxl057x.js → toast.agent-uV8CeAy6.js} +2 -2
- package/dist/_chunks/{toast.agent-BSxl057x.js.map → toast.agent-uV8CeAy6.js.map} +1 -1
- package/dist/_chunks/{token-insert-menu-Pok4nExI.js → token-insert-menu-BYv6yoZI.js} +2 -2
- package/dist/_chunks/{token-insert-menu-Pok4nExI.js.map → token-insert-menu-BYv6yoZI.js.map} +1 -1
- package/dist/_chunks/{tool-rail-BZx0-yIr.js → tool-rail-AaTqxkIM.js} +2 -2
- package/dist/_chunks/{tool-rail-BZx0-yIr.js.map → tool-rail-AaTqxkIM.js.map} +1 -1
- package/dist/_chunks/{tooth-scheme-D_rso4uu.js → tooth-scheme-CX49GycY.js} +3 -3
- package/dist/_chunks/{tooth-scheme-D_rso4uu.js.map → tooth-scheme-CX49GycY.js.map} +1 -1
- package/dist/_chunks/{tr-DHaeLFxG.js → tr-Btm6M3Km.js} +2 -2
- package/dist/_chunks/{tr-DHaeLFxG.js.map → tr-Btm6M3Km.js.map} +1 -1
- package/dist/_chunks/{transaction-chip-B6iWoVmU.js → transaction-chip-DJCstquX.js} +41 -51
- package/dist/_chunks/transaction-chip-DJCstquX.js.map +1 -0
- package/dist/_chunks/type-ggmfVs23.js +16 -0
- package/dist/_chunks/type-ggmfVs23.js.map +1 -0
- package/dist/_chunks/{unit-converter-fEqluT8b.js → unit-converter-3uL_tMCm.js} +2 -2
- package/dist/_chunks/{unit-converter-fEqluT8b.js.map → unit-converter-3uL_tMCm.js.map} +1 -1
- package/dist/_chunks/upload-BfT2hzMg.js +16 -0
- package/dist/_chunks/upload-BfT2hzMg.js.map +1 -0
- package/dist/_chunks/use-priority-overflow-c9SjxZkZ.js +101 -0
- package/dist/_chunks/use-priority-overflow-c9SjxZkZ.js.map +1 -0
- package/dist/_chunks/use-visual-viewport-pin-ChurOsHM.js +31 -0
- package/dist/_chunks/use-visual-viewport-pin-ChurOsHM.js.map +1 -0
- package/dist/_chunks/{warning-stack-BaMI7-n7.js → warning-stack-BlG_Ujy3.js} +3 -3
- package/dist/_chunks/{warning-stack-BaMI7-n7.js.map → warning-stack-BlG_Ujy3.js.map} +1 -1
- package/dist/_chunks/{workflow-map-qWsgCldq.js → workflow-map-C643Q43h.js} +5 -5
- package/dist/_chunks/{workflow-map-qWsgCldq.js.map → workflow-map-C643Q43h.js.map} +1 -1
- package/dist/_chunks/{zh-CN-BncsTBwM.js → zh-CN-DkVN4vsB.js} +3 -3
- package/dist/_chunks/{zh-CN-BncsTBwM.js.map → zh-CN-DkVN4vsB.js.map} +1 -1
- package/dist/agent-catalog.json +845 -1034
- package/dist/agent-i18n/en.json +42 -69
- package/dist/brand/product-lockup/product-lockup.d.ts +1 -1
- package/dist/components/_shared/calendar-class-names.d.ts.map +1 -1
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/ai-consent-banner/index.js +1 -1
- package/dist/components/ai-prompt-input/index.js +1 -1
- package/dist/components/anamnesis-card/index.js +1 -1
- package/dist/components/appointment-card/index.js +2 -2
- package/dist/components/appointment-timeline/index.js +1 -1
- package/dist/components/audio-recorder/index.js +1 -1
- package/dist/components/benefit-card/benefit-card.d.ts.map +1 -1
- package/dist/components/benefit-card/index.js +1 -1
- package/dist/components/bishop-score/index.js +1 -1
- package/dist/components/bmi-calculator/index.js +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/button/button.d.ts +8 -1
- package/dist/components/button/button.d.ts.map +1 -1
- package/dist/components/button/index.js +2 -2
- package/dist/components/button-group/button-group.d.ts +16 -0
- package/dist/components/button-group/button-group.d.ts.map +1 -1
- package/dist/components/button-group/index.js +1 -1
- package/dist/components/care-plan-card/index.js +1 -1
- package/dist/components/care-plan-entry-card/index.js +1 -1
- package/dist/components/care-plan-header/index.js +1 -1
- package/dist/components/carousel/index.js +1 -1
- package/dist/components/chat-container/chat-container.d.ts.map +1 -1
- package/dist/components/chat-container/index.js +1 -1
- package/dist/components/chat-input/index.js +1 -1
- package/dist/components/chat-message/index.js +1 -1
- package/dist/components/connection-status/index.js +1 -1
- package/dist/components/contact-profile-card/index.js +1 -1
- package/dist/components/control-room-rail/index.js +1 -1
- package/dist/components/copy-field/index.js +1 -1
- package/dist/components/counter/counter.d.ts +1 -1
- package/dist/components/cycle-calculator/index.js +1 -1
- package/dist/components/data-table/data-table.d.ts +2 -8
- package/dist/components/data-table/data-table.d.ts.map +1 -1
- package/dist/components/data-table/index.js +2 -2
- package/dist/components/data-table/toolbar.d.ts +4 -10
- package/dist/components/data-table/toolbar.d.ts.map +1 -1
- package/dist/components/date-picker/index.js +1 -1
- package/dist/components/date-range-picker/index.js +1 -1
- package/dist/components/date-time-picker/index.js +1 -1
- package/dist/components/description-list/index.js +1 -1
- package/dist/components/document-scanner/document-scanner.d.ts.map +1 -1
- package/dist/components/document-scanner/index.js +1 -1
- package/dist/components/due-date-calculator/index.js +2 -2
- package/dist/components/editor-overlay/index.js +1 -1
- package/dist/components/empty-state/index.js +1 -1
- package/dist/components/entity-summary/index.js +1 -1
- package/dist/components/face-scheme/face-scheme-data.d.ts +167 -0
- package/dist/components/face-scheme/face-scheme-data.d.ts.map +1 -1
- package/dist/components/face-scheme/face-scheme.agent.d.ts.map +1 -1
- package/dist/components/face-scheme/face-scheme.d.ts +112 -2
- package/dist/components/face-scheme/face-scheme.d.ts.map +1 -1
- package/dist/components/face-scheme/index.d.ts +2 -2
- package/dist/components/face-scheme/index.d.ts.map +1 -1
- package/dist/components/face-scheme/index.js +25 -14
- package/dist/components/fetal-weight/index.js +1 -1
- package/dist/components/field-array/index.js +1 -1
- package/dist/components/file-upload/file-upload.d.ts +1 -0
- package/dist/components/file-upload/file-upload.d.ts.map +1 -1
- package/dist/components/file-upload/index.d.ts +1 -1
- package/dist/components/file-upload/index.d.ts.map +1 -1
- package/dist/components/file-upload/index.js +4 -3
- package/dist/components/finished-terminal/finished-terminal.d.ts.map +1 -1
- package/dist/components/finished-terminal/index.js +1 -1
- package/dist/components/fiscal-code-input/index.js +1 -1
- package/dist/components/flag/flag.d.ts +1 -1
- package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/gestational-age-calculator/index.js +1 -1
- package/dist/components/hcg-doubling/index.js +1 -1
- package/dist/components/header/header.d.ts.map +1 -1
- package/dist/components/header/index.js +1 -1
- package/dist/components/header-settings/index.js +1 -1
- package/dist/components/icon-button/index.js +1 -1
- package/dist/components/icon-button-group/icon-button-group.d.ts +6 -0
- package/dist/components/icon-button-group/icon-button-group.d.ts.map +1 -1
- package/dist/components/icon-button-group/index.js +1 -1
- package/dist/components/icon-picker/index.js +1 -1
- package/dist/components/image-cropper/index.js +1 -1
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/key-value-pair/index.js +1 -1
- package/dist/components/link/link.d.ts +1 -1
- package/dist/components/locale-picker/index.js +1 -1
- package/dist/components/map-view/index.js +1 -1
- package/dist/components/matrix-rain/matrix-rain.d.ts +1 -1
- package/dist/components/message-card/index.js +1 -1
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/notification-card/index.js +1 -1
- package/dist/components/notification-tray/index.js +1 -1
- package/dist/components/optical-prescription/index.d.ts +4 -2
- package/dist/components/optical-prescription/index.d.ts.map +1 -1
- package/dist/components/optical-prescription/index.js +29 -26
- package/dist/components/optical-prescription/optical-prescription-charts.d.ts +78 -0
- package/dist/components/optical-prescription/optical-prescription-charts.d.ts.map +1 -0
- package/dist/components/optical-prescription/optical-prescription-data.d.ts +29 -0
- package/dist/components/optical-prescription/optical-prescription-data.d.ts.map +1 -1
- package/dist/components/optical-prescription/optical-prescription.agent.d.ts.map +1 -1
- package/dist/components/optical-prescription/optical-prescription.d.ts +9 -0
- package/dist/components/optical-prescription/optical-prescription.d.ts.map +1 -1
- package/dist/components/patient-details/index.js +1 -1
- package/dist/components/patient-search/index.js +1 -1
- package/dist/components/patient-search/patient-search.d.ts.map +1 -1
- package/dist/components/patient-summary-card/index.js +1 -1
- package/dist/components/patient-table/index.js +1 -1
- package/dist/components/payment-card/index.js +1 -1
- package/dist/components/periodontal-chart-card/index.js +1 -1
- package/dist/components/popover/index.js +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/pregnancy-dating/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/index.js +1 -1
- package/dist/components/privacy-lock/index.js +1 -1
- package/dist/components/product-hub-tray/index.js +1 -1
- package/dist/components/public-header/index.js +1 -1
- package/dist/components/public-header/public-header.d.ts +1 -1
- package/dist/components/public-header/public-header.d.ts.map +1 -1
- package/dist/components/radiograph-panel/index.js +1 -1
- package/dist/components/radiograph-panel/radiograph-panel.d.ts +2 -2
- package/dist/components/radiograph-panel/radiograph-panel.d.ts.map +1 -1
- package/dist/components/reviews-panel/index.js +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/session-countdown/index.js +1 -1
- package/dist/components/sheet/index.js +1 -1
- package/dist/components/sidebar/index.js +1 -1
- package/dist/components/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/sign-document/index.js +1 -1
- package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
- package/dist/components/signature-capture/index.js +1 -1
- package/dist/components/signature-capture/signature-capture.d.ts.map +1 -1
- package/dist/components/signature-field/index.js +1 -1
- package/dist/components/signature-field/signature-field.d.ts +7 -0
- package/dist/components/signature-field/signature-field.d.ts.map +1 -1
- package/dist/components/skeleton-scheme/index.js +1194 -0
- package/dist/components/skeleton-scheme/index.js.map +1 -0
- package/dist/components/slot-grid/index.js +1 -1
- package/dist/components/streaming-text/index.js +1 -1
- package/dist/components/task-tray/index.js +1 -1
- package/dist/components/tasks-panel/index.js +1 -1
- package/dist/components/theme-toggle/index.js +1 -1
- package/dist/components/toast/index.js +1 -1
- package/dist/components/token-insert-menu/index.js +1 -1
- package/dist/components/tool-rail/index.js +1 -1
- package/dist/components/tooth-scheme/index.js +1 -1
- package/dist/components/transaction-chip/index.js +1 -1
- package/dist/components/unit-converter/index.js +1 -1
- package/dist/components/warning-stack/index.js +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +40 -35
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-priority-overflow.d.ts +63 -0
- package/dist/hooks/use-priority-overflow.d.ts.map +1 -0
- package/dist/hooks/use-visual-viewport-pin.d.ts +32 -0
- package/dist/hooks/use-visual-viewport-pin.d.ts.map +1 -0
- package/dist/i18n/locales/ar.d.ts +170 -9
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +173 -12
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +170 -9
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +173 -12
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +170 -9
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +173 -12
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +170 -9
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +173 -12
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +170 -9
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +173 -12
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +170 -9
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +173 -12
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +170 -9
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +173 -12
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +170 -9
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +173 -12
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +170 -9
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +173 -12
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +170 -9
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +173 -12
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +170 -9
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +173 -12
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +170 -9
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +173 -12
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +170 -9
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +173 -12
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +170 -9
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +173 -12
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +170 -9
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +173 -12
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +170 -9
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +173 -12
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +170 -9
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +173 -12
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +170 -9
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +173 -12
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +774 -761
- package/dist/index.js.map +1 -1
- package/dist/locales/ar.json +173 -12
- package/dist/locales/de.json +173 -12
- package/dist/locales/el.json +173 -12
- package/dist/locales/en.json +173 -12
- package/dist/locales/es.json +173 -12
- package/dist/locales/fr.json +173 -12
- package/dist/locales/hi.json +173 -12
- package/dist/locales/it.json +173 -12
- package/dist/locales/ja.json +173 -12
- package/dist/locales/nl.json +173 -12
- package/dist/locales/pl.json +173 -12
- package/dist/locales/pt.json +173 -12
- package/dist/locales/ro.json +173 -12
- package/dist/locales/ru.json +173 -12
- package/dist/locales/sq.json +173 -12
- package/dist/locales/sv.json +173 -12
- package/dist/locales/tr.json +173 -12
- package/dist/locales/zh.json +173 -12
- package/dist/patterns/alia-assistant/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +1 -1
- package/dist/tokens.css +2 -2
- package/package.json +5 -5
- package/dist/_chunks/benefit-card-Xnxj4Gmo.js.map +0 -1
- package/dist/_chunks/button-DD_0Xdmr.js.map +0 -1
- package/dist/_chunks/button-group-CvEnVzY7.js +0 -119
- package/dist/_chunks/button-group-CvEnVzY7.js.map +0 -1
- package/dist/_chunks/document-scanner-B23j4w7X.js.map +0 -1
- package/dist/_chunks/face-scheme-BT9_KdL0.js +0 -1450
- package/dist/_chunks/face-scheme-BT9_KdL0.js.map +0 -1
- package/dist/_chunks/file-upload-Kw1rdvFw.js.map +0 -1
- package/dist/_chunks/finished-terminal-Di4gtZ50.js.map +0 -1
- package/dist/_chunks/freemium-paywall-DFoeedwh.js.map +0 -1
- package/dist/_chunks/header-DaXWDw0M.js.map +0 -1
- package/dist/_chunks/icon-button-group-C48khLE0.js +0 -206
- package/dist/_chunks/icon-button-group-C48khLE0.js.map +0 -1
- package/dist/_chunks/insert-result-C7xSDb8q.js.map +0 -1
- package/dist/_chunks/link-cell-renderer-BCppbMec.js.map +0 -1
- package/dist/_chunks/marketplace-app-shell-BCYiOvKZ.js.map +0 -1
- package/dist/_chunks/optical-prescription-Bmlbuopi.js +0 -653
- package/dist/_chunks/optical-prescription-Bmlbuopi.js.map +0 -1
- package/dist/_chunks/patient-search-X9SUZGpy.js.map +0 -1
- package/dist/_chunks/patient-shell-oiIRqEAl.js +0 -162
- package/dist/_chunks/patient-shell-oiIRqEAl.js.map +0 -1
- package/dist/_chunks/public-header.agent-C-opZaOw.js.map +0 -1
- package/dist/_chunks/radiograph-panel.agent-D1x33moc.js.map +0 -1
- package/dist/_chunks/rich-text-editor-DUgznqOf.js.map +0 -1
- package/dist/_chunks/sidebar-B0OBmJrC.js.map +0 -1
- package/dist/_chunks/signature-capture-Ct_4Md4e.js.map +0 -1
- package/dist/_chunks/signature-field-jgwYgUhO.js.map +0 -1
- package/dist/_chunks/subDays-DGSOp9d9.js +0 -8
- package/dist/_chunks/transaction-chip-B6iWoVmU.js.map +0 -1
- package/dist/patterns/patient-shell/index.d.ts +0 -12
- package/dist/patterns/patient-shell/index.d.ts.map +0 -1
- package/dist/patterns/patient-shell/index.js +0 -5
- package/dist/patterns/patient-shell/index.js.map +0 -1
- package/dist/patterns/patient-shell/patient-shell.d.ts +0 -62
- package/dist/patterns/patient-shell/patient-shell.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/skeleton-scheme/skeleton-scheme.agent.ts","../../../src/components/skeleton-scheme/skeleton-paths.ts","../../../src/components/skeleton-scheme/skeleton-scheme-data.ts","../../../src/components/skeleton-scheme/skeleton-scheme.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { SkeletonSchemeHandle } from './skeleton-scheme';\nimport type { FindingType } from './skeleton-scheme-data';\n\n// JSON-Schema fragments derived from the data-model unions. Kept inline so the\n// adapter stays a pure module with no runtime import of the unions.\nconst REGION_SCHEMA = {\n type: 'string',\n description:\n \"Per-bone region id within the active view, e.g. 'femur-r', 'tibia-l', 'humerus-r', 'ribs-l', 'lumbar-spine', 'skull'. Bilateral bones carry a '-r' / '-l' anatomical-side suffix; midline bones (spine, skull, sternum, sacrum) have none.\",\n} as const;\nconst FINDING_SCHEMA = {\n enum: ['observation', 'lesion', 'pain', 'treatment', 'note'],\n} as const;\nconst VIEW_SCHEMA = {\n type: 'string',\n description: \"View id, one of 'skeletal-front' / 'skeletal-back'.\",\n} as const;\n\nexport const skeletonSchemeAgent: AgentAdapter<SkeletonSchemeHandle> = {\n id: 'skeleton-scheme',\n // pick — focus a bone (`focus_region`, transient); set_value / edit_inline —\n // `set_finding` records a finding, `remove_finding` clears one; view_change —\n // `set_view` switches the active skeletal view.\n capabilities: ['pick', 'set_value', 'edit_inline', 'view_change'],\n state: {\n chart: {\n type: 'object',\n descriptionKey: 'ui.agent.skeletonScheme.state.chart',\n description:\n 'Current skeletal chart — findings keyed by bone region id. Notes are PHI and omitted from this snapshot; read them per-region via get_region.',\n // A9: the always-on snapshot carries region ids + finding TYPES only —\n // never the free-text clinical note (PHI). Notes are fetched deliberately\n // per region via get_region (safety: 'phi').\n read: (handle) =>\n Object.fromEntries(\n Object.entries(handle.getChart()).map(([id, findings]) => [\n id,\n findings.map((f) => f.type),\n ]),\n ),\n },\n activeView: {\n type: 'string',\n descriptionKey: 'ui.agent.skeletonScheme.state.activeView',\n description: 'Id of the currently displayed skeletal view.',\n read: (handle) => handle.getView(),\n },\n },\n actions: {\n focus_region: {\n safety: 'read',\n argsType: '{ regionId: string }',\n argsSchema: {\n type: 'object',\n properties: { regionId: REGION_SCHEMA },\n required: ['regionId'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.skeletonScheme.actions.focusRegion',\n description: 'Move focus to a specific bone in the active view.',\n invoke: (handle, args: { regionId: string }) => {\n handle.focusRegion(args.regionId);\n },\n },\n get_region: {\n // phi (not read): resolves the free-text clinical note, which is PHI.\n // PRS §26 §3 — phi outranks read so the host gates it behind stricter\n // confirm + audit. The always-on state.chart snapshot stays note-free.\n safety: 'phi',\n argsType: '{ regionId: string }',\n argsSchema: {\n type: 'object',\n properties: { regionId: REGION_SCHEMA },\n required: ['regionId'],\n },\n returns: 'SkeletonFinding[]',\n returnsSchema: {\n type: 'array',\n items: {\n type: 'object',\n properties: { type: FINDING_SCHEMA, note: { type: 'string' } },\n required: ['type'],\n },\n },\n idempotent: true,\n descriptionKey: 'ui.agent.skeletonScheme.actions.getRegion',\n description: 'Read the findings (incl. notes) recorded on one bone.',\n invoke: (handle, args: { regionId: string }) =>\n handle.getRegion(args.regionId),\n },\n regions_with: {\n safety: 'read',\n argsType: '{ type: FindingType }',\n argsSchema: {\n type: 'object',\n properties: { type: FINDING_SCHEMA },\n required: ['type'],\n },\n returns: 'string[]',\n returnsSchema: { type: 'array', items: REGION_SCHEMA },\n idempotent: true,\n descriptionKey: 'ui.agent.skeletonScheme.actions.regionsWith',\n description: 'List the bone region ids carrying a given finding type.',\n invoke: (handle, args: { type: FindingType }) =>\n handle.regionsWith(args.type),\n },\n set_finding: {\n safety: 'write',\n argsType: '{ regionId: string; type: FindingType; note?: string }',\n argsSchema: {\n type: 'object',\n properties: {\n regionId: REGION_SCHEMA,\n type: FINDING_SCHEMA,\n note: { type: 'string' },\n },\n required: ['regionId', 'type'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.skeletonScheme.actions.setFinding',\n description:\n 'Record a finding (observation / lesion / pain / treatment / note) on a bone.',\n invoke: (\n handle,\n args: { regionId: string; type: FindingType; note?: string },\n ) => {\n handle.setFinding(args.regionId, args.type, args.note);\n },\n },\n remove_finding: {\n safety: 'write',\n argsType: '{ regionId: string; type: FindingType }',\n argsSchema: {\n type: 'object',\n properties: { regionId: REGION_SCHEMA, type: FINDING_SCHEMA },\n required: ['regionId', 'type'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.skeletonScheme.actions.removeFinding',\n description: 'Remove a single finding type from a bone.',\n invoke: (handle, args: { regionId: string; type: FindingType }) => {\n handle.removeFinding(args.regionId, args.type);\n },\n },\n clear_region: {\n safety: 'destructive',\n argsType: '{ regionId: string }',\n argsSchema: {\n type: 'object',\n properties: { regionId: REGION_SCHEMA },\n required: ['regionId'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.skeletonScheme.actions.clearRegion',\n description: 'Clear every finding from a bone.',\n invoke: (handle, args: { regionId: string }) => {\n handle.clearRegion(args.regionId);\n },\n },\n set_view: {\n safety: 'write',\n argsType: '{ viewId: string }',\n argsSchema: {\n type: 'object',\n properties: { viewId: VIEW_SCHEMA },\n required: ['viewId'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.skeletonScheme.actions.setView',\n description: 'Switch the active skeletal view.',\n invoke: (handle, args: { viewId: string }) => {\n handle.setView(args.viewId);\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'skeleton-scheme' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-region',\n description:\n 'Each rendered bone `<g>` carries its region id as `data-region` and its anatomical side (`left` / `right` / `midline`) as `data-side`, so bilateral bones can be disambiguated by side. The root `data-view` attribute exposes the active skeletal view.',\n },\n },\n};\n\nexport type { FindingType };\n","/* ------------------------------------------------------------------ */\n/* AUTO-GENERATED — do not hand-edit. */\n/* */\n/* Per-bone id'd SVG paths traced from the Z-Anatomy musculoskeletal */\n/* model (body.glb, CC BY-SA 4.0, https://www.z-anatomy.com/). Each */\n/* clinical region groups one or more bone meshes; the mesh set is */\n/* rendered orthographically (front + back), colour-id-coded so the */\n/* front-most bone wins each pixel (occlusion-correct), then marching- */\n/* squares-traced and Douglas-Peucker-simplified into an even-odd path. */\n/* Bilateral regions are `<base>-r` / `<base>-l` on the PATIENT side. */\n/* Regenerate via z-anatomy-mock/trace.html — see SKELETON-ASSETS.md. */\n/* ------------------------------------------------------------------ */\n\nexport interface SkeletonArt {\n /** Stable region id, unique within a view — finding key + `data-region`. */\n id: string;\n /** i18n key suffix under `skeletonScheme.region.*`. */\n labelKey: string;\n side: 'left' | 'right' | 'midline';\n /** Coarse grouping for ordering / annotation. */\n group: 'axial' | 'upper-limb' | 'lower-limb';\n /** Marker anchor (region centroid), in viewBox units. */\n cx: number;\n cy: number;\n /** Even-odd fill path in the shared viewBox. */\n d: string;\n}\n\nexport const SKELETON_ART_VIEWBOX = '0 0 283.39 720';\nexport const SKELETON_ART_WIDTH = 283.39;\nexport const SKELETON_ART_HEIGHT = 720;\n\nexport const SKELETON_FRONT_ART: SkeletonArt[] = [\n {\n id: 'cervical-spine',\n labelKey: 'cervicalSpine',\n side: 'midline',\n group: 'axial',\n cx: 141.4,\n cy: 94.7,\n d: 'M127.6 68L129 70L130.8 70.6L138.2 71.1L152.1 70.6L154.9 67.7L155.8 69.1L154.4 70.6L152.6 70.6L151.5 72.9L149.8 71.7L147.7 72L150.6 73.7L150.6 75.5L148.6 77.5L142.3 78.6L135.4 78L133.6 76.9L132.2 75.5L132.2 73.7L135.1 72L133.1 71.7L131.3 72.9L130.2 70.6L128.4 70.6L127 69.1L127.3 68.3ZM129.3 85.2L137.1 88.4L145.7 88.4L148.6 87.8L153.2 85L151.8 88.1L153.5 89.9L152.4 94.5L154.1 96.2L154.1 97.9L152.9 99.1L154.1 102.5L156.4 104.8L156.4 107.1L154.4 108.6L150.9 108.6L148.6 109.7L147.5 112L142.8 113.2L135.4 112L134.2 109.7L126.7 107.4L126.4 104.8L128.7 102.5L129.9 99.1L128.2 96.8L130.5 94.5L129.3 89.9L131 88.1L129.3 85.8Z',\n },\n {\n id: 'sacrum',\n labelKey: 'sacrum',\n side: 'midline',\n group: 'axial',\n cx: 141.4,\n cy: 330.6,\n d: 'M129.3 309.3L130.5 309.9L131 313.9L136.5 317.1L148 316.5L151.8 313.9L153.2 309L153.5 311.6L154.9 313.6L160.1 310.2L163 309.6L166.8 314.5L167.3 327.2L165 332.9L160.4 335.8L161.6 336.4L158.7 338.7L155.2 348.5L148 352.8L145.7 356.3L138.2 356.3L134.8 352.8L130.8 351.1L127 347.3L124.1 338.7L121.2 336.4L122.4 335.2L118.1 333.2L116.1 329.5L115.5 319.1L116.6 312.8L119.8 309.6L121.5 309.6L128.4 313.6L129.3 309.9ZM133.6 336.1L132.2 337L133.1 340.1L134.8 340.1L136.2 338.1L136.2 337L134.2 336.1ZM148 336.1L146.6 337L146.6 339.3L148 340.7L150.6 338.7L150.6 337.5L148.6 336.1Z',\n },\n {\n id: 'ribs-l',\n labelKey: 'ribs',\n side: 'left',\n group: 'axial',\n cx: 174.5,\n cy: 194.9,\n d: 'M155.2 110L158.4 110.3L166.5 117.2L172.2 119.5L175.4 122.1L173.4 123.6L167 123.6L163 123L163.3 121.5L160.1 120.1L151.5 120.1L149.2 121.2L148.9 117.5L150.9 116.1L154.1 115.8L148.6 114.9L148.9 111.7L152.6 112L154.9 110.3ZM179.4 127.3L181.7 129L185.8 135.4L188.6 141.7L189.2 147.5L190.9 149.2L193.8 155.5L194.4 163L197.3 172.2L196.7 176.8L200.2 187.2L199.6 197.6L201.3 202.2L201.3 210.2L198.4 218.9L199 224.6L198.4 230.4L197.3 232.7L197.3 261.5L195 266.7L192.1 269L191.5 272.4L190.1 273.9L188.4 273.9L187.8 271.6L184.3 271L181.2 267.8L177.7 261.5L178.6 258.3L182 258.9L184.9 261.2L184 258.6L183.2 257.8L176.8 257.2L174.8 255.7L170.8 244.2L171.4 243.1L168.8 241.6L166.2 237.3L156.4 228.7L153.8 224.4L150.9 224.9L150 224.1L150 219.5L151.5 218L161 225.8L158.1 218.3L145.4 201L145.4 197L147.5 196.1L155.5 204.8L156.4 204.5L157 202.8L148.9 194.7L148.9 191.8L150.9 189.2L172.2 203.6L178 203.6L181.2 201.6L171.6 196.7L161.3 194.4L151.2 187.8L150.6 182.6L151.8 177.4L150 176.3L149.5 174L150.6 165.9L149.5 163.6L148.9 157.2L148.9 154.4L150 153.2L147.7 151.5L147.2 149.8L150.9 143.1L157.8 143.7L162.4 145.4L171.4 140.5L159.6 136.8L153.8 138L152.4 135.4L152.6 132.2L154.9 132.2L159.6 129.9L169.9 129.9L166.2 134.2L174 136.8L175.4 134.8L175.4 131.3L171.9 129.6L179.1 127.6ZM182.6 136.8L180.6 139.4L184.3 142L184.6 140L182.9 137.1ZM178 142.6L173.1 147.5L180.3 150.6L182.9 146.3L178.3 142.8ZM164.7 151.2L153.5 153.8L167 159.3L175.4 155.5L165.3 151.2ZM187.8 152.4L186.3 154.4L190.1 157.5L188.4 152.4ZM181.4 158.7L176 162.4L184.9 166.2L188.1 162.4L182 158.7ZM167.6 166.2L165.3 167.3L155.8 167L163 171.4L171.1 174.2L179.4 170.5L168.2 166.2ZM192.4 168.5L190.9 170.5L193 172.5L192.7 168.8ZM186.6 174.2L181.2 178L188.4 181.7L191.5 177.4L187.2 174.2ZM154.9 178.8L156.1 180.6L161.9 182.9L172.2 189.2L175.1 189.2L181.7 186.6L171.1 181.2L162.4 181.2L155.5 178.8ZM195.3 182.9L193.2 186.6L196.4 190.4L196.7 186L195.6 183.2ZM187.8 190.9L182.3 194.7L187.2 198.4L192.1 195.8L192.1 194.7L188.4 190.9ZM195.8 201.9L192.7 205.1L195.8 211.1L196.7 210.8L197.9 205.6L196.4 201.9ZM161.9 206.5L163.3 212L169.3 215.1L172.2 218L176.8 219.2L181.7 218.9L179.1 216.3L162.1 206.8ZM188.4 208.2L183.5 211.4L190.1 216.3L192.7 214.3L188.9 208.2ZM194.7 222.6L193.8 224.1L195.3 227.2L195.3 222.6ZM166.5 224.9L171.6 232.4L177.4 235.3L181.2 235.6L173.4 227.8L167 224.9ZM187.2 226.1L182.6 227.2L182.3 228.1L188.9 235.3L193.2 231.6L190.9 226.9L187.8 226.1ZM151.2 233.9L158.1 239.6L170.8 255.7L177.7 269L177.7 272.4L176.3 275L174.8 274.2L170.8 264.4L161.6 250.6L154.4 242.2L150 239.6L150 234.4L150.9 234.1ZM194.7 238.8L192.1 240.8L194.7 245.7L195.6 243.1L195 239ZM186 242.8L179.4 244.2L184.3 250.8L189.5 251.4L192.1 250L186.6 242.8ZM193.5 255.5L188.6 257.5L191.2 264.1L193.2 262.7L193.8 260.9L193.8 255.7Z',\n },\n {\n id: 'ribs-r',\n labelKey: 'ribs',\n side: 'right',\n group: 'axial',\n cx: 108.4,\n cy: 194.9,\n d: 'M125.3 110L127.3 109.7L130.2 112L133.9 111.7L134.2 114.9L128.7 115.8L131.9 116.1L133.9 117.5L133.6 121.2L131.3 120.1L122.7 120.1L120.4 120.7L119.8 123L115.8 123.6L109.4 123.6L107.4 122.1L110.6 119.5L116.4 117.2L125 110.3ZM102.8 127.3L110.3 129.6L107.4 131.3L107.4 134.8L108.9 136.8L116.6 134.2L112.9 129.9L123.3 129.9L124.4 131L130.2 132.2L130.5 134.8L129 138L123.3 136.8L111.5 140.5L120.4 145.4L125 143.7L131.9 143.1L135.6 149.8L135.1 151.5L132.8 153.2L133.9 154.4L133.9 157.2L133.3 164.2L132.2 165.9L133.3 174L132.8 176.3L131 177.4L132.2 182.6L131.6 187.8L121.5 194.4L111.2 196.7L101.7 201.6L104.8 203.6L110.6 203.6L131.9 189.2L133.9 191.8L133.9 194.7L125.9 202.8L126.4 204.5L127.3 204.8L135.4 196.1L138 197.6L138 200.4L134.5 203.9L133.3 207.4L124.7 218.3L121.8 225.8L131.3 218L132.8 219.5L132.8 224.1L131.9 224.9L129 224.4L126.4 228.7L116.6 237.3L114 241.6L111.5 243.1L112 244.2L108 255.7L106 257.2L99.6 257.8L98.8 258.6L97.9 261.2L100.8 258.9L104.3 258.3L105.1 261.5L101.7 267.8L98.5 271L95 271.6L94.5 273.9L92.7 273.9L91.3 272.4L90.7 269L87.8 266.7L85.5 261.5L85.5 232.7L84.4 230.4L83.8 224.6L84.4 218.9L81.5 210.2L81.5 202.2L83.2 197.6L82.7 186.6L86.1 176.8L85.5 172.2L88.4 163L89 155.5L91.9 149.2L93.6 147.5L94.8 140L99.4 131.3L102.5 127.6ZM100.2 136.8L98.8 138.2L98.5 142L102.2 139.4L100.5 137.1ZM104.8 142.6L99.9 146.3L102.5 150.6L109.7 147.5L105.1 142.8ZM117.5 151.2L107.4 155.5L115.8 159.3L129.3 153.8L118.1 151.2ZM94.5 152.4L92.7 157.5L96.5 154.4L95 152.4ZM100.8 158.7L94.8 162.4L97.9 166.2L106.8 162.4L101.4 158.7ZM113.5 166.2L108.9 169.1L103.4 170.5L111.7 174.2L119.8 171.4L127 167L117.5 167.3L114 166.2ZM90.4 168.5L89.6 169.9L89.9 172.5L91.9 170.5L90.7 168.8ZM95 174.2L91.3 177.4L94.5 181.7L101.7 178L95.6 174.2ZM127.3 178.8L120.4 181.2L111.7 181.2L101.1 186.6L107.7 189.2L110.6 189.2L121 182.9L126.7 180.6L127.9 178.8ZM87.6 182.9L86.1 186L86.4 190.4L89.6 186.6L87.8 183.2ZM94.5 190.9L90.7 194.7L90.7 195.8L95.6 198.4L100.5 194.7L95 190.9ZM86.4 201.9L85 204.5L86.4 211.1L90.1 205.1L87 201.9ZM121 206.5L103.7 216.3L101.1 218.9L106 219.2L110.6 218L113.5 215.1L119.5 212L121.2 206.8ZM93.9 208.2L90.1 214.3L92.7 216.3L99.4 211.4L94.5 208.2ZM87.6 222.6L87.6 227.2L89 224.1L88.1 222.6ZM115.8 224.9L109.4 227.8L101.7 235.6L105.4 235.3L111.2 232.4L116.4 224.9ZM92.7 226.1L89.6 231.6L94.5 235.3L100.5 227.5L93.3 226.1ZM131 233.9L132.8 234.4L132.8 239.6L128.4 242.2L121.2 250.6L112 264.4L108 274.2L106.6 275L105.1 272.4L105.1 269L110.3 258.6L121.2 243.6L130.8 234.1ZM88.1 238.8L87.3 239.6L88.1 245.7L90.7 240.8L88.4 239ZM96.2 242.8L91 250.3L93.3 251.4L97.3 251.4L103.4 244.2L96.8 242.8ZM89.3 255.5L89 260.9L89.6 262.7L91.6 264.1L94.2 257.5L89.6 255.7Z',\n },\n {\n id: 'pelvis-l',\n labelKey: 'pelvis',\n side: 'left',\n group: 'lower-limb',\n cx: 173.3,\n cy: 335.7,\n d: 'M181.2 294.3L187.8 294.6L193.2 298.4L197.9 305.3L198.4 312.2L195 316.8L193.8 326.6L188.1 334.7L184.6 342.7L184.6 347.9L175.1 354L171.4 361.2L168.5 362.9L169.6 365.8L172.5 366.9L171.9 375.6L170.2 379.6L164.7 383.9L160.1 385.6L154.9 383.9L154.4 382.8L150.3 381L145.4 376.1L143.1 370.4L142.6 364L144 361.4L154.4 360.9L159.3 356L159.3 354.2L162.1 351.4L165.6 344.4L166.8 338.7L163.6 336.1L160.4 335.8L164.2 333.8L166.8 329.5L167.3 319.1L165.6 312.2L161.6 309.3L166.2 301.8L169.3 298.7L171.6 296.9L180.9 294.6ZM159.6 363.7L154.9 366.6L152.4 369.8L153.2 374.1L158.4 374.7L160.4 372.7L162.1 364.6L160.1 363.7Z',\n },\n {\n id: 'pelvis-r',\n labelKey: 'pelvis',\n side: 'right',\n group: 'lower-limb',\n cx: 109.5,\n cy: 335.7,\n d: 'M97.1 294.3L101.4 294L111.2 296.9L116.6 301.8L118.9 305.3L121.2 309.3L119.8 309.6L116.1 313.9L115.5 327.2L117.8 332.9L120.4 334.9L121.5 334.4L122.4 335.8L119.2 336.1L116.1 338.7L117.2 344.4L120.7 351.4L123.6 354.2L123.6 356L126.7 359.7L129.6 361.4L138.8 361.4L140.3 364L139.7 370.4L137.4 376.1L132.5 381L128.4 382.8L127.9 383.9L122.7 385.6L118.1 383.9L112.6 379.6L110.9 375.6L110.3 366.9L112.9 366L114.3 362.9L111.5 361.2L107.7 354L98.2 347.9L98.2 342.7L94.8 334.7L89 326.6L87.8 316.8L84.4 312.2L84.4 307L87.8 300.7L91.6 296.4L96.8 294.6ZM121.5 363.7L120.7 364.6L120.7 367.5L122.4 372.7L124.4 374.7L129.6 374.1L130.5 369.8L129.3 368.1L122.1 363.7Z',\n },\n {\n id: 'clavicle-l',\n labelKey: 'clavicle',\n side: 'left',\n group: 'upper-limb',\n cx: 174.8,\n cy: 124.6,\n d: 'M187.5 119.2L202.8 118.9L205.6 120.1L206.5 121.5L203.3 125.3L195.3 124.1L187.8 125.9L183.7 124.7L179.1 127.6L170.5 129.9L156.1 129.9L152.1 131.6L147.2 127.9L150.3 122.4L173.4 123.6L178 121.2L187.2 119.5Z',\n },\n {\n id: 'clavicle-r',\n labelKey: 'clavicle',\n side: 'right',\n group: 'upper-limb',\n cx: 107.9,\n cy: 124.6,\n d: 'M79.8 119.2L95 118.9L104.8 121.2L109.4 123.6L132.5 122.4L136.2 127.9L130.2 131.6L126.7 129.9L109.4 129.3L103.7 127.6L99.1 124.7L95 125.9L87.6 124.1L79.5 125.3L76.3 121.5L77.2 120.1L79.5 119.5Z',\n },\n {\n id: 'sternum',\n labelKey: 'sternum',\n side: 'midline',\n group: 'axial',\n cx: 141.4,\n cy: 163.5,\n d: 'M136.2 127.9L138.8 129.3L143.4 129.3L146.9 127.6L152.4 131.9L152.4 135.4L153.5 137.7L148.9 147.5L147.2 149.2L147.7 151.5L149.5 153.2L148.9 157.2L149.5 163.6L150.6 165.9L149.5 174L151.8 179.7L150.6 182.6L151.2 188.9L148.9 191.8L148.9 195.3L145.4 197L145.4 201L142.3 205.3L140.5 205.3L139.1 203.9L137.4 201L138 197.6L133.9 195.3L133.9 191.8L131.6 188.9L132.2 182.6L131 179.7L133.3 174L132.2 169.3L133.9 157.2L133.3 153.2L135.1 151.5L135.6 149.2L133.3 146.9L133.3 145.2L129.3 137.7L130.5 134.8L129.9 131.9L135.9 128.2Z',\n },\n {\n id: 'skull',\n labelKey: 'skull',\n side: 'midline',\n group: 'axial',\n cx: 141.4,\n cy: 35.1,\n d: 'M139.7 0L148 0.3L156.7 3.7L164.2 8.4L171.4 18.4L173.1 34.6L167.3 58.8L160.7 64.2L157.2 64.2L155.5 65.4L154.7 68.5L152.1 70.6L138.2 71.1L129 70L127.3 65.4L125.6 64.2L122.1 64.2L115.5 58.8L113.8 49.5L110.9 41.5L109.7 34.6L110.9 20.2L113.8 13.8L119.2 7.8L125 4.3L133.1 0.9L139.4 0.3Z',\n },\n {\n id: 'mandible',\n labelKey: 'mandible',\n side: 'midline',\n group: 'axial',\n cx: 141.4,\n cy: 78.6,\n d: 'M121.8 64.5L125.3 64.5L127 69.1L133.6 76.9L135.4 78L142.3 78.6L148.6 77.5L155.8 69.1L157.5 64.5L160.7 64.2L159.3 77.2L156.4 82.4L148.6 87.8L134.2 87.8L127.9 83.8L124.7 79.5L123.6 77.2L122.1 64.8Z',\n },\n {\n id: 'humerus-l',\n labelKey: 'humerus',\n side: 'left',\n group: 'upper-limb',\n cx: 225.7,\n cy: 196.6,\n d: 'M212.3 127.3L220.6 128.2L223.2 130.2L224.9 153.8L231.8 188.9L233 213.1L239.9 235.6L246.8 250.6L246.2 255.7L244.2 258.3L233.9 258.9L229.2 262.4L227.8 262.1L226.9 258.9L221.2 257.8L219.2 253.4L220.3 250.6L224.9 246L225.5 244.2L226.1 228.7L222.6 189.5L218 167L214.6 156.1L210.5 147.5L204.2 142.8L202.5 137.7L203.6 132.5L208.5 128.2L212 127.6Z',\n },\n {\n id: 'humerus-r',\n labelKey: 'humerus',\n side: 'right',\n group: 'upper-limb',\n cx: 57.1,\n cy: 196.6,\n d: 'M70 127.3L74.3 128.2L79.2 132.5L79.8 140L78.6 142.8L72.3 147.5L68.3 156.1L64.8 167L61.3 183.2L56.7 228.7L56.7 237.3L57.9 246L62.5 250.6L63.6 253.4L61.6 257.8L55.9 258.9L55 262.1L53.6 262.4L49 258.9L38.6 258.3L36.6 255.7L36 250.6L42.9 235.6L49.8 213.1L51 188.9L57.9 153.8L59.6 130.2L62.2 128.2L69.7 127.6Z',\n },\n {\n id: 'radius-l',\n labelKey: 'radius',\n side: 'left',\n group: 'upper-limb',\n cx: 250.2,\n cy: 312.4,\n d: 'M245.7 259.8L247.4 261.5L246.2 264.4L246.2 268.4L253.2 302.4L257.2 335.8L259.5 345.6L263.5 355.4L262.7 360.3L259.8 358.6L258.6 359.1L254 357.4L250.6 358.6L249.7 357.1L250.8 345.6L249.1 322L239.9 278.2L240.5 267.3L237.6 261.5L245.4 260.1Z',\n },\n {\n id: 'radius-r',\n labelKey: 'radius',\n side: 'right',\n group: 'upper-limb',\n cx: 32.6,\n cy: 312.4,\n d: 'M36.6 259.8L45.2 261.5L42.3 267.3L42.9 278.2L33.7 322L32 345.6L33.1 356.5L32.3 358.6L28.8 357.4L24.2 359.1L23 358.6L20.2 360.3L19.3 355.4L23.3 345.6L25.6 335.8L29.7 302.4L36.6 268.4L36.6 264.4L35.4 262.1L36.6 260.4Z',\n },\n {\n id: 'ulna-l',\n labelKey: 'ulna',\n side: 'left',\n group: 'upper-limb',\n cx: 239.7,\n cy: 304.5,\n d: 'M233.6 259.2L237 259.2L237.6 263.8L239.9 267.3L239.9 278.2L242.2 286.8L243.4 328.9L246.8 349.1L249.7 356.5L249.4 357.4L246.5 357.4L245.4 360.3L242.2 354.2L241.6 350.2L238.8 323.7L236.4 286.3L232.4 270.7L227.8 265L228.4 263.2L233.3 259.5Z',\n },\n {\n id: 'ulna-r',\n labelKey: 'ulna',\n side: 'right',\n group: 'upper-limb',\n cx: 43.1,\n cy: 304.5,\n d: 'M45.8 259.2L49 258.9L53 261.8L55 265L50.4 270.7L46.4 286.3L44.1 323.7L41.2 350.2L40.6 354.2L37.4 360.3L36.3 357.4L33.4 357.4L33.1 356.5L36 349.1L39.5 328.9L40 292.6L42.9 278.2L42.9 267.3L45.2 263.8L45.8 259.8Z',\n },\n {\n id: 'femur-l',\n labelKey: 'femur',\n side: 'left',\n group: 'lower-limb',\n cx: 181.6,\n cy: 446.4,\n d: 'M181.2 350.2L182 349.9L185.2 352.5L187.5 358.8L190.1 360.9L192.4 359.1L196.4 358.6L200.4 359.7L204.2 368.1L203.6 373.8L197.3 385.9L190.9 429.1L186.3 470.6L186.3 514.9L186.9 519L189.2 523L190.9 529.9L188.6 534.5L188.6 537.4L185.5 538.8L185.8 531.1L183.5 528.2L182 526.8L175.1 526.8L168.5 531.6L167.9 537.4L169.6 539.1L165.3 541.2L163 541.2L158.1 539.7L157.5 536.8L155.8 534.5L155.2 524.2L156.4 521.9L162.1 517.2L166.8 509.2L176 463.1L182.3 394L181.7 392.3L178.8 390L178.3 385.3L179.4 383.6L179.4 378.4L177.1 370.9L174.5 367.8L169.9 366L168.5 362.9L171.4 361.2L174.8 354.2L180.9 350.5Z',\n },\n {\n id: 'femur-r',\n labelKey: 'femur',\n side: 'right',\n group: 'lower-limb',\n cx: 101.2,\n cy: 446.4,\n d: 'M100.5 350.2L101.4 349.9L107.7 354L111.5 361.2L114.3 362.9L112.9 366L108.3 367.8L105.7 370.9L103.4 378.4L103.4 383.6L104.5 385.3L104 390L101.1 392.3L100.5 394L106.8 463.1L116.1 509.2L120.7 517.2L125 520.4L127.6 524.2L127 534.5L125.3 536.8L124.7 539.7L119.8 541.2L117.5 541.2L113.2 539.1L114.9 537.4L114.3 531.6L107.7 526.8L100.8 526.8L99.4 528.2L97.1 531.1L97.3 538.8L94.2 537.4L94.2 534.5L91.9 529.9L93.6 523L95.9 519L96.5 514.9L96.5 470.6L91.9 429.1L85.5 385.9L79.2 373.8L78.6 368.1L82.4 359.7L86.4 358.6L90.4 359.1L92.2 360.9L93.9 360.3L95.9 357.7L97.6 352.5L100.2 350.5Z',\n },\n {\n id: 'patella-l',\n labelKey: 'patella',\n side: 'left',\n group: 'lower-limb',\n cx: 177.3,\n cy: 534.8,\n d: 'M174.8 527L182 526.8L185.8 531.1L185.2 538.6L178.6 544L172.8 541.7L167.9 537.4L168.5 531.6L174.5 527.3Z',\n },\n {\n id: 'patella-r',\n labelKey: 'patella',\n side: 'right',\n group: 'lower-limb',\n cx: 105.5,\n cy: 534.8,\n d: 'M100.5 527L107.7 526.8L109.4 527.9L114.3 531.6L114.9 537.4L110 541.7L104.3 544L97.1 537.4L97.1 531.1L100.2 527.3Z',\n },\n {\n id: 'tibia-l',\n labelKey: 'tibia',\n side: 'left',\n group: 'lower-limb',\n cx: 174.2,\n cy: 607.6,\n d: 'M167.9 540.3L170.5 540L177.4 544L178.6 544L182.6 540.6L188.4 541.2L190.4 547.2L184 557L181.7 565.1L179.4 640.5L181.2 676.2L184 684.3L181.4 687.5L179.1 688.6L167.6 687.5L164.7 692.1L161 688.3L160.4 684.9L167.3 673.9L170.2 653.8L169.6 579.5L163.9 558.7L159.8 553.5L157 546L158.4 543.5L167.6 540.6Z',\n },\n {\n id: 'tibia-r',\n labelKey: 'tibia',\n side: 'right',\n group: 'lower-limb',\n cx: 108.6,\n cy: 607.8,\n d: 'M112 540.3L114.6 540L123.3 542.9L125.3 544.3L125.9 546L123 553.5L118.9 558.7L113.2 579.5L112.6 653.2L115.5 673.3L122.4 684.9L121.8 688.3L118.1 692.1L115.2 687.5L103.7 688.6L101.4 687.5L98.8 684.3L98.8 682L101.7 676.2L103.4 640.5L101.1 565.1L98.8 557L92.4 547.2L94.5 541.2L100.2 540.6L104.3 544L105.4 544L111.7 540.6Z',\n },\n {\n id: 'fibula-l',\n labelKey: 'fibula',\n side: 'left',\n group: 'lower-limb',\n cx: 186.4,\n cy: 619.2,\n d: 'M189.8 546.6L195 553.5L190.9 561.6L189.8 607.1L186.3 657.8L186.3 684.9L187.5 696.4L186.9 698.1L184.9 699.6L181.2 695.8L180 688.9L184 684.3L181.7 677.4L182.9 671L182.3 638.8L185.2 606.5L185.2 564.5L183.5 558.7L190.1 546.9Z',\n },\n {\n id: 'fibula-r',\n labelKey: 'fibula',\n side: 'right',\n group: 'lower-limb',\n cx: 96.4,\n cy: 618.9,\n d: 'M92.4 546.6L99.4 558.7L97.6 564.5L97.6 606.5L100.5 638.8L99.9 671L101.1 677.4L98.8 682L98.8 684.3L102.8 688.9L101.7 695.8L97.9 699.6L95.9 698.1L95.3 696.4L96.5 684.9L96.5 657.8L93 607.7L91.9 561.6L87.8 553.5L92.2 546.9Z',\n },\n {\n id: 'hand-l',\n labelKey: 'hand',\n side: 'left',\n group: 'upper-limb',\n cx: 257.7,\n cy: 388.3,\n d: 'M253.2 357.7L259.8 359.1L260.9 360.9L263.2 361.4L276.8 375L276.8 377.3L281.4 388.8L281.4 392.8L283.1 396.3L282.8 397.7L280.2 396.3L277.3 391.7L276.8 387.1L272.2 381.9L271 376.1L266.7 370.7L263.8 369.5L262.9 370.4L263.5 377.9L267.6 391.1L269.3 392.8L269.3 396.3L271 396.9L271 401.5L272.7 407.8L275 410.7L275 413.6L277.3 417.6L276.8 420.5L277.9 421.6L275.9 423.1L270.4 413.6L265.8 400.9L264.1 398.6L264.7 398L262.9 395.7L262.4 385.9L260.6 379.6L257.8 374.4L257.8 384.2L260.6 392.3L260.1 395.7L261.2 396.3L261.2 403.2L262.9 410.1L262.4 412.4L263.5 413L264.1 426.2L263.2 427.1L261.8 426.2L260.1 422.2L257.2 404.4L254.9 399.2L254.9 380.2L253.7 376.1L252.3 374.7L251.4 377.3L252.6 407.8L252 421.1L249.7 420.5L248 413L248.5 409L246.8 394.6L249.1 377.3L247.7 374.7L245.1 383.6L245.1 393.4L242.2 401.5L242.2 406.1L240.5 410.1L239.9 415.9L237.6 416.4L237 411.3L237.6 404.4L238.8 403.8L239.3 401.5L239.3 391.7L241.1 387.1L243.4 372.1L245.1 368.6L245.1 366.9L242.8 366.3L243.4 363.5L244.2 361.4L246.8 361.7L246.2 360L247.1 359.1L251.1 359.1L252.9 358Z',\n },\n {\n id: 'hand-r',\n labelKey: 'hand',\n side: 'right',\n group: 'upper-limb',\n cx: 25.1,\n cy: 388.3,\n d: 'M28.5 357.7L31.7 359.1L34 358.6L36.9 359.7L36 361.7L38.6 361.4L39.5 363.5L40 366.3L38 366.6L37.7 368.6L38.9 369.8L41.8 387.1L43.5 391.7L43.5 401.5L45.8 411.3L45.2 416.4L42.9 415.9L42.3 410.1L40.6 406.1L40.6 401.5L37.7 393.4L37.7 383.6L35.1 374.7L33.7 377.3L36 394.6L34.3 409L34.8 413L33.7 419.3L32.3 421.3L30.8 421.1L30.2 407.8L31.4 377.3L30.5 374.7L29.1 376.1L27.9 380.2L27.9 399.2L25.6 404.4L22.8 422.2L21 426.2L19.6 427.1L18.7 426.2L19.3 413L20.4 412.4L19.9 410.1L21.6 403.2L21.6 396.3L22.8 395.7L22.2 392.3L25.1 384.2L25.1 374.4L22.2 379.6L20.4 385.9L19.9 395.7L18.1 398L18.7 398.6L17 400.9L12.4 413.6L6.9 423.1L4.9 421.6L6 420.5L5.5 417.6L7.2 415.3L7.8 410.7L10.1 407.8L11.8 401.5L11.8 396.9L13.5 396.3L13.5 392.8L15.3 391.1L19.3 377.9L19.9 370.4L19 369.5L16.1 370.7L11.8 376.1L10.7 381.9L6 387.1L5.5 391.7L2.6 396.3L0.6 397.7L-0.3 396.3L1.4 392.8L1.4 388.8L6 377.3L6 375L19.6 361.4L21.9 360.9L23 359.1L28.2 358Z',\n },\n {\n id: 'foot-l',\n labelKey: 'foot',\n side: 'left',\n group: 'lower-limb',\n cx: 178.1,\n cy: 705.9,\n d: 'M166.2 687.7L176.3 688.6L179.7 688L181.2 695.8L186.9 702.1L190.9 709.1L195.8 713.4L198.1 713.4L203.6 718.8L202.8 719.7L197.6 719.7L194.7 719.1L194.1 718L193 719.1L191.2 719.1L187.8 717.4L186 719.7L182.6 717.4L180.9 718L179.7 716.8L178.8 717.1L179.4 718.3L178.6 719.1L172.2 719.1L171.1 718L169.9 718.6L166.5 717.4L165 715.4L164.4 711.4L166.8 703.9L166.2 702.1L163.9 700.4L164.4 693.5L166.5 688ZM183.7 710.5L182.3 711.4L183.7 714L184 710.8Z',\n },\n {\n id: 'foot-r',\n labelKey: 'foot',\n side: 'right',\n group: 'lower-limb',\n cx: 104.7,\n cy: 706,\n d: 'M113.2 687.7L115.2 687.5L116.6 689.5L118.4 693.5L118.9 698.7L118.9 700.4L116.6 702.1L116.1 703.9L118.4 711.4L117.8 715.4L116.4 717.4L112.9 718.6L111.7 718L110.6 719.1L104.3 719.1L103.4 718.3L104 717.1L103.1 716.8L102 718L100.2 717.4L96.8 719.7L95 717.4L91.6 719.1L89.9 719.1L88.7 718L88.1 719.1L85.2 719.7L80.1 719.7L79.2 718.8L84.7 713.4L87 713.4L91.9 709.1L95.9 702.1L101.7 695.8L103.1 688L112.9 688Z',\n },\n];\n\nexport const SKELETON_BACK_ART: SkeletonArt[] = [\n {\n id: 'thoracic-spine',\n labelKey: 'thoracicSpine',\n side: 'midline',\n group: 'axial',\n cx: 141.4,\n cy: 173.9,\n d: 'M129.3 107.1L130.2 106.8L131.9 109.2L135.9 109.2L140 111.5L150.9 109.2L152.6 106.8L156.1 107.4L157.5 109.4L157.2 111.5L152.4 113.5L152.6 114.3L156.7 113.8L157.5 114.6L156.4 118.7L150.3 120.7L148.9 123.8L149.2 124.7L151.5 123L154.9 123L155.8 123.8L155.8 127.9L149.8 129.9L149.5 134.2L154.4 132.2L156.4 135.4L155.5 138.5L152.6 138.5L149.5 140.5L149.5 144.6L151.5 145.4L156.1 144.3L157.5 146.3L157 149.2L150.9 150.6L148.9 152.6L148.3 155.5L148.6 157.5L151.5 156.4L156.7 156.4L157.5 157.2L157.5 159.6L156.1 161.6L151.5 162.1L149.5 164.2L149.5 169.9L150.3 170.8L156.1 170.8L157.5 174.5L152.1 176L150.6 177.4L150 181.4L147.7 182.6L151.2 185.5L148.9 189.5L149.5 195.3L156.4 198.1L156.1 200.7L150.6 202.2L150.6 205.1L149.5 206.8L157.5 212L155.5 215.1L150.9 215.1L150 216L150 221.2L154.1 222.9L152.6 224.9L149.5 225.8L148.9 229.8L150.6 231L150 233.9L151.2 237.9L150 239L150.6 243.1L146.9 243.4L147.2 248.8L145.7 249.7L142.8 248L141.7 251.4L140 248.5L137.1 249.7L135.6 248.8L135.9 243.4L132.2 243.1L132.8 239L131.6 237.9L132.8 233.9L132.2 231L133.9 229.8L133.3 225.8L130.2 224.9L128.7 222.9L132.8 221.2L132.8 216L131.9 215.1L127.9 215.7L125.3 212L132.8 207.4L132.2 202.2L126.7 200.7L126.4 198.1L133.3 195.3L133.9 190.1L131 184.3L135.6 182.6L132.8 181.4L132.2 177.4L130.8 176L125.3 174.5L126.7 170.8L132.5 170.8L133.3 169.9L132.8 163L126.7 161.6L125.3 159.6L125.3 157.2L126.1 156.4L134.5 157.2L133.9 152.6L131.9 150.6L126.1 149.5L125.3 146.3L126.7 144.3L131.3 145.4L133.3 144.6L133.3 140.5L131.9 139.1L126.4 137.7L127 133.6L128.4 132.2L133.3 134.2L133.3 130.2L127 127.9L127 123.8L127.9 123L131.3 123L133.9 124.4L132.5 120.7L126.7 118.9L125.3 116.4L126.1 113.8L130.5 114L129.6 112.6L125.3 111.2L125.3 108.9L126.7 107.4L129 107.4Z',\n },\n {\n id: 'lumbar-spine',\n labelKey: 'lumbarSpine',\n side: 'midline',\n group: 'axial',\n cx: 141.4,\n cy: 282.7,\n d: 'M133.9 243.6L136.2 243.6L135.6 248.8L137.1 249.7L140 248.5L141.1 251.4L142 251.1L142.8 248L145.7 249.7L147.2 248.8L146.9 243.4L150.6 244.8L150.3 248.5L153.8 250.3L157 250.6L156.7 253.2L151.5 253.2L150 254L150.6 255.7L149.8 256.6L147.2 256.9L150.3 258.9L151.5 261.2L156.1 261.2L159.3 263.8L158.4 265.2L150.3 265.8L151.2 269.6L148 270.4L147.7 271.3L150.9 272.2L151.2 274.2L152.6 275L156.7 273.9L158.7 275.9L158.4 278.5L150 279.9L150.6 284L153.8 288.3L159 287.7L160.4 289.7L159.6 291.2L154.9 293.5L152.1 292.9L151.2 295.5L153.5 297.2L154.9 301L159.6 298.7L162.4 298.7L163.9 300.7L160.7 305.6L152.9 308.2L152.4 312.8L150.9 314.2L149.5 313.9L148 310.8L146.9 314.8L135.9 314.8L134.8 310.8L133.3 313.9L131.9 314.2L130.5 312.8L129.9 308.2L122.1 305.6L118.9 300.7L120.4 298.7L123.3 298.7L127.9 301L129.3 297.2L131.6 295.5L130.8 292.9L127.9 293.5L123.3 291.2L122.4 289.7L123.8 287.7L129 288.3L132.8 281.7L132.5 279.6L124.1 278.2L125 274.5L126.7 273.9L130.2 275L131.6 274.2L131.9 272.2L135.1 271.3L134.8 270.4L131.6 269.6L132.8 266.1L124.4 265.2L123.6 263.8L126.7 261.2L131.3 261.2L132.2 259.2L135.6 256.9L133.1 256.6L132.2 255.7L132.8 254L131.3 253.2L125.9 252.9L126.1 250.3L129 250.3L132.8 248.3L132.2 244.8L133.6 243.9Z',\n },\n {\n id: 'cervical-spine',\n labelKey: 'cervicalSpine',\n side: 'midline',\n group: 'axial',\n cx: 141.4,\n cy: 88,\n d: 'M134.5 65.1L138.2 66.5L139.4 66.5L140 65.4L145.2 66.5L148 64.8L151.5 65.4L155.5 68.3L158.4 68.3L159.3 69.1L159.8 70.3L158.4 71.7L156.1 70.6L152.6 70.6L151.5 72.9L149.8 71.7L147.7 72L150.6 73.7L150.6 76L152.9 78.9L152.4 82.4L153.5 85.8L151.8 88.1L153.5 91L152.4 94.5L154.1 96.2L154.1 97.9L152.9 99.1L154.1 102.5L156.4 104.8L156.1 107.4L152.6 106.8L150.9 109.2L140 111.5L135.9 109.2L131.9 109.2L130.2 106.8L126.4 107.1L126.4 104.8L128.7 102.5L129.9 99.1L128.2 96.8L130.5 94.5L129.3 91L131 88.1L129.3 85.8L130.5 82.4L129.9 78.9L132.2 76L132.2 73.7L135.1 72L133.1 71.7L131.3 72.9L130.2 70.6L126.7 70.6L124.4 71.7L123 70.3L124.4 68.3L127.3 68.3L131.3 65.4L134.2 65.4Z',\n },\n {\n id: 'sacrum',\n labelKey: 'sacrum',\n side: 'midline',\n group: 'axial',\n cx: 141.3,\n cy: 332.5,\n d: 'M129.3 308.2L130.5 312.8L133.1 314.2L134.8 310.8L135.9 314.8L146.9 314.8L148 310.8L149.5 313.9L150.9 314.2L152.4 312.8L153.2 307.9L154.4 313.6L161 310.5L158.1 314.5L156.4 320.8L157.5 323.1L161 326L160.4 332.4L162.1 335.8L158.7 338.7L155.8 347.3L144.6 356.3L137.1 356.3L134.8 352.8L127.9 348.8L124.1 338.7L119.5 334.1L119.5 332.9L121 332.1L121.8 332.4L121.5 333.8L122.4 332.9L121.8 326L125.3 323.1L126.4 320.8L124.7 314.5L121.8 310.5L122.7 310.2L127.9 313.6L129.3 311.6L129.3 308.7ZM133.6 336.1L132.2 338.7L134.8 340.7L136.2 339.3L136.2 337L134.2 336.1ZM148.6 336.1L146.6 337L148 340.1L149.8 340.1L150.6 338.7L150.6 337L149.2 336.1Z',\n },\n {\n id: 'coccyx',\n labelKey: 'coccyx',\n side: 'midline',\n group: 'axial',\n cx: 141.4,\n cy: 363.2,\n d: 'M136.8 358.3L145.7 358L148.3 360L148.3 362.9L144.9 364L145.4 365.8L144.3 368.6L141.7 371.2L138.5 369.2L138.5 367.5L137.4 366.3L138 364L134.5 362.9L134.5 360L136.5 358.6Z',\n },\n {\n id: 'scapula-l',\n labelKey: 'scapula',\n side: 'left',\n group: 'upper-limb',\n cx: 96.9,\n cy: 151.8,\n d: 'M71.7 122.1L76 121.8L78.3 124.7L84.1 128.2L87.6 126.4L90.4 126.4L93.6 129L93.6 132.5L94.5 133.3L102 129.3L105.4 125.3L107.7 125.3L110.3 127.9L114.3 134.8L115.5 138.2L115.5 158.4L114.3 164.7L108.6 182L104.5 188.9L102 191.5L99.1 190.4L95.9 186.6L93 176.8L90.1 169.9L87.3 165.9L85 157.8L75.2 144.6L75.2 141.1L78.6 133.6L77.2 132.2L73.7 132.2L68.8 129.6L67.7 123.8L71.4 122.4Z',\n },\n {\n id: 'scapula-r',\n labelKey: 'scapula',\n side: 'right',\n group: 'upper-limb',\n cx: 186,\n cy: 151.8,\n d: 'M206.5 122.1L210.8 121.8L214.3 123L215.1 125.6L214 129.6L209.1 132.2L205.6 132.2L204.2 133.6L207.6 141.1L207.6 144.6L197.9 157.8L195.6 165.9L192.7 169.9L189.8 176.8L186.9 186.6L183.7 190.4L180.9 191.5L178.3 188.9L174.2 182L168.5 164.7L167.3 158.4L167.9 135.9L172.5 127.9L175.1 125.3L177.4 125.3L180.9 129.3L188.4 133.3L189.2 132.5L188.6 130.2L191.2 127L195.3 126.4L198.7 128.2L204.5 124.7L206.2 122.4Z',\n },\n {\n id: 'ribs-l',\n labelKey: 'ribs',\n side: 'left',\n group: 'axial',\n cx: 108.5,\n cy: 204.5,\n d: 'M124.1 110.6L130.5 113.5L130.2 114.3L126.1 113.8L125.3 114.6L126.4 118.7L129.9 119.8L122.7 120.1L120.4 120.7L119.5 122.1L121 124.1L125.6 122.4L127.6 123.3L126.7 127.6L121.8 127.9L124.4 131L128.2 132.5L126.1 137.4L123.3 136.8L115.8 139.1L114.3 134.8L116.4 134.5L116.6 133.6L107.7 125.3L105.4 125.3L102 129.3L101.1 129L108.3 121.2L116.4 117.2L123.8 110.9ZM129.3 132.5L131.9 132.2L133.3 133.1L133.3 134.2L129.6 132.8ZM115.5 143.4L120.4 145.4L125 143.7L132.5 143.1L133.3 144L132.5 145.4L126.7 144.3L125.3 146.3L125.9 149.2L131.9 150.6L133.9 152.6L132.8 153.2L134.5 155.5L134.2 157.5L131.3 156.4L126.1 156.4L125.3 157.2L125.9 160.7L132.5 162.7L133.3 165.3L133.3 169.9L132.5 170.8L126.7 170.8L125.3 174.5L130.8 176L133.9 182.6L131 184.3L131.6 187.8L125 192.7L116.4 196.1L111.2 196.7L101.7 201.6L104.8 203.6L110.6 203.6L132.5 189.2L133.9 190.7L133.3 195.3L127.3 197.3L126.4 200.4L127.6 201.6L125.9 202.8L127.3 204.8L130.2 201.9L131.9 201.9L132.8 207.4L125.3 212L127 214.3L127 216L124.7 218.3L121.8 225.8L131.3 218L132.8 219.5L132.8 221.2L128.7 222.9L129.3 224.1L126.4 228.7L116.6 237.3L114 241.6L111.5 243.1L112 244.2L108 255.7L106 257.2L99.6 257.8L98.8 258.6L97.9 261.2L100.8 258.9L104.3 258.3L105.1 261.5L101.7 267.8L98.5 271L95 271.6L94.5 273.9L92.7 273.9L91.3 272.4L90.7 269L87.8 266.7L85.5 261.5L85.5 232.7L84.4 230.4L83.8 224.6L84.4 218.9L81.5 210.2L81.5 202.2L83.2 197.6L82.7 187.2L86.1 176.8L85.5 172.2L87 166.2L89.6 169.3L89.6 172.2L90.4 171.9L91.9 174L92.4 176.3L91.3 178L94.2 181.4L95.9 186.6L99.1 190.4L101.4 191.5L104.8 188.1L110.6 189.2L128.2 179.1L120.4 181.2L111.7 181.2L108 183.2L110.9 175.1L112.3 173.7L119.8 171.4L127 167L117.5 167.3L113.8 165.9L115.2 159.3L129.3 153.8L118.1 151.2L115.8 151.8L115.5 144ZM87.6 182.9L86.1 186L86.4 190.4L89.6 186.6L87.8 183.2ZM94.5 190.9L90.7 194.7L90.7 195.8L95.6 198.4L100.5 194.7L95 190.9ZM86.4 201.9L85 204.5L86.4 211.1L90.1 205.1L87 201.9ZM121 206.5L103.7 216.3L101.1 218.9L106 219.2L110.6 218L113.5 215.1L119.5 212L121.2 206.8ZM93.9 208.2L90.1 214.3L92.7 216.3L99.4 211.4L94.5 208.2ZM87.6 222.6L87.6 227.2L89 224.1L88.1 222.6ZM115.8 224.9L109.4 227.8L101.7 235.6L105.4 235.3L111.2 232.4L116.4 224.9ZM92.7 226.1L89.6 231.6L94.5 235.3L100.5 227.5L93.3 226.1ZM131 233.9L132.2 234.4L131.6 238.5L132.8 239.6L128.4 242.2L121.2 250.6L112 264.4L108 274.2L106.6 275L105.1 272.4L105.1 269L110.3 258.6L121.2 243.6L130.8 234.1ZM88.1 238.8L87.3 239.6L88.1 245.7L90.7 240.8L88.4 239ZM96.2 242.8L91 250.3L93.3 251.4L97.3 251.4L103.4 244.2L96.8 242.8ZM89.3 255.5L89 260.9L89.6 262.7L91.6 264.1L94.2 257.5L89.6 255.7Z',\n },\n {\n id: 'ribs-r',\n labelKey: 'ribs',\n side: 'right',\n group: 'axial',\n cx: 174.3,\n cy: 204.6,\n d: 'M157.5 110.6L160.1 111.5L166.5 117.2L174.5 121.2L181.7 129L180.9 129.3L177.4 125.3L175.1 125.3L166.2 133.6L166.5 134.5L168.5 134.8L167 139.1L159.6 136.8L156.7 137.4L154.7 132.5L158.4 131L161 127.9L156.1 127.6L155.2 123.3L157.2 122.4L161.9 124.1L163.3 122.1L162.4 120.7L160.1 120.1L152.9 119.8L156.4 118.7L157.5 114.6L156.7 113.8L152.6 114.3L152.4 113.5L157.5 111.2ZM150.6 132.5L153.5 132.5L149.8 134.5L149.5 133.1L150.3 132.8ZM150 143.4L157.8 143.7L161.9 145.4L167.3 143.4L167 151.8L164.7 151.2L153.5 153.8L167.6 159.3L169.1 165.9L165.3 167.3L155.8 167L163 171.4L170.5 173.7L171.9 175.1L174.8 183.2L171.1 181.2L162.4 181.2L154.7 179.1L172.2 189.2L178 188.1L180.9 191.5L183.7 190.4L186.9 186.6L188.6 181.4L191.5 178L190.4 175.7L191.5 172.8L193.2 172.2L194.4 167L196.1 166.5L197.3 172.2L196.7 176.8L200.2 186.6L199.6 197.6L201.3 202.2L201.3 210.2L198.4 218.9L199 224.6L198.4 230.4L197.3 232.7L197.3 261.5L195 266.7L192.1 269L191.5 272.4L190.1 273.9L188.4 273.9L187.8 271.6L184.3 271L181.2 267.8L177.7 261.5L178.6 258.3L182 258.9L184.9 261.2L184 258.6L183.2 257.8L176.8 257.2L174.8 255.7L170.8 244.2L171.4 243.1L168.8 241.6L166.2 237.3L156.4 228.7L153.5 224.1L154.1 222.9L150 221.2L150 219.5L151.5 218L161 225.8L158.1 218.3L155.8 216L155.8 214.3L157.5 212L149.5 206.8L150.9 201.9L152.6 201.9L155.5 204.8L157 202.8L155.2 201.6L156.4 200.4L156.4 198.1L149.5 195.3L148.9 190.7L150.3 189.2L172.2 203.6L178 203.6L181.2 201.6L171.6 196.7L161.3 194.4L151.2 187.8L151.8 184.3L148.9 182.6L150 181.4L150.6 178L152.1 176L157.2 174.8L157.5 173.4L157 171.6L154.9 170.2L150.3 170.8L149.5 169.9L149.5 165.3L150.3 162.7L156.1 161.6L157.5 159.6L157.5 157.2L156.7 156.4L151.5 156.4L148.6 157.5L148.3 155.5L150 153.2L148.9 152.6L150.9 150.6L156.7 149.5L157.5 146.3L156.1 144.3L150.3 145.4L149.8 143.7ZM195.3 182.9L193.2 186.6L196.4 190.4L196.7 186L195.6 183.2ZM187.8 190.9L182.3 194.7L187.2 198.4L192.1 195.8L192.1 194.7L188.4 190.9ZM195.8 201.9L192.7 205.1L195.8 211.1L196.7 210.8L197.9 205.6L196.4 201.9ZM161.9 206.5L163.3 212L169.3 215.1L172.2 218L176.8 219.2L181.7 218.9L179.1 216.3L162.1 206.8ZM188.4 208.2L183.5 211.4L190.1 216.3L192.7 214.3L188.9 208.2ZM194.7 222.6L193.8 224.1L195.3 227.2L195.3 222.6ZM166.5 224.9L171.6 232.4L177.4 235.3L181.2 235.6L173.4 227.8L167 224.9ZM187.2 226.1L182.6 227.2L182.3 228.1L188.9 235.3L193.2 231.6L190.9 226.9L187.8 226.1ZM151.2 233.9L158.1 239.6L170.8 255.7L177.7 269L177.7 272.4L176.3 275L174.8 274.2L170.8 264.4L161.6 250.6L154.4 242.2L150 239.6L151.2 238.5L150.9 234.1ZM194.7 238.8L192.1 240.8L194.7 245.7L195.6 243.1L195 239ZM186 242.8L179.4 244.2L184.3 250.8L189.5 251.4L192.1 250L186.6 242.8ZM193.5 255.5L188.6 257.5L191.2 264.1L193.2 262.7L193.8 260.9L193.8 255.7Z',\n },\n {\n id: 'pelvis-l',\n labelKey: 'pelvis',\n side: 'left',\n group: 'lower-limb',\n cx: 110,\n cy: 335.1,\n d: 'M97.1 294.3L103.7 294.6L111.2 296.9L113.5 298.7L116.6 301.8L123 311.6L126.4 319.1L125.3 323.1L121.8 326L122.4 332.9L121.5 333.8L121.5 332.1L119.8 332.6L119.5 334.1L120.7 334.7L120.7 335.8L116.1 338.7L117.2 344.4L120.7 351.4L123.6 354.2L123.6 356L126.4 359.4L129.6 361.4L134.2 361.4L135.4 363.7L137.7 363.7L137.4 366.3L139.7 370.4L137.4 376.1L132.5 381L128.4 382.8L127.9 383.9L122.7 385.6L118.1 383.9L112.6 379.6L110.9 375.6L109.7 365.2L105.1 359.4L102.8 352.5L98.2 347.9L98.2 342.7L94.8 334.7L89 326.6L87.8 316.8L84.4 312.2L84.4 307L87.8 300.7L91.6 296.4L96.8 294.6ZM121.5 363.7L120.7 364.6L120.7 367.5L122.4 372.7L124.4 374.7L129.6 374.1L130.5 369.8L129.3 368.1L122.1 363.7Z',\n },\n {\n id: 'pelvis-r',\n labelKey: 'pelvis',\n side: 'right',\n group: 'lower-limb',\n cx: 172.8,\n cy: 335.1,\n d: 'M181.2 294.3L187.8 294.6L193.2 298.4L197.9 305.3L198.4 312.2L195 316.8L193.8 326.6L188.1 334.7L184.6 342.7L184.6 347.9L180 352.5L177.7 359.4L173.1 365.2L171.9 375.6L170.2 379.6L164.7 383.9L160.1 385.6L154.9 383.9L154.4 382.8L150.3 381L145.4 376.1L143.1 370.4L145.4 365.8L144.9 364L148 363.2L148.6 361.4L153.2 361.4L156.1 359.7L159.3 356L159.3 354.2L162.1 351.4L165.6 344.4L166.8 338.7L162.1 335.8L160.4 332.4L161 326L157.5 323.1L156.4 320.8L158.1 314.5L166.2 301.8L169.3 298.7L171.6 296.9L180.9 294.6ZM159.6 363.7L154.9 366.6L152.4 369.8L153.2 374.1L158.4 374.7L160.4 372.7L162.1 364.6L160.1 363.7Z',\n },\n {\n id: 'skull',\n labelKey: 'skull',\n side: 'midline',\n group: 'axial',\n cx: 141.4,\n cy: 33.9,\n d: 'M138.5 0L149.8 0.9L163.6 7.8L169.1 13.8L171.9 20.2L173.1 34.6L167.3 58.8L161.3 63.6L161.6 61.6L159.6 61.9L158.1 65.7L157.2 64.2L154.4 67.7L151.5 65.4L148 64.8L145.2 66.5L143.4 66.5L142.8 65.4L140 65.4L139.4 66.5L138.2 66.5L134.8 64.8L131.3 65.4L128.4 67.7L125.6 64.2L125 66L123.3 61.9L121.5 61.3L121.5 63.6L115.5 58.8L113.8 49.5L110.9 41.5L109.7 30.5L111.5 18.4L112.6 16.1L117.8 9.2L123.3 5.5L134.8 0.3L138.2 0.3Z',\n },\n {\n id: 'humerus-l',\n labelKey: 'humerus',\n side: 'left',\n group: 'upper-limb',\n cx: 56.6,\n cy: 196.5,\n d: 'M66 127.9L68.5 127.6L69.1 129.9L73.7 132.2L77.2 132.2L78.6 134.2L75.2 141.1L75.7 145.2L72.3 147.5L68.3 156.1L64.8 167L60.8 186L56.7 228.7L56.7 237.9L57.9 246L62.5 250.6L63.6 253.4L61.6 257.8L55.9 258.9L55.6 260.9L54.1 262.4L55 256.9L53 252.6L47.2 252.6L45.8 253.4L45.5 258.9L39.7 258.9L36.6 255.7L36 250.6L42.9 235.6L49.8 213.1L51 188.9L57.9 153.8L59.6 130.2L62.2 128.2L65.7 128.2Z',\n },\n {\n id: 'humerus-r',\n labelKey: 'humerus',\n side: 'right',\n group: 'upper-limb',\n cx: 226.2,\n cy: 196.6,\n d: 'M214 127.9L220.6 128.2L223.2 130.2L224.9 153.8L231.8 188.9L233 213.1L239.9 235.6L246.8 250.6L246.2 255.7L243.1 258.9L237.3 258.9L236.7 253.2L229.8 252.6L227.8 256.9L228.7 262.4L227.8 262.1L226.9 258.9L221.2 257.8L219.2 253.4L220.3 250.6L224.9 246L226.1 237.3L226.1 228.7L222 186L218 167L214.6 156.1L210.5 147.5L207.1 145.2L207.6 141.1L204.2 134.2L205.6 132.2L210.8 131.6L213.7 129.9L214 128.4Z',\n },\n {\n id: 'radius-l',\n labelKey: 'radius',\n side: 'left',\n group: 'upper-limb',\n cx: 32.4,\n cy: 313.2,\n d: 'M36.6 259.8L45.2 261.5L42.3 267.3L42.9 270.7L40.6 288.6L33.7 322L32 345.6L33.1 356.5L32.3 358.6L23 358.6L20.2 360.3L19.3 355.4L23.3 345.6L25.6 335.8L29.7 302.4L36.6 268.4L36.6 264.4L35.4 262.1L36.6 260.4Z',\n },\n {\n id: 'radius-r',\n labelKey: 'radius',\n side: 'right',\n group: 'upper-limb',\n cx: 250.4,\n cy: 313.2,\n d: 'M245.7 259.8L247.4 261.5L246.2 264.4L246.2 268.4L253.2 302.4L257.2 335.8L259.5 345.6L263.5 355.4L262.7 360.3L259.8 358.6L250.6 358.6L249.7 357.1L250.8 345.6L249.1 322L242.2 288.6L239.9 270.7L240.5 267.3L237.6 261.5L245.4 260.1Z',\n },\n {\n id: 'ulna-l',\n labelKey: 'ulna',\n side: 'left',\n group: 'upper-limb',\n cx: 43.8,\n cy: 299.3,\n d: 'M46.9 252.9L53.3 252.9L55 256.9L53.9 261.5L55 265L50.4 270.7L46.4 286.3L44.1 323.7L41.2 350.2L40.6 354.2L37.4 360.3L36.3 357.4L33.4 357.4L33.1 356.5L36 349.1L39.5 328.9L40.6 284L42.9 267.3L45.8 262.1L45.8 253.4L46.7 253.2Z',\n },\n {\n id: 'ulna-r',\n labelKey: 'ulna',\n side: 'right',\n group: 'upper-limb',\n cx: 239,\n cy: 299.3,\n d: 'M229.5 252.9L235.6 252.6L237 253.4L237 262.1L239.9 267.3L242.8 292.6L243.4 328.9L246.8 349.1L249.7 356.5L249.4 357.4L246.5 357.4L245.4 360.3L242.2 354.2L241.6 350.2L238.8 323.7L236.4 286.3L232.4 270.7L227.8 265L229 262.7L227.8 256.9L229.5 253.4Z',\n },\n {\n id: 'femur-l',\n labelKey: 'femur',\n side: 'left',\n group: 'lower-limb',\n cx: 101.3,\n cy: 452.7,\n d: 'M99.9 350.8L100.8 350.5L102.8 352.5L105.1 359.4L109.7 365.2L109.7 366.9L106.3 369.8L104 375.6L104 390L100.5 393.4L106.8 463.1L116.1 509.2L120.7 517.2L125 520.4L127.6 524.2L127 534.5L125.3 536.8L124.7 539.7L119.8 541.2L114.6 540L108.9 536.5L101.4 538.8L95 538.3L91.9 529.9L93.6 523L95.9 519L96.5 514.9L96.5 470.6L91.9 429.1L85.5 385.9L79.2 373.8L78.6 368.1L82.4 359.7L86.4 358.6L90.4 359.1L92.7 360.9L95.3 358.8L97.6 352.5L99.6 351.1Z',\n },\n {\n id: 'femur-r',\n labelKey: 'femur',\n side: 'right',\n group: 'lower-limb',\n cx: 181.5,\n cy: 452.7,\n d: 'M181.7 350.8L182.6 350.5L185.2 352.5L187.5 358.8L190.1 360.9L192.4 359.1L196.4 358.6L200.4 359.7L204.2 368.1L203.6 373.8L197.3 385.9L190.9 429.1L186.3 470.6L186.3 514.9L186.9 519L189.2 523L190.9 529.9L187.8 538.3L181.4 538.8L174 536.5L168.2 540L163 541.2L158.1 539.7L157.5 536.8L155.8 534.5L155.2 524.2L156.4 521.9L162.1 517.2L166.8 509.2L176 463.1L182.3 393.4L178.8 390L178.8 375.6L176.5 369.8L173.1 366.9L173.1 365.2L177.7 359.4L179.4 353.7L181.4 351.1Z',\n },\n {\n id: 'tibia-l',\n labelKey: 'tibia',\n side: 'left',\n group: 'lower-limb',\n cx: 108.9,\n cy: 606.8,\n d: 'M104 540.3L114.6 540L124.4 543.5L125.9 546L123 553.5L118.9 558.7L113.2 579.5L112.6 653.8L115.5 673.9L122.4 684.9L121.8 688.3L118.1 692.1L116.6 688.9L114.6 687.5L109.4 688.6L103.7 687.5L101.7 679.1L103.4 631.3L101.1 565.1L99.4 560.4L99.9 553L98.8 548.9L95.6 546.3L93.3 546.3L93 544.9L94.5 541.2L103.7 540.6Z',\n },\n {\n id: 'tibia-r',\n labelKey: 'tibia',\n side: 'right',\n group: 'lower-limb',\n cx: 173.9,\n cy: 607,\n d: 'M167.9 540.3L178.6 540L188.4 541.2L189.8 546L187.2 546.3L184 548.9L182.9 553L183.5 560.4L181.7 565.1L179.4 631.3L181.2 669.9L181.2 679.1L180 682.6L180.6 686L176.3 688.6L168.2 687.5L166.2 688.9L164.7 692.1L161 688.3L160.4 684.9L167.3 673.3L170.2 653.2L169.6 579.5L163.9 558.7L159.8 553.5L157 546L158.4 543.5L167.6 540.6Z',\n },\n {\n id: 'fibula-l',\n labelKey: 'fibula',\n side: 'left',\n group: 'lower-limb',\n cx: 96.7,\n cy: 619.2,\n d: 'M92.4 546.6L95.6 546.3L97.3 547.5L98.8 548.9L99.9 553L99.4 559.3L97.6 564.5L97.6 606.5L100.5 638.8L99.9 671L104 690.6L100.5 698.1L97.9 700.1L95.3 696.4L96.5 684.9L96.5 657.8L93 607.1L91.9 561.6L87.8 553.5L92.2 546.9Z',\n },\n {\n id: 'fibula-r',\n labelKey: 'fibula',\n side: 'right',\n group: 'lower-limb',\n cx: 186.2,\n cy: 618.9,\n d: 'M186.9 546.6L190.1 546.3L195 553.5L190.9 561.6L189.8 607.7L186.3 657.8L186.3 684.9L187.5 696.4L184.9 700.1L182.3 698.1L179.4 692.9L178.8 687.7L180.6 686L180 682.6L182.9 671L182.3 638.8L185.2 606.5L185.2 564.5L184 562.2L182.9 553L184 548.9L186.6 546.9Z',\n },\n {\n id: 'hand-l',\n labelKey: 'hand',\n side: 'left',\n group: 'upper-limb',\n cx: 25,\n cy: 388.4,\n d: 'M29.1 358.8L35.7 359.1L36.6 360L36 361.7L38.6 361.4L39.5 363.5L40 366.3L38 366.6L37.7 368.6L38.9 369.8L41.8 387.1L43.5 391.7L43.5 401.5L45.8 411.3L45.2 416.4L42.9 415.9L42.3 410.1L40.6 406.1L40.6 401.5L37.7 393.4L37.7 383.6L35.1 374.7L33.7 377.3L36 394.6L34.3 409L34.8 413L33.7 419.3L32.3 421.3L30.8 421.1L30.2 407.8L31.4 377.3L30.5 374.7L29.1 376.1L27.9 380.2L27.9 399.2L25.6 404.4L22.8 422.2L21 426.2L19.6 427.1L18.7 426.2L19.3 413L20.4 412.4L19.9 410.1L21.6 403.2L21.6 396.3L22.8 395.7L22.2 392.3L25.1 384.2L25.1 374.4L23.3 376.7L20.4 385.9L19.9 395.7L18.1 398L18.7 398.6L17 400.9L12.4 413.6L6.9 423.1L4.9 421.6L6 420.5L5.5 417.6L7.2 415.3L7.8 410.7L10.1 407.8L11.8 401.5L11.8 396.9L13.5 396.3L13.5 392.8L15.3 391.1L19.3 377.9L19.9 370.4L19 369.5L16.1 370.7L11.8 376.1L10.7 381.9L6 387.1L5.5 391.7L2.6 396.3L0.6 397.7L-0.3 396.3L1.4 392.8L1.4 388.8L6 377.3L6 375L19.6 361.4L21.9 360.9L23 359.1L28.8 359.1Z',\n },\n {\n id: 'hand-r',\n labelKey: 'hand',\n side: 'right',\n group: 'upper-limb',\n cx: 257.7,\n cy: 388.5,\n d: 'M248.5 358.8L259.8 359.1L260.9 360.9L263.2 361.4L276.8 375L276.8 377.3L281.4 388.8L281.4 392.8L283.1 396.3L282.8 397.7L281.1 397.2L277.9 392.8L276.8 387.1L272.2 381.9L271 376.1L266.7 370.7L264.4 369.5L262.9 370.4L262.9 375.6L266.4 387.6L267.6 391.1L269.3 392.8L269.3 396.3L271 396.9L272.2 406.1L273.9 410.1L275 410.7L275 413.6L277.3 417.6L276.8 420.5L277.9 421.6L275.9 423.1L270.4 413.6L265.8 400.9L264.1 398.6L264.7 398L262.9 395.7L262.4 385.9L258 374.1L257.8 384.2L260.6 392.3L260.1 395.7L261.2 396.3L261.2 403.2L262.9 410.1L262.4 412.4L263.5 413L264.1 426.2L263.2 427.1L261.8 426.2L258.3 415.3L257.2 404.4L254.9 399.2L254.9 380.2L253.7 376.1L252.3 374.7L251.4 377.3L252.6 407.8L252 421.1L249.7 420.5L248 413L248.5 409L246.8 394.6L249.1 377.3L247.7 374.7L245.1 383.6L245.1 393.4L242.2 401.5L242.2 406.1L240.5 410.1L239.9 415.9L237.6 416.4L237 411.3L237.6 404.4L238.8 403.8L239.3 401.5L239.3 391.7L241.1 387.1L243.4 372.1L245.1 368.6L245.1 366.9L242.8 366.3L243.9 361.7L246.5 362L245.7 360L248.3 359.1Z',\n },\n {\n id: 'foot-l',\n labelKey: 'foot',\n side: 'left',\n group: 'lower-limb',\n cx: 104.8,\n cy: 706.1,\n d: 'M104 687.7L105.4 687.5L106.6 688.6L116.6 687.7L116.1 688.3L118.4 693.5L118.9 698.7L118.9 700.4L116.6 702.1L116.1 703.9L118.4 711.4L117.2 716.5L112.9 718.6L111.7 718L110.6 719.1L104.3 719.1L103.4 718.3L104 717.1L103.1 716.8L102 718L100.2 717.4L96.8 719.7L95 717.4L91.6 719.1L89.9 719.1L88.7 718L88.1 719.1L80.1 719.7L79.2 718.3L84.7 713.4L87 713.4L89.3 711.6L91.9 709.1L95.9 702.1L100.5 698.1L103.4 692.9L104 688.3Z',\n },\n {\n id: 'foot-r',\n labelKey: 'foot',\n side: 'right',\n group: 'lower-limb',\n cx: 178.1,\n cy: 706.1,\n d: 'M167.9 687.7L176.3 688.6L178.6 687.5L180.6 695.2L182.3 698.1L186.9 702.1L190.9 709.1L195.8 713.4L198.1 713.4L203.6 718.8L202.8 719.7L197.6 719.7L194.7 719.1L194.1 718L193 719.1L191.2 719.1L187.8 717.4L186 719.7L182.6 717.4L180.9 718L179.7 716.8L178.8 717.1L179.4 718.3L178.6 719.1L172.2 719.1L171.1 718L169.9 718.6L166.5 717.4L165 715.4L164.4 711.4L166.8 703.9L166.2 702.1L163.9 700.4L163.9 698.7L165.6 690L167.6 688ZM183.7 710.5L182.3 711.4L183.7 714L184 710.8Z',\n },\n];\n","/* ------------------------------------------------------------------ */\n/* SkeletonScheme — data model + skeletal figure datasets. */\n/* */\n/* The kit's skeletal body chart — the bone sibling of MuscleScheme, */\n/* for orthopaedic / musculoskeletal charting. A \"view\" is a labelled */\n/* SVG of the skeleton (front / back) carrying clickable per-bone */\n/* REGIONS at clinical granularity (skull, clavicle, humerus, ribs, */\n/* pelvis, femur, tibia, …). Findings are recorded against a region id */\n/* and surfaced with the shared AnnotationMarker glyph (shape-not- */\n/* colour, WCAG 1.4.1) — identical semantics to MuscleScheme. */\n/* */\n/* The bone art is REAL per-bone vector geometry traced from the */\n/* Z-Anatomy musculoskeletal model (see skeleton-paths.ts) — each */\n/* region IS the bone's true silhouette, so selecting it highlights */\n/* the actual bone, never a bounding box. Region *ids and labels* are */\n/* the stable contract; the traced geometry is presentation only and */\n/* regenerates from the source model. */\n/* ------------------------------------------------------------------ */\n\nimport type { MarkerShape, MarkerTone } from '../annotation-marker';\nimport {\n SKELETON_ART_VIEWBOX,\n SKELETON_FRONT_ART,\n SKELETON_BACK_ART,\n type SkeletonArt,\n} from './skeleton-paths';\n\n/* ------------------------------------------------------------------ */\n/* Core vocabulary */\n/* ------------------------------------------------------------------ */\n\n/** Figure variant — kept for API parity with MuscleScheme. The traced\n * skeleton is androgynous and shared across figures; realistic per-figure\n * art selection can key off this later. */\nexport type FigureVariant = 'adult-male' | 'adult-female' | 'child';\n\nexport type SkeletonViewId = string;\nexport type SkeletonSchemeMode = 'interactive' | 'display';\nexport type RegionSide = 'left' | 'right' | 'midline';\n\n/**\n * Generic, specialty-agnostic finding type — the same closed set MuscleScheme\n * uses. Each maps to a distinct AnnotationMarker SHAPE so the chart never\n * relies on colour alone; tone is decorative reinforcement. Consumers label\n * these per specialty (a \"lesion\" is an ortho fracture site, a \"pain\" a\n * tender point, a \"treatment\" a planned procedure, …).\n */\nexport type FindingType =\n | 'observation'\n | 'lesion'\n | 'pain'\n | 'treatment'\n | 'note';\n\nexport const FINDING_TYPES: FindingType[] = [\n 'observation',\n 'lesion',\n 'pain',\n 'treatment',\n 'note',\n];\n\nexport const FINDING_MARKER: Record<\n FindingType,\n { shape: MarkerShape; tone: MarkerTone }\n> = {\n observation: { shape: 'circle', tone: 'info' },\n lesion: { shape: 'triangle', tone: 'warning' },\n pain: { shape: 'cross', tone: 'error' },\n treatment: { shape: 'square', tone: 'success' },\n note: { shape: 'diamond', tone: 'neutral' },\n};\n\nexport interface SkeletonFinding {\n type: FindingType;\n /** Optional free-text clinical note. PHI — never bundle real notes in stories. */\n note?: string;\n}\n\n/** Findings keyed by region (bone) id. */\nexport type SkeletonChart = Record<string, SkeletonFinding[]>;\n\n/* ------------------------------------------------------------------ */\n/* Geometry primitives */\n/* */\n/* Shipped regions are all `path` (real traced bone silhouettes). The */\n/* ellipse / rect / polygon kinds are retained so the shape union stays */\n/* shared with MuscleScheme and `regionCentroid` handles every kind. */\n/* ------------------------------------------------------------------ */\n\nexport type RegionShape =\n | { kind: 'ellipse'; cx: number; cy: number; rx: number; ry: number }\n | { kind: 'rect'; x: number; y: number; w: number; h: number; r?: number }\n | { kind: 'polygon'; points: Array<[number, number]> }\n | { kind: 'path'; d: string; fillRule?: 'evenodd' };\n\nexport interface SkeletonRegion {\n /** Stable id, unique within a view — the finding key + `data-region`. */\n id: string;\n /** i18n key suffix under `skeletonScheme.region.*`. */\n labelKey: string;\n shape: RegionShape;\n /** Bilateral side, where meaningful (drives \"left/right\" in the label). */\n side?: RegionSide;\n /** Optional grouping (e.g. 'lower-limb'). */\n group?: string;\n /** Marker anchor; defaults to the shape centroid. */\n marker?: { x: number; y: number };\n}\n\nexport interface SkeletonView {\n id: SkeletonViewId;\n /** i18n key suffix under `skeletonScheme.view.*`. */\n labelKey: string;\n /** Which figure this view is drawn on (parity with MuscleScheme). */\n figure: FigureVariant;\n viewBox: string;\n /** Optional SVG transform applied to the regions group. */\n transform?: string;\n regions: SkeletonRegion[];\n}\n\n/* ------------------------------------------------------------------ */\n/* Centroid helper (marker anchor fallback) */\n/* ------------------------------------------------------------------ */\n\nexport function regionCentroid(region: SkeletonRegion): {\n x: number;\n y: number;\n} {\n if (region.marker) return region.marker;\n const s = region.shape;\n if (s.kind === 'ellipse') return { x: s.cx, y: s.cy };\n if (s.kind === 'rect') return { x: s.x + s.w / 2, y: s.y + s.h / 2 };\n if (s.kind === 'path') return region.marker ?? { x: 0, y: 0 };\n const n = s.points.length;\n const sum = s.points.reduce(\n (acc, [x, y]) => ({ x: acc.x + x, y: acc.y + y }),\n { x: 0, y: 0 },\n );\n return { x: sum.x / n, y: sum.y / n };\n}\n\n/* ------------------------------------------------------------------ */\n/* Real skeleton — per-bone traced paths (see skeleton-paths.ts) */\n/* */\n/* One shared androgynous figure, front + back, on the traced viewBox. */\n/* Every region is the bone's true silhouette (`path`, even-odd) with */\n/* a centroid marker anchor. `side` is the anatomical (patient) side. */\n/* ------------------------------------------------------------------ */\n\nfunction toRegion(art: SkeletonArt): SkeletonRegion {\n return {\n id: art.id,\n labelKey: art.labelKey,\n side: art.side,\n group: art.group,\n shape: { kind: 'path', d: art.d, fillRule: 'evenodd' },\n marker: { x: art.cx, y: art.cy },\n };\n}\n\nconst FRONT_REGIONS: SkeletonRegion[] = SKELETON_FRONT_ART.map(toRegion);\nconst BACK_REGIONS: SkeletonRegion[] = SKELETON_BACK_ART.map(toRegion);\n\n/* ------------------------------------------------------------------ */\n/* View registry */\n/* ------------------------------------------------------------------ */\n\nexport const SKELETON_VIEWS: Record<SkeletonViewId, SkeletonView> = {\n 'skeletal-front': {\n id: 'skeletal-front',\n labelKey: 'skeletalFront',\n figure: 'adult-male',\n viewBox: SKELETON_ART_VIEWBOX,\n regions: FRONT_REGIONS,\n },\n 'skeletal-back': {\n id: 'skeletal-back',\n labelKey: 'skeletalBack',\n figure: 'adult-male',\n viewBox: SKELETON_ART_VIEWBOX,\n regions: BACK_REGIONS,\n },\n};\n\n/* ------------------------------------------------------------------ */\n/* Lookups + figure mapping */\n/* ------------------------------------------------------------------ */\n\nexport function getView(id: SkeletonViewId): SkeletonView | undefined {\n return SKELETON_VIEWS[id];\n}\n\n/**\n * All views for a figure, front-then-back. The traced skeleton is\n * androgynous, so every figure resolves to the same front + back pair;\n * a realistic per-figure figure can drop in later keyed off `figure`.\n */\nexport function viewsForFigure(_figure: FigureVariant): SkeletonView[] {\n return [SKELETON_VIEWS['skeletal-front'], SKELETON_VIEWS['skeletal-back']];\n}\n\nexport function getRegion(\n viewId: SkeletonViewId,\n regionId: string,\n): SkeletonRegion | undefined {\n return SKELETON_VIEWS[viewId]?.regions.find((r) => r.id === regionId);\n}\n\n/** Default view shown when no explicit `views` are given. */\nexport const DEFAULT_SKELETON_VIEW: SkeletonViewId = 'skeletal-front';\n\n/**\n * Pick a figure from patient demographics — mirrors MuscleScheme's\n * `figureFromPatient`. Pure heuristic; the host can override with the explicit\n * `figure` prop. (The traced art is androgynous; this exists for API parity\n * and to drive realistic per-figure art selection.)\n */\nexport function figureFromPatient(\n sex: 'm' | 'f' | 'x' | undefined,\n ageYears: number | undefined,\n): FigureVariant {\n if (ageYears != null && ageYears < 12) return 'child';\n return sex === 'f' ? 'adult-female' : 'adult-male';\n}\n\nexport function emptyChart(): SkeletonChart {\n return {};\n}\n","/* ------------------------------------------------------------------ */\n/* SkeletonScheme — the kit's skeletal body chart. */\n/* */\n/* The bone sibling of MuscleScheme, for orthopaedic / musculoskeletal */\n/* charting. A `figure` resolves to a front + back pair of VIEWS; each */\n/* view is an SVG of clickable per-bone REGIONS (skull, clavicle, */\n/* humerus, ribs, pelvis, femur, tibia, …). Findings are recorded */\n/* against a region id and surfaced with the shared AnnotationMarker */\n/* glyph — the SHAPE carries the finding type, never colour alone. */\n/* */\n/* The bone art is REAL per-bone vector geometry traced from the */\n/* Z-Anatomy model (see skeleton-paths.ts): each region IS the bone's */\n/* true silhouette, so hover / focus / selection highlight the actual */\n/* bone rather than a bounding box. Opt into pan + zoom with `zoomable` */\n/* — the bones share one transform group so they stay aligned at any */\n/* zoom. Mirrors MuscleScheme in shape, styling and agent surface. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n type ReactElement,\n} from 'react';\nimport * as RadixTooltip from '@radix-ui/react-tooltip';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Maximize2, ZoomIn, ZoomOut } from 'lucide-react';\nimport { useAgentRegistration } from '../../agent/registry';\nimport {\n AnnotationMarker,\n markerPath,\n type MarkerTone,\n} from '../annotation-marker';\nimport { Tabs } from '../tabs';\nimport { skeletonSchemeAgent } from './skeleton-scheme.agent';\nimport {\n SKELETON_VIEWS,\n DEFAULT_SKELETON_VIEW,\n FINDING_MARKER,\n FINDING_TYPES,\n regionCentroid,\n viewsForFigure,\n type SkeletonChart,\n type SkeletonFinding,\n type SkeletonSchemeMode,\n type SkeletonRegion,\n type SkeletonView,\n type SkeletonViewId,\n type FigureVariant,\n type FindingType,\n type RegionShape,\n} from './skeleton-scheme-data';\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface SkeletonSchemeProps {\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n /** Figure variant. Default `'adult-male'`. */\n figure?: FigureVariant;\n /**\n * Explicit view ids to expose. When more than one, they render as tabs.\n * Defaults to the front + back pair for `figure`.\n */\n views?: SkeletonViewId[];\n /** `'interactive'` enables region selection + finding edits; `'display'` is read-only. */\n mode?: SkeletonSchemeMode;\n /** Controlled findings — `Record<regionId, SkeletonFinding[]>`. */\n value?: SkeletonChart;\n /** Uncontrolled initial findings. */\n defaultValue?: SkeletonChart;\n /** Fired whenever the chart changes. */\n onChange?: (next: SkeletonChart) => void;\n /** Fired when a region is activated (click / Enter / Space / focus-select). */\n onSelectRegion?: (regionId: string, viewId: SkeletonViewId) => void;\n /**\n * The finding type a region-click applies in interactive mode (the selected\n * tool in a finding picker). Clicking a region toggles this finding.\n */\n activeFinding?: FindingType;\n /** Show the finding-type legend below the figure. Default `false`. */\n legend?: boolean;\n /**\n * When true the figure can be panned (drag) and zoomed (mouse wheel or the\n * zoom buttons). The bones share one transform group so charted findings stay\n * pinned to the bone at any zoom. Default `false` (parity with MuscleScheme).\n */\n zoomable?: boolean;\n /** Accessible label override for the chart region. */\n ariaLabel?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport interface SkeletonSchemeHandle {\n /** Programmatically focus a region by id (in the active view). */\n focusRegion: (regionId: string) => void;\n /** Read the current chart state. */\n getChart: () => SkeletonChart;\n /** Read the findings recorded on one region (empty array if none). */\n getRegion: (regionId: string) => SkeletonFinding[];\n /** Read the region ids carrying a given finding type. */\n regionsWith: (type: FindingType) => string[];\n /** Add a finding to a region (no-op if already present). */\n setFinding: (regionId: string, type: FindingType, note?: string) => void;\n /** Remove a finding type from a region (no-op if absent). */\n removeFinding: (regionId: string, type: FindingType) => void;\n /** Clear every finding from a region. */\n clearRegion: (regionId: string) => void;\n /** Switch the active view. */\n setView: (viewId: SkeletonViewId) => void;\n /** Read the active view id. */\n getView: () => SkeletonViewId;\n}\n\n/* ------------------------------------------------------------------ */\n/* Tone → fill class (no inline styles; tokens only) */\n/* ------------------------------------------------------------------ */\n\nconst markerToneFill: Record<MarkerTone, string> = {\n neutral: 'ds:[fill:var(--muted-foreground)]',\n info: 'ds:[fill:var(--info)]',\n success: 'ds:[fill:var(--success)]',\n warning: 'ds:[fill:var(--warning)]',\n error: 'ds:[fill:var(--destructive)]',\n accent: 'ds:[fill:var(--accent)]',\n};\n\n// Fill/stroke is resolved through compoundVariants so every region carries\n// exactly ONE fill declaration. Bones paint as a light filled silhouette;\n// hover/focus reveals the accent and a marked bone fills solidly with it.\nconst regionVariants = cva(\n [\n 'ds:transition-[fill-opacity] ds:[transition-duration:var(--animation-duration)]',\n 'ds:[vector-effect:non-scaling-stroke]',\n ].join(' '),\n {\n variants: {\n interactive: { true: 'ds:cursor-pointer', false: '' },\n marked: { true: '', false: '' },\n },\n compoundVariants: [\n {\n marked: false,\n class:\n 'ds:[fill:var(--muted)] ds:[fill-opacity:0.5] ds:[stroke:var(--muted-foreground)] ds:[stroke-width:1]',\n },\n {\n marked: false,\n interactive: true,\n class: 'ds:hover:[fill:var(--accent)] ds:hover:[fill-opacity:0.3]',\n },\n {\n marked: true,\n class:\n 'ds:[fill:var(--accent)] ds:[fill-opacity:0.55] ds:[stroke:var(--accent)] ds:[stroke-width:1.5]',\n },\n ],\n defaultVariants: {\n interactive: false,\n marked: false,\n },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Geometry helpers */\n/* ------------------------------------------------------------------ */\n\nconst clampN = (v: number, lo: number, hi: number) =>\n Math.min(hi, Math.max(lo, v));\n\nfunction clientToSvgPoint(\n svg: SVGSVGElement,\n clientX: number,\n clientY: number,\n): { x: number; y: number } {\n const ctm = svg.getScreenCTM();\n if (!ctm) return { x: 0, y: 0 };\n const p = new DOMPoint(clientX, clientY).matrixTransform(ctm.inverse());\n return { x: p.x, y: p.y };\n}\n\nfunction RegionShapeEl({\n shape,\n className,\n}: {\n shape: RegionShape;\n className: string;\n}): ReactElement {\n if (shape.kind === 'ellipse') {\n return (\n <ellipse\n cx={shape.cx}\n cy={shape.cy}\n rx={shape.rx}\n ry={shape.ry}\n className={className}\n />\n );\n }\n if (shape.kind === 'rect') {\n return (\n <rect\n x={shape.x}\n y={shape.y}\n width={shape.w}\n height={shape.h}\n rx={shape.r ?? 0}\n className={className}\n />\n );\n }\n if (shape.kind === 'path') {\n return <path d={shape.d} fillRule={shape.fillRule} className={className} />;\n }\n return (\n <polygon\n points={shape.points.map(([x, y]) => `${x},${y}`).join(' ')}\n className={className}\n />\n );\n}\n\nfunction resolveViews(\n figure: FigureVariant | undefined,\n explicit: SkeletonViewId[] | undefined,\n): SkeletonView[] {\n if (explicit && explicit.length > 0) {\n return explicit\n .map((id) => SKELETON_VIEWS[id])\n .filter(Boolean) as SkeletonView[];\n }\n return viewsForFigure(figure ?? 'adult-male');\n}\n\n// Hit area meets --min-target-size (44/48px) per the pdf-viewer toolbar\n// button pattern; the visible icon (size-4) stays small inside it.\nconst zoomBtnClass =\n 'ds:flex ds:items-center ds:justify-center ds:[min-block-size:var(--min-target-size)] ds:[min-inline-size:var(--min-target-size)] ds:rounded-[var(--radius-sm)] ds:border ds:border-[color:var(--border)] ds:bg-[var(--background)] ds:text-[var(--foreground)] ds:shadow-[var(--shadow-sm)] ds:hover:bg-[var(--accent)] ds:hover:text-[var(--accent-foreground)]';\n\n/* ------------------------------------------------------------------ */\n/* SkeletonScheme */\n/* ------------------------------------------------------------------ */\n\nexport const SkeletonScheme = forwardRef<\n SkeletonSchemeHandle,\n SkeletonSchemeProps\n>(\n (\n {\n id,\n figure,\n views: explicitViews,\n mode = 'interactive',\n value,\n defaultValue,\n onChange,\n onSelectRegion,\n activeFinding,\n legend = false,\n zoomable = false,\n ariaLabel,\n className,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const reactId = useId();\n const instanceId = id ?? reactId;\n const rootRef = useRef<HTMLDivElement>(null);\n\n const resolvedViews = useMemo(\n () => resolveViews(figure, explicitViews),\n [figure, explicitViews],\n );\n const interactive = mode === 'interactive';\n\n const [activeViewId, setActiveViewId] = useState<SkeletonViewId>(\n () => resolvedViews[0]?.id ?? DEFAULT_SKELETON_VIEW,\n );\n const activeView =\n resolvedViews.find((v) => v.id === activeViewId) ?? resolvedViews[0];\n\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState<SkeletonChart>(defaultValue ?? {});\n const chart = isControlled ? value : internal;\n const chartRef = useRef<SkeletonChart>(chart);\n chartRef.current = chart;\n\n /* ---- Pan / zoom (opt-in) ---- */\n // Transform is in svg user space (viewBox units); the illustration + the\n // hotspots live in the same transformed <g>, so they stay aligned.\n const [xf, setXf] = useState({ k: 1, x: 0, y: 0 });\n useEffect(() => {\n if (zoomable) setXf({ k: 1, x: 0, y: 0 });\n }, [activeViewId, zoomable]);\n\n const applyZoom = useCallback(\n (\n svg: SVGSVGElement,\n clientX: number,\n clientY: number,\n factor: number,\n ) => {\n const vw = svg.viewBox.baseVal.width || 1;\n const vh = svg.viewBox.baseVal.height || 1;\n const p = clientToSvgPoint(svg, clientX, clientY);\n setXf((prev) => {\n const k = clampN(prev.k * factor, 1, 8);\n const s = k / prev.k;\n const x = clampN(p.x - s * (p.x - prev.x), vw - vw * k, 0);\n const y = clampN(p.y - s * (p.y - prev.y), vh - vh * k, 0);\n return { k, x, y };\n });\n },\n [],\n );\n\n const drag = useRef<{\n x: number;\n y: number;\n ox: number;\n oy: number;\n } | null>(null);\n const onPointerDown = useCallback(\n (e: ReactPointerEvent<SVGSVGElement>) => {\n if (!zoomable) return;\n // Let a region receive the click; only pan from empty space.\n if ((e.target as Element).closest('[data-region]')) return;\n const svg = e.currentTarget;\n const p = clientToSvgPoint(svg, e.clientX, e.clientY);\n drag.current = { x: p.x, y: p.y, ox: xf.x, oy: xf.y };\n svg.setPointerCapture(e.pointerId);\n },\n [zoomable, xf.x, xf.y],\n );\n const onPointerMove = useCallback((e: ReactPointerEvent<SVGSVGElement>) => {\n if (!drag.current) return;\n const svg = e.currentTarget;\n const vw = svg.viewBox.baseVal.width || 1;\n const vh = svg.viewBox.baseVal.height || 1;\n const p = clientToSvgPoint(svg, e.clientX, e.clientY);\n const start = drag.current;\n setXf((prev) => ({\n k: prev.k,\n x: clampN(start.ox + (p.x - start.x), vw - vw * prev.k, 0),\n y: clampN(start.oy + (p.y - start.y), vh - vh * prev.k, 0),\n }));\n }, []);\n const endDrag = useCallback((e: ReactPointerEvent<SVGSVGElement>) => {\n if (!drag.current) return;\n drag.current = null;\n try {\n e.currentTarget.releasePointerCapture(e.pointerId);\n } catch {\n /* pointer already released */\n }\n }, []);\n\n // Non-passive wheel listener (React's onWheel is passive → can't preventDefault).\n const wheelCleanup = useRef<(() => void) | null>(null);\n const svgWheelRef = useCallback(\n (node: SVGSVGElement | null) => {\n wheelCleanup.current?.();\n wheelCleanup.current = null;\n if (node && zoomable) {\n const h = (e: WheelEvent) => {\n e.preventDefault();\n applyZoom(\n node,\n e.clientX,\n e.clientY,\n e.deltaY < 0 ? 1.15 : 1 / 1.15,\n );\n };\n node.addEventListener('wheel', h, { passive: false });\n wheelCleanup.current = () => node.removeEventListener('wheel', h);\n }\n },\n [zoomable, applyZoom],\n );\n\n const zoomButton = useCallback(\n (factor: number) => {\n const svg = rootRef.current?.querySelector('svg');\n if (!svg) return;\n const r = svg.getBoundingClientRect();\n applyZoom(\n svg as unknown as SVGSVGElement,\n r.left + r.width / 2,\n r.top + r.height / 2,\n factor,\n );\n },\n [applyZoom],\n );\n const resetView = useCallback(() => setXf({ k: 1, x: 0, y: 0 }), []);\n\n const commit = useCallback(\n (next: SkeletonChart) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n },\n [isControlled, onChange],\n );\n\n const addFinding = useCallback(\n (regionId: string, type: FindingType, note?: string) => {\n const current = chartRef.current[regionId] ?? [];\n if (current.some((f) => f.type === type)) return;\n commit({\n ...chartRef.current,\n [regionId]: [...current, { type, note }],\n });\n },\n [commit],\n );\n\n const removeFindingFn = useCallback(\n (regionId: string, type: FindingType) => {\n const current = chartRef.current[regionId] ?? [];\n const next = current.filter((f) => f.type !== type);\n const copy = { ...chartRef.current };\n if (next.length > 0) copy[regionId] = next;\n else delete copy[regionId];\n commit(copy);\n },\n [commit],\n );\n\n const toggleFinding = useCallback(\n (regionId: string, type: FindingType) => {\n const has = (chartRef.current[regionId] ?? []).some(\n (f) => f.type === type,\n );\n if (has) removeFindingFn(regionId, type);\n else addFinding(regionId, type);\n },\n [addFinding, removeFindingFn],\n );\n\n const focusRegionEl = useCallback((regionId: string) => {\n rootRef.current\n ?.querySelector<SVGGElement>(`[data-region=\"${regionId}\"]`)\n ?.focus();\n }, []);\n\n const handleActivate = useCallback(\n (region: SkeletonRegion) => {\n onSelectRegion?.(region.id, activeView.id);\n if (interactive && activeFinding)\n toggleFinding(region.id, activeFinding);\n },\n [\n interactive,\n activeFinding,\n toggleFinding,\n onSelectRegion,\n activeView.id,\n ],\n );\n\n /* ---- Imperative handle + agent registration ---- */\n const handle = useMemo<SkeletonSchemeHandle>(\n () => ({\n focusRegion: focusRegionEl,\n getChart: () => chartRef.current,\n getRegion: (regionId) => chartRef.current[regionId] ?? [],\n regionsWith: (type) =>\n Object.entries(chartRef.current)\n .filter(([, findings]) => findings.some((f) => f.type === type))\n .map(([regionId]) => regionId),\n setFinding: addFinding,\n removeFinding: removeFindingFn,\n clearRegion: (regionId) => {\n if (!chartRef.current[regionId]) return;\n const copy = { ...chartRef.current };\n delete copy[regionId];\n commit(copy);\n },\n setView: setActiveViewId,\n getView: () => activeViewId,\n }),\n [focusRegionEl, addFinding, removeFindingFn, commit, activeViewId],\n );\n\n useImperativeHandle(ref, () => handle, [handle]);\n useAgentRegistration(skeletonSchemeAgent, handle, instanceId);\n\n /* ---- Region label ---- */\n const regionLabel = useCallback(\n (region: SkeletonRegion): string => {\n const name = t(`skeletonScheme.region.${region.labelKey}`);\n const side =\n region.side && region.side !== 'midline'\n ? t(`skeletonScheme.side.${region.side}`)\n : '';\n const base = [side, name].filter(Boolean).join(' ');\n const findings = chartRef.current[region.id] ?? [];\n if (findings.length === 0) return base;\n const findingNames = findings\n .map((f) => t(`skeletonScheme.finding.${f.type}`))\n .join(', ');\n return t('skeletonScheme.regionWithFindings', {\n region: base,\n findings: findingNames,\n });\n },\n [t],\n );\n\n /* ---- Figure renderer ---- */\n const renderFigure = useCallback(\n (view: SkeletonView): ReactElement => {\n const zoomTransform = zoomable\n ? `translate(${xf.x} ${xf.y}) scale(${xf.k})`\n : undefined;\n const svg = (\n <svg\n ref={zoomable ? svgWheelRef : undefined}\n viewBox={view.viewBox}\n role=\"group\"\n aria-label={t(`skeletonScheme.view.${view.labelKey}`)}\n className={[\n 'ds:mx-auto ds:block ds:h-auto ds:w-full ds:max-w-[20rem]',\n zoomable ? 'ds:touch-none ds:cursor-grab' : '',\n ]\n .filter(Boolean)\n .join(' ')}\n data-view={view.id}\n onPointerDown={zoomable ? onPointerDown : undefined}\n onPointerMove={zoomable ? onPointerMove : undefined}\n onPointerUp={zoomable ? endDrag : undefined}\n onPointerCancel={zoomable ? endDrag : undefined}\n >\n <g transform={zoomTransform}>\n <g transform={view.transform}>\n {view.regions.map((region) => {\n const findings = chart[region.id] ?? [];\n const marked = findings.length > 0;\n const anchor = regionCentroid(region);\n return (\n <RadixTooltip.Root key={region.id}>\n <RadixTooltip.Trigger asChild>\n <g\n data-region={region.id}\n data-side={region.side}\n role={\n interactive || onSelectRegion ? 'button' : 'img'\n }\n aria-label={regionLabel(region)}\n aria-pressed={\n interactive && activeFinding ? marked : undefined\n }\n className=\"ds:outline-none ds:[&:focus-visible>*:first-child]:[stroke:var(--ring)] ds:[&:focus-visible>*:first-child]:[stroke-width:var(--focus-ring-width)] ds:forced-colors:[&:focus-visible>*:first-child]:[stroke:CanvasText]\"\n tabIndex={interactive || onSelectRegion ? 0 : -1}\n onClick={() => handleActivate(region)}\n onKeyDown={(e: KeyboardEvent<SVGGElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleActivate(region);\n }\n }}\n >\n <RegionShapeEl\n shape={region.shape}\n className={regionVariants({\n interactive,\n marked,\n })}\n />\n {findings.map((f, i) => {\n const m = FINDING_MARKER[f.type];\n const r = 5;\n const gap = 12;\n const offset =\n (i - (findings.length - 1) / 2) * gap;\n return (\n <path\n key={f.type}\n d={markerPath(\n m.shape,\n anchor.x + offset,\n anchor.y,\n r,\n )}\n aria-hidden=\"true\"\n className={markerToneFill[m.tone]}\n />\n );\n })}\n </g>\n </RadixTooltip.Trigger>\n <RadixTooltip.Portal>\n <RadixTooltip.Content\n sideOffset={4}\n className=\"ds:z-50 ds:rounded-[var(--radius-sm)] ds:bg-[var(--popover)] ds:px-2 ds:py-1 ds:text-[length:var(--font-size-xs)] ds:text-[var(--popover-foreground)] ds:shadow-[var(--shadow-md)]\"\n >\n {regionLabel(region)}\n <RadixTooltip.Arrow className=\"ds:[fill:var(--popover)]\" />\n </RadixTooltip.Content>\n </RadixTooltip.Portal>\n </RadixTooltip.Root>\n );\n })}\n </g>\n </g>\n </svg>\n );\n\n if (!zoomable) {\n return (\n <RadixTooltip.Provider delayDuration={200}>\n {svg}\n </RadixTooltip.Provider>\n );\n }\n return (\n <RadixTooltip.Provider delayDuration={200}>\n <div className=\"ds:relative\">\n {svg}\n <div\n role=\"group\"\n aria-label={t('skeletonScheme.zoomLabel')}\n className=\"ds:absolute ds:end-2 ds:top-2 ds:flex ds:flex-col ds:gap-1\"\n >\n <button\n type=\"button\"\n aria-label={t('skeletonScheme.zoomIn')}\n className={zoomBtnClass}\n onClick={() => zoomButton(1.3)}\n >\n <ZoomIn aria-hidden=\"true\" className=\"ds:size-4\" />\n </button>\n <button\n type=\"button\"\n aria-label={t('skeletonScheme.zoomOut')}\n className={zoomBtnClass}\n onClick={() => zoomButton(1 / 1.3)}\n >\n <ZoomOut aria-hidden=\"true\" className=\"ds:size-4\" />\n </button>\n <button\n type=\"button\"\n aria-label={t('skeletonScheme.resetView')}\n className={zoomBtnClass}\n onClick={resetView}\n >\n <Maximize2 aria-hidden=\"true\" className=\"ds:size-4\" />\n </button>\n </div>\n </div>\n </RadixTooltip.Provider>\n );\n },\n [\n chart,\n interactive,\n activeFinding,\n onSelectRegion,\n t,\n regionLabel,\n handleActivate,\n zoomable,\n xf.x,\n xf.y,\n xf.k,\n svgWheelRef,\n onPointerDown,\n onPointerMove,\n endDrag,\n zoomButton,\n resetView,\n ],\n );\n\n const multi = resolvedViews.length > 1;\n\n return (\n <div\n ref={rootRef}\n data-component=\"skeleton-scheme\"\n data-component-id={instanceId}\n data-view={activeView?.id}\n className={['ds:flex ds:flex-col ds:gap-3', className]\n .filter(Boolean)\n .join(' ')}\n role=\"group\"\n aria-label={ariaLabel ?? t('skeletonScheme.ariaLabel')}\n >\n {multi ? (\n <Tabs\n value={activeView.id}\n onValueChange={setActiveViewId}\n variant=\"pills\"\n >\n <Tabs.List aria-label={t('skeletonScheme.viewListLabel')}>\n {resolvedViews.map((v) => (\n <Tabs.Trigger key={v.id} value={v.id}>\n {t(`skeletonScheme.view.${v.labelKey}`)}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n {resolvedViews.map((v) => (\n <Tabs.Content key={v.id} value={v.id}>\n {renderFigure(v)}\n </Tabs.Content>\n ))}\n </Tabs>\n ) : (\n activeView && renderFigure(activeView)\n )}\n\n {legend && (\n <ul\n aria-label={t('skeletonScheme.legendLabel')}\n className=\"ds:flex ds:flex-wrap ds:gap-x-4 ds:gap-y-1 ds:p-0 ds:text-[length:var(--font-size-xs)] ds:text-[var(--muted-foreground)]\"\n >\n {FINDING_TYPES.map((type) => {\n const m = FINDING_MARKER[type];\n return (\n <li key={type} className=\"ds:flex ds:list-none ds:items-center\">\n <AnnotationMarker\n shape={m.shape}\n tone={m.tone}\n size=\"sm\"\n label={t(`skeletonScheme.finding.${type}`)}\n />\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n },\n);\n\nSkeletonScheme.displayName = 'SkeletonScheme';\n"],"names":["REGION_SCHEMA","FINDING_SCHEMA","VIEW_SCHEMA","skeletonSchemeAgent","handle","id","findings","f","args","SKELETON_ART_VIEWBOX","SKELETON_FRONT_ART","SKELETON_BACK_ART","FINDING_TYPES","FINDING_MARKER","regionCentroid","region","s","n","sum","acc","x","y","toRegion","art","FRONT_REGIONS","BACK_REGIONS","SKELETON_VIEWS","viewsForFigure","_figure","DEFAULT_SKELETON_VIEW","emptyChart","markerToneFill","regionVariants","cva","clampN","v","lo","hi","clientToSvgPoint","svg","clientX","clientY","ctm","p","RegionShapeEl","shape","className","jsx","resolveViews","figure","explicit","zoomBtnClass","SkeletonScheme","forwardRef","explicitViews","mode","value","defaultValue","onChange","onSelectRegion","activeFinding","legend","zoomable","ariaLabel","ref","t","useTranslation","reactId","useId","instanceId","rootRef","useRef","resolvedViews","useMemo","interactive","activeViewId","setActiveViewId","useState","_a","activeView","isControlled","internal","setInternal","chart","chartRef","xf","setXf","useEffect","applyZoom","useCallback","factor","vw","vh","prev","k","drag","onPointerDown","e","onPointerMove","start","endDrag","wheelCleanup","svgWheelRef","node","h","zoomButton","r","resetView","commit","next","addFinding","regionId","type","note","current","removeFindingFn","copy","toggleFinding","focusRegionEl","_b","handleActivate","useImperativeHandle","useAgentRegistration","regionLabel","name","base","findingNames","renderFigure","view","zoomTransform","marked","anchor","jsxs","RadixTooltip","i","m","offset","markerPath","ZoomIn","ZoomOut","Maximize2","multi","Tabs","AnnotationMarker"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as o, a as e, b as t, c as E, F as S, d as T, e as I, P as _, f as l, S as r, g as O, h as N, T as n, i as c, j as h, k as m, l as A, m as i, n as C, o as D, p as F, s as L, q as R, r as P, t as p, u as M, v as U, z as u, w as y, x as b } from "../../_chunks/tooth-scheme-
|
|
1
|
+
import { C as o, a as e, b as t, c as E, F as S, d as T, e as I, P as _, f as l, S as r, g as O, h as N, T as n, i as c, j as h, k as m, l as A, m as i, n as C, o as D, p as F, s as L, q as R, r as P, t as p, u as M, v as U, z as u, w as y, x as b } from "../../_chunks/tooth-scheme-CX49GycY.js";
|
|
2
2
|
export {
|
|
3
3
|
o as CONDITION_COLORS,
|
|
4
4
|
e as CONDITION_PLAN_FOLDER,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-
|
|
1
|
+
import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-C643Q43h.js";
|
|
2
2
|
export {
|
|
3
3
|
r as CORE_PATIENT_FIELDS,
|
|
4
4
|
e as WorkflowCard,
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -17,7 +17,9 @@ export { useDirection, useDocumentDirection, type Direction, } from './use-direc
|
|
|
17
17
|
export { usePersistentState } from './use-persistent-state';
|
|
18
18
|
export { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect';
|
|
19
19
|
export { useOverflowCollapse, type UseOverflowCollapseReturn, } from './use-overflow-collapse';
|
|
20
|
+
export { usePriorityOverflow, computePriorityLayout, type PriorityOverflowStage, type PriorityLayout, type PriorityLayoutInput, type UsePriorityOverflowOptions, type UsePriorityOverflowReturn, } from './use-priority-overflow';
|
|
20
21
|
export { useWebOtp, type UseWebOtpOptions } from './use-web-otp';
|
|
22
|
+
export { useVisualViewportPin, type VisualViewportPinOptions, } from './use-visual-viewport-pin';
|
|
21
23
|
export { useEdgeResize, type UseEdgeResizeOptions, type UseEdgeResizeReturn, type EdgeResizeSeparatorProps, } from './use-edge-resize';
|
|
22
24
|
export { useSigningSession, type SigningField, type SigningFieldBase, type UseSigningSessionReturn, } from './use-signing-session';
|
|
23
25
|
export { useCountdown, type UseCountdownOptions, type UseCountdownReturn, } from './use-countdown';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,SAAS,EACT,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,KAAK,SAAS,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EACL,mBAAmB,EACnB,KAAK,yBAAyB,GAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,SAAS,EACT,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,KAAK,SAAS,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EACL,mBAAmB,EACnB,KAAK,yBAAyB,GAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,oBAAoB,EACpB,KAAK,wBAAwB,GAC9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
import { u as A } from "../_chunks/use-prefers-reduced-motion-BMwIQRjB.js";
|
|
2
2
|
import { u as D } from "../_chunks/use-media-query-CcAx5SMM.js";
|
|
3
|
-
import { u as
|
|
3
|
+
import { u as F, a as g } from "../_chunks/use-signing-session-CyOZWinp.js";
|
|
4
4
|
import { u as _ } from "../_chunks/use-count-up-BLLetaZ8.js";
|
|
5
|
-
import { u as
|
|
6
|
-
import { A as
|
|
7
|
-
import { u as
|
|
8
|
-
import { u as
|
|
5
|
+
import { u as P } from "../_chunks/use-locale-BkCIHujH.js";
|
|
6
|
+
import { A as k, T as K, a as V, r as H, t as M, u as Y } from "../_chunks/use-theme-CAuo6EYT.js";
|
|
7
|
+
import { u as B } from "../_chunks/use-controllable-state-BiY4xTzM.js";
|
|
8
|
+
import { u as U } from "../_chunks/use-copy-to-clipboard-Cyfc_dlv.js";
|
|
9
9
|
import { u as z } from "../_chunks/use-debounced-callback-BisrB-Fq.js";
|
|
10
|
-
import { useState as
|
|
10
|
+
import { useState as E, useRef as b, useEffect as x } from "react";
|
|
11
11
|
import { u as W, a as J } from "../_chunks/use-direction-Dp8h70PP.js";
|
|
12
12
|
import { u as X } from "../_chunks/use-persistent-state-nZwZAnE9.js";
|
|
13
13
|
import { u as $ } from "../_chunks/use-isomorphic-layout-effect-BGfaCOP1.js";
|
|
14
14
|
import { u as te } from "../_chunks/use-overflow-collapse-BIOzKbni.js";
|
|
15
|
-
import {
|
|
16
|
-
import { u as
|
|
17
|
-
import { u as
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
import { c as oe, u as ue } from "../_chunks/use-priority-overflow-c9SjxZkZ.js";
|
|
16
|
+
import { u as se } from "../_chunks/use-web-otp-D_utzp6S.js";
|
|
17
|
+
import { u as ie } from "../_chunks/use-visual-viewport-pin-ChurOsHM.js";
|
|
18
|
+
import { u as fe } from "../_chunks/use-edge-resize-ZnGG7gyO.js";
|
|
19
|
+
import { u as me } from "../_chunks/use-countdown-Yd6ts0_a.js";
|
|
20
|
+
function y(e, o) {
|
|
21
|
+
const [t, i] = E(e), u = b(null);
|
|
22
|
+
return x(() => {
|
|
21
23
|
if (o <= 0) {
|
|
22
24
|
u.current !== null && (clearTimeout(u.current), u.current = null), i(e);
|
|
23
25
|
return;
|
|
@@ -52,9 +54,9 @@ function p(e) {
|
|
|
52
54
|
return !0;
|
|
53
55
|
});
|
|
54
56
|
}
|
|
55
|
-
function
|
|
57
|
+
function C(e, o = {}) {
|
|
56
58
|
const { enabled: t = !0, autoFocus: i = !0, restoreFocus: u = !0 } = o, s = b(null);
|
|
57
|
-
|
|
59
|
+
x(() => {
|
|
58
60
|
if (!t) return;
|
|
59
61
|
const a = e.current;
|
|
60
62
|
if (!a) return;
|
|
@@ -62,7 +64,7 @@ function h(e, o = {}) {
|
|
|
62
64
|
const n = p(a)[0] ?? (a.tabIndex >= -1 ? a : null);
|
|
63
65
|
n == null || n.focus();
|
|
64
66
|
}
|
|
65
|
-
function
|
|
67
|
+
function l(r) {
|
|
66
68
|
if (r.key !== "Tab") return;
|
|
67
69
|
const n = e.current;
|
|
68
70
|
if (!n) return;
|
|
@@ -71,11 +73,11 @@ function h(e, o = {}) {
|
|
|
71
73
|
r.preventDefault();
|
|
72
74
|
return;
|
|
73
75
|
}
|
|
74
|
-
const m = c[0], d = c[c.length - 1],
|
|
75
|
-
r.shiftKey ? (
|
|
76
|
+
const m = c[0], d = c[c.length - 1], f = document.activeElement;
|
|
77
|
+
r.shiftKey ? (f === m || !n.contains(f)) && (r.preventDefault(), d.focus()) : (f === d || !n.contains(f)) && (r.preventDefault(), m.focus());
|
|
76
78
|
}
|
|
77
|
-
return a.addEventListener("keydown",
|
|
78
|
-
if (a.removeEventListener("keydown",
|
|
79
|
+
return a.addEventListener("keydown", l), () => {
|
|
80
|
+
if (a.removeEventListener("keydown", l), u && s.current) {
|
|
79
81
|
const r = s.current;
|
|
80
82
|
requestAnimationFrame(() => {
|
|
81
83
|
r.isConnected && r.focus();
|
|
@@ -85,30 +87,33 @@ function h(e, o = {}) {
|
|
|
85
87
|
}, [t, i, u, e]);
|
|
86
88
|
}
|
|
87
89
|
export {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
k as ACCESSIBILITY_STORAGE_KEY,
|
|
91
|
+
K as THEME_CLASS,
|
|
92
|
+
V as THEME_STORAGE_KEY,
|
|
93
|
+
oe as computePriorityLayout,
|
|
94
|
+
H as resolveTheme,
|
|
95
|
+
M as themeClassList,
|
|
96
|
+
B as useControllableState,
|
|
97
|
+
U as useCopyToClipboard,
|
|
95
98
|
_ as useCountUp,
|
|
96
|
-
|
|
99
|
+
me as useCountdown,
|
|
97
100
|
z as useDebouncedCallback,
|
|
98
|
-
|
|
101
|
+
y as useDebouncedValue,
|
|
99
102
|
W as useDirection,
|
|
100
103
|
J as useDocumentDirection,
|
|
101
|
-
|
|
102
|
-
|
|
104
|
+
fe as useEdgeResize,
|
|
105
|
+
C as useFocusTrap,
|
|
103
106
|
$ as useIsomorphicLayoutEffect,
|
|
104
|
-
|
|
107
|
+
P as useLocale,
|
|
105
108
|
D as useMediaQuery,
|
|
106
109
|
te as useOverflowCollapse,
|
|
107
110
|
X as usePersistentState,
|
|
108
111
|
A as usePrefersReducedMotion,
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
112
|
+
ue as usePriorityOverflow,
|
|
113
|
+
F as useScrollToFirstError,
|
|
114
|
+
g as useSigningSession,
|
|
115
|
+
Y as useTheme,
|
|
116
|
+
ie as useVisualViewportPin,
|
|
117
|
+
se as useWebOtp
|
|
113
118
|
};
|
|
114
119
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/hooks/use-debounced-value.ts","../../src/hooks/use-focus-trap.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * Returns a value that lags `input` by `delayMs`. Each new `input`\n * resets the timer; the returned value updates once `input` has been\n * stable for `delayMs` ms.\n *\n * Companion to `useDebouncedCallback` — use this when you want the\n * debounced *value* (to drive a derived effect, query, or render),\n * and use the callback hook when you want the debounced *action*.\n *\n * @example\n * const [query, setQuery] = useState('');\n * const debouncedQuery = useDebouncedValue(query, 250);\n * useEffect(() => { void search(debouncedQuery); }, [debouncedQuery]);\n */\nexport function useDebouncedValue<T>(input: T, delayMs: number): T {\n const [value, setValue] = useState<T>(input);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (delayMs <= 0) {\n // Flush any pending timer so a stale queued value can't land\n // after the synchronous update below.\n if (timerRef.current !== null) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n setValue(input);\n return;\n }\n const timer = setTimeout(() => {\n setValue(input);\n timerRef.current = null;\n }, delayMs);\n timerRef.current = timer;\n return () => clearTimeout(timer);\n }, [input, delayMs]);\n\n return value;\n}\n","import { useEffect, useRef, type RefObject } from 'react';\n\n/* -------------------------------------------------------------------- */\n/* Focus trap */\n/* */\n/* Lightweight focus-trap hook for components that compose a Radix */\n/* primitive without the overlay primitive (Dialog, AlertDialog, Sheet) */\n/* — those handle focus trapping for free via `@radix-ui/react-dialog`. */\n/* */\n/* This hook is intentionally NOT a Radix `<FocusScope>` re-export — it */\n/* is a hook so it composes inside `forwardRef` components without */\n/* nesting another wrapper element. If you need the full Radix */\n/* contract (return-focus management, loop, asChild), use */\n/* `@radix-ui/react-focus-scope` directly. */\n/* -------------------------------------------------------------------- */\n\nexport interface UseFocusTrapOptions {\n /** When `false` the trap is inert. Defaults to `true`. */\n enabled?: boolean;\n /**\n * When `true`, focus initial autofocus into the first focusable\n * descendant on mount / enable. @default true\n */\n autoFocus?: boolean;\n /**\n * When `true`, restores focus to the previously-focused element on\n * unmount / disable. @default true\n */\n restoreFocus?: boolean;\n}\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n 'audio[controls]',\n 'video[controls]',\n].join(',');\n\nfunction getFocusable(container: HTMLElement): HTMLElement[] {\n return Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((el) => {\n if (el.hidden) return false;\n // `inert` and `aria-hidden=\"true\"` block focus on the element AND\n // all its descendants — walk the chain to catch either ancestor.\n let node: HTMLElement | null = el;\n while (node) {\n if (node.hasAttribute('inert')) return false;\n if (node.getAttribute('aria-hidden') === 'true') return false;\n node = node.parentElement;\n }\n return true;\n });\n}\n\n/**\n * Constrain Tab navigation to descendants of `containerRef`. Wraps Tab\n * forward from the last focusable to the first, and Shift+Tab back from\n * the first to the last. Optionally autofocuses on enable and restores\n * focus on disable.\n *\n * Use this for inline modal patterns or focus zones that don't ship\n * with their own Radix overlay. Don't stack it inside Dialog / Sheet —\n * Radix already traps focus in those.\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * useFocusTrap(ref, { enabled: open });\n * return <div ref={ref}>…</div>;\n */\nexport function useFocusTrap<T extends HTMLElement>(\n containerRef: RefObject<T | null>,\n options: UseFocusTrapOptions = {},\n): void {\n const { enabled = true, autoFocus = true, restoreFocus = true } = options;\n const previouslyFocused = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!enabled) return;\n const container = containerRef.current;\n if (!container) return;\n\n previouslyFocused.current =\n typeof document !== 'undefined' &&\n document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null;\n\n if (autoFocus) {\n const focusable = getFocusable(container);\n // Container itself is the fallback focus target — needs `tabIndex`\n // to receive focus, but `-1` is fine.\n const target =\n focusable[0] ?? (container.tabIndex >= -1 ? container : null);\n target?.focus();\n }\n\n function onKeyDown(event: KeyboardEvent) {\n if (event.key !== 'Tab') return;\n const root = containerRef.current;\n if (!root) return;\n const focusable = getFocusable(root);\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = document.activeElement;\n\n if (event.shiftKey) {\n if (active === first || !root.contains(active)) {\n event.preventDefault();\n last.focus();\n }\n } else {\n if (active === last || !root.contains(active)) {\n event.preventDefault();\n first.focus();\n }\n }\n }\n\n container.addEventListener('keydown', onKeyDown);\n\n return () => {\n container.removeEventListener('keydown', onKeyDown);\n if (restoreFocus && previouslyFocused.current) {\n // rAF lets parent unmounts settle before refocus — a microtask\n // fires too early and can throw on a detached node.\n const target = previouslyFocused.current;\n requestAnimationFrame(() => {\n if (target.isConnected) target.focus();\n });\n }\n };\n }, [enabled, autoFocus, restoreFocus, containerRef]);\n}\n"],"names":["useDebouncedValue","input","delayMs","value","setValue","useState","timerRef","useRef","useEffect","timer","FOCUSABLE_SELECTOR","getFocusable","container","el","node","useFocusTrap","containerRef","options","enabled","autoFocus","restoreFocus","previouslyFocused","target","onKeyDown","event","root","focusable","first","last","active"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/hooks/use-debounced-value.ts","../../src/hooks/use-focus-trap.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * Returns a value that lags `input` by `delayMs`. Each new `input`\n * resets the timer; the returned value updates once `input` has been\n * stable for `delayMs` ms.\n *\n * Companion to `useDebouncedCallback` — use this when you want the\n * debounced *value* (to drive a derived effect, query, or render),\n * and use the callback hook when you want the debounced *action*.\n *\n * @example\n * const [query, setQuery] = useState('');\n * const debouncedQuery = useDebouncedValue(query, 250);\n * useEffect(() => { void search(debouncedQuery); }, [debouncedQuery]);\n */\nexport function useDebouncedValue<T>(input: T, delayMs: number): T {\n const [value, setValue] = useState<T>(input);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (delayMs <= 0) {\n // Flush any pending timer so a stale queued value can't land\n // after the synchronous update below.\n if (timerRef.current !== null) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n setValue(input);\n return;\n }\n const timer = setTimeout(() => {\n setValue(input);\n timerRef.current = null;\n }, delayMs);\n timerRef.current = timer;\n return () => clearTimeout(timer);\n }, [input, delayMs]);\n\n return value;\n}\n","import { useEffect, useRef, type RefObject } from 'react';\n\n/* -------------------------------------------------------------------- */\n/* Focus trap */\n/* */\n/* Lightweight focus-trap hook for components that compose a Radix */\n/* primitive without the overlay primitive (Dialog, AlertDialog, Sheet) */\n/* — those handle focus trapping for free via `@radix-ui/react-dialog`. */\n/* */\n/* This hook is intentionally NOT a Radix `<FocusScope>` re-export — it */\n/* is a hook so it composes inside `forwardRef` components without */\n/* nesting another wrapper element. If you need the full Radix */\n/* contract (return-focus management, loop, asChild), use */\n/* `@radix-ui/react-focus-scope` directly. */\n/* -------------------------------------------------------------------- */\n\nexport interface UseFocusTrapOptions {\n /** When `false` the trap is inert. Defaults to `true`. */\n enabled?: boolean;\n /**\n * When `true`, focus initial autofocus into the first focusable\n * descendant on mount / enable. @default true\n */\n autoFocus?: boolean;\n /**\n * When `true`, restores focus to the previously-focused element on\n * unmount / disable. @default true\n */\n restoreFocus?: boolean;\n}\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n 'audio[controls]',\n 'video[controls]',\n].join(',');\n\nfunction getFocusable(container: HTMLElement): HTMLElement[] {\n return Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((el) => {\n if (el.hidden) return false;\n // `inert` and `aria-hidden=\"true\"` block focus on the element AND\n // all its descendants — walk the chain to catch either ancestor.\n let node: HTMLElement | null = el;\n while (node) {\n if (node.hasAttribute('inert')) return false;\n if (node.getAttribute('aria-hidden') === 'true') return false;\n node = node.parentElement;\n }\n return true;\n });\n}\n\n/**\n * Constrain Tab navigation to descendants of `containerRef`. Wraps Tab\n * forward from the last focusable to the first, and Shift+Tab back from\n * the first to the last. Optionally autofocuses on enable and restores\n * focus on disable.\n *\n * Use this for inline modal patterns or focus zones that don't ship\n * with their own Radix overlay. Don't stack it inside Dialog / Sheet —\n * Radix already traps focus in those.\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * useFocusTrap(ref, { enabled: open });\n * return <div ref={ref}>…</div>;\n */\nexport function useFocusTrap<T extends HTMLElement>(\n containerRef: RefObject<T | null>,\n options: UseFocusTrapOptions = {},\n): void {\n const { enabled = true, autoFocus = true, restoreFocus = true } = options;\n const previouslyFocused = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!enabled) return;\n const container = containerRef.current;\n if (!container) return;\n\n previouslyFocused.current =\n typeof document !== 'undefined' &&\n document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null;\n\n if (autoFocus) {\n const focusable = getFocusable(container);\n // Container itself is the fallback focus target — needs `tabIndex`\n // to receive focus, but `-1` is fine.\n const target =\n focusable[0] ?? (container.tabIndex >= -1 ? container : null);\n target?.focus();\n }\n\n function onKeyDown(event: KeyboardEvent) {\n if (event.key !== 'Tab') return;\n const root = containerRef.current;\n if (!root) return;\n const focusable = getFocusable(root);\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = document.activeElement;\n\n if (event.shiftKey) {\n if (active === first || !root.contains(active)) {\n event.preventDefault();\n last.focus();\n }\n } else {\n if (active === last || !root.contains(active)) {\n event.preventDefault();\n first.focus();\n }\n }\n }\n\n container.addEventListener('keydown', onKeyDown);\n\n return () => {\n container.removeEventListener('keydown', onKeyDown);\n if (restoreFocus && previouslyFocused.current) {\n // rAF lets parent unmounts settle before refocus — a microtask\n // fires too early and can throw on a detached node.\n const target = previouslyFocused.current;\n requestAnimationFrame(() => {\n if (target.isConnected) target.focus();\n });\n }\n };\n }, [enabled, autoFocus, restoreFocus, containerRef]);\n}\n"],"names":["useDebouncedValue","input","delayMs","value","setValue","useState","timerRef","useRef","useEffect","timer","FOCUSABLE_SELECTOR","getFocusable","container","el","node","useFocusTrap","containerRef","options","enabled","autoFocus","restoreFocus","previouslyFocused","target","onKeyDown","event","root","focusable","first","last","active"],"mappings":";;;;;;;;;;;;;;;;;;;AAgBO,SAASA,EAAqBC,GAAUC,GAAoB;AACjE,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAYJ,CAAK,GACrCK,IAAWC,EAA6C,IAAI;AAElE,SAAAC,EAAU,MAAM;AACd,QAAIN,KAAW,GAAG;AAGhB,MAAII,EAAS,YAAY,SACvB,aAAaA,EAAS,OAAO,GAC7BA,EAAS,UAAU,OAErBF,EAASH,CAAK;AACd;AAAA,IACF;AACA,UAAMQ,IAAQ,WAAW,MAAM;AAC7B,MAAAL,EAASH,CAAK,GACdK,EAAS,UAAU;AAAA,IACrB,GAAGJ,CAAO;AACV,WAAAI,EAAS,UAAUG,GACZ,MAAM,aAAaA,CAAK;AAAA,EACjC,GAAG,CAACR,GAAOC,CAAO,CAAC,GAEZC;AACT;ACTA,MAAMO,IAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAEV,SAASC,EAAaC,GAAuC;AAC3D,SAAO,MAAM;AAAA,IACXA,EAAU,iBAA8BF,CAAkB;AAAA,EAAA,EAC1D,OAAO,CAACG,MAAO;AACf,QAAIA,EAAG,OAAQ,QAAO;AAGtB,QAAIC,IAA2BD;AAC/B,WAAOC,KAAM;AAEX,UADIA,EAAK,aAAa,OAAO,KACzBA,EAAK,aAAa,aAAa,MAAM,OAAQ,QAAO;AACxD,MAAAA,IAAOA,EAAK;AAAA,IACd;AACA,WAAO;AAAA,EACT,CAAC;AACH;AAiBO,SAASC,EACdC,GACAC,IAA+B,IACzB;AACN,QAAM,EAAE,SAAAC,IAAU,IAAM,WAAAC,IAAY,IAAM,cAAAC,IAAe,OAASH,GAC5DI,IAAoBd,EAA2B,IAAI;AAEzD,EAAAC,EAAU,MAAM;AACd,QAAI,CAACU,EAAS;AACd,UAAMN,IAAYI,EAAa;AAC/B,QAAI,CAACJ,EAAW;AAQhB,QANAS,EAAkB,UAChB,OAAO,WAAa,OACpB,SAAS,yBAAyB,cAC9B,SAAS,gBACT,MAEFF,GAAW;AAIb,YAAMG,IAHYX,EAAaC,CAAS,EAI5B,CAAC,MAAMA,EAAU,YAAY,KAAKA,IAAY;AAC1D,MAAAU,KAAA,QAAAA,EAAQ;AAAA,IACV;AAEA,aAASC,EAAUC,GAAsB;AACvC,UAAIA,EAAM,QAAQ,MAAO;AACzB,YAAMC,IAAOT,EAAa;AAC1B,UAAI,CAACS,EAAM;AACX,YAAMC,IAAYf,EAAac,CAAI;AACnC,UAAIC,EAAU,WAAW,GAAG;AAC1B,QAAAF,EAAM,eAAA;AACN;AAAA,MACF;AACA,YAAMG,IAAQD,EAAU,CAAC,GACnBE,IAAOF,EAAUA,EAAU,SAAS,CAAC,GACrCG,IAAS,SAAS;AAExB,MAAIL,EAAM,YACJK,MAAWF,KAAS,CAACF,EAAK,SAASI,CAAM,OAC3CL,EAAM,eAAA,GACNI,EAAK,MAAA,MAGHC,MAAWD,KAAQ,CAACH,EAAK,SAASI,CAAM,OAC1CL,EAAM,eAAA,GACNG,EAAM,MAAA;AAAA,IAGZ;AAEA,WAAAf,EAAU,iBAAiB,WAAWW,CAAS,GAExC,MAAM;AAEX,UADAX,EAAU,oBAAoB,WAAWW,CAAS,GAC9CH,KAAgBC,EAAkB,SAAS;AAG7C,cAAMC,IAASD,EAAkB;AACjC,8BAAsB,MAAM;AAC1B,UAAIC,EAAO,eAAaA,EAAO,MAAA;AAAA,QACjC,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,GAAG,CAACJ,GAASC,GAAWC,GAAcJ,CAAY,CAAC;AACrD;"}
|