@alfadocs/ui-kit-debug 1.3.13 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. package/dist/_chunks/agenda-card.agent-Cb5tuEh3.js +28 -0
  2. package/dist/_chunks/agenda-card.agent-Cb5tuEh3.js.map +1 -0
  3. package/dist/_chunks/{alia-sidebar-DzNz1gDf.js → alia-sidebar-DSBZMick.js} +3 -3
  4. package/dist/_chunks/{alia-sidebar-DzNz1gDf.js.map → alia-sidebar-DSBZMick.js.map} +1 -1
  5. package/dist/_chunks/{anamnesis-i18n-CfC0qYzy.js → anamnesis-i18n-DZcrt8dP.js} +2141 -2069
  6. package/dist/_chunks/anamnesis-i18n-DZcrt8dP.js.map +1 -0
  7. package/dist/_chunks/{antenatal-schedule-timeline-BMMpi2lb.js → antenatal-schedule-timeline-u8TsS2QJ.js} +27 -26
  8. package/dist/_chunks/{antenatal-schedule-timeline-BMMpi2lb.js.map → antenatal-schedule-timeline-u8TsS2QJ.js.map} +1 -1
  9. package/dist/_chunks/{appointment-timeline-B630OT_J.js → appointment-timeline-Bqf1sTU5.js} +2 -2
  10. package/dist/_chunks/{appointment-timeline-B630OT_J.js.map → appointment-timeline-Bqf1sTU5.js.map} +1 -1
  11. package/dist/_chunks/{ar-THMLfSoN.js → ar-BR1FGFP2.js} +14 -14
  12. package/dist/_chunks/{ar-THMLfSoN.js.map → ar-BR1FGFP2.js.map} +1 -1
  13. package/dist/_chunks/{bmi-calculator-CM0-G2mg.js → bmi-calculator-CpyY13MV.js} +2 -2
  14. package/dist/_chunks/{bmi-calculator-CM0-G2mg.js.map → bmi-calculator-CpyY13MV.js.map} +1 -1
  15. package/dist/_chunks/{booking-DjNbd7C1.js → booking-BjsA7j1-.js} +699 -688
  16. package/dist/_chunks/booking-BjsA7j1-.js.map +1 -0
  17. package/dist/_chunks/calculator-dialog-12d3Sxaz.js +48 -0
  18. package/dist/_chunks/{calculator-dialog-DuXMQSdm.js.map → calculator-dialog-12d3Sxaz.js.map} +1 -1
  19. package/dist/_chunks/{care-plan-card-1G_f4I5s.js → care-plan-card-BvQy366X.js} +3 -3
  20. package/dist/_chunks/{care-plan-card-1G_f4I5s.js.map → care-plan-card-BvQy366X.js.map} +1 -1
  21. package/dist/_chunks/{care-plan-entry-card-DmBsffHS.js → care-plan-entry-card-apk_5B3O.js} +2 -2
  22. package/dist/_chunks/{care-plan-entry-card-DmBsffHS.js.map → care-plan-entry-card-apk_5B3O.js.map} +1 -1
  23. package/dist/_chunks/{chat-container-HlFnoEIl.js → chat-container-CYYego1W.js} +105 -81
  24. package/dist/_chunks/chat-container-CYYego1W.js.map +1 -0
  25. package/dist/_chunks/cycle-calculator-B7fyH-h4.js +425 -0
  26. package/dist/_chunks/cycle-calculator-B7fyH-h4.js.map +1 -0
  27. package/dist/_chunks/{date-picker-ZHejTVAJ.js → date-picker-Bp64zk2p.js} +19 -19
  28. package/dist/_chunks/{date-picker-ZHejTVAJ.js.map → date-picker-Bp64zk2p.js.map} +1 -1
  29. package/dist/_chunks/date-picker-variants-pKAJfnWr.js +2089 -0
  30. package/dist/_chunks/date-picker-variants-pKAJfnWr.js.map +1 -0
  31. package/dist/_chunks/{date-range-picker-pEG3Ln3i.js → date-range-picker-CDrZ8Zh0.js} +27 -27
  32. package/dist/_chunks/{date-range-picker-pEG3Ln3i.js.map → date-range-picker-CDrZ8Zh0.js.map} +1 -1
  33. package/dist/_chunks/{date-time-picker-695QvBGj.js → date-time-picker-DafkGDGO.js} +10 -10
  34. package/dist/_chunks/{date-time-picker-695QvBGj.js.map → date-time-picker-DafkGDGO.js.map} +1 -1
  35. package/dist/_chunks/{de-DmZ-8rTN.js → de-3iM4rGqo.js} +7 -7
  36. package/dist/_chunks/{de-DmZ-8rTN.js.map → de-3iM4rGqo.js.map} +1 -1
  37. package/dist/_chunks/{document-preview-D3gg4MXB.js → document-preview-DOrsqiN1.js} +2 -2
  38. package/dist/_chunks/{document-preview-D3gg4MXB.js.map → document-preview-DOrsqiN1.js.map} +1 -1
  39. package/dist/_chunks/due-date-calculator-CnkbbAej.js +571 -0
  40. package/dist/_chunks/due-date-calculator-CnkbbAej.js.map +1 -0
  41. package/dist/_chunks/{editor-overlay-DE3esyio.js → editor-overlay-B1tr2i7B.js} +22 -21
  42. package/dist/_chunks/editor-overlay-B1tr2i7B.js.map +1 -0
  43. package/dist/_chunks/{el-Bela9mxs.js → el-C96rGJvU.js} +2 -2
  44. package/dist/_chunks/{el-Bela9mxs.js.map → el-C96rGJvU.js.map} +1 -1
  45. package/dist/_chunks/{es-BNncHKex.js → es-Cxiqjx8r.js} +12 -12
  46. package/dist/_chunks/{es-BNncHKex.js.map → es-Cxiqjx8r.js.map} +1 -1
  47. package/dist/_chunks/fetal-weight-avlj-l-S.js +223 -0
  48. package/dist/_chunks/fetal-weight-avlj-l-S.js.map +1 -0
  49. package/dist/_chunks/format-4HNwNGrN.js +1315 -0
  50. package/dist/_chunks/format-4HNwNGrN.js.map +1 -0
  51. package/dist/_chunks/{fr-CH8ADfhN.js → fr-Bhr6SYKj.js} +21 -21
  52. package/dist/_chunks/{fr-CH8ADfhN.js.map → fr-Bhr6SYKj.js.map} +1 -1
  53. package/dist/_chunks/{freemium-paywall-C_Ue6wxU.js → freemium-paywall-DRDdWuOg.js} +3 -3
  54. package/dist/_chunks/{freemium-paywall-C_Ue6wxU.js.map → freemium-paywall-DRDdWuOg.js.map} +1 -1
  55. package/dist/_chunks/gestational-age-calculator-BljY_DVJ.js +488 -0
  56. package/dist/_chunks/gestational-age-calculator-BljY_DVJ.js.map +1 -0
  57. package/dist/_chunks/hcg-doubling-Cv_vH61p.js +312 -0
  58. package/dist/_chunks/hcg-doubling-Cv_vH61p.js.map +1 -0
  59. package/dist/_chunks/header-settings-Cn5fPXCE.js +335 -0
  60. package/dist/_chunks/header-settings-Cn5fPXCE.js.map +1 -0
  61. package/dist/_chunks/{hi-Bppfxp8l.js → hi-BxXX26d_.js} +12 -12
  62. package/dist/_chunks/{hi-Bppfxp8l.js.map → hi-BxXX26d_.js.map} +1 -1
  63. package/dist/_chunks/isSameWeek-B73MagWB.js +13 -0
  64. package/dist/_chunks/{isSameWeek-CK4HS9lH.js.map → isSameWeek-B73MagWB.js.map} +1 -1
  65. package/dist/_chunks/{it-B4ySaRyK.js → it-Xmjomvyj.js} +24 -24
  66. package/dist/_chunks/{it-B4ySaRyK.js.map → it-Xmjomvyj.js.map} +1 -1
  67. package/dist/_chunks/{ja-CGF6Io9P.js → ja-mfZvt1ZV.js} +16 -16
  68. package/dist/_chunks/{ja-CGF6Io9P.js.map → ja-mfZvt1ZV.js.map} +1 -1
  69. package/dist/_chunks/{link-cell-renderer-C5XLwVXQ.js → link-cell-renderer-CJ_gk7gl.js} +3 -3
  70. package/dist/_chunks/{link-cell-renderer-C5XLwVXQ.js.map → link-cell-renderer-CJ_gk7gl.js.map} +1 -1
  71. package/dist/_chunks/{locale-picker-BfBUdT1m.js → locale-picker-D9Kv2zrK.js} +153 -132
  72. package/dist/_chunks/locale-picker-D9Kv2zrK.js.map +1 -0
  73. package/dist/_chunks/map-view-2yZCQW2l.js +445 -0
  74. package/dist/_chunks/map-view-2yZCQW2l.js.map +1 -0
  75. package/dist/_chunks/{marketplace-app-shell-DwcFMxzp.js → marketplace-app-shell-BLRvg-M0.js} +49 -40
  76. package/dist/_chunks/marketplace-app-shell-BLRvg-M0.js.map +1 -0
  77. package/dist/_chunks/{nl-DuShqwuV.js → nl-DDs-KEnD.js} +15 -15
  78. package/dist/_chunks/{nl-DuShqwuV.js.map → nl-DDs-KEnD.js.map} +1 -1
  79. package/dist/_chunks/{notes-panel-DPsgB4Mv.js → notes-panel-CiFN3sLW.js} +2 -2
  80. package/dist/_chunks/{notes-panel-DPsgB4Mv.js.map → notes-panel-CiFN3sLW.js.map} +1 -1
  81. package/dist/_chunks/{number-input-DrozbZAU.js → number-input-DOe5VYei.js} +64 -64
  82. package/dist/_chunks/number-input-DOe5VYei.js.map +1 -0
  83. package/dist/_chunks/{optical-prescription-BDHJr8Zz.js → optical-prescription-CRemE8fL.js} +2 -2
  84. package/dist/_chunks/{optical-prescription-BDHJr8Zz.js.map → optical-prescription-CRemE8fL.js.map} +1 -1
  85. package/dist/_chunks/{parse-DvA97ro9.js → parse-JqixfsU0.js} +43 -43
  86. package/dist/_chunks/{parse-DvA97ro9.js.map → parse-JqixfsU0.js.map} +1 -1
  87. package/dist/_chunks/parseISO-fOGpHKXm.js +120 -0
  88. package/dist/_chunks/parseISO-fOGpHKXm.js.map +1 -0
  89. package/dist/_chunks/{patient-details-DqjjwPmt.js → patient-details-CpunD0qx.js} +3 -3
  90. package/dist/_chunks/{patient-details-DqjjwPmt.js.map → patient-details-CpunD0qx.js.map} +1 -1
  91. package/dist/_chunks/{patient-table-BmIDrLIS.js → patient-table-2eWx-Rrk.js} +2 -2
  92. package/dist/_chunks/{patient-table-BmIDrLIS.js.map → patient-table-2eWx-Rrk.js.map} +1 -1
  93. package/dist/_chunks/{payment-form-h-BZ8onk.js → payment-form-Ds1I9KqB.js} +308 -231
  94. package/dist/_chunks/payment-form-Ds1I9KqB.js.map +1 -0
  95. package/dist/_chunks/{pdf-viewer-Ddx-T053.js → pdf-viewer-DUIsV9s5.js} +429 -369
  96. package/dist/_chunks/pdf-viewer-DUIsV9s5.js.map +1 -0
  97. package/dist/_chunks/{pl-CKQwX9Fk.js → pl-BYYMnEWP.js} +18 -18
  98. package/dist/_chunks/{pl-CKQwX9Fk.js.map → pl-BYYMnEWP.js.map} +1 -1
  99. package/dist/_chunks/{practice-results-B-HPc13W.js → practice-results-SjCniMd2.js} +2 -2
  100. package/dist/_chunks/{practice-results-B-HPc13W.js.map → practice-results-SjCniMd2.js.map} +1 -1
  101. package/dist/_chunks/pregnancy-dating-BmpHScZ0.js +770 -0
  102. package/dist/_chunks/pregnancy-dating-BmpHScZ0.js.map +1 -0
  103. package/dist/_chunks/pregnancy-weight-gain-B5KSJzdc.js +553 -0
  104. package/dist/_chunks/pregnancy-weight-gain-B5KSJzdc.js.map +1 -0
  105. package/dist/_chunks/progress-CK8otcQ-.js +343 -0
  106. package/dist/_chunks/progress-CK8otcQ-.js.map +1 -0
  107. package/dist/_chunks/{pt-_njpXyOZ.js → pt-BSPnVrQ7.js} +20 -20
  108. package/dist/_chunks/{pt-_njpXyOZ.js.map → pt-BSPnVrQ7.js.map} +1 -1
  109. package/dist/_chunks/{radiograph-panel.agent-BQZ64Riy.js → radiograph-panel.agent-CtFtNMzk.js} +3 -3
  110. package/dist/_chunks/{radiograph-panel.agent-BQZ64Riy.js.map → radiograph-panel.agent-CtFtNMzk.js.map} +1 -1
  111. package/dist/_chunks/{rich-text-editor-CfeXPPWs.js → rich-text-editor-BedTpWzL.js} +2 -2
  112. package/dist/_chunks/{rich-text-editor-CfeXPPWs.js.map → rich-text-editor-BedTpWzL.js.map} +1 -1
  113. package/dist/_chunks/{ro-3X6_4FcN.js → ro-BbiylGmG.js} +14 -14
  114. package/dist/_chunks/{ro-3X6_4FcN.js.map → ro-BbiylGmG.js.map} +1 -1
  115. package/dist/_chunks/{ru-bAcgmnS-.js → ru-BX_qsV67.js} +14 -14
  116. package/dist/_chunks/{ru-bAcgmnS-.js.map → ru-BX_qsV67.js.map} +1 -1
  117. package/dist/_chunks/{session-countdown-Bc70VXN1.js → session-countdown-BL-Psg8u.js} +2 -2
  118. package/dist/_chunks/{session-countdown-Bc70VXN1.js.map → session-countdown-BL-Psg8u.js.map} +1 -1
  119. package/dist/_chunks/{sign-document-CW_ByDUh.js → sign-document-jF4fZDJ5.js} +2 -2
  120. package/dist/_chunks/{sign-document-CW_ByDUh.js.map → sign-document-jF4fZDJ5.js.map} +1 -1
  121. package/dist/_chunks/slot-grid-DNiUcXy2.js +640 -0
  122. package/dist/_chunks/slot-grid-DNiUcXy2.js.map +1 -0
  123. package/dist/_chunks/{sparkline-BTY4B5tv.js → sparkline-BmGcEyZO.js} +209 -164
  124. package/dist/_chunks/sparkline-BmGcEyZO.js.map +1 -0
  125. package/dist/_chunks/{sq-jYFqr4Ga.js → sq-i9UOk4P7.js} +10 -10
  126. package/dist/_chunks/{sq-jYFqr4Ga.js.map → sq-i9UOk4P7.js.map} +1 -1
  127. package/dist/_chunks/subDays-CAUv47M1.js +8 -0
  128. package/dist/_chunks/{subDays-BcNi04uf.js.map → subDays-CAUv47M1.js.map} +1 -1
  129. package/dist/_chunks/{sv-BSGEJ-8B.js → sv-CpTdtmDQ.js} +8 -8
  130. package/dist/_chunks/{sv-BSGEJ-8B.js.map → sv-CpTdtmDQ.js.map} +1 -1
  131. package/dist/_chunks/{tab-bar-Axhk6xzx.js → tab-bar-BYESZINM.js} +83 -77
  132. package/dist/_chunks/tab-bar-BYESZINM.js.map +1 -0
  133. package/dist/_chunks/task-card.agent-CF2N_uu4.js +29 -0
  134. package/dist/_chunks/task-card.agent-CF2N_uu4.js.map +1 -0
  135. package/dist/_chunks/{tr-CTpgUtw6.js → tr-DXG2QN1K.js} +17 -17
  136. package/dist/_chunks/{tr-CTpgUtw6.js.map → tr-DXG2QN1K.js.map} +1 -1
  137. package/dist/_chunks/{unit-converter-COgkN7YP.js → unit-converter-CHPDuV7W.js} +2 -2
  138. package/dist/_chunks/{unit-converter-COgkN7YP.js.map → unit-converter-CHPDuV7W.js.map} +1 -1
  139. package/dist/_chunks/{warning-stack-BtjmJChC.js → warning-stack-B7t_8jRE.js} +42 -37
  140. package/dist/_chunks/{warning-stack-BtjmJChC.js.map → warning-stack-B7t_8jRE.js.map} +1 -1
  141. package/dist/_chunks/{zh-CN-BgM0Io2O.js → zh-CN-vPkPEK6H.js} +18 -18
  142. package/dist/_chunks/{zh-CN-BgM0Io2O.js.map → zh-CN-vPkPEK6H.js.map} +1 -1
  143. package/dist/agent-catalog.json +6426 -3382
  144. package/dist/agent-i18n/en.json +234 -15
  145. package/dist/components/agenda-card/agenda-card.agent.d.ts.map +1 -1
  146. package/dist/components/agenda-card/index.js +1 -1
  147. package/dist/components/appointment-timeline/index.js +1 -1
  148. package/dist/components/bmi-calculator/index.js +1 -1
  149. package/dist/components/booking/booking.d.ts.map +1 -1
  150. package/dist/components/booking/index.js +1 -1
  151. package/dist/components/calculator-dialog/calculator-dialog.d.ts.map +1 -1
  152. package/dist/components/calculator-dialog/index.js +1 -1
  153. package/dist/components/care-plan-card/index.js +1 -1
  154. package/dist/components/care-plan-entry-card/index.js +1 -1
  155. package/dist/components/chat-container/chat-container.agent.d.ts.map +1 -1
  156. package/dist/components/chat-container/chat-container.d.ts +14 -0
  157. package/dist/components/chat-container/chat-container.d.ts.map +1 -1
  158. package/dist/components/chat-container/index.js +1 -1
  159. package/dist/components/cycle-calculator/cycle-calculator.agent.d.ts +4 -0
  160. package/dist/components/cycle-calculator/cycle-calculator.agent.d.ts.map +1 -0
  161. package/dist/components/cycle-calculator/cycle-calculator.d.ts +42 -0
  162. package/dist/components/cycle-calculator/cycle-calculator.d.ts.map +1 -1
  163. package/dist/components/cycle-calculator/index.d.ts +1 -1
  164. package/dist/components/cycle-calculator/index.d.ts.map +1 -1
  165. package/dist/components/cycle-calculator/index.js +1 -1
  166. package/dist/components/data-table/index.js +1 -1
  167. package/dist/components/date-picker/index.js +1 -1
  168. package/dist/components/date-range-picker/index.js +1 -1
  169. package/dist/components/date-time-picker/index.js +1 -1
  170. package/dist/components/document-preview/index.js +1 -1
  171. package/dist/components/due-date-calculator/due-date-calculator.agent.d.ts +4 -0
  172. package/dist/components/due-date-calculator/due-date-calculator.agent.d.ts.map +1 -0
  173. package/dist/components/due-date-calculator/due-date-calculator.d.ts +61 -1
  174. package/dist/components/due-date-calculator/due-date-calculator.d.ts.map +1 -1
  175. package/dist/components/due-date-calculator/index.d.ts +1 -1
  176. package/dist/components/due-date-calculator/index.d.ts.map +1 -1
  177. package/dist/components/due-date-calculator/index.js +2 -2
  178. package/dist/components/editor-overlay/editor-overlay.d.ts +7 -1
  179. package/dist/components/editor-overlay/editor-overlay.d.ts.map +1 -1
  180. package/dist/components/editor-overlay/index.js +1 -1
  181. package/dist/components/fetal-weight/fetal-weight.agent.d.ts +4 -0
  182. package/dist/components/fetal-weight/fetal-weight.agent.d.ts.map +1 -0
  183. package/dist/components/fetal-weight/fetal-weight.d.ts +26 -0
  184. package/dist/components/fetal-weight/fetal-weight.d.ts.map +1 -1
  185. package/dist/components/fetal-weight/index.d.ts +1 -1
  186. package/dist/components/fetal-weight/index.d.ts.map +1 -1
  187. package/dist/components/fetal-weight/index.js +1 -1
  188. package/dist/components/freemium-paywall/index.js +1 -1
  189. package/dist/components/gestational-age-calculator/gestational-age-calculator.agent.d.ts +4 -0
  190. package/dist/components/gestational-age-calculator/gestational-age-calculator.agent.d.ts.map +1 -0
  191. package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts +44 -2
  192. package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts.map +1 -1
  193. package/dist/components/gestational-age-calculator/index.d.ts +1 -1
  194. package/dist/components/gestational-age-calculator/index.d.ts.map +1 -1
  195. package/dist/components/gestational-age-calculator/index.js +1 -1
  196. package/dist/components/hcg-doubling/hcg-doubling.agent.d.ts +4 -0
  197. package/dist/components/hcg-doubling/hcg-doubling.agent.d.ts.map +1 -0
  198. package/dist/components/hcg-doubling/hcg-doubling.d.ts +30 -0
  199. package/dist/components/hcg-doubling/hcg-doubling.d.ts.map +1 -1
  200. package/dist/components/hcg-doubling/index.d.ts +1 -1
  201. package/dist/components/hcg-doubling/index.d.ts.map +1 -1
  202. package/dist/components/hcg-doubling/index.js +1 -1
  203. package/dist/components/header-settings/header-settings.agent.d.ts.map +1 -1
  204. package/dist/components/header-settings/header-settings.d.ts +13 -1
  205. package/dist/components/header-settings/header-settings.d.ts.map +1 -1
  206. package/dist/components/header-settings/index.js +1 -1
  207. package/dist/components/locale-picker/index.js +1 -1
  208. package/dist/components/locale-picker/locale-picker.agent.d.ts.map +1 -1
  209. package/dist/components/locale-picker/locale-picker.d.ts +9 -0
  210. package/dist/components/locale-picker/locale-picker.d.ts.map +1 -1
  211. package/dist/components/map-view/index.js +1 -1
  212. package/dist/components/map-view/map-view.agent.d.ts.map +1 -1
  213. package/dist/components/map-view/map-view.d.ts +22 -0
  214. package/dist/components/map-view/map-view.d.ts.map +1 -1
  215. package/dist/components/notes-panel/index.js +1 -1
  216. package/dist/components/number-input/index.js +1 -1
  217. package/dist/components/number-input/number-input.d.ts +2 -1
  218. package/dist/components/number-input/number-input.d.ts.map +1 -1
  219. package/dist/components/optical-prescription/index.js +1 -1
  220. package/dist/components/patient-details/index.js +1 -1
  221. package/dist/components/patient-table/index.js +1 -1
  222. package/dist/components/payment-form/index.d.ts +1 -1
  223. package/dist/components/payment-form/index.d.ts.map +1 -1
  224. package/dist/components/payment-form/index.js +1 -1
  225. package/dist/components/payment-form/payment-form.agent.d.ts.map +1 -1
  226. package/dist/components/payment-form/payment-form.d.ts +32 -1
  227. package/dist/components/payment-form/payment-form.d.ts.map +1 -1
  228. package/dist/components/pdf-viewer/index.js +1 -1
  229. package/dist/components/pdf-viewer/pdf-viewer.agent.d.ts.map +1 -1
  230. package/dist/components/pdf-viewer/pdf-viewer.d.ts +13 -0
  231. package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  232. package/dist/components/practice-results/index.js +1 -1
  233. package/dist/components/pregnancy-dating/index.d.ts +1 -1
  234. package/dist/components/pregnancy-dating/index.d.ts.map +1 -1
  235. package/dist/components/pregnancy-dating/index.js +1 -1
  236. package/dist/components/pregnancy-dating/pregnancy-dating.agent.d.ts +4 -0
  237. package/dist/components/pregnancy-dating/pregnancy-dating.agent.d.ts.map +1 -0
  238. package/dist/components/pregnancy-dating/pregnancy-dating.d.ts +65 -1
  239. package/dist/components/pregnancy-dating/pregnancy-dating.d.ts.map +1 -1
  240. package/dist/components/pregnancy-weight-gain/index.d.ts +2 -1
  241. package/dist/components/pregnancy-weight-gain/index.d.ts.map +1 -1
  242. package/dist/components/pregnancy-weight-gain/index.js +6 -5
  243. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.agent.d.ts +4 -0
  244. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.agent.d.ts.map +1 -0
  245. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts +35 -0
  246. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts.map +1 -1
  247. package/dist/components/progress/index.js +1 -1
  248. package/dist/components/progress/progress.agent.d.ts.map +1 -1
  249. package/dist/components/progress/progress.d.ts +13 -0
  250. package/dist/components/progress/progress.d.ts.map +1 -1
  251. package/dist/components/radiograph-panel/index.js +1 -1
  252. package/dist/components/rich-text-editor/index.js +1 -1
  253. package/dist/components/session-countdown/index.js +1 -1
  254. package/dist/components/sign-document/index.js +1 -1
  255. package/dist/components/slot-grid/index.d.ts +2 -1
  256. package/dist/components/slot-grid/index.d.ts.map +1 -1
  257. package/dist/components/slot-grid/index.js +5 -4
  258. package/dist/components/slot-grid/slot-grid.agent.d.ts +4 -0
  259. package/dist/components/slot-grid/slot-grid.agent.d.ts.map +1 -0
  260. package/dist/components/slot-grid/slot-grid.d.ts +34 -0
  261. package/dist/components/slot-grid/slot-grid.d.ts.map +1 -1
  262. package/dist/components/sparkline/index.js +1 -1
  263. package/dist/components/sparkline/sparkline.agent.d.ts.map +1 -1
  264. package/dist/components/sparkline/sparkline.d.ts +10 -0
  265. package/dist/components/sparkline/sparkline.d.ts.map +1 -1
  266. package/dist/components/tab-bar/index.js +1 -1
  267. package/dist/components/tab-bar/tab-bar.d.ts +13 -0
  268. package/dist/components/tab-bar/tab-bar.d.ts.map +1 -1
  269. package/dist/components/task-card/index.js +1 -1
  270. package/dist/components/task-card/task-card.agent.d.ts.map +1 -1
  271. package/dist/components/unit-converter/index.js +1 -1
  272. package/dist/components/warning-stack/index.js +1 -1
  273. package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
  274. package/dist/index.js +630 -627
  275. package/dist/patterns/alia-assistant/index.js +1 -1
  276. package/dist/patterns/anamnesis/anamnesis-compare-panel.d.ts.map +1 -1
  277. package/dist/patterns/anamnesis/anamnesis-compile.d.ts.map +1 -1
  278. package/dist/patterns/anamnesis/anamnesis-derive.d.ts +27 -8
  279. package/dist/patterns/anamnesis/anamnesis-derive.d.ts.map +1 -1
  280. package/dist/patterns/anamnesis/anamnesis-events.d.ts.map +1 -1
  281. package/dist/patterns/anamnesis/anamnesis-evolution-grid.d.ts.map +1 -1
  282. package/dist/patterns/anamnesis/anamnesis-field.d.ts.map +1 -1
  283. package/dist/patterns/anamnesis/anamnesis-format.d.ts +11 -3
  284. package/dist/patterns/anamnesis/anamnesis-format.d.ts.map +1 -1
  285. package/dist/patterns/anamnesis/anamnesis-highlight.d.ts +6 -0
  286. package/dist/patterns/anamnesis/anamnesis-highlight.d.ts.map +1 -0
  287. package/dist/patterns/anamnesis/anamnesis-intake.d.ts.map +1 -1
  288. package/dist/patterns/anamnesis/anamnesis-matrix.d.ts.map +1 -1
  289. package/dist/patterns/anamnesis/anamnesis-questionnaire.d.ts +23 -9
  290. package/dist/patterns/anamnesis/anamnesis-questionnaire.d.ts.map +1 -1
  291. package/dist/patterns/anamnesis/anamnesis-readonly.d.ts.map +1 -1
  292. package/dist/patterns/anamnesis/anamnesis-target-strip.d.ts.map +1 -1
  293. package/dist/patterns/anamnesis/anamnesis-types.d.ts +7 -0
  294. package/dist/patterns/anamnesis/anamnesis-types.d.ts.map +1 -1
  295. package/dist/patterns/anamnesis/anamnesis-visit-note.d.ts.map +1 -1
  296. package/dist/patterns/anamnesis/anamnesis.d.ts +16 -7
  297. package/dist/patterns/anamnesis/anamnesis.d.ts.map +1 -1
  298. package/dist/patterns/anamnesis/index.d.ts +3 -2
  299. package/dist/patterns/anamnesis/index.d.ts.map +1 -1
  300. package/dist/patterns/anamnesis/index.js +7 -6
  301. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  302. package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +6 -0
  303. package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts.map +1 -1
  304. package/dist/tokens.css +1 -1
  305. package/package.json +1 -1
  306. package/dist/_chunks/agenda-card.agent-mTCrkKSZ.js +0 -27
  307. package/dist/_chunks/agenda-card.agent-mTCrkKSZ.js.map +0 -1
  308. package/dist/_chunks/anamnesis-i18n-CfC0qYzy.js.map +0 -1
  309. package/dist/_chunks/booking-DjNbd7C1.js.map +0 -1
  310. package/dist/_chunks/calculator-dialog-DuXMQSdm.js +0 -40
  311. package/dist/_chunks/chat-container-HlFnoEIl.js.map +0 -1
  312. package/dist/_chunks/cycle-calculator-BwqYVPB4.js +0 -252
  313. package/dist/_chunks/cycle-calculator-BwqYVPB4.js.map +0 -1
  314. package/dist/_chunks/date-picker-variants-eL6HjWvw.js +0 -3363
  315. package/dist/_chunks/date-picker-variants-eL6HjWvw.js.map +0 -1
  316. package/dist/_chunks/due-date-calculator-CwfsFd3T.js +0 -256
  317. package/dist/_chunks/due-date-calculator-CwfsFd3T.js.map +0 -1
  318. package/dist/_chunks/editor-overlay-DE3esyio.js.map +0 -1
  319. package/dist/_chunks/fetal-weight-ePlLjJPc.js +0 -122
  320. package/dist/_chunks/fetal-weight-ePlLjJPc.js.map +0 -1
  321. package/dist/_chunks/gestational-age-calculator-DdgbH69Z.js +0 -311
  322. package/dist/_chunks/gestational-age-calculator-DdgbH69Z.js.map +0 -1
  323. package/dist/_chunks/hcg-doubling-BBqD2wI2.js +0 -170
  324. package/dist/_chunks/hcg-doubling-BBqD2wI2.js.map +0 -1
  325. package/dist/_chunks/header-settings--pjYOe6g.js +0 -284
  326. package/dist/_chunks/header-settings--pjYOe6g.js.map +0 -1
  327. package/dist/_chunks/isSameDay-DUEiAT0G.js +0 -39
  328. package/dist/_chunks/isSameDay-DUEiAT0G.js.map +0 -1
  329. package/dist/_chunks/isSameWeek-CK4HS9lH.js +0 -14
  330. package/dist/_chunks/locale-picker-BfBUdT1m.js.map +0 -1
  331. package/dist/_chunks/map-view-CsaHfoo6.js +0 -378
  332. package/dist/_chunks/map-view-CsaHfoo6.js.map +0 -1
  333. package/dist/_chunks/marketplace-app-shell-DwcFMxzp.js.map +0 -1
  334. package/dist/_chunks/number-input-DrozbZAU.js.map +0 -1
  335. package/dist/_chunks/payment-form-h-BZ8onk.js.map +0 -1
  336. package/dist/_chunks/pdf-viewer-Ddx-T053.js.map +0 -1
  337. package/dist/_chunks/pregnancy-dating-DzYTlBkT.js +0 -421
  338. package/dist/_chunks/pregnancy-dating-DzYTlBkT.js.map +0 -1
  339. package/dist/_chunks/pregnancy-weight-gain-O6J0sUIi.js +0 -322
  340. package/dist/_chunks/pregnancy-weight-gain-O6J0sUIi.js.map +0 -1
  341. package/dist/_chunks/progress-DA413-zn.js +0 -299
  342. package/dist/_chunks/progress-DA413-zn.js.map +0 -1
  343. package/dist/_chunks/slot-grid-CQSULZjd.js +0 -502
  344. package/dist/_chunks/slot-grid-CQSULZjd.js.map +0 -1
  345. package/dist/_chunks/sparkline-BTY4B5tv.js.map +0 -1
  346. package/dist/_chunks/subDays-BcNi04uf.js +0 -8
  347. package/dist/_chunks/tab-bar-Axhk6xzx.js.map +0 -1
  348. package/dist/_chunks/task-card.agent-Bt14CzUd.js +0 -25
  349. package/dist/_chunks/task-card.agent-Bt14CzUd.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pregnancy-weight-gain-B5KSJzdc.js","sources":["../../src/components/pregnancy-weight-gain/pregnancy-weight-gain.agent.ts","../../src/components/pregnancy-weight-gain/weight-gain.ts","../../src/components/pregnancy-weight-gain/pregnancy-weight-gain.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — PregnancyWeightGain. */\n/* */\n/* IOM gestational weight-gain calculator. The four measurements (height, */\n/* pre-pregnancy weight, current weight, gestational weeks) and the */\n/* plurality choice live in local `useState`; the assessment is a derived */\n/* `useMemo`. The agent surface is the curated */\n/* `PregnancyWeightGainHandle`, registered with `useAgentRegistration` and */\n/* resolved by the host as (`pregnancy-weight-gain`, id) — the public */\n/* `ref` is unchanged and still points at the wrapper `HTMLDivElement`, */\n/* exactly as the sibling `bmi-calculator` does. */\n/* */\n/* PHI (§6.1 / §7): the calculator is never handed a patient. Its inputs */\n/* are four numbers plus a plurality enum, and the result is bands + */\n/* status enums, so no state slot can leak identity. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type {\n PregnancyWeightGainHandle,\n PregnancyWeightGainInputs,\n} from './pregnancy-weight-gain';\nimport type { Plurality } from '../_shared/obstetrics';\n\nexport const pregnancyWeightGainAgent: AgentAdapter<PregnancyWeightGainHandle> =\n {\n id: 'pregnancy-weight-gain',\n // set_value → `set_value` (the four measurements) + `set_plurality`,\n // read back through the `inputs` / `plurality` / `result` state slots.\n capabilities: ['set_value'],\n state: {\n inputs: {\n type: '{ heightCm: number | null, prePregnancyKg: number | null, currentKg: number | null, gestationalWeeks: number | null }',\n descriptionKey: 'ui.agent.pregnancyWeightGain.state.inputs',\n description:\n 'The four entered measurements — height (cm), pre-pregnancy weight (kg), current weight (kg) and completed gestational weeks. Null for anything not yet entered.',\n read: (handle) => handle.getInputs(),\n },\n plurality: {\n type: \"'singleton' | 'twin' | 'triplet'\",\n descriptionKey: 'ui.agent.pregnancyWeightGain.state.plurality',\n description:\n 'Number of babies the assessment is keyed to. Drives which IOM band applies — twins use the higher twin bands, triplets have no published band.',\n read: (handle) => handle.getPlurality(),\n },\n result: {\n type: '{ category: string, plurality: string, actualGainKg: number, status: string | null, recommendedToDate: { min: number, max: number } | null, totalRange: { min: number, max: number } | null, weeklyRate: number | null, rateStatus: string | null } | null',\n descriptionKey: 'ui.agent.pregnancyWeightGain.state.result',\n description:\n 'Computed assessment — actual gain (kg), the IOM recommended-to-date and total bands, and where the gain sits against them (below / within / above). Null until every input is valid; the bands are null when the IOM publishes none (triplets, underweight twins).',\n read: (handle) => handle.getResult(),\n },\n },\n actions: {\n set_value: {\n // Fills the same fields a clinician types into. The calculator is a\n // scratchpad — nothing is persisted to a patient record — so `write`,\n // not `phi` (matching the sibling bmi-calculator).\n safety: 'write',\n argsType:\n '{ heightCm?: number | null, prePregnancyKg?: number | null, currentKg?: number | null, gestationalWeeks?: number | null }',\n argsSchema: {\n type: 'object',\n properties: {\n heightCm: {\n type: ['number', 'null'],\n minimum: 0,\n description: 'Height in centimetres.',\n },\n prePregnancyKg: {\n type: ['number', 'null'],\n minimum: 0,\n description: 'Pre-pregnancy weight in kilograms.',\n },\n currentKg: {\n type: ['number', 'null'],\n minimum: 0,\n description: 'Current weight in kilograms.',\n },\n gestationalWeeks: {\n type: ['number', 'null'],\n minimum: 0,\n maximum: 42,\n description: 'Completed gestational weeks.',\n },\n },\n additionalProperties: false,\n },\n idempotent: true,\n descriptionKey: 'ui.agent.pregnancyWeightGain.actions.setValue',\n description:\n 'Set one or more of the four measurements. Omitted fields are left unchanged; the assessment recomputes as soon as all four are valid.',\n examples: [\n {\n args: {\n heightCm: 165,\n prePregnancyKg: 60,\n currentKg: 72,\n gestationalWeeks: 30,\n },\n note: '165 cm, 60 → 72 kg at 30 weeks → +12 kg against the normal-BMI band.',\n },\n ],\n invoke: (handle, args: Partial<PregnancyWeightGainInputs>) => {\n handle.setInputs(args);\n },\n },\n set_plurality: {\n // Re-keys which IOM band applies — a view-config write on the\n // calculator, never a record mutation.\n safety: 'write',\n argsType: \"{ plurality: 'singleton' | 'twin' | 'triplet' }\",\n argsSchema: {\n type: 'object',\n properties: {\n plurality: {\n enum: ['singleton', 'twin', 'triplet'],\n description: 'Number of babies to assess against.',\n },\n },\n required: ['plurality'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.pregnancyWeightGain.actions.setPlurality',\n description:\n 'Choose the number of babies. Twins use the higher IOM twin bands; triplets have no published IOM range, so only the actual gain is reported.',\n examples: [\n {\n args: { plurality: 'twin' },\n note: 'Assess against the twin bands.',\n },\n ],\n invoke: (handle, args: { plurality: Plurality }) => {\n handle.setPlurality(args.plurality);\n },\n },\n reset: {\n // Clears the entered measurements — recoverable only by re-entering\n // them, so it is destructive from the agent's point of view.\n safety: 'destructive',\n idempotent: true,\n descriptionKey: 'ui.agent.pregnancyWeightGain.actions.reset',\n description:\n 'Clear the four measurements and the computed assessment. The plurality choice is a setting and is kept.',\n invoke: (handle) => {\n handle.reset();\n },\n },\n get_result: {\n safety: 'read',\n returns: '{ actualGainKg: number, status: string | null, … } | null',\n returnsSchema: {\n oneOf: [\n {\n type: 'object',\n properties: {\n category: {\n enum: ['underweight', 'normal', 'overweight', 'obese'],\n },\n plurality: { enum: ['singleton', 'twin', 'triplet'] },\n actualGainKg: { type: 'number' },\n status: {\n oneOf: [\n { enum: ['below', 'within', 'above'] },\n { type: 'null' },\n ],\n },\n recommendedToDate: {\n oneOf: [\n {\n type: 'object',\n properties: {\n min: { type: 'number' },\n max: { type: 'number' },\n },\n required: ['min', 'max'],\n },\n { type: 'null' },\n ],\n },\n totalRange: {\n oneOf: [\n {\n type: 'object',\n properties: {\n min: { type: 'number' },\n max: { type: 'number' },\n },\n required: ['min', 'max'],\n },\n { type: 'null' },\n ],\n },\n weeklyRate: { type: ['number', 'null'] },\n rateStatus: {\n oneOf: [\n { enum: ['below', 'within', 'above'] },\n { type: 'null' },\n ],\n },\n },\n required: ['category', 'actualGainKg'],\n },\n { type: 'null' },\n ],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.pregnancyWeightGain.actions.getResult',\n description:\n 'Read back the computed assessment — the same value the `result` state slot returns. Null until every input is valid.',\n invoke: (handle) => handle.getResult(),\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'pregnancy-weight-gain',\n description:\n 'Marks the PregnancyWeightGain calculator wrapper. The themed DOM carries the computed result card; an SR-only live region announces the actual gain and status.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the `id` prop, and also the registry key — without an `id` the instance does not register and the handle-driven actions are unreachable.',\n },\n },\n };\n","/* ------------------------------------------------------------------ */\n/* Pregnancy weight-gain guidance — pure, framework-free, testable. */\n/* */\n/* Recommended ranges follow the US IOM/NAM (2009) guidelines, keyed off */\n/* pre-pregnancy BMI category. Singletons use the published total-gain */\n/* band plus a first-trimester gain (≤13 wk) and a per-week 2nd/3rd- */\n/* trimester rate. Twins use the IOM twin total bands, pro-rated linearly */\n/* for the \"to date\" estimate (the IOM does not publish a twin weekly */\n/* rate). The IOM provides NO range for triplets, and none for */\n/* underweight twins — those cases return `null` so the UI can say so */\n/* rather than invent a number. */\n/* */\n/* Guidance only — not a substitute for clinical judgement. */\n/* ------------------------------------------------------------------ */\n\nimport { type BmiCategory, bmiCategory } from '../bmi-calculator/bmi';\nimport type { Plurality } from '../_shared/obstetrics';\n\nexport interface GainBand {\n /** Lower bound, kg. */\n min: number;\n /** Upper bound, kg. */\n max: number;\n}\n\nexport type GainStatus = 'below' | 'within' | 'above';\n\n/** IOM (2009) total recommended gain for a singleton pregnancy, kg. */\nexport const TOTAL_GAIN_BANDS: Record<BmiCategory, GainBand> = {\n underweight: { min: 12.5, max: 18 },\n normal: { min: 11.5, max: 16 },\n overweight: { min: 7, max: 11.5 },\n obese: { min: 5, max: 9 },\n};\n\n/**\n * IOM (2009) total recommended gain for a TWIN pregnancy, kg. The IOM gives\n * no firm range for underweight twins (insufficient evidence), so that\n * category is intentionally absent and resolves to `null`. There is no IOM\n * range for triplets at all.\n */\nexport const TWIN_TOTAL_GAIN_BANDS: Partial<Record<BmiCategory, GainBand>> = {\n normal: { min: 16.8, max: 24.5 },\n overweight: { min: 14.1, max: 22.7 },\n obese: { min: 11.3, max: 19.1 },\n};\n\n/** Resolve the total-gain band for a category + plurality, or `null` if the IOM gives none. */\nexport function totalGainBand(\n category: BmiCategory,\n plurality: Plurality = 'singleton',\n): GainBand | null {\n if (plurality === 'triplet') return null; // no IOM guideline for triplets\n if (plurality === 'twin') return TWIN_TOTAL_GAIN_BANDS[category] ?? null;\n return TOTAL_GAIN_BANDS[category];\n}\n\n/** IOM (2009) mean rate of gain in the 2nd/3rd trimester, kg per week. */\nexport const RATE_BANDS: Record<BmiCategory, GainBand> = {\n underweight: { min: 0.44, max: 0.58 },\n normal: { min: 0.35, max: 0.5 },\n overweight: { min: 0.23, max: 0.33 },\n obese: { min: 0.17, max: 0.27 },\n};\n\n/** First-trimester total gain band, kg (category-independent in IOM). */\nexport const FIRST_TRIMESTER_GAIN: GainBand = { min: 0.5, max: 2 };\n/** Completed weeks counted as the first trimester for gain purposes. */\nexport const FIRST_TRIMESTER_WEEKS = 13;\n\nexport interface WeightGainInput {\n /** Pre-pregnancy BMI (kg/m²) — drives the category. */\n prePregnancyBmi: number;\n /** Pre-pregnancy weight, kg. */\n prePregnancyWeightKg: number;\n /** Current weight, kg. */\n currentWeightKg: number;\n /** Completed gestational weeks. */\n gestationalWeeks: number;\n /** Number of babies. Defaults to `'singleton'`. */\n plurality?: Plurality;\n}\n\nexport interface WeightGainResult {\n category: BmiCategory;\n /** Number of babies the assessment was computed for. */\n plurality: Plurality;\n /**\n * Recommended TOTAL gain across the whole pregnancy, or `null` when the IOM\n * publishes no range (triplets, and underweight twins).\n */\n totalRange: GainBand | null;\n /** Recommended gain accumulated by the current week, or `null` (see above). */\n recommendedToDate: GainBand | null;\n /** Actual gain so far (current − pre-pregnancy), kg. */\n actualGainKg: number;\n /** Where the actual gain sits against the to-date recommendation, or `null`. */\n status: GainStatus | null;\n /**\n * Estimated 2nd/3rd-trimester average weekly gain to date (kg/week), or `null`\n * before week 14 / when no singleton rate band applies. A snapshot estimate\n * (assumes the mid first-trimester gain), not a between-visit measurement.\n */\n weeklyRate: number | null;\n /** Where the weekly rate sits against the IOM rate band, or `null`. */\n rateStatus: GainStatus | null;\n}\n\n/** Mid-point of the category-independent first-trimester gain band, kg. */\nconst FIRST_TRIMESTER_MIDPOINT =\n (FIRST_TRIMESTER_GAIN.min + FIRST_TRIMESTER_GAIN.max) / 2;\n\n/* Singleton (default) keeps a non-null return; multiples may be null. */\nexport function recommendedGainToDate(\n category: BmiCategory,\n weeks: number,\n plurality?: 'singleton',\n): GainBand;\nexport function recommendedGainToDate(\n category: BmiCategory,\n weeks: number,\n plurality: Plurality,\n): GainBand | null;\n/** Recommended cumulative gain by a given gestational week. */\nexport function recommendedGainToDate(\n category: BmiCategory,\n weeks: number,\n plurality: Plurality = 'singleton',\n): GainBand | null {\n if (plurality !== 'singleton') {\n // Twins/triplets: no IOM weekly rate is published, so pro-rate the total\n // band linearly across the 40 weeks. `null` total ⇒ no guideline.\n const total = totalGainBand(category, plurality);\n if (!total) return null;\n if (weeks <= 0) return { min: 0, max: 0 };\n const frac = Math.min(weeks, 40) / 40;\n return { min: total.min * frac, max: total.max * frac };\n }\n if (weeks <= 0) return { min: 0, max: 0 };\n if (weeks <= FIRST_TRIMESTER_WEEKS) {\n const frac = weeks / FIRST_TRIMESTER_WEEKS;\n return {\n min: FIRST_TRIMESTER_GAIN.min * frac,\n max: FIRST_TRIMESTER_GAIN.max * frac,\n };\n }\n const extraWeeks = Math.min(weeks, 40) - FIRST_TRIMESTER_WEEKS;\n const rate = RATE_BANDS[category];\n return {\n min: FIRST_TRIMESTER_GAIN.min + rate.min * extraWeeks,\n max: FIRST_TRIMESTER_GAIN.max + rate.max * extraWeeks,\n };\n}\n\nexport function assessWeightGain(input: WeightGainInput): WeightGainResult {\n const category = bmiCategory(input.prePregnancyBmi);\n const plurality = input.plurality ?? 'singleton';\n const totalRange = totalGainBand(category, plurality);\n const recommendedToDate = totalRange\n ? recommendedGainToDate(category, input.gestationalWeeks, plurality)\n : null;\n const actualGainKg = input.currentWeightKg - input.prePregnancyWeightKg;\n const status: GainStatus | null = recommendedToDate\n ? actualGainKg < recommendedToDate.min\n ? 'below'\n : actualGainKg > recommendedToDate.max\n ? 'above'\n : 'within'\n : null;\n\n // 2nd/3rd-trimester average weekly rate to date — singleton only (the IOM\n // publishes weekly rate bands only for singletons), and only after week 13.\n let weeklyRate: number | null = null;\n let rateStatus: GainStatus | null = null;\n if (\n plurality === 'singleton' &&\n input.gestationalWeeks > FIRST_TRIMESTER_WEEKS\n ) {\n const weeks = input.gestationalWeeks - FIRST_TRIMESTER_WEEKS;\n weeklyRate = (actualGainKg - FIRST_TRIMESTER_MIDPOINT) / weeks;\n const band = RATE_BANDS[category];\n rateStatus =\n weeklyRate < band.min\n ? 'below'\n : weeklyRate > band.max\n ? 'above'\n : 'within';\n }\n\n return {\n category,\n plurality,\n totalRange,\n recommendedToDate,\n actualGainKg,\n status,\n weeklyRate,\n rateStatus,\n };\n}\n","/* ------------------------------------------------------------------ */\n/* PregnancyWeightGain — actual vs IOM-recommended gestational weight */\n/* gain, keyed off pre-pregnancy BMI. */\n/* */\n/* Composes the BMI maths from bmi-calculator and the IOM bands in */\n/* `./weight-gain` (both pure, separately tested). Metric only. */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useRef, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { pregnancyWeightGainAgent } from './pregnancy-weight-gain.agent';\nimport { RadioGroup, Radio } from '../radio-group';\nimport { FormField } from '../form-field';\nimport { NumberInput } from '../number-input';\nimport { Card } from '../card';\nimport { Badge } from '../badge';\nimport {\n InsertButton,\n type InsertPayload,\n type InsertVariant,\n type InsertMode,\n} from '../_shared/insert-result';\nimport { computeBmi } from '../bmi-calculator/bmi';\nimport type { Plurality } from '../_shared/obstetrics';\nimport {\n type WeightGainResult,\n type GainStatus,\n type GainBand,\n assessWeightGain,\n} from './weight-gain';\n\nconst rootVariants = cva('ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]', {\n variants: {\n width: { full: 'ds:w-full', auto: 'ds:inline-flex' },\n },\n defaultVariants: { width: 'full' },\n});\n\nconst STATUS_BADGE: Record<GainStatus, 'info' | 'success' | 'warning'> = {\n below: 'warning',\n within: 'success',\n above: 'warning',\n};\n\n/**\n * DS token NAME backing each gain-status chip — the solid-fill companion of the\n * on-screen `STATUS_BADGE` variant (Badge `warning` fills `--warning`,\n * `success` fills `--success`). Passed as the card's `highlightToken` so the\n * inserted PNG chip matches the on-screen status badge; `InsertButton` resolves\n * the name to a concrete colour at raster time.\n */\nconst STATUS_HIGHLIGHT_TOKEN: Record<GainStatus, string> = {\n below: '--warning-readable',\n within: '--success',\n above: '--warning-readable',\n};\n\n/**\n * Gain-status chip token. The `below` / `above` statuses resolve to\n * `--warning-readable`, which the result card's colour probe resolves in the live\n * themed DOM: orange-600 in light, non-accessible mode (where bare `--warning`\n * yellow only reaches ~3.2:1 on the white card) and `--warning` elsewhere, whose\n * deepened ramp already clears contrast. Resolving the token NAME at the card\n * means the choice tracks the live theme regardless of where the theme class\n * lives. The `within` (`--success`) status is unchanged.\n */\nfunction statusHighlightToken(status: GainStatus): string {\n return STATUS_HIGHLIGHT_TOKEN[status];\n}\n\n/**\n * Canonical metric snapshot of the four inputs. Measurements only — the\n * calculator is never handed a patient, so no identity can reach the agent.\n */\nexport interface PregnancyWeightGainInputs {\n /** Height, cm. */\n heightCm: number | null;\n /** Pre-pregnancy weight, kg. */\n prePregnancyKg: number | null;\n /** Current weight, kg. */\n currentKg: number | null;\n /** Completed gestational weeks. */\n gestationalWeeks: number | null;\n}\n\n/**\n * Curated imperative handle for agent / external automation. Reads and writes\n * the four measurements plus the plurality choice, and reads back the computed\n * IOM assessment. Never exposes patient identity — the component only ever\n * holds numbers. Consumed by the `pregnancy-weight-gain.agent.ts` adapter; the\n * public `ref` stays the DOM element.\n */\nexport interface PregnancyWeightGainHandle {\n /** Canonical metric snapshot of the four inputs. */\n getInputs: () => PregnancyWeightGainInputs;\n /** Set one or more inputs; omitted fields are left unchanged. */\n setInputs: (next: Partial<PregnancyWeightGainInputs>) => void;\n /** Number of babies the assessment is computed for. */\n getPlurality: () => Plurality;\n /** Switch the plurality (re-keys the IOM bands). */\n setPlurality: (next: Plurality) => void;\n /** Current computed assessment, or null until every input is valid. */\n getResult: () => WeightGainResult | null;\n /** Clear the four measurements (plurality is a setting and is kept). */\n reset: () => void;\n}\n\nexport interface PregnancyWeightGainProps extends VariantProps<\n typeof rootVariants\n> {\n /** Initial number of babies. Defaults to `'singleton'`. */\n defaultPlurality?: Plurality;\n /** Pre-fill the height (cm) — e.g. shared from a BMI measurement. */\n defaultHeightCm?: number;\n /** Pre-fill the pre-pregnancy weight (kg) from the patient record. */\n defaultPrePregnancyKg?: number;\n /** Fires whenever a result can be computed (and `null` when it can't). */\n onResultChange?: (result: WeightGainResult | null) => void;\n /** When provided, shows the result-action buttons that emit / copy the result. */\n onInsert?: (payload: InsertPayload) => void;\n /**\n * Verb the result-action buttons perform. Defaults to `'insert'` (editor\n * extension). Pass `'copy'` from an app shell to copy the result to the\n * clipboard instead.\n */\n insertVariant?: InsertVariant;\n /** `copy` variant only — fired after a successful clipboard write. */\n onCopy?: (mode: InsertMode) => void;\n /** `copy` variant only — fired if the clipboard write can't proceed. */\n onError?: (error: unknown) => void;\n /**\n * Brand wordmark printed in the inserted/copied result-card footer.\n * Omitted → no brand line (and no footer hairline); a string → that custom\n * brand; `false` → no brand line. Brand is opt-in.\n */\n insertBrand?: string | false;\n /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport const PregnancyWeightGain = forwardRef<\n HTMLDivElement,\n PregnancyWeightGainProps\n>(\n (\n {\n defaultPlurality = 'singleton',\n defaultHeightCm,\n defaultPrePregnancyKg,\n onResultChange,\n onInsert,\n insertVariant = 'insert',\n onCopy,\n onError,\n insertBrand,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [heightCm, setHeightCm] = useState<number | null>(\n defaultHeightCm ?? null,\n );\n const [prePregnancyKg, setPrePregnancyKg] = useState<number | null>(\n defaultPrePregnancyKg ?? null,\n );\n const [currentKg, setCurrentKg] = useState<number | null>(null);\n const [weeks, setWeeks] = useState<number | null>(null);\n const [plurality, setPlurality] = useState<Plurality>(defaultPlurality);\n\n const prePregnancyBmi = computeBmi(prePregnancyKg, heightCm);\n\n const result = useMemo<WeightGainResult | null>(() => {\n if (\n prePregnancyBmi === null ||\n prePregnancyKg === null ||\n currentKg === null ||\n weeks === null\n ) {\n return null;\n }\n return assessWeightGain({\n prePregnancyBmi,\n prePregnancyWeightKg: prePregnancyKg,\n currentWeightKg: currentKg,\n gestationalWeeks: weeks,\n plurality,\n });\n }, [prePregnancyBmi, prePregnancyKg, currentKg, weeks, plurality]);\n\n const kg = useMemo(\n () =>\n new Intl.NumberFormat(i18n.language, {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n }),\n [i18n.language],\n );\n\n useEffect(() => {\n onResultChange?.(result);\n }, [result, onResultChange]);\n\n // Live refs so the once-built agent handle reads current state without\n // re-creating on every keystroke. Public `ref` stays the DOM node — the\n // agent surface is the separate `PregnancyWeightGainHandle`.\n const liveRef = useRef({\n heightCm,\n prePregnancyKg,\n currentKg,\n weeks,\n plurality,\n result,\n });\n liveRef.current = {\n heightCm,\n prePregnancyKg,\n currentKg,\n weeks,\n plurality,\n result,\n };\n const agentHandle = useMemo<PregnancyWeightGainHandle>(\n () => ({\n getInputs: () => ({\n heightCm: liveRef.current.heightCm,\n prePregnancyKg: liveRef.current.prePregnancyKg,\n currentKg: liveRef.current.currentKg,\n gestationalWeeks: liveRef.current.weeks,\n }),\n setInputs: (next) => {\n if ('heightCm' in next) setHeightCm(next.heightCm ?? null);\n if ('prePregnancyKg' in next) {\n setPrePregnancyKg(next.prePregnancyKg ?? null);\n }\n if ('currentKg' in next) setCurrentKg(next.currentKg ?? null);\n if ('gestationalWeeks' in next) {\n setWeeks(next.gestationalWeeks ?? null);\n }\n },\n getPlurality: () => liveRef.current.plurality,\n setPlurality: (next) => setPlurality(next),\n getResult: () => liveRef.current.result,\n reset: () => {\n setHeightCm(null);\n setPrePregnancyKg(null);\n setCurrentKg(null);\n setWeeks(null);\n },\n }),\n [],\n );\n useAgentRegistration(pregnancyWeightGainAgent, agentHandle, id);\n\n const unit = t('pregnancyWeightGain.units.kg');\n const band = (b: GainBand): string =>\n `${kg.format(b.min)} – ${kg.format(b.max)} ${unit}`;\n\n return (\n <div\n ref={ref}\n data-component=\"pregnancy-weight-gain\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <FormField\n label={`${t('pregnancyWeightGain.height')} (${t('pregnancyWeightGain.units.cm')})`}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n step={0.5}\n value={heightCm}\n onChange={setHeightCm}\n />\n </FormField>\n <FormField\n label={`${t('pregnancyWeightGain.prePregnancyWeight')} (${unit})`}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n step={0.1}\n value={prePregnancyKg}\n onChange={setPrePregnancyKg}\n />\n </FormField>\n <FormField\n label={`${t('pregnancyWeightGain.currentWeight')} (${unit})`}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n step={0.1}\n value={currentKg}\n onChange={setCurrentKg}\n />\n </FormField>\n <FormField label={t('pregnancyWeightGain.gestationalWeeks')}>\n <NumberInput\n mode=\"integer\"\n min={0}\n max={42}\n value={weeks}\n onChange={setWeeks}\n />\n </FormField>\n </div>\n\n <RadioGroup\n label={t('pregnancyWeightGain.plurality.label')}\n variant=\"horizontal\"\n value={plurality}\n onValueChange={(next) => setPlurality(next as Plurality)}\n >\n <Radio\n label={t('pregnancyWeightGain.plurality.singleton')}\n value=\"singleton\"\n />\n <Radio label={t('pregnancyWeightGain.plurality.twin')} value=\"twin\" />\n <Radio\n label={t('pregnancyWeightGain.plurality.triplet')}\n value=\"triplet\"\n />\n </RadioGroup>\n\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {result\n ? `${t('pregnancyWeightGain.actualGain')}: ${kg.format(\n result.actualGainKg,\n )} ${unit}.${\n result.status\n ? ` ${t(`pregnancyWeightGain.status.${result.status}`)}.`\n : ` ${t('pregnancyWeightGain.noGuideline')}`\n }`\n : ''}\n </p>\n\n {result ? (\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <dl className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('pregnancyWeightGain.prePregnancyBmi')}\n </dt>\n <dd className=\"type-body ds:text-foreground\">\n {kg.format(prePregnancyBmi ?? 0)} ·{' '}\n {t(`pregnancyWeightGain.category.${result.category}`)}\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('pregnancyWeightGain.actualGain')}\n </dt>\n <dd className=\"ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]\">\n <span className=\"type-metric ds:text-foreground\">\n {kg.format(result.actualGainKg)} {unit}\n </span>\n {result.status ? (\n <Badge variant={STATUS_BADGE[result.status]} size=\"lg\">\n {t(`pregnancyWeightGain.status.${result.status}`)}\n </Badge>\n ) : null}\n </dd>\n </div>\n {result.recommendedToDate && result.totalRange ? (\n <>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('pregnancyWeightGain.recommendedToDate')}\n </dt>\n <dd className=\"type-body ds:text-foreground\">\n {band(result.recommendedToDate)}\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('pregnancyWeightGain.recommendedTotal')}\n </dt>\n <dd className=\"type-body ds:text-foreground\">\n {band(result.totalRange)}\n </dd>\n </div>\n </>\n ) : null}\n </dl>\n {result.totalRange ? null : (\n <p className=\"type-body ds:text-foreground\">\n {t('pregnancyWeightGain.noGuideline')}\n </p>\n )}\n {result.weeklyRate !== null && result.rateStatus ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]\">\n <span className=\"type-label ds:text-muted-foreground\">\n {t('pregnancyWeightGain.weeklyRate')}\n </span>\n <span className=\"type-body ds:text-foreground\">\n {t('pregnancyWeightGain.perWeek', {\n value: kg.format(result.weeklyRate),\n })}\n </span>\n <Badge variant={STATUS_BADGE[result.rateStatus]}>\n {t(`pregnancyWeightGain.status.${result.rateStatus}`)}\n </Badge>\n </div>\n ) : null}\n <p className=\"type-body-sm ds:text-muted-foreground\">\n {t(\n plurality === 'singleton'\n ? 'pregnancyWeightGain.disclaimer'\n : 'pregnancyWeightGain.disclaimerMultiple',\n )}\n </p>\n {result.status &&\n result.recommendedToDate &&\n result.totalRange &&\n (insertVariant === 'copy' || onInsert) ? (\n <InsertButton\n onInsert={onInsert}\n variant={insertVariant}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.weightGain'),\n icon: 'baby',\n highlight: t(`pregnancyWeightGain.status.${result.status}`),\n // Chip shares the gain-status semantic token so the\n // inserted PNG chip matches the on-screen status badge —\n // with the contrast-safe orange override for the\n // `--warning` below/above statuses.\n highlightToken: statusHighlightToken(result.status),\n brand: insertBrand,\n fields: [\n {\n // Actual gain is the headline trend → trending-up glyph.\n icon: 'trending-up',\n label: t('pregnancyWeightGain.actualGain'),\n value: `${kg.format(result.actualGainKg)} ${unit}`,\n },\n {\n // Recommended weight band → scale glyph.\n icon: 'scale',\n label: t('pregnancyWeightGain.recommendedToDate'),\n value: band(result.recommendedToDate),\n },\n {\n // Recommended total weight band → scale glyph.\n icon: 'scale',\n label: t('pregnancyWeightGain.recommendedTotal'),\n value: band(result.totalRange),\n },\n ],\n }}\n />\n ) : null}\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('pregnancyWeightGain.empty')}\n </p>\n )}\n </div>\n );\n },\n);\n\nPregnancyWeightGain.displayName = 'PregnancyWeightGain';\n"],"names":["pregnancyWeightGainAgent","handle","args","TOTAL_GAIN_BANDS","TWIN_TOTAL_GAIN_BANDS","totalGainBand","category","plurality","RATE_BANDS","FIRST_TRIMESTER_GAIN","FIRST_TRIMESTER_WEEKS","FIRST_TRIMESTER_MIDPOINT","recommendedGainToDate","weeks","total","frac","extraWeeks","rate","assessWeightGain","input","bmiCategory","totalRange","recommendedToDate","actualGainKg","status","weeklyRate","rateStatus","band","rootVariants","cva","STATUS_BADGE","STATUS_HIGHLIGHT_TOKEN","statusHighlightToken","PregnancyWeightGain","forwardRef","defaultPlurality","defaultHeightCm","defaultPrePregnancyKg","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","id","width","className","ref","t","i18n","useTranslation","heightCm","setHeightCm","useState","prePregnancyKg","setPrePregnancyKg","currentKg","setCurrentKg","setWeeks","setPlurality","prePregnancyBmi","computeBmi","result","useMemo","kg","useEffect","liveRef","useRef","agentHandle","next","useAgentRegistration","unit","b","jsxs","jsx","FormField","NumberInput","RadioGroup","Radio","Card","Badge","Fragment","InsertButton"],"mappings":"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"}
@@ -0,0 +1,343 @@
1
+ import { jsx as u, jsxs as V } from "react/jsx-runtime";
2
+ import { forwardRef as C, useId as ge, useRef as d, useState as ve, useEffect as he, useMemo as be, useImperativeHandle as ye, createContext as xe, useContext as we } from "react";
3
+ import { c as Z } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as S } from "react-i18next";
5
+ import { u as Pe } from "./registry-DvAUVLHh.js";
6
+ import { u as W } from "./use-isomorphic-layout-effect-BGfaCOP1.js";
7
+ const ke = {
8
+ id: "progress",
9
+ // set_value → the `set_value` action + the `value` state slot it writes.
10
+ capabilities: ["set_value"],
11
+ state: {
12
+ value: {
13
+ type: "number | null",
14
+ descriptionKey: "ui.agent.progress.state.value",
15
+ description: "The figure the bar currently shows, in the same units as the `max` prop (default max 100) — including a value written imperatively by `set_value`. Null while indeterminate.",
16
+ read: (e) => e.getValue()
17
+ },
18
+ indeterminate: {
19
+ type: "boolean",
20
+ descriptionKey: "ui.agent.progress.state.indeterminate",
21
+ description: 'True when the operation reports no measurable progress. Read this before treating a null/0 `value` as "nothing done yet" — the two are different states.',
22
+ read: (e) => e.isIndeterminate()
23
+ }
24
+ },
25
+ actions: {
26
+ set_value: {
27
+ // Paints the bar directly, bypassing React — not read-only, even though
28
+ // nothing is persisted server-side. §3: when in doubt, the more
29
+ // conservative class.
30
+ safety: "write",
31
+ argsType: "{ value: number }",
32
+ argsSchema: {
33
+ type: "object",
34
+ properties: {
35
+ value: {
36
+ type: "number",
37
+ minimum: 0,
38
+ description: "Progress figure in the same units as the `max` prop (default max 100). Clamped to [0, max]."
39
+ }
40
+ },
41
+ required: ["value"],
42
+ additionalProperties: !1
43
+ },
44
+ idempotent: !0,
45
+ errors: [
46
+ "Has no visible effect on an indeterminate instance — the animated fill ignores the painted value. Check the `indeterminate` state slot first.",
47
+ "Overwritten by the next React render that changes the `value` prop."
48
+ ],
49
+ examples: [
50
+ { args: { value: 80 }, note: "Paint the bar at 80% of a default max." }
51
+ ],
52
+ descriptionKey: "ui.agent.progress.actions.setValue",
53
+ description: "Paint the displayed progress value straight onto the DOM, bypassing React. Read it back with the `value` state slot — the `value` prop does not change.",
54
+ invoke: (e, c) => {
55
+ e.setValue(c.value);
56
+ }
57
+ }
58
+ },
59
+ domHooks: {
60
+ root: { attr: "data-component", value: "progress" },
61
+ instanceId: {
62
+ attr: "data-component-id",
63
+ sourceProp: "id",
64
+ description: "Sourced from the id prop. Also the registry key — without an `id` the instance does not register and the handle-driven action/state are unreachable."
65
+ }
66
+ }
67
+ }, j = xe(null);
68
+ function $() {
69
+ const e = we(j);
70
+ if (!e)
71
+ throw new Error("Progress sub-components must be used within <Progress>");
72
+ return e;
73
+ }
74
+ const M = {
75
+ sm: { viewBox: "0 0 24 24", cx: 12, cy: 12, r: 10 },
76
+ md: { viewBox: "0 0 40 40", cx: 20, cy: 20, r: 18 },
77
+ lg: { viewBox: "0 0 56 56", cx: 28, cy: 28, r: 26 }
78
+ }, Ie = Z(
79
+ "ds:relative ds:w-full ds:overflow-hidden ds:rounded-[var(--radius-full)] ds:bg-[var(--progress-track)]",
80
+ {
81
+ variants: {
82
+ size: { sm: "ds:h-1", md: "ds:h-2", lg: "ds:h-3" }
83
+ },
84
+ defaultVariants: { size: "md" }
85
+ }
86
+ ), Y = Z("", {
87
+ variants: {
88
+ size: {
89
+ sm: "ds:w-6 ds:h-6",
90
+ md: "ds:w-10 ds:h-10",
91
+ lg: "ds:w-14 ds:h-14"
92
+ }
93
+ },
94
+ defaultVariants: { size: "md" }
95
+ }), z = C(({ children: e, className: c, ...t }, a) => {
96
+ const r = $(), { t: m, i18n: f } = S(), p = r.isIndeterminate ? m("common.loading", "Loading...") : m("common.progress_label", {
97
+ percent: new Intl.NumberFormat(f.language, {
98
+ style: "percent",
99
+ maximumFractionDigits: 0
100
+ }).format((r.value ?? 0) / r.max)
101
+ });
102
+ return /* @__PURE__ */ u(
103
+ "span",
104
+ {
105
+ ref: a,
106
+ id: r.labelId,
107
+ className: ["type-label ds:text-foreground", c].filter(Boolean).join(" "),
108
+ ...t,
109
+ children: e ?? p
110
+ }
111
+ );
112
+ });
113
+ z.displayName = "Progress.Label";
114
+ const ee = C(({ className: e, ...c }, t) => {
115
+ const a = $(), { t: r, i18n: m } = S(), f = a.isIndeterminate ? r("common.loading", "Loading...") : new Intl.NumberFormat(m.language, {
116
+ style: "percent",
117
+ maximumFractionDigits: 0
118
+ }).format((a.value ?? 0) / a.max);
119
+ return /* @__PURE__ */ u(
120
+ "span",
121
+ {
122
+ ref: t,
123
+ className: [
124
+ "type-body-sm ds:tabular-nums ds:text-muted-foreground",
125
+ e
126
+ ].filter(Boolean).join(" "),
127
+ ...c,
128
+ children: f
129
+ }
130
+ );
131
+ });
132
+ ee.displayName = "Progress.Value";
133
+ const te = C(
134
+ ({
135
+ id: e,
136
+ value: c,
137
+ max: t = 100,
138
+ shape: a = "bar",
139
+ size: r = "md",
140
+ ariaLabel: m,
141
+ ariaValueText: f,
142
+ debouncePercent: p = 1,
143
+ disabled: D = !1,
144
+ className: re,
145
+ children: L,
146
+ ...A
147
+ }, se) => {
148
+ const B = ge(), { t: F, i18n: ae } = S(), w = d(null), P = d(null), k = d(null), I = d(null), g = d(null), s = c === void 0, n = s ? void 0 : Math.min(t, Math.max(0, c)), ne = n !== void 0 ? n / t * 100 : void 0, [_, oe] = ve(!1);
149
+ he(() => {
150
+ oe(!0);
151
+ }, []);
152
+ const v = _ || s ? ne : 0, h = d(null), T = d(s);
153
+ T.current = s, W(() => {
154
+ var o, i;
155
+ if (s || v === void 0) {
156
+ h.current = null;
157
+ return;
158
+ }
159
+ if (h.current = _ ? n ?? 0 : 0, a === "bar")
160
+ (o = P.current) == null || o.style.setProperty(
161
+ "--progress-value",
162
+ String(v)
163
+ );
164
+ else {
165
+ const { r: l } = M[r], x = 2 * Math.PI * l * (1 - v / 100);
166
+ (i = I.current) == null || i.style.setProperty(
167
+ "stroke-dashoffset",
168
+ String(x)
169
+ );
170
+ }
171
+ }, [s, v, a, r, _, n]), W(() => {
172
+ const o = a === "bar" ? w.current : k.current;
173
+ if (!o) return;
174
+ if (s) {
175
+ o.removeAttribute("aria-valuenow"), g.current = null;
176
+ return;
177
+ }
178
+ if (n === void 0) return;
179
+ const i = n / t * 100, l = g.current;
180
+ (l === null ? 1 / 0 : Math.abs(i - l)) >= p && (o.setAttribute("aria-valuenow", String(n)), g.current = i);
181
+ }, [s, n, t, p, a]);
182
+ const E = d(null), R = be(
183
+ () => ({
184
+ getValue: () => h.current,
185
+ isIndeterminate: () => T.current,
186
+ setValue: (o) => {
187
+ var Q, U;
188
+ const i = Math.min(t, Math.max(0, o)), l = i / t * 100;
189
+ if (h.current = i, a === "bar")
190
+ (Q = P.current) == null || Q.style.setProperty(
191
+ "--progress-value",
192
+ String(l)
193
+ );
194
+ else {
195
+ const { r: fe } = M[r], pe = 2 * Math.PI * fe * (1 - l / 100);
196
+ (U = I.current) == null || U.style.setProperty(
197
+ "stroke-dashoffset",
198
+ String(pe)
199
+ );
200
+ }
201
+ const y = a === "bar" ? w.current : k.current, x = g.current;
202
+ (x === null ? 1 / 0 : Math.abs(l - x)) >= p && y && (y.setAttribute("aria-valuenow", String(i)), g.current = l);
203
+ }
204
+ }),
205
+ [t, a, r, p]
206
+ );
207
+ ye(se, () => R, [R]), Pe(ke, R, e);
208
+ const ie = s ? F("common.loading", "Loading...") : F("common.progress_label", {
209
+ percent: new Intl.NumberFormat(ae.language, {
210
+ style: "percent",
211
+ maximumFractionDigits: 0
212
+ }).format((n ?? 0) / t)
213
+ }), H = m ? { "aria-label": m } : { "aria-labelledby": B, "aria-label": ie }, O = s ? { "aria-busy": !0, "aria-valuemin": 0, "aria-valuemax": t } : {
214
+ "aria-valuemin": 0,
215
+ "aria-valuemax": t,
216
+ ...f ? { "aria-valuetext": f } : {}
217
+ }, K = D ? { "aria-disabled": !0 } : {}, q = [
218
+ "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]",
219
+ D && "ds:opacity-50",
220
+ re
221
+ ].filter(Boolean).join(" "), X = {
222
+ labelId: B,
223
+ isIndeterminate: s,
224
+ value: n,
225
+ max: t
226
+ };
227
+ if (a === "bar") {
228
+ const o = s ? [
229
+ "ds:absolute ds:[inset-block:0] ds:bg-primary ds:rounded-[var(--radius-full)]",
230
+ "ds:[@media(prefers-reduced-motion:no-preference)]:animate-[progress-bar-indeterminate_1200ms_ease-in-out_infinite]",
231
+ "ds:[.theme-accessible_&]:animate-none",
232
+ "ds:motion-reduce:animate-[progress-indeterminate-pulse_var(--animation-duration)_ease-in-out_infinite]"
233
+ ].join(" ") : [
234
+ "ds:absolute ds:[inset-block:0] ds:start-0",
235
+ "ds:[inline-size:calc(var(--progress-value,0)*1%)]",
236
+ "ds:bg-primary ds:rounded-[var(--radius-full)]",
237
+ "ds:transition-[inline-size] ds:duration-[var(--animation-duration)]",
238
+ "ds:ease-[var(--ease-out)] ds:motion-reduce:transition-none"
239
+ ].join(" ");
240
+ return /* @__PURE__ */ u(j.Provider, { value: X, children: /* @__PURE__ */ V(
241
+ "div",
242
+ {
243
+ ref: E,
244
+ className: q,
245
+ "data-component": "progress",
246
+ "data-component-id": e,
247
+ ...A,
248
+ children: [
249
+ L,
250
+ /* @__PURE__ */ u(
251
+ "div",
252
+ {
253
+ ref: w,
254
+ role: "progressbar",
255
+ ...H,
256
+ ...O,
257
+ ...K,
258
+ className: Ie({ size: r }),
259
+ children: /* @__PURE__ */ u("div", { ref: P, className: o })
260
+ }
261
+ )
262
+ ]
263
+ }
264
+ ) });
265
+ }
266
+ const { viewBox: le, cx: G, cy: J, r: N } = M[r], b = 2 * Math.PI * N, ce = b * 0.25, de = s ? ce : b, ue = s ? [
267
+ Y({ size: r }),
268
+ "ds:[transform:rotate(-90deg)]",
269
+ "ds:[@media(prefers-reduced-motion:no-preference)]:animate-[progress-circular-spin_1200ms_linear_infinite]",
270
+ "ds:[.theme-accessible_&]:animate-none",
271
+ "ds:motion-reduce:animate-[progress-indeterminate-pulse_var(--animation-duration)_ease-in-out_infinite]"
272
+ ].join(" ") : [
273
+ Y({ size: r }),
274
+ "ds:[transform:rotate(-90deg)]",
275
+ "ds:rtl:[transform:rotate(-90deg)_scaleX(-1)]"
276
+ ].join(" "), me = [
277
+ "ds:stroke-primary ds:[stroke-width:var(--spacing-xs)]",
278
+ !s && "ds:transition-[stroke-dashoffset] ds:duration-[var(--animation-duration)] ds:ease-[var(--ease-out)] ds:motion-reduce:transition-none"
279
+ ].filter(Boolean).join(" ");
280
+ return /* @__PURE__ */ u(j.Provider, { value: X, children: /* @__PURE__ */ V(
281
+ "div",
282
+ {
283
+ ref: E,
284
+ className: q,
285
+ "data-component": "progress",
286
+ "data-component-id": e,
287
+ ...A,
288
+ children: [
289
+ L,
290
+ /* @__PURE__ */ V(
291
+ "svg",
292
+ {
293
+ ref: k,
294
+ role: "progressbar",
295
+ ...H,
296
+ ...O,
297
+ ...K,
298
+ viewBox: le,
299
+ className: ue,
300
+ children: [
301
+ /* @__PURE__ */ u(
302
+ "circle",
303
+ {
304
+ cx: G,
305
+ cy: J,
306
+ r: N,
307
+ fill: "none",
308
+ strokeDasharray: b,
309
+ className: "ds:[stroke:var(--progress-track)] ds:[stroke-width:var(--spacing-xs)]"
310
+ }
311
+ ),
312
+ /* @__PURE__ */ u(
313
+ "circle",
314
+ {
315
+ ref: I,
316
+ cx: G,
317
+ cy: J,
318
+ r: N,
319
+ fill: "none",
320
+ strokeLinecap: "round",
321
+ strokeDasharray: b,
322
+ strokeDashoffset: de,
323
+ className: me
324
+ }
325
+ )
326
+ ]
327
+ }
328
+ )
329
+ ]
330
+ }
331
+ ) });
332
+ }
333
+ );
334
+ te.displayName = "Progress";
335
+ const De = Object.assign(te, {
336
+ Label: z,
337
+ Value: ee
338
+ });
339
+ export {
340
+ De as P,
341
+ ke as p
342
+ };
343
+ //# sourceMappingURL=progress-CK8otcQ-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-CK8otcQ-.js","sources":["../../src/components/progress/progress.agent.ts","../../src/components/progress/progress.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — Progress. */\n/* */\n/* The valuable direction here is the READ, not the write: the common */\n/* agent pattern is waiting on a host-driven long operation (import, */\n/* upload, batch send) and deciding when to proceed, which needs a */\n/* readable progress figure. */\n/* */\n/* `set_value` writes `--progress-value` / `stroke-dashoffset` straight */\n/* onto the DOM — a deliberate high-frequency escape hatch that bypasses */\n/* React, so neither the `value` prop nor any React state reflects an */\n/* imperative write. The `value` slot is therefore backed by a ref both */\n/* paint paths write, and reads \"what the bar currently shows\". */\n/* */\n/* PHI (§7): a percentage and a boolean. Progress is never handed a */\n/* patient — it is told how far along an operation is. */\n/* See `src/docs/26-agent-readiness.mdx`. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { ProgressHandle } from './progress';\n\nexport const progressAgent: AgentAdapter<ProgressHandle> = {\n id: 'progress',\n // set_value → the `set_value` action + the `value` state slot it writes.\n capabilities: ['set_value'],\n state: {\n value: {\n type: 'number | null',\n descriptionKey: 'ui.agent.progress.state.value',\n description:\n 'The figure the bar currently shows, in the same units as the `max` prop (default max 100) — including a value written imperatively by `set_value`. Null while indeterminate.',\n read: (handle) => handle.getValue(),\n },\n indeterminate: {\n type: 'boolean',\n descriptionKey: 'ui.agent.progress.state.indeterminate',\n description:\n 'True when the operation reports no measurable progress. Read this before treating a null/0 `value` as \"nothing done yet\" — the two are different states.',\n read: (handle) => handle.isIndeterminate(),\n },\n },\n actions: {\n set_value: {\n // Paints the bar directly, bypassing React — not read-only, even though\n // nothing is persisted server-side. §3: when in doubt, the more\n // conservative class.\n safety: 'write',\n argsType: '{ value: number }',\n argsSchema: {\n type: 'object',\n properties: {\n value: {\n type: 'number',\n minimum: 0,\n description:\n 'Progress figure in the same units as the `max` prop (default max 100). Clamped to [0, max].',\n },\n },\n required: ['value'],\n additionalProperties: false,\n },\n idempotent: true,\n errors: [\n 'Has no visible effect on an indeterminate instance — the animated fill ignores the painted value. Check the `indeterminate` state slot first.',\n 'Overwritten by the next React render that changes the `value` prop.',\n ],\n examples: [\n { args: { value: 80 }, note: 'Paint the bar at 80% of a default max.' },\n ],\n descriptionKey: 'ui.agent.progress.actions.setValue',\n description:\n 'Paint the displayed progress value straight onto the DOM, bypassing React. Read it back with the `value` state slot — the `value` prop does not change.',\n invoke: (handle, args: { value: number }) => {\n handle.setValue(args.value);\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'progress' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the id prop. Also the registry key — without an `id` the instance does not register and the handle-driven action/state are unreachable.',\n },\n },\n};\n","import {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { progressAgent } from './progress.agent';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\n\n/* ── Public types ─────────────────────────────────────────────────────── */\n\nexport interface ProgressHandle {\n /**\n * Paint a progress value straight onto the DOM, bypassing React. High-\n * frequency escape hatch — the `value` prop is NOT updated, so read the\n * painted figure back with `getValue()`, not from props.\n */\n setValue: (value: number) => void;\n /**\n * What the bar currently SHOWS, in the same units as `value` / `max` —\n * written by both the render path and `setValue`, so it stays defined after\n * an imperative write. `null` while indeterminate.\n */\n getValue: () => number | null;\n /** True when no measurable progress is set (`value` prop omitted). */\n isIndeterminate: () => boolean;\n}\n\nexport interface ProgressProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'role'\n> {\n value?: number;\n max?: number;\n shape?: 'bar' | 'circular';\n size?: 'sm' | 'md' | 'lg';\n ariaLabel?: string;\n ariaValueText?: string;\n debouncePercent?: number;\n disabled?: boolean;\n children?: ReactNode;\n}\n\n/* ── Context ──────────────────────────────────────────────────────────── */\n\ntype ProgressContextValue = {\n labelId: string;\n isIndeterminate: boolean;\n value: number | undefined;\n max: number;\n};\n\nconst ProgressCtx = createContext<ProgressContextValue | null>(null);\n\nfunction useProgressCtx(): ProgressContextValue {\n const ctx = useContext(ProgressCtx);\n if (!ctx)\n throw new Error('Progress sub-components must be used within <Progress>');\n return ctx;\n}\n\n/* ── Circle geometry ──────────────────────────────────────────────────── */\n\nconst CIRCLE = {\n sm: { viewBox: '0 0 24 24', cx: 12, cy: 12, r: 10 },\n md: { viewBox: '0 0 40 40', cx: 20, cy: 20, r: 18 },\n lg: { viewBox: '0 0 56 56', cx: 28, cy: 28, r: 26 },\n} as const;\n\n/* ── CVA ──────────────────────────────────────────────────────────────── */\n\nconst barTrackVariants = cva(\n 'ds:relative ds:w-full ds:overflow-hidden ds:rounded-[var(--radius-full)] ds:bg-[var(--progress-track)]',\n {\n variants: {\n size: { sm: 'ds:h-1', md: 'ds:h-2', lg: 'ds:h-3' },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst circularVariants = cva('', {\n variants: {\n size: {\n sm: 'ds:w-6 ds:h-6',\n md: 'ds:w-10 ds:h-10',\n lg: 'ds:w-14 ds:h-14',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\n/* ── Progress.Label ───────────────────────────────────────────────────── */\n\nconst ProgressLabel = forwardRef<\n HTMLSpanElement,\n HTMLAttributes<HTMLSpanElement>\n>(({ children, className, ...props }, ref) => {\n const ctx = useProgressCtx();\n const { t, i18n } = useTranslation();\n\n const defaultText = ctx.isIndeterminate\n ? t('common.loading', 'Loading...')\n : t('common.progress_label', {\n percent: new Intl.NumberFormat(i18n.language, {\n style: 'percent',\n maximumFractionDigits: 0,\n }).format((ctx.value ?? 0) / ctx.max),\n });\n\n return (\n <span\n ref={ref}\n id={ctx.labelId}\n className={['type-label ds:text-foreground', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {children ?? defaultText}\n </span>\n );\n});\nProgressLabel.displayName = 'Progress.Label';\n\n/* ── Progress.Value ───────────────────────────────────────────────────── */\n\nconst ProgressValue = forwardRef<\n HTMLSpanElement,\n HTMLAttributes<HTMLSpanElement>\n>(({ className, ...props }, ref) => {\n const ctx = useProgressCtx();\n const { t, i18n } = useTranslation();\n\n const text = ctx.isIndeterminate\n ? t('common.loading', 'Loading...')\n : new Intl.NumberFormat(i18n.language, {\n style: 'percent',\n maximumFractionDigits: 0,\n }).format((ctx.value ?? 0) / ctx.max);\n\n return (\n <span\n ref={ref}\n className={[\n 'type-body-sm ds:tabular-nums ds:text-muted-foreground',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {text}\n </span>\n );\n});\nProgressValue.displayName = 'Progress.Value';\n\n/* ── Progress root ────────────────────────────────────────────────────── */\n\nconst ProgressRoot = forwardRef<ProgressHandle, ProgressProps>(\n (\n {\n id,\n value,\n max = 100,\n shape = 'bar',\n size = 'md',\n ariaLabel,\n ariaValueText,\n debouncePercent = 1,\n disabled = false,\n className,\n children,\n ...rest\n },\n ref,\n ) => {\n const labelId = useId();\n const { t, i18n } = useTranslation();\n const barTrackRef = useRef<HTMLDivElement>(null);\n const barFillRef = useRef<HTMLDivElement>(null);\n const circTrackRef = useRef<SVGSVGElement>(null);\n const circFillRef = useRef<SVGCircleElement>(null);\n /* Separate typed refs for each shape to avoid union-type casts */\n const lastAnnouncedPercentRef = useRef<number | null>(null);\n\n const isIndeterminate = value === undefined;\n const clampedValue = isIndeterminate\n ? undefined\n : Math.min(max, Math.max(0, value));\n const targetPercent =\n clampedValue !== undefined ? (clampedValue / max) * 100 : undefined;\n\n /* ── Mount-in animation ──────────────────────────────────────────── */\n // Paint once at 0 before showing the target value, so the existing\n // transition on stroke-dashoffset / inline-size animates from empty\n // → target on mount. First render: hasMounted=false → percent=0,\n // useLayoutEffect writes 0 to the style, browser paints empty.\n // useEffect then flips hasMounted, triggering a re-render at the\n // target percent; the style write inside useLayoutEffect produces\n // the change the transition needs.\n const [hasMounted, setHasMounted] = useState(false);\n useEffect(() => {\n setHasMounted(true);\n }, []);\n const percent = hasMounted || isIndeterminate ? targetPercent : 0;\n\n /* ── What the bar currently shows ────────────────────────────────── */\n // Written by BOTH paint paths — the layout effect below and the\n // imperative `setValue` — so the agent state slot means \"the figure on\n // screen\" rather than racing the `value` prop against a DOM write.\n const currentValueRef = useRef<number | null>(null);\n const isIndeterminateRef = useRef(isIndeterminate);\n isIndeterminateRef.current = isIndeterminate;\n\n /* ── CSS property updates (visual fill) ──────────────────────────── */\n useIsomorphicLayoutEffect(() => {\n if (isIndeterminate || percent === undefined) {\n currentValueRef.current = null;\n return;\n }\n // `percent` is 0 for the deliberate pre-mount paint, so the ref tracks\n // what is painted, not the prop.\n currentValueRef.current = hasMounted ? (clampedValue ?? 0) : 0;\n\n if (shape === 'bar') {\n barFillRef.current?.style.setProperty(\n '--progress-value',\n String(percent),\n );\n } else {\n const { r } = CIRCLE[size];\n const circumference = 2 * Math.PI * r;\n const offset = circumference * (1 - percent / 100);\n circFillRef.current?.style.setProperty(\n 'stroke-dashoffset',\n String(offset),\n );\n }\n }, [isIndeterminate, percent, shape, size, hasMounted, clampedValue]);\n\n /* ── Debounced ARIA value updates ────────────────────────────────── */\n useIsomorphicLayoutEffect(() => {\n const trackEl =\n shape === 'bar' ? barTrackRef.current : circTrackRef.current;\n if (!trackEl) return;\n\n if (isIndeterminate) {\n trackEl.removeAttribute('aria-valuenow');\n lastAnnouncedPercentRef.current = null;\n return;\n }\n if (clampedValue === undefined) return;\n\n const pct = (clampedValue / max) * 100;\n const last = lastAnnouncedPercentRef.current;\n const delta = last === null ? Infinity : Math.abs(pct - last);\n if (delta >= debouncePercent) {\n trackEl.setAttribute('aria-valuenow', String(clampedValue));\n lastAnnouncedPercentRef.current = pct;\n }\n }, [isIndeterminate, clampedValue, max, debouncePercent, shape]);\n\n /* ── Imperative handle for high-frequency updates ────────────────── */\n const rootRef = useRef<HTMLDivElement>(null);\n\n const agentHandle = useMemo<ProgressHandle>(\n () => ({\n getValue: () => currentValueRef.current,\n isIndeterminate: () => isIndeterminateRef.current,\n setValue: (v: number) => {\n const clamped = Math.min(max, Math.max(0, v));\n const pct = (clamped / max) * 100;\n currentValueRef.current = clamped;\n\n if (shape === 'bar') {\n barFillRef.current?.style.setProperty(\n '--progress-value',\n String(pct),\n );\n } else {\n const { r } = CIRCLE[size];\n const circumference = 2 * Math.PI * r;\n const offset = circumference * (1 - pct / 100);\n circFillRef.current?.style.setProperty(\n 'stroke-dashoffset',\n String(offset),\n );\n }\n\n const trackEl =\n shape === 'bar' ? barTrackRef.current : circTrackRef.current;\n const last = lastAnnouncedPercentRef.current;\n const delta = last === null ? Infinity : Math.abs(pct - last);\n if (delta >= debouncePercent && trackEl) {\n trackEl.setAttribute('aria-valuenow', String(clamped));\n lastAnnouncedPercentRef.current = pct;\n }\n },\n }),\n [max, shape, size, debouncePercent],\n );\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n useAgentRegistration(progressAgent, agentHandle, id);\n\n /* ── ARIA props shared by both shapes ────────────────────────────── */\n // Provide aria-label as fallback alongside aria-labelledby: per ARIA spec,\n // AT falls back to aria-label when aria-labelledby references a missing id.\n // This covers the case where neither ariaLabel nor Progress.Label is used.\n const fallbackAriaLabel = isIndeterminate\n ? t('common.loading', 'Loading...')\n : t('common.progress_label', {\n percent: new Intl.NumberFormat(i18n.language, {\n style: 'percent',\n maximumFractionDigits: 0,\n }).format((clampedValue ?? 0) / max),\n });\n\n const labelProps = ariaLabel\n ? { 'aria-label': ariaLabel }\n : { 'aria-labelledby': labelId, 'aria-label': fallbackAriaLabel };\n\n const stateProps = isIndeterminate\n ? { 'aria-busy': true as const, 'aria-valuemin': 0, 'aria-valuemax': max }\n : {\n 'aria-valuemin': 0 as const,\n 'aria-valuemax': max,\n ...(ariaValueText ? { 'aria-valuetext': ariaValueText } : {}),\n };\n\n const disabledProp = disabled ? { 'aria-disabled': true as const } : {};\n\n const wrapperClass = [\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]',\n disabled && 'ds:opacity-50',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const ctxValue: ProgressContextValue = {\n labelId,\n isIndeterminate,\n value: clampedValue,\n max,\n };\n\n /* ── Bar shape ──────────────────────────────────────────────────── */\n if (shape === 'bar') {\n const fillClass = isIndeterminate\n ? [\n 'ds:absolute ds:[inset-block:0] ds:bg-primary ds:rounded-[var(--radius-full)]',\n 'ds:[@media(prefers-reduced-motion:no-preference)]:animate-[progress-bar-indeterminate_1200ms_ease-in-out_infinite]',\n 'ds:[.theme-accessible_&]:animate-none',\n 'ds:motion-reduce:animate-[progress-indeterminate-pulse_var(--animation-duration)_ease-in-out_infinite]',\n ].join(' ')\n : [\n 'ds:absolute ds:[inset-block:0] ds:start-0',\n 'ds:[inline-size:calc(var(--progress-value,0)*1%)]',\n 'ds:bg-primary ds:rounded-[var(--radius-full)]',\n 'ds:transition-[inline-size] ds:duration-[var(--animation-duration)]',\n 'ds:ease-[var(--ease-out)] ds:motion-reduce:transition-none',\n ].join(' ');\n\n return (\n <ProgressCtx.Provider value={ctxValue}>\n <div\n ref={rootRef}\n className={wrapperClass}\n data-component=\"progress\"\n data-component-id={id}\n {...rest}\n >\n {children}\n <div\n ref={barTrackRef}\n role=\"progressbar\"\n {...labelProps}\n {...stateProps}\n {...disabledProp}\n className={barTrackVariants({ size })}\n >\n <div ref={barFillRef} className={fillClass} />\n </div>\n </div>\n </ProgressCtx.Provider>\n );\n }\n\n /* ── Circular shape ─────────────────────────────────────────────── */\n const { viewBox, cx, cy, r } = CIRCLE[size];\n const circumference = 2 * Math.PI * r;\n const indeterminateDashOffset = circumference * 0.25;\n // For determinate progress, paint an empty arc on first mount. The\n // effect above then sets stroke-dashoffset to the target, and the\n // CSS transition animates from empty → target.\n const initialDashOffset = isIndeterminate\n ? indeterminateDashOffset\n : circumference;\n\n const svgClass = isIndeterminate\n ? [\n circularVariants({ size }),\n 'ds:[transform:rotate(-90deg)]',\n 'ds:[@media(prefers-reduced-motion:no-preference)]:animate-[progress-circular-spin_1200ms_linear_infinite]',\n 'ds:[.theme-accessible_&]:animate-none',\n 'ds:motion-reduce:animate-[progress-indeterminate-pulse_var(--animation-duration)_ease-in-out_infinite]',\n ].join(' ')\n : [\n circularVariants({ size }),\n 'ds:[transform:rotate(-90deg)]',\n 'ds:rtl:[transform:rotate(-90deg)_scaleX(-1)]',\n ].join(' ');\n\n const fillStrokeClass = [\n 'ds:stroke-primary ds:[stroke-width:var(--spacing-xs)]',\n !isIndeterminate &&\n 'ds:transition-[stroke-dashoffset] ds:duration-[var(--animation-duration)] ds:ease-[var(--ease-out)] ds:motion-reduce:transition-none',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <ProgressCtx.Provider value={ctxValue}>\n <div\n ref={rootRef}\n className={wrapperClass}\n data-component=\"progress\"\n data-component-id={id}\n {...rest}\n >\n {children}\n <svg\n ref={circTrackRef}\n role=\"progressbar\"\n {...labelProps}\n {...stateProps}\n {...disabledProp}\n viewBox={viewBox}\n className={svgClass}\n >\n <circle\n cx={cx}\n cy={cy}\n r={r}\n fill=\"none\"\n strokeDasharray={circumference}\n className=\"ds:[stroke:var(--progress-track)] ds:[stroke-width:var(--spacing-xs)]\"\n />\n <circle\n ref={circFillRef}\n cx={cx}\n cy={cy}\n r={r}\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={initialDashOffset}\n className={fillStrokeClass}\n />\n </svg>\n </div>\n </ProgressCtx.Provider>\n );\n },\n);\n\nProgressRoot.displayName = 'Progress';\n\n/* ── Compound export ──────────────────────────────────────────────────── */\n\nexport const Progress = Object.assign(ProgressRoot, {\n Label: ProgressLabel,\n Value: ProgressValue,\n});\n"],"names":["progressAgent","handle","args","ProgressCtx","createContext","useProgressCtx","ctx","useContext","CIRCLE","barTrackVariants","cva","circularVariants","ProgressLabel","forwardRef","children","className","props","ref","t","i18n","useTranslation","defaultText","jsx","ProgressValue","text","ProgressRoot","id","value","max","shape","size","ariaLabel","ariaValueText","debouncePercent","disabled","rest","labelId","useId","barTrackRef","useRef","barFillRef","circTrackRef","circFillRef","lastAnnouncedPercentRef","isIndeterminate","clampedValue","targetPercent","hasMounted","setHasMounted","useState","useEffect","percent","currentValueRef","isIndeterminateRef","useIsomorphicLayoutEffect","_a","r","offset","_b","trackEl","pct","last","rootRef","agentHandle","useMemo","v","clamped","useImperativeHandle","useAgentRegistration","fallbackAriaLabel","labelProps","stateProps","disabledProp","wrapperClass","ctxValue","fillClass","jsxs","viewBox","cx","cy","circumference","indeterminateDashOffset","initialDashOffset","svgClass","fillStrokeClass","Progress"],"mappings":"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"}