@alfadocs/ui-kit-debug 0.41.2 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/dist/_chunks/address-autocomplete-CSjMrBvu.js +358 -0
  2. package/dist/_chunks/address-autocomplete-CSjMrBvu.js.map +1 -0
  3. package/dist/_chunks/{alia-sidebar-DXsYPinm.js → alia-sidebar-BpX4z_af.js} +2 -2
  4. package/dist/_chunks/{alia-sidebar-DXsYPinm.js.map → alia-sidebar-BpX4z_af.js.map} +1 -1
  5. package/dist/_chunks/{ar-Cn_NxqkN.js → ar-DEz65ZJW.js} +2 -2
  6. package/dist/_chunks/{ar-Cn_NxqkN.js.map → ar-DEz65ZJW.js.map} +1 -1
  7. package/dist/_chunks/bmi-calculator-DuVSFDuw.js +259 -0
  8. package/dist/_chunks/bmi-calculator-DuVSFDuw.js.map +1 -0
  9. package/dist/_chunks/{booking-4mCw3Mpl.js → booking-CtLwaxkK.js} +4 -4
  10. package/dist/_chunks/{booking-4mCw3Mpl.js.map → booking-CtLwaxkK.js.map} +1 -1
  11. package/dist/_chunks/{breadcrumb-CLlhx7qo.js → breadcrumb-OTbaY70e.js} +4 -4
  12. package/dist/_chunks/{breadcrumb-CLlhx7qo.js.map → breadcrumb-OTbaY70e.js.map} +1 -1
  13. package/dist/_chunks/{calculator-dialog-B74fqpFZ.js → calculator-dialog-DdexHrTP.js} +2 -2
  14. package/dist/_chunks/{calculator-dialog-B74fqpFZ.js.map → calculator-dialog-DdexHrTP.js.map} +1 -1
  15. package/dist/_chunks/{chart-Cbt0_sKv.js → chart-Cg3e9EH9.js} +101 -99
  16. package/dist/_chunks/chart-Cg3e9EH9.js.map +1 -0
  17. package/dist/_chunks/cycle-calculator-Dln-y1k_.js +192 -0
  18. package/dist/_chunks/cycle-calculator-Dln-y1k_.js.map +1 -0
  19. package/dist/_chunks/{date-picker-CvQfs6Xh.js → date-picker-Bq7xhMA-.js} +109 -108
  20. package/dist/_chunks/{date-picker-CvQfs6Xh.js.map → date-picker-Bq7xhMA-.js.map} +1 -1
  21. package/dist/_chunks/date-picker-variants-DLi1Va_e.js +3238 -0
  22. package/dist/_chunks/date-picker-variants-DLi1Va_e.js.map +1 -0
  23. package/dist/_chunks/{date-range-picker-U9fn1g9d.js → date-range-picker-DcXuI9y7.js} +20 -19
  24. package/dist/_chunks/date-range-picker-DcXuI9y7.js.map +1 -0
  25. package/dist/_chunks/{date-time-picker-Cva0ZCWw.js → date-time-picker-RimumeLR.js} +18 -17
  26. package/dist/_chunks/date-time-picker-RimumeLR.js.map +1 -0
  27. package/dist/_chunks/{de-BMM2H7Bs.js → de-bTBGdjPS.js} +2 -2
  28. package/dist/_chunks/{de-BMM2H7Bs.js.map → de-bTBGdjPS.js.map} +1 -1
  29. package/dist/_chunks/{dialog-Cee13rHU.js → dialog-DOYgd75U.js} +46 -37
  30. package/dist/_chunks/dialog-DOYgd75U.js.map +1 -0
  31. package/dist/_chunks/{document-scanner-CqS_klIr.js → document-scanner-BqLsGs4Y.js} +7 -7
  32. package/dist/_chunks/{document-scanner-CqS_klIr.js.map → document-scanner-BqLsGs4Y.js.map} +1 -1
  33. package/dist/_chunks/{dropdown-menu-BC5ZdOMo.js → dropdown-menu-CUEXqKis.js} +2 -2
  34. package/dist/_chunks/{dropdown-menu-BC5ZdOMo.js.map → dropdown-menu-CUEXqKis.js.map} +1 -1
  35. package/dist/_chunks/{due-date-calculator-CUspKSTw.js → due-date-calculator-Cc4dRqTI.js} +62 -41
  36. package/dist/_chunks/due-date-calculator-Cc4dRqTI.js.map +1 -0
  37. package/dist/_chunks/{editable-currency-cell-renderer-DgkCIIcO.js → editable-currency-cell-renderer-9jqwDv5x.js} +3 -3
  38. package/dist/_chunks/{editable-currency-cell-renderer-DgkCIIcO.js.map → editable-currency-cell-renderer-9jqwDv5x.js.map} +1 -1
  39. package/dist/_chunks/{el-BYPonAaK.js → el-BWG5RXxa.js} +6 -6
  40. package/dist/_chunks/{el-BYPonAaK.js.map → el-BWG5RXxa.js.map} +1 -1
  41. package/dist/_chunks/{es-CMkVCQ4F.js → es-DfO_G435.js} +2 -2
  42. package/dist/_chunks/{es-CMkVCQ4F.js.map → es-DfO_G435.js.map} +1 -1
  43. package/dist/_chunks/{fr-BcuWxqft.js → fr-BTn24bs8.js} +2 -2
  44. package/dist/_chunks/{fr-BcuWxqft.js.map → fr-BTn24bs8.js.map} +1 -1
  45. package/dist/_chunks/{freemium-paywall-BAk3a6er.js → freemium-paywall-BLXESpH4.js} +2 -2
  46. package/dist/_chunks/{freemium-paywall-BAk3a6er.js.map → freemium-paywall-BLXESpH4.js.map} +1 -1
  47. package/dist/_chunks/{gestation-BXEgDGmP.js → gestation-mWF4AXea.js} +3 -3
  48. package/dist/_chunks/{gestation-BXEgDGmP.js.map → gestation-mWF4AXea.js.map} +1 -1
  49. package/dist/_chunks/{gestational-age-calculator-CsQ05qDy.js → gestational-age-calculator-ZMSrzkRW.js} +59 -45
  50. package/dist/_chunks/gestational-age-calculator-ZMSrzkRW.js.map +1 -0
  51. package/dist/_chunks/{header-CTZWX-tm.js → header-Ce1Br27u.js} +70 -75
  52. package/dist/_chunks/header-Ce1Br27u.js.map +1 -0
  53. package/dist/_chunks/{header-settings-CBLwUK6t.js → header-settings-Bx0Biimh.js} +2 -2
  54. package/dist/_chunks/{header-settings-CBLwUK6t.js.map → header-settings-Bx0Biimh.js.map} +1 -1
  55. package/dist/_chunks/{hi-wkq_rQAh.js → hi-Dj3oYd84.js} +2 -2
  56. package/dist/_chunks/{hi-wkq_rQAh.js.map → hi-Dj3oYd84.js.map} +1 -1
  57. package/dist/_chunks/index.modern-D2LGACWg.js +1529 -0
  58. package/dist/_chunks/index.modern-D2LGACWg.js.map +1 -0
  59. package/dist/_chunks/insert-result-DisOY2G-.js +243 -0
  60. package/dist/_chunks/insert-result-DisOY2G-.js.map +1 -0
  61. package/dist/_chunks/{isSameWeek-Bim5ftRd.js → isSameWeek-HfxKk6Lz.js} +2 -2
  62. package/dist/_chunks/{isSameWeek-Bim5ftRd.js.map → isSameWeek-HfxKk6Lz.js.map} +1 -1
  63. package/dist/_chunks/{it-GiQrQ9p4.js → it-Y85ofIQQ.js} +7 -7
  64. package/dist/_chunks/{it-GiQrQ9p4.js.map → it-Y85ofIQQ.js.map} +1 -1
  65. package/dist/_chunks/{ja-qfYg3Rua.js → ja-CQ7J6YoA.js} +2 -2
  66. package/dist/_chunks/{ja-qfYg3Rua.js.map → ja-CQ7J6YoA.js.map} +1 -1
  67. package/dist/_chunks/{kbd-Cglkd7CY.js → kbd-D855ZXIW.js} +2 -2
  68. package/dist/_chunks/{kbd-Cglkd7CY.js.map → kbd-D855ZXIW.js.map} +1 -1
  69. package/dist/_chunks/map-view-Tb5VfK9Y.js +333 -0
  70. package/dist/_chunks/map-view-Tb5VfK9Y.js.map +1 -0
  71. package/dist/_chunks/marketplace-app-shell-Dc5cTIt8.js +428 -0
  72. package/dist/_chunks/marketplace-app-shell-Dc5cTIt8.js.map +1 -0
  73. package/dist/_chunks/{nl-xOogO4sZ.js → nl-D9kHCmp3.js} +2 -2
  74. package/dist/_chunks/{nl-xOogO4sZ.js.map → nl-D9kHCmp3.js.map} +1 -1
  75. package/dist/_chunks/{patient-search-CBq62kmL.js → patient-search-DPe2ZYEL.js} +2 -2
  76. package/dist/_chunks/{patient-search-CBq62kmL.js.map → patient-search-DPe2ZYEL.js.map} +1 -1
  77. package/dist/_chunks/{patient-shell-DF81lALv.js → patient-shell-CnT4L8gn.js} +3 -3
  78. package/dist/_chunks/{patient-shell-DF81lALv.js.map → patient-shell-CnT4L8gn.js.map} +1 -1
  79. package/dist/_chunks/{payment-form-Dy3WIIsC.js → payment-form-BzVsG6Ks.js} +5 -5
  80. package/dist/_chunks/{payment-form-Dy3WIIsC.js.map → payment-form-BzVsG6Ks.js.map} +1 -1
  81. package/dist/_chunks/{pdf-viewer-Cy6Ul3hZ.js → pdf-viewer-B6MC6VTx.js} +139 -126
  82. package/dist/_chunks/pdf-viewer-B6MC6VTx.js.map +1 -0
  83. package/dist/_chunks/{pl-GnOW6eGK.js → pl-B3Smqpkr.js} +3 -3
  84. package/dist/_chunks/{pl-GnOW6eGK.js.map → pl-B3Smqpkr.js.map} +1 -1
  85. package/dist/_chunks/{practice-results-C0d4IL5E.js → practice-results-CrLpEiiW.js} +4 -4
  86. package/dist/_chunks/{practice-results-C0d4IL5E.js.map → practice-results-CrLpEiiW.js.map} +1 -1
  87. package/dist/_chunks/pregnancy-weight-gain-zZL5Ir2-.js +224 -0
  88. package/dist/_chunks/pregnancy-weight-gain-zZL5Ir2-.js.map +1 -0
  89. package/dist/_chunks/{pt-_bV5b5RW.js → pt-D3J-1c_7.js} +6 -6
  90. package/dist/_chunks/{pt-_bV5b5RW.js.map → pt-D3J-1c_7.js.map} +1 -1
  91. package/dist/_chunks/{public-header.agent-B2dDg2_d.js → public-header.agent-BY6FH71R.js} +2 -2
  92. package/dist/_chunks/{public-header.agent-B2dDg2_d.js.map → public-header.agent-BY6FH71R.js.map} +1 -1
  93. package/dist/_chunks/radio-group-CLjK-SlK.js +167 -0
  94. package/dist/_chunks/radio-group-CLjK-SlK.js.map +1 -0
  95. package/dist/_chunks/{rich-text-editor-DLbg2852.js → rich-text-editor-DhGIBd4a.js} +10 -10
  96. package/dist/_chunks/{rich-text-editor-DLbg2852.js.map → rich-text-editor-DhGIBd4a.js.map} +1 -1
  97. package/dist/_chunks/{ro-BEcyh5Nj.js → ro-BKAbbEA3.js} +2 -2
  98. package/dist/_chunks/{ro-BEcyh5Nj.js.map → ro-BKAbbEA3.js.map} +1 -1
  99. package/dist/_chunks/{ru-Bi86hqMf.js → ru-BeG8f0Ep.js} +3 -3
  100. package/dist/_chunks/{ru-Bi86hqMf.js.map → ru-BeG8f0Ep.js.map} +1 -1
  101. package/dist/_chunks/{sheet-BV-yuLE2.js → sheet-xbzu4YiY.js} +7 -7
  102. package/dist/_chunks/{sheet-BV-yuLE2.js.map → sheet-xbzu4YiY.js.map} +1 -1
  103. package/dist/_chunks/sign-document-B-3k_0LO.js +344 -0
  104. package/dist/_chunks/sign-document-B-3k_0LO.js.map +1 -0
  105. package/dist/_chunks/{signature-capture-DoiBd6i3.js → signature-capture-CpMBhqQ9.js} +6 -6
  106. package/dist/_chunks/{signature-capture-DoiBd6i3.js.map → signature-capture-CpMBhqQ9.js.map} +1 -1
  107. package/dist/_chunks/{sq-BujHSAWu.js → sq-_hRPaeUy.js} +6 -6
  108. package/dist/_chunks/{sq-BujHSAWu.js.map → sq-_hRPaeUy.js.map} +1 -1
  109. package/dist/_chunks/subDays-Dv7q9S7u.js +8 -0
  110. package/dist/_chunks/{subDays-_T9YeKPX.js.map → subDays-Dv7q9S7u.js.map} +1 -1
  111. package/dist/_chunks/{sv-C8AeDrTA.js → sv-g009fSpe.js} +2 -2
  112. package/dist/_chunks/{sv-C8AeDrTA.js.map → sv-g009fSpe.js.map} +1 -1
  113. package/dist/_chunks/tab-bar-Xetknddo.js +105 -0
  114. package/dist/_chunks/tab-bar-Xetknddo.js.map +1 -0
  115. package/dist/_chunks/{theme-toggle-DpC28kt5.js → theme-toggle-ClATnY4Q.js} +2 -2
  116. package/dist/_chunks/{theme-toggle-DpC28kt5.js.map → theme-toggle-ClATnY4Q.js.map} +1 -1
  117. package/dist/_chunks/{toast.agent-WHHfw5VX.js → toast.agent-B0MCsvdZ.js} +2 -2
  118. package/dist/_chunks/{toast.agent-WHHfw5VX.js.map → toast.agent-B0MCsvdZ.js.map} +1 -1
  119. package/dist/_chunks/{tr-CMSs_Vgf.js → tr-OKUOuhMW.js} +2 -2
  120. package/dist/_chunks/{tr-CMSs_Vgf.js.map → tr-OKUOuhMW.js.map} +1 -1
  121. package/dist/_chunks/{unit-converter-EUwO6QYq.js → unit-converter-CuXCXJhK.js} +46 -40
  122. package/dist/_chunks/unit-converter-CuXCXJhK.js.map +1 -0
  123. package/dist/_chunks/{workflow-map-C3gB0FvB.js → workflow-map-BFNpzTiw.js} +2 -2
  124. package/dist/_chunks/{workflow-map-C3gB0FvB.js.map → workflow-map-BFNpzTiw.js.map} +1 -1
  125. package/dist/_chunks/{zh-CN-eXB-PFu4.js → zh-CN-De4zwEhx.js} +3 -3
  126. package/dist/_chunks/{zh-CN-eXB-PFu4.js.map → zh-CN-De4zwEhx.js.map} +1 -1
  127. package/dist/agent-catalog.json +1 -1
  128. package/dist/brand/product-lockup/product-lockup.d.ts +16 -0
  129. package/dist/brand/product-lockup/product-lockup.d.ts.map +1 -1
  130. package/dist/components/_shared/calendar-class-names.d.ts +8 -0
  131. package/dist/components/_shared/calendar-class-names.d.ts.map +1 -0
  132. package/dist/components/_shared/index.d.ts +2 -0
  133. package/dist/components/_shared/index.d.ts.map +1 -1
  134. package/dist/components/_shared/insert-result.d.ts +78 -6
  135. package/dist/components/_shared/insert-result.d.ts.map +1 -1
  136. package/dist/components/address-autocomplete/address-autocomplete.d.ts +77 -0
  137. package/dist/components/address-autocomplete/address-autocomplete.d.ts.map +1 -0
  138. package/dist/components/address-autocomplete/index.d.ts +4 -0
  139. package/dist/components/address-autocomplete/index.d.ts.map +1 -0
  140. package/dist/components/address-autocomplete/index.js +6 -0
  141. package/dist/components/address-autocomplete/index.js.map +1 -0
  142. package/dist/components/address-autocomplete/parse-address.d.ts +52 -0
  143. package/dist/components/address-autocomplete/parse-address.d.ts.map +1 -0
  144. package/dist/components/badge/badge.d.ts +1 -1
  145. package/dist/components/bmi-calculator/bmi-calculator.d.ts +11 -1
  146. package/dist/components/bmi-calculator/bmi-calculator.d.ts.map +1 -1
  147. package/dist/components/bmi-calculator/index.js +1 -1
  148. package/dist/components/booking/index.js +1 -1
  149. package/dist/components/breadcrumb/index.js +1 -1
  150. package/dist/components/calculator-dialog/index.js +1 -1
  151. package/dist/components/card/card.d.ts +1 -1
  152. package/dist/components/chart/chart.d.ts +10 -0
  153. package/dist/components/chart/chart.d.ts.map +1 -1
  154. package/dist/components/chart/index.js +1 -1
  155. package/dist/components/cycle-calculator/cycle-calculator.d.ts +12 -2
  156. package/dist/components/cycle-calculator/cycle-calculator.d.ts.map +1 -1
  157. package/dist/components/cycle-calculator/index.js +1 -1
  158. package/dist/components/data-table/index.js +1 -1
  159. package/dist/components/date-picker/date-picker.d.ts +0 -1
  160. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  161. package/dist/components/date-picker/index.js +1 -1
  162. package/dist/components/date-range-picker/date-range-picker.d.ts +0 -1
  163. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  164. package/dist/components/date-range-picker/index.js +1 -1
  165. package/dist/components/date-time-picker/date-time-picker.d.ts +0 -1
  166. package/dist/components/date-time-picker/date-time-picker.d.ts.map +1 -1
  167. package/dist/components/date-time-picker/index.js +1 -1
  168. package/dist/components/dialog/dialog.d.ts.map +1 -1
  169. package/dist/components/dialog/index.js +1 -1
  170. package/dist/components/document-scanner/index.js +1 -1
  171. package/dist/components/dropdown-menu/index.js +1 -1
  172. package/dist/components/due-date-calculator/due-date-calculator.d.ts +11 -1
  173. package/dist/components/due-date-calculator/due-date-calculator.d.ts.map +1 -1
  174. package/dist/components/due-date-calculator/index.js +2 -2
  175. package/dist/components/freemium-paywall/index.js +1 -1
  176. package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts +12 -2
  177. package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts.map +1 -1
  178. package/dist/components/gestational-age-calculator/index.js +1 -1
  179. package/dist/components/header/header.d.ts +8 -0
  180. package/dist/components/header/header.d.ts.map +1 -1
  181. package/dist/components/header/index.js +1 -1
  182. package/dist/components/header-settings/index.js +1 -1
  183. package/dist/components/index.d.ts +3 -1
  184. package/dist/components/index.d.ts.map +1 -1
  185. package/dist/components/kbd/index.js +1 -1
  186. package/dist/components/map-view/index.js +1 -1
  187. package/dist/components/matrix-rain/matrix-rain.d.ts +1 -1
  188. package/dist/components/patient-search/index.js +1 -1
  189. package/dist/components/payment-form/index.js +1 -1
  190. package/dist/components/pdf-viewer/index.js +1 -1
  191. package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  192. package/dist/components/practice-results/index.js +1 -1
  193. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  194. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts +12 -2
  195. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts.map +1 -1
  196. package/dist/components/public-header/index.js +1 -1
  197. package/dist/components/public-header/public-header.d.ts +1 -1
  198. package/dist/components/radio-group/index.js +1 -1
  199. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  200. package/dist/components/rich-text-editor/index.js +1 -1
  201. package/dist/components/sheet/index.js +1 -1
  202. package/dist/components/sheet/sheet.d.ts.map +1 -1
  203. package/dist/components/sign-document/index.js +1 -1
  204. package/dist/components/sign-document/sign-document.d.ts +12 -0
  205. package/dist/components/sign-document/sign-document.d.ts.map +1 -1
  206. package/dist/components/signature-capture/index.js +1 -1
  207. package/dist/components/stat/stat.d.ts +1 -1
  208. package/dist/components/tab-bar/index.d.ts +3 -0
  209. package/dist/components/tab-bar/index.d.ts.map +1 -0
  210. package/dist/components/tab-bar/index.js +5 -0
  211. package/dist/components/tab-bar/index.js.map +1 -0
  212. package/dist/components/tab-bar/tab-bar.d.ts +104 -0
  213. package/dist/components/tab-bar/tab-bar.d.ts.map +1 -0
  214. package/dist/components/theme-toggle/index.js +1 -1
  215. package/dist/components/toast/index.js +1 -1
  216. package/dist/components/unit-converter/index.js +1 -1
  217. package/dist/components/unit-converter/unit-converter.d.ts +11 -1
  218. package/dist/components/unit-converter/unit-converter.d.ts.map +1 -1
  219. package/dist/components/workflow/index.js +1 -1
  220. package/dist/i18n/locales/ar.d.ts +17 -0
  221. package/dist/i18n/locales/ar.d.ts.map +1 -1
  222. package/dist/i18n/locales/ar.js +18 -1
  223. package/dist/i18n/locales/ar.js.map +1 -1
  224. package/dist/i18n/locales/de.d.ts +17 -0
  225. package/dist/i18n/locales/de.d.ts.map +1 -1
  226. package/dist/i18n/locales/de.js +18 -1
  227. package/dist/i18n/locales/de.js.map +1 -1
  228. package/dist/i18n/locales/el.d.ts +17 -0
  229. package/dist/i18n/locales/el.d.ts.map +1 -1
  230. package/dist/i18n/locales/el.js +18 -1
  231. package/dist/i18n/locales/el.js.map +1 -1
  232. package/dist/i18n/locales/en.d.ts +17 -0
  233. package/dist/i18n/locales/en.d.ts.map +1 -1
  234. package/dist/i18n/locales/en.js +18 -1
  235. package/dist/i18n/locales/en.js.map +1 -1
  236. package/dist/i18n/locales/es.d.ts +17 -0
  237. package/dist/i18n/locales/es.d.ts.map +1 -1
  238. package/dist/i18n/locales/es.js +18 -1
  239. package/dist/i18n/locales/es.js.map +1 -1
  240. package/dist/i18n/locales/fr.d.ts +17 -0
  241. package/dist/i18n/locales/fr.d.ts.map +1 -1
  242. package/dist/i18n/locales/fr.js +18 -1
  243. package/dist/i18n/locales/fr.js.map +1 -1
  244. package/dist/i18n/locales/hi.d.ts +17 -0
  245. package/dist/i18n/locales/hi.d.ts.map +1 -1
  246. package/dist/i18n/locales/hi.js +18 -1
  247. package/dist/i18n/locales/hi.js.map +1 -1
  248. package/dist/i18n/locales/it.d.ts +17 -0
  249. package/dist/i18n/locales/it.d.ts.map +1 -1
  250. package/dist/i18n/locales/it.js +18 -1
  251. package/dist/i18n/locales/it.js.map +1 -1
  252. package/dist/i18n/locales/ja.d.ts +17 -0
  253. package/dist/i18n/locales/ja.d.ts.map +1 -1
  254. package/dist/i18n/locales/ja.js +18 -1
  255. package/dist/i18n/locales/ja.js.map +1 -1
  256. package/dist/i18n/locales/nl.d.ts +17 -0
  257. package/dist/i18n/locales/nl.d.ts.map +1 -1
  258. package/dist/i18n/locales/nl.js +18 -1
  259. package/dist/i18n/locales/nl.js.map +1 -1
  260. package/dist/i18n/locales/pl.d.ts +17 -0
  261. package/dist/i18n/locales/pl.d.ts.map +1 -1
  262. package/dist/i18n/locales/pl.js +18 -1
  263. package/dist/i18n/locales/pl.js.map +1 -1
  264. package/dist/i18n/locales/pt.d.ts +17 -0
  265. package/dist/i18n/locales/pt.d.ts.map +1 -1
  266. package/dist/i18n/locales/pt.js +18 -1
  267. package/dist/i18n/locales/pt.js.map +1 -1
  268. package/dist/i18n/locales/ro.d.ts +17 -0
  269. package/dist/i18n/locales/ro.d.ts.map +1 -1
  270. package/dist/i18n/locales/ro.js +18 -1
  271. package/dist/i18n/locales/ro.js.map +1 -1
  272. package/dist/i18n/locales/ru.d.ts +17 -0
  273. package/dist/i18n/locales/ru.d.ts.map +1 -1
  274. package/dist/i18n/locales/ru.js +18 -1
  275. package/dist/i18n/locales/ru.js.map +1 -1
  276. package/dist/i18n/locales/sq.d.ts +17 -0
  277. package/dist/i18n/locales/sq.d.ts.map +1 -1
  278. package/dist/i18n/locales/sq.js +18 -1
  279. package/dist/i18n/locales/sq.js.map +1 -1
  280. package/dist/i18n/locales/sv.d.ts +17 -0
  281. package/dist/i18n/locales/sv.d.ts.map +1 -1
  282. package/dist/i18n/locales/sv.js +18 -1
  283. package/dist/i18n/locales/sv.js.map +1 -1
  284. package/dist/i18n/locales/tr.d.ts +17 -0
  285. package/dist/i18n/locales/tr.d.ts.map +1 -1
  286. package/dist/i18n/locales/tr.js +18 -1
  287. package/dist/i18n/locales/tr.js.map +1 -1
  288. package/dist/i18n/locales/zh.d.ts +17 -0
  289. package/dist/i18n/locales/zh.d.ts.map +1 -1
  290. package/dist/i18n/locales/zh.js +18 -1
  291. package/dist/i18n/locales/zh.js.map +1 -1
  292. package/dist/index.js +605 -599
  293. package/dist/index.js.map +1 -1
  294. package/dist/locales/ar.json +18 -1
  295. package/dist/locales/de.json +18 -1
  296. package/dist/locales/el.json +18 -1
  297. package/dist/locales/en.json +18 -1
  298. package/dist/locales/es.json +18 -1
  299. package/dist/locales/fr.json +18 -1
  300. package/dist/locales/hi.json +18 -1
  301. package/dist/locales/it.json +18 -1
  302. package/dist/locales/ja.json +18 -1
  303. package/dist/locales/nl.json +18 -1
  304. package/dist/locales/pl.json +18 -1
  305. package/dist/locales/pt.json +18 -1
  306. package/dist/locales/ro.json +18 -1
  307. package/dist/locales/ru.json +18 -1
  308. package/dist/locales/sq.json +18 -1
  309. package/dist/locales/sv.json +18 -1
  310. package/dist/locales/tr.json +18 -1
  311. package/dist/locales/zh.json +18 -1
  312. package/dist/patterns/alia-assistant/index.js +1 -1
  313. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  314. package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +87 -4
  315. package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts.map +1 -1
  316. package/dist/patterns/patient-shell/index.js +1 -1
  317. package/dist/tokens.css +1411 -2
  318. package/package.json +16 -1
  319. package/dist/_chunks/bmi-calculator-DnEr513I.js +0 -213
  320. package/dist/_chunks/bmi-calculator-DnEr513I.js.map +0 -1
  321. package/dist/_chunks/chart-Cbt0_sKv.js.map +0 -1
  322. package/dist/_chunks/cycle-calculator-B5Uj9QeT.js +0 -185
  323. package/dist/_chunks/cycle-calculator-B5Uj9QeT.js.map +0 -1
  324. package/dist/_chunks/date-range-picker-U9fn1g9d.js.map +0 -1
  325. package/dist/_chunks/date-time-picker-Cva0ZCWw.js.map +0 -1
  326. package/dist/_chunks/dialog-Cee13rHU.js.map +0 -1
  327. package/dist/_chunks/due-date-calculator-CUspKSTw.js.map +0 -1
  328. package/dist/_chunks/gestational-age-calculator-CsQ05qDy.js.map +0 -1
  329. package/dist/_chunks/header-CTZWX-tm.js.map +0 -1
  330. package/dist/_chunks/insert-result-yJ0QavoN.js +0 -133
  331. package/dist/_chunks/insert-result-yJ0QavoN.js.map +0 -1
  332. package/dist/_chunks/map-view-qJLybrmN.js +0 -1850
  333. package/dist/_chunks/map-view-qJLybrmN.js.map +0 -1
  334. package/dist/_chunks/marketplace-app-shell-BlxVizU4.js +0 -296
  335. package/dist/_chunks/marketplace-app-shell-BlxVizU4.js.map +0 -1
  336. package/dist/_chunks/pdf-viewer-Cy6Ul3hZ.js.map +0 -1
  337. package/dist/_chunks/pregnancy-weight-gain-BCdi-JSv.js +0 -209
  338. package/dist/_chunks/pregnancy-weight-gain-BCdi-JSv.js.map +0 -1
  339. package/dist/_chunks/radio-group-BcF92GEF.js +0 -152
  340. package/dist/_chunks/radio-group-BcF92GEF.js.map +0 -1
  341. package/dist/_chunks/react-day-picker-CdtIiKjx.js +0 -3174
  342. package/dist/_chunks/react-day-picker-CdtIiKjx.js.map +0 -1
  343. package/dist/_chunks/sign-document-CpLDZ6Db.js +0 -316
  344. package/dist/_chunks/sign-document-CpLDZ6Db.js.map +0 -1
  345. package/dist/_chunks/subDays-_T9YeKPX.js +0 -8
  346. package/dist/_chunks/unit-converter-EUwO6QYq.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfadocs/ui-kit-debug",
3
- "version": "0.41.2",
3
+ "version": "0.43.0",
4
4
  "type": "module",
5
5
  "description": "AlfaDocs shared design system — tokens, components, patterns, and translations for platform, booking, and alfascribe. (debug build — identical runtime to @alfadocs/ui-kit, ships source maps for symbolication).",
6
6
  "license": "BUSL-1.1",
@@ -51,6 +51,10 @@
51
51
  "types": "./dist/components/accordion/index.d.ts",
52
52
  "import": "./dist/components/accordion/index.js"
53
53
  },
54
+ "./address-autocomplete": {
55
+ "types": "./dist/components/address-autocomplete/index.d.ts",
56
+ "import": "./dist/components/address-autocomplete/index.js"
57
+ },
54
58
  "./ai-prompt-input": {
55
59
  "types": "./dist/components/ai-prompt-input/index.d.ts",
56
60
  "import": "./dist/components/ai-prompt-input/index.js"
@@ -515,6 +519,10 @@
515
519
  "types": "./dist/components/switch/index.d.ts",
516
520
  "import": "./dist/components/switch/index.js"
517
521
  },
522
+ "./tab-bar": {
523
+ "types": "./dist/components/tab-bar/index.d.ts",
524
+ "import": "./dist/components/tab-bar/index.js"
525
+ },
518
526
  "./tabs": {
519
527
  "types": "./dist/components/tabs/index.d.ts",
520
528
  "import": "./dist/components/tabs/index.js"
@@ -629,6 +637,7 @@
629
637
  "format:check": "prettier --check .",
630
638
  "stylelint": "stylelint \"src/**/*.css\"",
631
639
  "check:data-component": "node scripts/check-data-component-coverage.mjs",
640
+ "check:arbitrary-classes": "node scripts/check-arbitrary-classes.mjs",
632
641
  "check:prop-runtime-coverage": "node scripts/check-prop-runtime-coverage.mjs",
633
642
  "check:story-locale-thrash": "node scripts/check-story-locale-thrash.mjs",
634
643
  "check:i18n": "node scripts/check-no-namespaced-i18n.mjs",
@@ -815,6 +824,7 @@
815
824
  },
816
825
  "devDependencies": {
817
826
  "@chromatic-com/storybook": "^5.1.2",
827
+ "@exa-online/storybook-jira-addon": "^3.0.3",
818
828
  "@fullcalendar/core": "^6.1.20",
819
829
  "@fullcalendar/daygrid": "^6.1.20",
820
830
  "@fullcalendar/interaction": "^6.1.20",
@@ -829,7 +839,12 @@
829
839
  "@storybook/addon-docs": "^10.3.5",
830
840
  "@storybook/addon-themes": "^10.3.5",
831
841
  "@storybook/addon-vitest": "^10.3.5",
842
+ "@storybook/components": "file:.storybook/sb-compat-shims/components",
843
+ "@storybook/core-events": "file:.storybook/sb-compat-shims/core-events",
844
+ "@storybook/manager-api": "file:.storybook/sb-compat-shims/manager-api",
845
+ "@storybook/preview-api": "file:.storybook/sb-compat-shims/preview-api",
832
846
  "@storybook/react-vite": "^10.3.5",
847
+ "@storybook/theming": "file:.storybook/sb-compat-shims/theming",
833
848
  "@stripe/react-stripe-js": "^6.2.0",
834
849
  "@stripe/stripe-js": "^9.2.0",
835
850
  "@tailwindcss/postcss": "^4.2.2",
@@ -1,213 +0,0 @@
1
- import { jsxs as i, jsx as l } from "react/jsx-runtime";
2
- import { forwardRef as z, useId as U, useState as r, useMemo as O, useEffect as P } from "react";
3
- import { c as R } from "./index-D2ZczOXr.js";
4
- import { useTranslation as Y } from "react-i18next";
5
- import { R as I } from "./radio-TWf9Q-mp.js";
6
- import { R as _ } from "./radio-group-BcF92GEF.js";
7
- import { F as T } from "./form-field-BOm9hK35.js";
8
- import { N as h } from "./number-input-Dj5L3pXK.js";
9
- import { C as q } from "./chart-Cbt0_sKv.js";
10
- import { B as J } from "./badge-zsf5i5bH.js";
11
- import { I as Q } from "./insert-result-yJ0QavoN.js";
12
- import { a as X, b as Z, e as aa, c as la, f as S, l as G, k as ea } from "./bmi-BxD-tFzU.js";
13
- const ta = R("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
14
- variants: {
15
- width: {
16
- full: "ds:w-full",
17
- auto: "ds:inline-flex"
18
- }
19
- },
20
- defaultVariants: { width: "full" }
21
- }), ia = {
22
- underweight: "info",
23
- normal: "success",
24
- overweight: "warning",
25
- obese: "error"
26
- }, p = (f) => Math.round(f * 10) / 10, ra = z(
27
- ({
28
- defaultUnitSystem: f = "metric",
29
- onResultChange: u,
30
- onInsert: y,
31
- id: k,
32
- width: A,
33
- className: H
34
- }, K) => {
35
- const { t: a, i18n: v } = Y(), x = U(), [s, V] = r(f), [d, N] = r(null), [g, w] = r(null), [o, F] = r(null), [n, $] = r(null), [m, B] = r(null), D = (M) => {
36
- const C = M;
37
- if (C !== s) {
38
- if (C === "imperial") {
39
- if (d !== null) {
40
- const { ft: W, in: j } = la(d);
41
- F(W), $(p(j));
42
- }
43
- g !== null && B(p(ea(g)));
44
- } else
45
- (o !== null || n !== null) && N(p(S(o ?? 0, n ?? 0))), m !== null && w(p(G(m)));
46
- V(C);
47
- }
48
- }, E = s === "metric" ? d : o !== null || n !== null ? S(o ?? 0, n ?? 0) : null, L = s === "metric" ? g : m !== null ? G(m) : null, t = aa(L, E), e = t !== null ? Z(t) : null, b = O(
49
- () => new Intl.NumberFormat(v.language, {
50
- minimumFractionDigits: 1,
51
- maximumFractionDigits: 1
52
- }),
53
- [v.language]
54
- );
55
- P(() => {
56
- u == null || u(
57
- t !== null && e !== null ? { bmi: t, category: e } : null
58
- );
59
- }, [t, e, u]);
60
- const c = s === "metric";
61
- return /* @__PURE__ */ i(
62
- "div",
63
- {
64
- ref: K,
65
- "data-component": "bmi-calculator",
66
- "data-component-id": k,
67
- className: ta({ width: A, className: H }),
68
- children: [
69
- /* @__PURE__ */ i(
70
- _,
71
- {
72
- label: a("bmiCalculator.unitSystem.label"),
73
- variant: "horizontal",
74
- value: s,
75
- onValueChange: D,
76
- children: [
77
- /* @__PURE__ */ l(I, { label: a("bmiCalculator.unitSystem.metric"), value: "metric" }),
78
- /* @__PURE__ */ l(
79
- I,
80
- {
81
- label: a("bmiCalculator.unitSystem.imperial"),
82
- value: "imperial"
83
- }
84
- )
85
- ]
86
- }
87
- ),
88
- /* @__PURE__ */ i("div", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
89
- c ? /* @__PURE__ */ l(
90
- T,
91
- {
92
- label: `${a("bmiCalculator.height")} (${a("bmiCalculator.units.cm")})`,
93
- children: /* @__PURE__ */ l(
94
- h,
95
- {
96
- mode: "decimal",
97
- min: 0,
98
- step: 0.5,
99
- value: d,
100
- onChange: N
101
- }
102
- )
103
- }
104
- ) : /* @__PURE__ */ i("div", { role: "group", "aria-labelledby": x, children: [
105
- /* @__PURE__ */ l(
106
- "span",
107
- {
108
- id: x,
109
- className: "type-label ds:mb-[var(--spacing-xs)] ds:block ds:text-foreground",
110
- children: a("bmiCalculator.height")
111
- }
112
- ),
113
- /* @__PURE__ */ i("div", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
114
- /* @__PURE__ */ l(
115
- h,
116
- {
117
- mode: "integer",
118
- min: 0,
119
- value: o,
120
- onChange: F,
121
- "aria-label": a("bmiCalculator.feet")
122
- }
123
- ),
124
- /* @__PURE__ */ l("span", { className: "type-label ds:text-muted-foreground", children: a("bmiCalculator.units.ft") }),
125
- /* @__PURE__ */ l(
126
- h,
127
- {
128
- mode: "decimal",
129
- min: 0,
130
- max: 11.9,
131
- step: 0.5,
132
- value: n,
133
- onChange: $,
134
- "aria-label": a("bmiCalculator.inches")
135
- }
136
- ),
137
- /* @__PURE__ */ l("span", { className: "type-label ds:text-muted-foreground", children: a("bmiCalculator.units.in") })
138
- ] })
139
- ] }),
140
- /* @__PURE__ */ l(
141
- T,
142
- {
143
- label: `${a("bmiCalculator.weight")} (${a(
144
- c ? "bmiCalculator.units.kg" : "bmiCalculator.units.lb"
145
- )})`,
146
- children: /* @__PURE__ */ l(
147
- h,
148
- {
149
- mode: "decimal",
150
- min: 0,
151
- step: c ? 0.1 : 0.5,
152
- value: c ? g : m,
153
- onChange: c ? w : B
154
- }
155
- )
156
- }
157
- )
158
- ] }),
159
- /* @__PURE__ */ l("p", { className: "ds:sr-only", role: "status", "aria-live": "polite", children: t !== null && e !== null ? a("bmiCalculator.gaugeAria", {
160
- bmi: b.format(t),
161
- category: a(`bmiCalculator.category.${e}`)
162
- }) : "" }),
163
- t !== null && e !== null ? /* @__PURE__ */ i("div", { className: "ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-md)]", children: [
164
- /* @__PURE__ */ i("div", { className: "ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-xs)] ds:text-center", children: [
165
- /* @__PURE__ */ l("span", { className: "type-label ds:text-muted-foreground", children: a("bmiCalculator.category.label") }),
166
- /* @__PURE__ */ l(J, { variant: ia[e], size: "lg", children: a(`bmiCalculator.category.${e}`) }),
167
- /* @__PURE__ */ l("p", { className: "type-body ds:text-muted-foreground", children: a(`bmiCalculator.range.${e}`) })
168
- ] }),
169
- /* @__PURE__ */ l("div", { className: "ds:w-[240px] ds:max-w-full", children: /* @__PURE__ */ l(
170
- q,
171
- {
172
- type: "radialBar",
173
- title: a("bmiCalculator.gaugeAria", {
174
- bmi: b.format(t),
175
- category: a(`bmiCalculator.category.${e}`)
176
- }),
177
- series: [X(t)],
178
- labels: [a(`bmiCalculator.category.${e}`)],
179
- radialValueFormatter: () => b.format(t),
180
- height: 240
181
- }
182
- ) }),
183
- y ? /* @__PURE__ */ l(
184
- Q,
185
- {
186
- onInsert: y,
187
- card: {
188
- title: a("insert.title.bmi"),
189
- highlight: a(`bmiCalculator.category.${e}`),
190
- fields: [
191
- {
192
- label: a("insert.title.bmi"),
193
- value: b.format(t)
194
- },
195
- {
196
- label: a("bmiCalculator.category.label"),
197
- value: a(`bmiCalculator.category.${e}`)
198
- }
199
- ]
200
- }
201
- }
202
- ) : null
203
- ] }) : /* @__PURE__ */ l("p", { className: "type-body ds:text-muted-foreground", children: a("bmiCalculator.empty") })
204
- ]
205
- }
206
- );
207
- }
208
- );
209
- ra.displayName = "BmiCalculator";
210
- export {
211
- ra as B
212
- };
213
- //# sourceMappingURL=bmi-calculator-DnEr513I.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bmi-calculator-DnEr513I.js","sources":["../../src/components/bmi-calculator/bmi-calculator.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* BmiCalculator — height + weight → WHO body-mass-index, shown on a */\n/* radialBar gauge. */\n/* */\n/* - Maths + unit conversion live in `./bmi` (pure, separately tested). */\n/* - Metric ⇄ imperial toggle persists the entered figures across the */\n/* switch by converting them (a patient measured in lb/ft doesn't */\n/* lose their numbers when a clinician flips to kg/cm). */\n/* - The gauge reuses the kit `Chart` (radialBar). Because ApexCharts */\n/* reads a radialBar series value as a 0–100 percent, the arc is fed */\n/* the BMI mapped onto the clinical 12–40 span and the true BMI is */\n/* printed in the centre via `radialValueFormatter`. */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useId, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { RadioGroup, Radio } from '../radio-group';\nimport { FormField } from '../form-field';\nimport { NumberInput } from '../number-input';\nimport { Chart } from '../chart';\nimport { Badge } from '../badge';\nimport { InsertButton, type InsertPayload } from '../_shared/insert-result';\nimport {\n type UnitSystem,\n type BmiCategory,\n computeBmi,\n bmiCategory,\n bmiToGaugePercent,\n cmToFtIn,\n ftInToCm,\n kgToLb,\n lbToKg,\n} from './bmi';\n\n/* ------------------------------------------------------------------ */\n/* Result payload emitted to consumers */\n/* ------------------------------------------------------------------ */\n\nexport interface BmiResult {\n /** BMI in kg/m². */\n bmi: number;\n /** WHO category the BMI falls into. */\n category: BmiCategory;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst rootVariants = cva('ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]', {\n variants: {\n width: {\n full: 'ds:w-full',\n auto: 'ds:inline-flex',\n },\n },\n defaultVariants: { width: 'full' },\n});\n\n/* ------------------------------------------------------------------ */\n/* Category → semantic intent for the Stat headline */\n/* ------------------------------------------------------------------ */\n\nconst CATEGORY_BADGE: Record<\n BmiCategory,\n 'info' | 'success' | 'warning' | 'error'\n> = {\n underweight: 'info',\n normal: 'success',\n overweight: 'warning',\n obese: 'error',\n};\n\nexport interface BmiCalculatorProps extends VariantProps<typeof rootVariants> {\n /** Initial unit system. Defaults to `'metric'`. */\n defaultUnitSystem?: UnitSystem;\n /** Fires whenever a valid BMI can be computed (and with `null` when it can't). */\n onResultChange?: (result: BmiResult | null) => void;\n /** When provided, shows an \"Insert\" button that emits the result for an editor. */\n onInsert?: (payload: InsertPayload) => void;\n /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\n/** Round to one decimal place — used when seeding a unit-switch. */\nconst round1 = (n: number): number => Math.round(n * 10) / 10;\n\nexport const BmiCalculator = forwardRef<HTMLDivElement, BmiCalculatorProps>(\n (\n {\n defaultUnitSystem = 'metric',\n onResultChange,\n onInsert,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const heightGroupId = useId();\n\n const [unitSystem, setUnitSystem] = useState<UnitSystem>(defaultUnitSystem);\n\n // Raw per-system inputs. Metric is canonical for cm/kg; imperial keeps\n // ft + in + lb so typing isn't fought by rounding round-trips.\n const [heightCm, setHeightCm] = useState<number | null>(null);\n const [weightKg, setWeightKg] = useState<number | null>(null);\n const [heightFt, setHeightFt] = useState<number | null>(null);\n const [heightIn, setHeightIn] = useState<number | null>(null);\n const [weightLb, setWeightLb] = useState<number | null>(null);\n\n const handleUnitChange = (next: string): void => {\n const target = next as UnitSystem;\n if (target === unitSystem) return;\n if (target === 'imperial') {\n if (heightCm !== null) {\n const { ft, in: inches } = cmToFtIn(heightCm);\n setHeightFt(ft);\n setHeightIn(round1(inches));\n }\n if (weightKg !== null) setWeightLb(round1(kgToLb(weightKg)));\n } else {\n if (heightFt !== null || heightIn !== null) {\n setHeightCm(round1(ftInToCm(heightFt ?? 0, heightIn ?? 0)));\n }\n if (weightLb !== null) setWeightKg(round1(lbToKg(weightLb)));\n }\n setUnitSystem(target);\n };\n\n /* Canonical metric figures for the active system. */\n const canonicalHeightCm =\n unitSystem === 'metric'\n ? heightCm\n : heightFt !== null || heightIn !== null\n ? ftInToCm(heightFt ?? 0, heightIn ?? 0)\n : null;\n const canonicalWeightKg =\n unitSystem === 'metric'\n ? weightKg\n : weightLb !== null\n ? lbToKg(weightLb)\n : null;\n\n const bmi = computeBmi(canonicalWeightKg, canonicalHeightCm);\n const category = bmi !== null ? bmiCategory(bmi) : null;\n\n const bmiFormatter = useMemo(\n () =>\n new Intl.NumberFormat(i18n.language, {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n }),\n [i18n.language],\n );\n\n // Notify consumers without re-firing on unrelated re-renders.\n useEffect(() => {\n onResultChange?.(\n bmi !== null && category !== null ? { bmi, category } : null,\n );\n }, [bmi, category, onResultChange]);\n\n const isMetric = unitSystem === 'metric';\n\n return (\n <div\n ref={ref}\n data-component=\"bmi-calculator\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <RadioGroup\n label={t('bmiCalculator.unitSystem.label')}\n variant=\"horizontal\"\n value={unitSystem}\n onValueChange={handleUnitChange}\n >\n <Radio label={t('bmiCalculator.unitSystem.metric')} value=\"metric\" />\n <Radio\n label={t('bmiCalculator.unitSystem.imperial')}\n value=\"imperial\"\n />\n </RadioGroup>\n\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n {isMetric ? (\n <FormField\n label={`${t('bmiCalculator.height')} (${t('bmiCalculator.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 ) : (\n <div role=\"group\" aria-labelledby={heightGroupId}>\n <span\n id={heightGroupId}\n className=\"type-label ds:mb-[var(--spacing-xs)] ds:block ds:text-foreground\"\n >\n {t('bmiCalculator.height')}\n </span>\n <div className=\"ds:flex ds:items-center ds:gap-[var(--spacing-sm)]\">\n <NumberInput\n mode=\"integer\"\n min={0}\n value={heightFt}\n onChange={setHeightFt}\n aria-label={t('bmiCalculator.feet')}\n />\n <span className=\"type-label ds:text-muted-foreground\">\n {t('bmiCalculator.units.ft')}\n </span>\n <NumberInput\n mode=\"decimal\"\n min={0}\n max={11.9}\n step={0.5}\n value={heightIn}\n onChange={setHeightIn}\n aria-label={t('bmiCalculator.inches')}\n />\n <span className=\"type-label ds:text-muted-foreground\">\n {t('bmiCalculator.units.in')}\n </span>\n </div>\n </div>\n )}\n\n <FormField\n label={`${t('bmiCalculator.weight')} (${t(\n isMetric ? 'bmiCalculator.units.kg' : 'bmiCalculator.units.lb',\n )})`}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n step={isMetric ? 0.1 : 0.5}\n value={isMetric ? weightKg : weightLb}\n onChange={isMetric ? setWeightKg : setWeightLb}\n />\n </FormField>\n </div>\n\n {/* Concise polite announcement when the result resolves — the gauge\n itself stays out of the live region to avoid re-reading on every\n keystroke. */}\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {bmi !== null && category !== null\n ? t('bmiCalculator.gaugeAria', {\n bmi: bmiFormatter.format(bmi),\n category: t(`bmiCalculator.category.${category}`),\n })\n : ''}\n </p>\n\n {bmi !== null && category !== null ? (\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-md)]\">\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-xs)] ds:text-center\">\n <span className=\"type-label ds:text-muted-foreground\">\n {t('bmiCalculator.category.label')}\n </span>\n <Badge variant={CATEGORY_BADGE[category]} size=\"lg\">\n {t(`bmiCalculator.category.${category}`)}\n </Badge>\n <p className=\"type-body ds:text-muted-foreground\">\n {t(`bmiCalculator.range.${category}`)}\n </p>\n </div>\n <div className=\"ds:w-[240px] ds:max-w-full\">\n <Chart\n type=\"radialBar\"\n title={t('bmiCalculator.gaugeAria', {\n bmi: bmiFormatter.format(bmi),\n category: t(`bmiCalculator.category.${category}`),\n })}\n series={[bmiToGaugePercent(bmi)]}\n labels={[t(`bmiCalculator.category.${category}`)]}\n radialValueFormatter={() => bmiFormatter.format(bmi)}\n height={240}\n />\n </div>\n {onInsert ? (\n <InsertButton\n onInsert={onInsert}\n card={{\n title: t('insert.title.bmi'),\n highlight: t(`bmiCalculator.category.${category}`),\n fields: [\n {\n label: t('insert.title.bmi'),\n value: bmiFormatter.format(bmi),\n },\n {\n label: t('bmiCalculator.category.label'),\n value: t(`bmiCalculator.category.${category}`),\n },\n ],\n }}\n />\n ) : null}\n </div>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('bmiCalculator.empty')}\n </p>\n )}\n </div>\n );\n },\n);\n\nBmiCalculator.displayName = 'BmiCalculator';\n"],"names":["rootVariants","cva","CATEGORY_BADGE","round1","n","BmiCalculator","forwardRef","defaultUnitSystem","onResultChange","onInsert","id","width","className","ref","t","i18n","useTranslation","heightGroupId","useId","unitSystem","setUnitSystem","useState","heightCm","setHeightCm","weightKg","setWeightKg","heightFt","setHeightFt","heightIn","setHeightIn","weightLb","setWeightLb","handleUnitChange","next","target","ft","inches","cmToFtIn","kgToLb","ftInToCm","lbToKg","canonicalHeightCm","canonicalWeightKg","bmi","computeBmi","category","bmiCategory","bmiFormatter","useMemo","useEffect","isMetric","jsxs","RadioGroup","jsx","Radio","FormField","NumberInput","Badge","Chart","bmiToGaugePercent","InsertButton"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"chart-Cbt0_sKv.js","sources":["../../src/components/chart/chart.agent.ts","../../src/components/chart/chart.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { ChartHandle } from './chart';\n\nexport const chartAgent: AgentAdapter<ChartHandle> = {\n id: 'chart',\n capabilities: [],\n state: {},\n actions: {\n update_series: {\n safety: 'read',\n argsType: 'series',\n description: 'Replace the chart series without remounting.',\n invoke: (\n handle,\n args: { series: Parameters<ChartHandle['updateSeries']>[0] },\n ) => {\n handle.updateSeries(args.series);\n },\n },\n export_png: {\n safety: 'read',\n description:\n 'Return a PNG data URI of the chart for export or screenshotting.',\n invoke: (handle) => handle.dataURI(),\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'chart' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","/* ------------------------------------------------------------------ */\n/* Chart — thin, typed wrapper over ApexCharts (react-apexcharts). */\n/* */\n/* - All chrome, colours, and fonts flow from */\n/* `src/tokens/apexcharts-theme.ts` — never hex literals in user */\n/* code. A MutationObserver on `<html class>` re-reads the bridge so */\n/* theme changes repaint without remount. */\n/* - A ResizeObserver on the wrapper keeps the chart responsive */\n/* without listening on `window.resize`. */\n/* - Accessibility: the wrapper carries `role=\"img\"` + `aria-label` */\n/* (required `title` prop) + `aria-describedby` pointing at a */\n/* visually-hidden `<table>` that mirrors series × categories. */\n/* - Colour-blind users: `patterns` prop flips `fill.type` to pattern */\n/* using ApexCharts' built-in pattern presets. */\n/* - Numbers format via `Intl.NumberFormat(locale)` — no hand-rolled */\n/* `toFixed()`. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport ReactApexChart from 'react-apexcharts';\nimport ApexCharts from 'apexcharts';\nimport { getApexChartsTheme } from '../../tokens/apexcharts-theme';\nimport { usePrefersReducedMotion } from '../../hooks';\nimport { useNeutraliseHiddenFocus } from '../_shared/use-neutralize-hidden-focus';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { chartAgent } from './chart.agent';\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst chartVariants = cva('ds:relative ds:block ds:w-full', {\n variants: {\n density: {\n compact: 'ds:min-h-[var(--chart-min-height-compact)]',\n comfortable: 'ds:min-h-[var(--chart-min-height-comfortable)]',\n // Applied when an explicit `height` prop is given and no density was\n // requested: the wrapper must not exceed the caller's height (a 96px\n // KPI chart inside a card must not reserve 320px).\n none: '',\n },\n },\n defaultVariants: { density: 'comfortable' },\n});\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport type ChartType = 'line' | 'bar' | 'pie' | 'donut' | 'area' | 'radialBar';\n\nexport interface ChartSeries {\n name: string;\n data: number[];\n}\n\nexport interface ChartProps extends VariantProps<typeof chartVariants> {\n /** Required — drives aria-label and sr-only table caption. */\n title: string;\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n /** Chart visual type. */\n type: ChartType;\n /**\n * For `line` / `bar` / `area`: an array of `ChartSeries`.\n * For `pie` / `donut` / `radialBar`: an array of numbers matched to `labels`.\n */\n series: ChartSeries[] | number[];\n /** Category axis labels (line / bar / area). */\n categories?: string[];\n /** Slice labels (pie / donut / radialBar). */\n labels?: string[];\n /** Height override. Defaults to 320px. */\n height?: number | string;\n /** Width override. Defaults to 100% of container. */\n width?: number | string;\n /** Opt-in pattern fills for colour-blind users. */\n patterns?: boolean;\n /** Show the ApexCharts toolbar. Defaults to false. */\n toolbar?: boolean;\n /** Locale override — defaults to the active i18next language. */\n locale?: string;\n /**\n * radialBar only. Formats the value printed in the ring centre. Use when the\n * gauge represents a non-percentage figure: pass the arc fill (0–100) as the\n * single `series` value and return the real figure here (e.g. `(_, ) => '22.4'`).\n * Ignored for every other chart type. Defaults to ApexCharts' `${value}%`.\n */\n radialValueFormatter?: (value: number) => string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport interface ChartHandle {\n /** Returns a PNG data URI for the chart. */\n dataURI: () => Promise<string>;\n /** Updates series without remounting. */\n updateSeries: (next: ChartProps['series']) => void;\n}\n\n/* ------------------------------------------------------------------ */\n/* Constants */\n/* ------------------------------------------------------------------ */\n\nconst PATTERN_STYLES = [\n 'verticalLines',\n 'horizontalLines',\n 'slantedLines',\n 'squares',\n 'circles',\n] as const;\n\n/** Types where `categories` belong on an x-axis. */\nconst CATEGORICAL_TYPES: ReadonlyArray<ChartType> = ['line', 'bar', 'area'];\n\n/** Types where `series` is a flat `number[]` paired with `labels`. */\nconst SLICE_TYPES: ReadonlyArray<ChartType> = ['pie', 'donut', 'radialBar'];\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nfunction isSliceType(type: ChartType): boolean {\n return SLICE_TYPES.includes(type);\n}\n\nfunction isCategoricalType(type: ChartType): boolean {\n return CATEGORICAL_TYPES.includes(type);\n}\n\n/** Coerce `series` into `ChartSeries[]` for shared logic (table, aria). */\nfunction normaliseSeries(\n series: ChartSeries[] | number[],\n type: ChartType,\n): ChartSeries[] {\n if (isSliceType(type)) {\n const nums = series as number[];\n return [\n {\n name: '',\n data: nums,\n },\n ];\n }\n return series as ChartSeries[];\n}\n\n/* ------------------------------------------------------------------ */\n/* Chart component */\n/* ------------------------------------------------------------------ */\n\nexport const Chart = forwardRef<ChartHandle, ChartProps>(\n (\n {\n title,\n id,\n type,\n series,\n categories,\n labels,\n height,\n width,\n patterns = false,\n toolbar = false,\n locale: localeProp,\n radialValueFormatter,\n density,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const rawId = useId();\n const chartId = useMemo(\n () => `chart-${rawId.replace(/[^a-zA-Z0-9-_]/g, '')}`,\n [rawId],\n );\n const summaryId = `${chartId}-summary`;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState(0);\n\n /* ApexCharts injects focusable canvases inside the `aria-hidden` */\n /* chart wrapper. Neutralise their tabindex so axe's */\n /* `aria-hidden-focus` rule passes. Same hook used in Sparkline. */\n useNeutraliseHiddenFocus(wrapperRef);\n\n const locale = localeProp ?? i18n.language ?? 'en';\n\n /* ---- dev warning if title missing ------------------------------ */\n if (import.meta.env.DEV && !title) {\n console.warn(\n 'Chart: `title` prop is required. It drives aria-label and the screen-reader summary table.',\n );\n }\n\n /* ---- theme-reactive state -------------------------------------- */\n const [themeOptions, setThemeOptions] = useState<ApexCharts.ApexOptions>(\n () => {\n try {\n return getApexChartsTheme();\n } catch {\n return {};\n }\n },\n );\n\n /* ---- MutationObserver: re-read theme on class change ------------ */\n useEffect(() => {\n if (typeof document === 'undefined') return undefined;\n let timer: ReturnType<typeof setTimeout>;\n const observer = new MutationObserver(() => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n try {\n setThemeOptions(getApexChartsTheme());\n } catch {\n /* no-op in non-browser environments */\n }\n }, 50);\n });\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n return () => {\n clearTimeout(timer);\n observer.disconnect();\n };\n }, []);\n\n /* ---- ResizeObserver: track container width --------------------- */\n useEffect(() => {\n const el = wrapperRef.current;\n if (!el || typeof ResizeObserver === 'undefined') return undefined;\n const ro = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) setContainerWidth(Math.floor(entry.contentRect.width));\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n /* ---- imperative handle ----------------------------------------- */\n const agentHandle = useMemo<ChartHandle>(\n () => ({\n async dataURI(): Promise<string> {\n const instance = ApexCharts.getChartByID(chartId);\n if (!instance) return '';\n const result = await instance.dataURI();\n return (result as { imgURI: string }).imgURI;\n },\n updateSeries(next) {\n const instance = ApexCharts.getChartByID(chartId);\n if (!instance) return;\n if (isSliceType(type)) {\n instance.updateSeries(next as number[]);\n } else {\n instance.updateSeries(next as ChartSeries[]);\n }\n },\n }),\n [chartId, type],\n );\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n useAgentRegistration(chartAgent, agentHandle, id);\n\n /* ---- RTL detection --------------------------------------------- */\n const isRtl =\n typeof document !== 'undefined' && document.documentElement.dir === 'rtl';\n\n /* ---- normalised series for sr-only table ----------------------- */\n const tableSeries = useMemo(\n () => normaliseSeries(series, type),\n [series, type],\n );\n\n /* ---- Intl formatter -------------------------------------------- */\n const numberFormatter = useMemo(\n () => new Intl.NumberFormat(locale),\n [locale],\n );\n\n /* ---- toolbar localisation -------------------------------------- */\n const toolbarLocale = useMemo(\n () => ({\n name: locale,\n options: {\n toolbar: {\n download: t('chart.toolbar.download'),\n selection: t('chart.toolbar.selection'),\n selectionZoom: t('chart.toolbar.selectionZoom'),\n zoomIn: t('chart.toolbar.zoomIn'),\n zoomOut: t('chart.toolbar.zoomOut'),\n pan: t('chart.toolbar.pan'),\n reset: t('chart.toolbar.reset'),\n exportToSVG: t('chart.toolbar.exportToSVG'),\n exportToPNG: t('chart.toolbar.exportToPNG'),\n exportToCSV: t('chart.toolbar.exportToCSV'),\n },\n },\n }),\n [locale, t],\n );\n\n /* ---- build ApexOptions ----------------------------------------- */\n const reducedMotion = usePrefersReducedMotion();\n\n const chartOptions: ApexCharts.ApexOptions = useMemo(() => {\n const base = themeOptions;\n\n const options: ApexCharts.ApexOptions = {\n ...base,\n chart: {\n ...base.chart,\n id: chartId,\n toolbar: { show: toolbar },\n zoom: { enabled: toolbar },\n animations: {\n enabled: !reducedMotion,\n dynamicAnimation: { enabled: !reducedMotion },\n },\n locales: [toolbarLocale],\n defaultLocale: locale,\n parentHeightOffset: 0,\n },\n labels: labels,\n legend: {\n ...base.legend,\n position: 'bottom',\n // ApexCharts legend.horizontalAlign is a physical prop mapped internally\n // to the chart's own text flow. For RTL we flip via `yaxis.opposite`\n // and ApexCharts' own `direction: 'rtl'` handling; legend stays anchored\n // to the inline-start by asking for 'left' on LTR and 'right' on RTL.\n horizontalAlign: isRtl ? 'right' : 'left',\n fontFamily: 'inherit',\n },\n tooltip: {\n ...base.tooltip,\n y: {\n formatter: (value: number) => numberFormatter.format(value),\n },\n },\n noData: {\n text: t('chart.noData'),\n },\n };\n\n if (isCategoricalType(type)) {\n options.xaxis = {\n ...base.xaxis,\n categories: categories ?? [],\n };\n options.yaxis = {\n ...base.yaxis,\n opposite: isRtl,\n labels: {\n formatter: (value: number) => numberFormatter.format(value),\n },\n };\n options.stroke = {\n curve: 'smooth',\n width: type === 'bar' ? 0 : 2,\n };\n options.dataLabels = { enabled: false };\n }\n\n if (type === 'radialBar' && radialValueFormatter) {\n // ApexCharts treats a radialBar series value as a 0–100 percent and\n // renders it verbatim in the ring centre. When the displayed value is\n // NOT a percentage (e.g. a BMI), the consumer scales the series to a\n // percent for the arc and supplies `radialValueFormatter` to print the\n // real value in the centre. Without this, the gauge would read \"56%\"\n // for a BMI of 22.4 — misleading. Default behaviour is untouched.\n const basePlot = (base.plotOptions ?? {}) as NonNullable<\n ApexCharts.ApexOptions['plotOptions']\n >;\n options.plotOptions = {\n ...basePlot,\n radialBar: {\n ...(basePlot.radialBar ?? {}),\n dataLabels: {\n ...(basePlot.radialBar?.dataLabels ?? {}),\n value: {\n ...(basePlot.radialBar?.dataLabels?.value ?? {}),\n formatter: (val: number) => radialValueFormatter(Number(val)),\n },\n },\n },\n };\n }\n\n if (patterns) {\n options.fill = {\n type: 'pattern',\n opacity: type === 'area' ? 0.3 : 1,\n pattern: {\n style: [...PATTERN_STYLES],\n strokeWidth: 2,\n },\n };\n } else if (type === 'area') {\n options.fill = {\n type: 'gradient',\n opacity: 0.3,\n };\n }\n\n return options;\n }, [\n themeOptions,\n chartId,\n toolbar,\n reducedMotion,\n toolbarLocale,\n locale,\n labels,\n numberFormatter,\n t,\n type,\n categories,\n isRtl,\n patterns,\n radialValueFormatter,\n ]);\n\n /* ---- resolved dimensions --------------------------------------- */\n const resolvedWidth =\n width ?? (containerWidth > 0 ? containerWidth : '100%');\n const resolvedHeight = height ?? 320;\n\n /* ---- sr-only data table --------------------------------------- */\n const srTable = useMemo(() => {\n const columnLabels = isSliceType(type)\n ? (labels ?? [])\n : (categories ?? []);\n const rows = tableSeries;\n return (\n <table id={summaryId} className=\"ds:sr-only\">\n <caption>{title}</caption>\n <thead>\n <tr>\n <th scope=\"col\">{t('chart.table.series')}</th>\n {columnLabels.map((col, i) => (\n <th key={`${col}-${i}`} scope=\"col\">\n {col}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, rowIndex) => (\n <tr key={`${row.name}-${rowIndex}`}>\n <th scope=\"row\">{row.name || t('chart.table.value')}</th>\n {row.data.map((value, colIndex) => (\n <td key={`${rowIndex}-${colIndex}`}>\n {/* For a radialBar gauge the series is a synthetic arc\n percent — announce the consumer's display value (e.g.\n the real BMI) instead of the raw fill so AT users get\n the same figure sighted users see in the ring. */}\n {type === 'radialBar' && radialValueFormatter\n ? radialValueFormatter(value)\n : numberFormatter.format(value)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n );\n }, [\n type,\n tableSeries,\n labels,\n categories,\n summaryId,\n title,\n t,\n numberFormatter,\n radialValueFormatter,\n ]);\n\n /* ---- ApexCharts `series` prop shape ----------------------------- */\n const apexSeries = useMemo(() => {\n if (isSliceType(type)) {\n return series as number[];\n }\n return series as ChartSeries[];\n }, [series, type]);\n\n return (\n <div\n ref={wrapperRef}\n role=\"img\"\n aria-label={title}\n aria-describedby={summaryId}\n className={chartVariants({\n // Explicit height wins over the density min-height unless the\n // caller also asked for a density explicitly.\n density: density ?? (height !== undefined ? 'none' : undefined),\n className,\n })}\n data-component=\"chart\"\n data-component-id={id}\n >\n {srTable}\n <ReactApexChart\n type={type}\n series={apexSeries as ApexCharts.ApexOptions['series']}\n options={chartOptions}\n width={resolvedWidth}\n height={resolvedHeight}\n aria-hidden=\"true\"\n />\n </div>\n );\n },\n);\n\nChart.displayName = 'Chart';\n\n/* ------------------------------------------------------------------ */\n/* Re-export internal helper for downstream theming (kept narrow). */\n/* ------------------------------------------------------------------ */\n\nexport { chartVariants };\n"],"names":["chartAgent","handle","args","chartVariants","cva","PATTERN_STYLES","CATEGORICAL_TYPES","SLICE_TYPES","isSliceType","type","isCategoricalType","normaliseSeries","series","Chart","forwardRef","title","id","categories","labels","height","width","patterns","toolbar","localeProp","radialValueFormatter","density","className","ref","t","i18n","useTranslation","rawId","useId","chartId","useMemo","summaryId","wrapperRef","useRef","containerWidth","setContainerWidth","useState","useNeutraliseHiddenFocus","locale","themeOptions","setThemeOptions","getApexChartsTheme","useEffect","timer","observer","el","ro","entries","entry","agentHandle","instance","ApexCharts","next","useImperativeHandle","useAgentRegistration","isRtl","tableSeries","numberFormatter","toolbarLocale","reducedMotion","usePrefersReducedMotion","chartOptions","base","options","value","basePlot","_a","_c","_b","val","resolvedWidth","resolvedHeight","srTable","columnLabels","rows","jsx","jsxs","col","i","row","rowIndex","colIndex","apexSeries","ReactApexChart"],"mappings":"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"}
@@ -1,185 +0,0 @@
1
- import { jsxs as r, jsx as e } from "react/jsx-runtime";
2
- import { forwardRef as D, useState as h, useMemo as y, useEffect as E } from "react";
3
- import { c as _ } from "./index-D2ZczOXr.js";
4
- import { useTranslation as F } from "react-i18next";
5
- import { F as C } from "./form-field-BOm9hK35.js";
6
- import { D as A } from "./date-picker-CvQfs6Xh.js";
7
- import { N as S } from "./number-input-Dj5L3pXK.js";
8
- import { B as x } from "./badge-zsf5i5bH.js";
9
- import { I as T } from "./insert-result-yJ0QavoN.js";
10
- import { a as n } from "./react-day-picker-CdtIiKjx.js";
11
- import { C as W } from "./check-DPdL_Sm7.js";
12
- import { H as $ } from "./heart-C0faivFf.js";
13
- import { c as H } from "./createLucideIcon-CrFbzy84.js";
14
- /**
15
- * @license lucide-react v1.8.0 - ISC
16
- *
17
- * This source code is licensed under the ISC license.
18
- * See the LICENSE file in the root directory of this source tree.
19
- */
20
- const I = [
21
- [
22
- "path",
23
- {
24
- d: "M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z",
25
- key: "c7niix"
26
- }
27
- ]
28
- ], z = H("droplet", I), v = 28, k = 14, B = 1;
29
- function Y(m, c = 3) {
30
- const d = m.cycleLength ?? v, { lastPeriodStart: o } = m, i = n(o, d - k), u = {
31
- start: n(i, -5),
32
- end: n(i, B)
33
- }, f = n(o, d), t = Array.from(
34
- { length: c },
35
- (p, s) => n(o, d * (s + 1))
36
- );
37
- return { nextPeriod: f, ovulation: i, fertileWindow: u, upcomingPeriods: t };
38
- }
39
- const j = _("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
40
- variants: {
41
- width: { full: "ds:w-full", auto: "ds:inline-flex" }
42
- },
43
- defaultVariants: { width: "full" }
44
- }), M = D(
45
- ({
46
- defaultCycleLength: m = v,
47
- onResultChange: c,
48
- onInsert: d,
49
- id: o,
50
- width: i,
51
- className: u
52
- }, f) => {
53
- const { t, i18n: p } = F(), [s, N] = h(void 0), [g, L] = h(
54
- m
55
- ), a = y(() => s ? Y({
56
- lastPeriodStart: s,
57
- cycleLength: g ?? v
58
- }) : null, [s, g]), P = y(
59
- () => new Intl.DateTimeFormat(p.language, { dateStyle: "medium" }),
60
- [p.language]
61
- );
62
- E(() => {
63
- c == null || c(a);
64
- }, [a, c]);
65
- const w = y(() => /* @__PURE__ */ new Date(), []), l = (b) => P.format(b);
66
- return /* @__PURE__ */ r(
67
- "div",
68
- {
69
- ref: f,
70
- "data-component": "cycle-calculator",
71
- "data-component-id": o,
72
- className: j({ width: i, className: u }),
73
- children: [
74
- /* @__PURE__ */ r("div", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
75
- /* @__PURE__ */ e(C, { label: t("cycleCalculator.lastPeriod"), children: /* @__PURE__ */ e(
76
- A,
77
- {
78
- value: s,
79
- onChange: N,
80
- maxDate: w
81
- }
82
- ) }),
83
- /* @__PURE__ */ e(
84
- C,
85
- {
86
- label: t("cycleCalculator.cycleLength"),
87
- description: t("cycleCalculator.cycleLengthHint"),
88
- children: /* @__PURE__ */ e(
89
- S,
90
- {
91
- mode: "integer",
92
- min: 20,
93
- max: 45,
94
- value: g,
95
- onChange: L
96
- }
97
- )
98
- }
99
- )
100
- ] }),
101
- /* @__PURE__ */ e("p", { className: "ds:sr-only", role: "status", "aria-live": "polite", children: a ? `${t("cycleCalculator.ovulation")}: ${l(a.ovulation)}. ${t(
102
- "cycleCalculator.nextPeriod"
103
- )}: ${l(a.nextPeriod)}.` : "" }),
104
- a ? /* @__PURE__ */ r("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
105
- /* @__PURE__ */ r("dl", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3", children: [
106
- /* @__PURE__ */ r("div", { className: "ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-xs)] ds:text-center", children: [
107
- /* @__PURE__ */ e("dt", { className: "type-label ds:text-muted-foreground", children: t("cycleCalculator.ovulation") }),
108
- /* @__PURE__ */ e("dd", { children: /* @__PURE__ */ e(
109
- x,
110
- {
111
- variant: "success",
112
- size: "lg",
113
- leading: /* @__PURE__ */ e(W, { "aria-hidden": !0 }),
114
- children: l(a.ovulation)
115
- }
116
- ) })
117
- ] }),
118
- /* @__PURE__ */ r("div", { className: "ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-xs)] ds:text-center", children: [
119
- /* @__PURE__ */ e("dt", { className: "type-label ds:text-muted-foreground", children: t("cycleCalculator.fertileWindow") }),
120
- /* @__PURE__ */ e("dd", { children: /* @__PURE__ */ r(
121
- x,
122
- {
123
- variant: "accent",
124
- size: "lg",
125
- leading: /* @__PURE__ */ e($, { "aria-hidden": !0 }),
126
- children: [
127
- l(a.fertileWindow.start),
128
- " –",
129
- " ",
130
- l(a.fertileWindow.end)
131
- ]
132
- }
133
- ) })
134
- ] }),
135
- /* @__PURE__ */ r("div", { className: "ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-xs)] ds:text-center", children: [
136
- /* @__PURE__ */ e("dt", { className: "type-label ds:text-muted-foreground", children: t("cycleCalculator.nextPeriod") }),
137
- /* @__PURE__ */ e("dd", { children: /* @__PURE__ */ e(
138
- x,
139
- {
140
- variant: "error",
141
- size: "lg",
142
- leading: /* @__PURE__ */ e(z, { "aria-hidden": !0 }),
143
- children: l(a.nextPeriod)
144
- }
145
- ) })
146
- ] })
147
- ] }),
148
- d ? /* @__PURE__ */ e(
149
- T,
150
- {
151
- onInsert: d,
152
- card: {
153
- title: t("insert.title.cycle"),
154
- fields: [
155
- {
156
- label: t("cycleCalculator.ovulation"),
157
- value: l(a.ovulation)
158
- },
159
- {
160
- label: t("cycleCalculator.fertileWindow"),
161
- value: `${l(a.fertileWindow.start)} – ${l(
162
- a.fertileWindow.end
163
- )}`
164
- },
165
- {
166
- label: t("cycleCalculator.nextPeriod"),
167
- value: l(a.nextPeriod)
168
- }
169
- ]
170
- }
171
- }
172
- ) : null
173
- ] }) : /* @__PURE__ */ e("p", { className: "type-body ds:text-muted-foreground", children: t("cycleCalculator.empty") })
174
- ]
175
- }
176
- );
177
- }
178
- );
179
- M.displayName = "CycleCalculator";
180
- export {
181
- M as C,
182
- k as L,
183
- Y as p
184
- };
185
- //# sourceMappingURL=cycle-calculator-B5Uj9QeT.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cycle-calculator-B5Uj9QeT.js","sources":["../../node_modules/lucide-react/dist/esm/icons/droplet.js","../../src/components/cycle-calculator/cycle.ts","../../src/components/cycle-calculator/cycle-calculator.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z\",\n key: \"c7niix\"\n }\n ]\n];\nconst Droplet = createLucideIcon(\"droplet\", __iconNode);\n\nexport { __iconNode, Droplet as default };\n//# sourceMappingURL=droplet.js.map\n","/* ------------------------------------------------------------------ */\n/* Menstrual-cycle prediction — pure, framework-free, unit-testable. */\n/* */\n/* Uses the standard fixed-luteal-phase model: ovulation falls ~14 days */\n/* before the next period, so on a cycle of length L ovulation is day */\n/* (L − 14). The fertile window spans the 5 days before ovulation */\n/* (sperm survival) through 1 day after (oocyte viability). */\n/* ------------------------------------------------------------------ */\n\nimport { addDays } from 'date-fns';\n\n/** Standard menstrual-cycle length. */\nexport const DEFAULT_CYCLE_LENGTH = 28;\n/** Luteal phase is biologically near-constant at ~14 days. */\nexport const LUTEAL_PHASE_DAYS = 14;\n/** Sperm survive up to ~5 days before ovulation. */\nexport const FERTILE_DAYS_BEFORE = 5;\n/** The oocyte is viable ~1 day after ovulation. */\nexport const FERTILE_DAYS_AFTER = 1;\n\nexport interface CycleInput {\n /** First day of the most recent period. */\n lastPeriodStart: Date;\n /** Average cycle length in days. Defaults to 28. */\n cycleLength?: number;\n /** Period (bleed) length in days. Optional — used for the period range. */\n periodLength?: number;\n}\n\nexport interface DateRange {\n start: Date;\n end: Date;\n}\n\nexport interface CyclePrediction {\n /** Start date of the next period. */\n nextPeriod: Date;\n /** Estimated ovulation date. */\n ovulation: Date;\n /** Fertile window (5 days before ovulation → 1 day after). */\n fertileWindow: DateRange;\n /** Start dates of the next few periods (length = `occurrences`). */\n upcomingPeriods: Date[];\n}\n\n/**\n * Predict ovulation, the fertile window and upcoming periods from the last\n * period's start date. `occurrences` controls how many future periods to\n * list (default 3).\n */\nexport function predictCycle(\n input: CycleInput,\n occurrences = 3,\n): CyclePrediction {\n const cycle = input.cycleLength ?? DEFAULT_CYCLE_LENGTH;\n const { lastPeriodStart } = input;\n\n const ovulation = addDays(lastPeriodStart, cycle - LUTEAL_PHASE_DAYS);\n const fertileWindow: DateRange = {\n start: addDays(ovulation, -FERTILE_DAYS_BEFORE),\n end: addDays(ovulation, FERTILE_DAYS_AFTER),\n };\n const nextPeriod = addDays(lastPeriodStart, cycle);\n const upcomingPeriods = Array.from({ length: occurrences }, (_, i) =>\n addDays(lastPeriodStart, cycle * (i + 1)),\n );\n\n return { nextPeriod, ovulation, fertileWindow, upcomingPeriods };\n}\n","/* ------------------------------------------------------------------ */\n/* CycleCalculator — predict ovulation, fertile window and upcoming */\n/* periods from the last period's start date. */\n/* */\n/* Maths lives in `./cycle` (pure, separately tested). */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Heart, Check, Droplet } from 'lucide-react';\nimport { FormField } from '../form-field';\nimport { DatePicker } from '../date-picker';\nimport { NumberInput } from '../number-input';\nimport { Badge } from '../badge';\nimport { InsertButton, type InsertPayload } from '../_shared/insert-result';\nimport {\n type CyclePrediction,\n predictCycle,\n DEFAULT_CYCLE_LENGTH,\n} from './cycle';\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\nexport interface CycleCalculatorProps extends VariantProps<\n typeof rootVariants\n> {\n /** Initial cycle length in days. Defaults to 28. */\n defaultCycleLength?: number;\n /** Fires whenever a prediction can be computed (and `null` when it can't). */\n onResultChange?: (result: CyclePrediction | null) => void;\n /** When provided, shows an \"Insert\" button that emits the result for an editor. */\n onInsert?: (payload: InsertPayload) => void;\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 CycleCalculator = forwardRef<HTMLDivElement, CycleCalculatorProps>(\n (\n {\n defaultCycleLength = DEFAULT_CYCLE_LENGTH,\n onResultChange,\n onInsert,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [lastPeriod, setLastPeriod] = useState<Date | undefined>(undefined);\n const [cycleLength, setCycleLength] = useState<number | null>(\n defaultCycleLength,\n );\n\n const result = useMemo<CyclePrediction | null>(() => {\n if (!lastPeriod) return null;\n return predictCycle({\n lastPeriodStart: lastPeriod,\n cycleLength: cycleLength ?? DEFAULT_CYCLE_LENGTH,\n });\n }, [lastPeriod, cycleLength]);\n\n const dateFormatter = useMemo(\n () => new Intl.DateTimeFormat(i18n.language, { dateStyle: 'medium' }),\n [i18n.language],\n );\n\n useEffect(() => {\n onResultChange?.(result);\n }, [result, onResultChange]);\n\n const today = useMemo(() => new Date(), []);\n\n const fmt = (d: Date): string => dateFormatter.format(d);\n\n return (\n <div\n ref={ref}\n data-component=\"cycle-calculator\"\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 label={t('cycleCalculator.lastPeriod')}>\n <DatePicker\n value={lastPeriod}\n onChange={setLastPeriod}\n maxDate={today}\n />\n </FormField>\n <FormField\n label={t('cycleCalculator.cycleLength')}\n description={t('cycleCalculator.cycleLengthHint')}\n >\n <NumberInput\n mode=\"integer\"\n min={20}\n max={45}\n value={cycleLength}\n onChange={setCycleLength}\n />\n </FormField>\n </div>\n\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {result\n ? `${t('cycleCalculator.ovulation')}: ${fmt(result.ovulation)}. ${t(\n 'cycleCalculator.nextPeriod',\n )}: ${fmt(result.nextPeriod)}.`\n : ''}\n </p>\n\n {result ? (\n <div 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-3\">\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-xs)] ds:text-center\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('cycleCalculator.ovulation')}\n </dt>\n <dd>\n <Badge\n variant=\"success\"\n size=\"lg\"\n leading={<Check aria-hidden />}\n >\n {fmt(result.ovulation)}\n </Badge>\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-xs)] ds:text-center\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('cycleCalculator.fertileWindow')}\n </dt>\n <dd>\n <Badge\n variant=\"accent\"\n size=\"lg\"\n leading={<Heart aria-hidden />}\n >\n {fmt(result.fertileWindow.start)} –{' '}\n {fmt(result.fertileWindow.end)}\n </Badge>\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-xs)] ds:text-center\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('cycleCalculator.nextPeriod')}\n </dt>\n <dd>\n <Badge\n variant=\"error\"\n size=\"lg\"\n leading={<Droplet aria-hidden />}\n >\n {fmt(result.nextPeriod)}\n </Badge>\n </dd>\n </div>\n </dl>\n {onInsert ? (\n <InsertButton\n onInsert={onInsert}\n card={{\n title: t('insert.title.cycle'),\n fields: [\n {\n label: t('cycleCalculator.ovulation'),\n value: fmt(result.ovulation),\n },\n {\n label: t('cycleCalculator.fertileWindow'),\n value: `${fmt(result.fertileWindow.start)} – ${fmt(\n result.fertileWindow.end,\n )}`,\n },\n {\n label: t('cycleCalculator.nextPeriod'),\n value: fmt(result.nextPeriod),\n },\n ],\n }}\n />\n ) : null}\n </div>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('cycleCalculator.empty')}\n </p>\n )}\n </div>\n );\n },\n);\n\nCycleCalculator.displayName = 'CycleCalculator';\n"],"names":["__iconNode","Droplet","createLucideIcon","DEFAULT_CYCLE_LENGTH","LUTEAL_PHASE_DAYS","FERTILE_DAYS_AFTER","predictCycle","input","occurrences","cycle","lastPeriodStart","ovulation","addDays","fertileWindow","nextPeriod","upcomingPeriods","_","i","rootVariants","cva","CycleCalculator","forwardRef","defaultCycleLength","onResultChange","onInsert","id","width","className","ref","i18n","useTranslation","lastPeriod","setLastPeriod","useState","cycleLength","setCycleLength","result","useMemo","dateFormatter","useEffect","today","fmt","d","jsxs","jsx","FormField","DatePicker","NumberInput","Badge","Check","Heart","InsertButton"],"mappings":"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","x_google_ignoreList":[0]}