@alfadocs/ui-kit-debug 0.36.0 → 0.38.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 (365) hide show
  1. package/dist/_chunks/Alfadocs_Logo_Mark-7o3L3WBI.js +56 -0
  2. package/dist/_chunks/Alfadocs_Logo_Mark-7o3L3WBI.js.map +1 -0
  3. package/dist/_chunks/{alia-sidebar-BEoMl6UL.js → alia-sidebar-DXsYPinm.js} +2 -2
  4. package/dist/_chunks/{alia-sidebar-BEoMl6UL.js.map → alia-sidebar-DXsYPinm.js.map} +1 -1
  5. package/dist/_chunks/{ar-CEpIJtcO.js → ar-Cn_NxqkN.js} +2 -2
  6. package/dist/_chunks/{ar-CEpIJtcO.js.map → ar-Cn_NxqkN.js.map} +1 -1
  7. package/dist/_chunks/bmi-BxD-tFzU.js +32 -0
  8. package/dist/_chunks/bmi-BxD-tFzU.js.map +1 -0
  9. package/dist/_chunks/bmi-calculator-BRUru9QX.js +213 -0
  10. package/dist/_chunks/bmi-calculator-BRUru9QX.js.map +1 -0
  11. package/dist/_chunks/{booking-eM0y0NIR.js → booking-DK_BPHnQ.js} +4 -4
  12. package/dist/_chunks/{booking-eM0y0NIR.js.map → booking-DK_BPHnQ.js.map} +1 -1
  13. package/dist/_chunks/calculator-dialog-B74fqpFZ.js +40 -0
  14. package/dist/_chunks/calculator-dialog-B74fqpFZ.js.map +1 -0
  15. package/dist/_chunks/chart-DnHvmiDX.js +312 -0
  16. package/dist/_chunks/chart-DnHvmiDX.js.map +1 -0
  17. package/dist/_chunks/{chat-message-D53_fH2w.js → chat-message-ASgGtj-L.js} +30 -39
  18. package/dist/_chunks/chat-message-ASgGtj-L.js.map +1 -0
  19. package/dist/_chunks/{contact-profile-card-BA6fgS45.js → contact-profile-card-DHyuAPXM.js} +14 -13
  20. package/dist/_chunks/{contact-profile-card-BA6fgS45.js.map → contact-profile-card-DHyuAPXM.js.map} +1 -1
  21. package/dist/_chunks/cycle-calculator-B5Uj9QeT.js +185 -0
  22. package/dist/_chunks/cycle-calculator-B5Uj9QeT.js.map +1 -0
  23. package/dist/_chunks/{date-picker-B94HAV4A.js → date-picker-CvQfs6Xh.js} +2 -2
  24. package/dist/_chunks/{date-picker-B94HAV4A.js.map → date-picker-CvQfs6Xh.js.map} +1 -1
  25. package/dist/_chunks/{date-range-picker-D8CHNYQT.js → date-range-picker-U9fn1g9d.js} +3 -3
  26. package/dist/_chunks/{date-range-picker-D8CHNYQT.js.map → date-range-picker-U9fn1g9d.js.map} +1 -1
  27. package/dist/_chunks/{date-time-picker-D1GEzf8p.js → date-time-picker-Cva0ZCWw.js} +2 -2
  28. package/dist/_chunks/{date-time-picker-D1GEzf8p.js.map → date-time-picker-Cva0ZCWw.js.map} +1 -1
  29. package/dist/_chunks/{de-Dfbeau59.js → de-BMM2H7Bs.js} +2 -2
  30. package/dist/_chunks/{de-Dfbeau59.js.map → de-BMM2H7Bs.js.map} +1 -1
  31. package/dist/_chunks/dependent-selector-CRWgieHm.js +324 -0
  32. package/dist/_chunks/dependent-selector-CRWgieHm.js.map +1 -0
  33. package/dist/_chunks/document-scanner-CdHQ6lTN.js +702 -0
  34. package/dist/_chunks/document-scanner-CdHQ6lTN.js.map +1 -0
  35. package/dist/_chunks/due-date-calculator-CUspKSTw.js +171 -0
  36. package/dist/_chunks/due-date-calculator-CUspKSTw.js.map +1 -0
  37. package/dist/_chunks/{editable-currency-cell-renderer-CZcVWBPo.js → editable-currency-cell-renderer-DGKuRNVG.js} +2 -2
  38. package/dist/_chunks/{editable-currency-cell-renderer-CZcVWBPo.js.map → editable-currency-cell-renderer-DGKuRNVG.js.map} +1 -1
  39. package/dist/_chunks/{el-Dro3J7CP.js → el-BYPonAaK.js} +2 -2
  40. package/dist/_chunks/{el-Dro3J7CP.js.map → el-BYPonAaK.js.map} +1 -1
  41. package/dist/_chunks/{es-Dvg8u70B.js → es-CMkVCQ4F.js} +2 -2
  42. package/dist/_chunks/{es-Dvg8u70B.js.map → es-CMkVCQ4F.js.map} +1 -1
  43. package/dist/_chunks/{file-upload-CdozCPct.js → file-upload-CnzRcErt.js} +2 -1
  44. package/dist/_chunks/{file-upload-CdozCPct.js.map → file-upload-CnzRcErt.js.map} +1 -1
  45. package/dist/_chunks/fiscal-code-input-BZ0FxwUl.js +540 -0
  46. package/dist/_chunks/fiscal-code-input-BZ0FxwUl.js.map +1 -0
  47. package/dist/_chunks/{fr-VOGjBSPP.js → fr-BcuWxqft.js} +2 -2
  48. package/dist/_chunks/{fr-VOGjBSPP.js.map → fr-BcuWxqft.js.map} +1 -1
  49. package/dist/_chunks/gestation-BXEgDGmP.js +50 -0
  50. package/dist/_chunks/gestation-BXEgDGmP.js.map +1 -0
  51. package/dist/_chunks/gestational-age-calculator-CsQ05qDy.js +165 -0
  52. package/dist/_chunks/gestational-age-calculator-CsQ05qDy.js.map +1 -0
  53. package/dist/_chunks/heart-C0faivFf.js +20 -0
  54. package/dist/_chunks/heart-C0faivFf.js.map +1 -0
  55. package/dist/_chunks/{hi-BSDxWU_y.js → hi-wkq_rQAh.js} +2 -2
  56. package/dist/_chunks/{hi-BSDxWU_y.js.map → hi-wkq_rQAh.js.map} +1 -1
  57. package/dist/_chunks/image-C6RM5hfF.js +16 -0
  58. package/dist/_chunks/image-C6RM5hfF.js.map +1 -0
  59. package/dist/_chunks/insert-result-yJ0QavoN.js +133 -0
  60. package/dist/_chunks/insert-result-yJ0QavoN.js.map +1 -0
  61. package/dist/_chunks/{isSameWeek-Dfzu29cW.js → isSameWeek-Bim5ftRd.js} +2 -2
  62. package/dist/_chunks/{isSameWeek-Dfzu29cW.js.map → isSameWeek-Bim5ftRd.js.map} +1 -1
  63. package/dist/_chunks/{it-CuonvcI_.js → it-GiQrQ9p4.js} +3 -3
  64. package/dist/_chunks/{it-CuonvcI_.js.map → it-GiQrQ9p4.js.map} +1 -1
  65. package/dist/_chunks/{ja-DO57gIOT.js → ja-qfYg3Rua.js} +2 -2
  66. package/dist/_chunks/{ja-DO57gIOT.js.map → ja-qfYg3Rua.js.map} +1 -1
  67. package/dist/_chunks/{logo-_Z-jLq80.js → logo-yituK7sE.js} +42 -91
  68. package/dist/_chunks/logo-yituK7sE.js.map +1 -0
  69. package/dist/_chunks/{marketplace-app-shell-DXHxy9dj.js → marketplace-app-shell-BnClrL2B.js} +2 -2
  70. package/dist/_chunks/{marketplace-app-shell-DXHxy9dj.js.map → marketplace-app-shell-BnClrL2B.js.map} +1 -1
  71. package/dist/_chunks/{nl-DjPaaWaW.js → nl-xOogO4sZ.js} +2 -2
  72. package/dist/_chunks/{nl-DjPaaWaW.js.map → nl-xOogO4sZ.js.map} +1 -1
  73. package/dist/_chunks/{patient-shell-CDvMw_Nk.js → patient-shell-Bz3CdO84.js} +2 -2
  74. package/dist/_chunks/{patient-shell-CDvMw_Nk.js.map → patient-shell-Bz3CdO84.js.map} +1 -1
  75. package/dist/_chunks/{pl-Cl4lOx2N.js → pl-GnOW6eGK.js} +3 -3
  76. package/dist/_chunks/{pl-Cl4lOx2N.js.map → pl-GnOW6eGK.js.map} +1 -1
  77. package/dist/_chunks/{practice-results-BFM_lyUs.js → practice-results-C8ciLQap.js} +3 -2
  78. package/dist/_chunks/{practice-results-BFM_lyUs.js.map → practice-results-C8ciLQap.js.map} +1 -1
  79. package/dist/_chunks/pregnancy-weight-gain-BCdi-JSv.js +209 -0
  80. package/dist/_chunks/pregnancy-weight-gain-BCdi-JSv.js.map +1 -0
  81. package/dist/_chunks/{privacy-lock-DD-wHxBg.js → privacy-lock-BmX_gkvt.js} +2 -2
  82. package/dist/_chunks/{privacy-lock-DD-wHxBg.js.map → privacy-lock-BmX_gkvt.js.map} +1 -1
  83. package/dist/_chunks/{pt-D7qO5CzD.js → pt-_bV5b5RW.js} +2 -2
  84. package/dist/_chunks/{pt-D7qO5CzD.js.map → pt-_bV5b5RW.js.map} +1 -1
  85. package/dist/_chunks/{public-footer.agent-Cjfe5jus.js → public-footer.agent-zw1vFin_.js} +2 -2
  86. package/dist/_chunks/{public-footer.agent-Cjfe5jus.js.map → public-footer.agent-zw1vFin_.js.map} +1 -1
  87. package/dist/_chunks/qr-code-DNXhi6se.js +568 -0
  88. package/dist/_chunks/qr-code-DNXhi6se.js.map +1 -0
  89. package/dist/_chunks/{react-day-picker-DsjfS7uI.js → react-day-picker-CdtIiKjx.js} +27 -27
  90. package/dist/_chunks/{react-day-picker-DsjfS7uI.js.map → react-day-picker-CdtIiKjx.js.map} +1 -1
  91. package/dist/_chunks/{rich-text-editor-CHmr9Bz8.js → rich-text-editor-DLbg2852.js} +114 -124
  92. package/dist/_chunks/rich-text-editor-DLbg2852.js.map +1 -0
  93. package/dist/_chunks/{ro-CP2-VJ_O.js → ro-BEcyh5Nj.js} +2 -2
  94. package/dist/_chunks/{ro-CP2-VJ_O.js.map → ro-BEcyh5Nj.js.map} +1 -1
  95. package/dist/_chunks/rotate-ccw-BWANpitO.js +15 -0
  96. package/dist/_chunks/rotate-ccw-BWANpitO.js.map +1 -0
  97. package/dist/_chunks/{ru-RPn9_Lpq.js → ru-Bi86hqMf.js} +3 -3
  98. package/dist/_chunks/{ru-RPn9_Lpq.js.map → ru-Bi86hqMf.js.map} +1 -1
  99. package/dist/_chunks/session-countdown-LPnhTHjn.js +214 -0
  100. package/dist/_chunks/session-countdown-LPnhTHjn.js.map +1 -0
  101. package/dist/_chunks/{shield-check-BhHyReu8.js → shield-check-C73ma9Cs.js} +8 -24
  102. package/dist/_chunks/shield-check-C73ma9Cs.js.map +1 -0
  103. package/dist/_chunks/{sign-in-with-alfadocs-button-BI0fVonM.js → sign-in-with-alfadocs-button-DeHBFRNS.js} +2 -2
  104. package/dist/_chunks/{sign-in-with-alfadocs-button-BI0fVonM.js.map → sign-in-with-alfadocs-button-DeHBFRNS.js.map} +1 -1
  105. package/dist/_chunks/social-sign-in-button-X54ySJr1.js +243 -0
  106. package/dist/_chunks/social-sign-in-button-X54ySJr1.js.map +1 -0
  107. package/dist/_chunks/{sq-AQvefouo.js → sq-BujHSAWu.js} +2 -2
  108. package/dist/_chunks/{sq-AQvefouo.js.map → sq-BujHSAWu.js.map} +1 -1
  109. package/dist/_chunks/subDays-_T9YeKPX.js +8 -0
  110. package/dist/_chunks/{subDays-CANHP9hz.js.map → subDays-_T9YeKPX.js.map} +1 -1
  111. package/dist/_chunks/{sv-zkx9eBtD.js → sv-C8AeDrTA.js} +2 -2
  112. package/dist/_chunks/{sv-zkx9eBtD.js.map → sv-C8AeDrTA.js.map} +1 -1
  113. package/dist/_chunks/{tr-Dmr412Ac.js → tr-CMSs_Vgf.js} +2 -2
  114. package/dist/_chunks/{tr-Dmr412Ac.js.map → tr-CMSs_Vgf.js.map} +1 -1
  115. package/dist/_chunks/unit-converter-EUwO6QYq.js +168 -0
  116. package/dist/_chunks/unit-converter-EUwO6QYq.js.map +1 -0
  117. package/dist/_chunks/wallet-pay-button-DK4ESYge.js +250 -0
  118. package/dist/_chunks/wallet-pay-button-DK4ESYge.js.map +1 -0
  119. package/dist/_chunks/{zh-CN-DxVt64Zk.js → zh-CN-eXB-PFu4.js} +3 -3
  120. package/dist/_chunks/{zh-CN-DxVt64Zk.js.map → zh-CN-eXB-PFu4.js.map} +1 -1
  121. package/dist/agent-catalog.json +203 -1
  122. package/dist/brand/provider-marks/apple-pay.d.ts +12 -0
  123. package/dist/brand/provider-marks/apple-pay.d.ts.map +1 -0
  124. package/dist/brand/provider-marks/apple.d.ts +12 -0
  125. package/dist/brand/provider-marks/apple.d.ts.map +1 -0
  126. package/dist/brand/provider-marks/google-pay.d.ts +12 -0
  127. package/dist/brand/provider-marks/google-pay.d.ts.map +1 -0
  128. package/dist/brand/provider-marks/google.d.ts +13 -0
  129. package/dist/brand/provider-marks/google.d.ts.map +1 -0
  130. package/dist/components/_shared/insert-result.d.ts +47 -0
  131. package/dist/components/_shared/insert-result.d.ts.map +1 -0
  132. package/dist/components/bmi-calculator/bmi-calculator.d.ts +27 -0
  133. package/dist/components/bmi-calculator/bmi-calculator.d.ts.map +1 -0
  134. package/dist/components/bmi-calculator/bmi.d.ts +37 -0
  135. package/dist/components/bmi-calculator/bmi.d.ts.map +1 -0
  136. package/dist/components/bmi-calculator/index.d.ts +4 -0
  137. package/dist/components/bmi-calculator/index.d.ts.map +1 -0
  138. package/dist/components/bmi-calculator/index.js +15 -0
  139. package/dist/components/bmi-calculator/index.js.map +1 -0
  140. package/dist/components/booking/index.js +1 -1
  141. package/dist/components/calculator-dialog/calculator-dialog.d.ts +26 -0
  142. package/dist/components/calculator-dialog/calculator-dialog.d.ts.map +1 -0
  143. package/dist/components/calculator-dialog/index.d.ts +3 -0
  144. package/dist/components/calculator-dialog/index.d.ts.map +1 -0
  145. package/dist/components/calculator-dialog/index.js +5 -0
  146. package/dist/components/calculator-dialog/index.js.map +1 -0
  147. package/dist/components/chart/chart.d.ts +7 -0
  148. package/dist/components/chart/chart.d.ts.map +1 -1
  149. package/dist/components/chart/index.js +1 -1
  150. package/dist/components/chat-message/index.js +1 -1
  151. package/dist/components/contact-profile-card/index.js +1 -1
  152. package/dist/components/cycle-calculator/cycle-calculator.d.ts +21 -0
  153. package/dist/components/cycle-calculator/cycle-calculator.d.ts.map +1 -0
  154. package/dist/components/cycle-calculator/cycle.d.ts +37 -0
  155. package/dist/components/cycle-calculator/cycle.d.ts.map +1 -0
  156. package/dist/components/cycle-calculator/index.d.ts +4 -0
  157. package/dist/components/cycle-calculator/index.d.ts.map +1 -0
  158. package/dist/components/cycle-calculator/index.js +7 -0
  159. package/dist/components/cycle-calculator/index.js.map +1 -0
  160. package/dist/components/data-table/index.js +1 -1
  161. package/dist/components/date-picker/index.js +1 -1
  162. package/dist/components/date-range-picker/index.js +1 -1
  163. package/dist/components/date-time-picker/index.js +1 -1
  164. package/dist/components/dependent-selector/dependent-selector.agent.d.ts +4 -0
  165. package/dist/components/dependent-selector/dependent-selector.agent.d.ts.map +1 -0
  166. package/dist/components/dependent-selector/dependent-selector.d.ts +72 -0
  167. package/dist/components/dependent-selector/dependent-selector.d.ts.map +1 -0
  168. package/dist/components/dependent-selector/index.d.ts +4 -0
  169. package/dist/components/dependent-selector/index.d.ts.map +1 -0
  170. package/dist/components/dependent-selector/index.js +6 -0
  171. package/dist/components/dependent-selector/index.js.map +1 -0
  172. package/dist/components/document-scanner/document-scanner.agent.d.ts +4 -0
  173. package/dist/components/document-scanner/document-scanner.agent.d.ts.map +1 -0
  174. package/dist/components/document-scanner/document-scanner.d.ts +93 -0
  175. package/dist/components/document-scanner/document-scanner.d.ts.map +1 -0
  176. package/dist/components/document-scanner/index.d.ts +4 -0
  177. package/dist/components/document-scanner/index.d.ts.map +1 -0
  178. package/dist/components/document-scanner/index.js +6 -0
  179. package/dist/components/document-scanner/index.js.map +1 -0
  180. package/dist/components/due-date-calculator/due-date-calculator.d.ts +21 -0
  181. package/dist/components/due-date-calculator/due-date-calculator.d.ts.map +1 -0
  182. package/dist/components/due-date-calculator/gestation.d.ts +60 -0
  183. package/dist/components/due-date-calculator/gestation.d.ts.map +1 -0
  184. package/dist/components/due-date-calculator/index.d.ts +4 -0
  185. package/dist/components/due-date-calculator/index.d.ts.map +1 -0
  186. package/dist/components/due-date-calculator/index.js +13 -0
  187. package/dist/components/due-date-calculator/index.js.map +1 -0
  188. package/dist/components/file-upload/index.js +1 -1
  189. package/dist/components/fiscal-code-input/calculate-codice-fiscale.d.ts +24 -0
  190. package/dist/components/fiscal-code-input/calculate-codice-fiscale.d.ts.map +1 -0
  191. package/dist/components/fiscal-code-input/fiscal-code-input.agent.d.ts +4 -0
  192. package/dist/components/fiscal-code-input/fiscal-code-input.agent.d.ts.map +1 -0
  193. package/dist/components/fiscal-code-input/fiscal-code-input.d.ts +61 -0
  194. package/dist/components/fiscal-code-input/fiscal-code-input.d.ts.map +1 -0
  195. package/dist/components/fiscal-code-input/index.d.ts +6 -0
  196. package/dist/components/fiscal-code-input/index.d.ts.map +1 -0
  197. package/dist/components/fiscal-code-input/index.js +11 -0
  198. package/dist/components/fiscal-code-input/index.js.map +1 -0
  199. package/dist/components/fiscal-code-input/is-valid-codice-fiscale.d.ts +21 -0
  200. package/dist/components/fiscal-code-input/is-valid-codice-fiscale.d.ts.map +1 -0
  201. package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts +27 -0
  202. package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts.map +1 -0
  203. package/dist/components/gestational-age-calculator/index.d.ts +3 -0
  204. package/dist/components/gestational-age-calculator/index.d.ts.map +1 -0
  205. package/dist/components/gestational-age-calculator/index.js +5 -0
  206. package/dist/components/gestational-age-calculator/index.js.map +1 -0
  207. package/dist/components/index.d.ts +15 -0
  208. package/dist/components/index.d.ts.map +1 -1
  209. package/dist/components/logo/index.js +1 -1
  210. package/dist/components/practice-results/index.js +1 -1
  211. package/dist/components/pregnancy-weight-gain/index.d.ts +4 -0
  212. package/dist/components/pregnancy-weight-gain/index.d.ts.map +1 -0
  213. package/dist/components/pregnancy-weight-gain/index.js +9 -0
  214. package/dist/components/pregnancy-weight-gain/index.js.map +1 -0
  215. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts +19 -0
  216. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts.map +1 -0
  217. package/dist/components/pregnancy-weight-gain/weight-gain.d.ts +41 -0
  218. package/dist/components/pregnancy-weight-gain/weight-gain.d.ts.map +1 -0
  219. package/dist/components/privacy-lock/index.js +1 -1
  220. package/dist/components/public-footer/index.js +1 -1
  221. package/dist/components/qr-code/index.d.ts +5 -0
  222. package/dist/components/qr-code/index.d.ts.map +1 -0
  223. package/dist/components/qr-code/index.js +8 -0
  224. package/dist/components/qr-code/index.js.map +1 -0
  225. package/dist/components/qr-code/qr-code.agent.d.ts +3 -0
  226. package/dist/components/qr-code/qr-code.agent.d.ts.map +1 -0
  227. package/dist/components/qr-code/qr-code.d.ts +59 -0
  228. package/dist/components/qr-code/qr-code.d.ts.map +1 -0
  229. package/dist/components/qr-code/qr-encode.d.ts +46 -0
  230. package/dist/components/qr-code/qr-encode.d.ts.map +1 -0
  231. package/dist/components/rich-text-editor/index.js +1 -1
  232. package/dist/components/session-countdown/index.d.ts +4 -0
  233. package/dist/components/session-countdown/index.d.ts.map +1 -0
  234. package/dist/components/session-countdown/index.js +6 -0
  235. package/dist/components/session-countdown/index.js.map +1 -0
  236. package/dist/components/session-countdown/session-countdown.agent.d.ts +3 -0
  237. package/dist/components/session-countdown/session-countdown.agent.d.ts.map +1 -0
  238. package/dist/components/session-countdown/session-countdown.d.ts +38 -0
  239. package/dist/components/session-countdown/session-countdown.d.ts.map +1 -0
  240. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  241. package/dist/components/skeleton/skeleton.d.ts +1 -1
  242. package/dist/components/social-sign-in-button/index.d.ts +3 -0
  243. package/dist/components/social-sign-in-button/index.d.ts.map +1 -0
  244. package/dist/components/social-sign-in-button/index.js +5 -0
  245. package/dist/components/social-sign-in-button/index.js.map +1 -0
  246. package/dist/components/social-sign-in-button/social-sign-in-button.d.ts +56 -0
  247. package/dist/components/social-sign-in-button/social-sign-in-button.d.ts.map +1 -0
  248. package/dist/components/unit-converter/index.d.ts +4 -0
  249. package/dist/components/unit-converter/index.d.ts.map +1 -0
  250. package/dist/components/unit-converter/index.js +9 -0
  251. package/dist/components/unit-converter/index.js.map +1 -0
  252. package/dist/components/unit-converter/unit-converter.d.ts +21 -0
  253. package/dist/components/unit-converter/unit-converter.d.ts.map +1 -0
  254. package/dist/components/unit-converter/units.d.ts +18 -0
  255. package/dist/components/unit-converter/units.d.ts.map +1 -0
  256. package/dist/components/wallet-pay-button/index.d.ts +3 -0
  257. package/dist/components/wallet-pay-button/index.d.ts.map +1 -0
  258. package/dist/components/wallet-pay-button/index.js +5 -0
  259. package/dist/components/wallet-pay-button/index.js.map +1 -0
  260. package/dist/components/wallet-pay-button/wallet-pay-button.d.ts +63 -0
  261. package/dist/components/wallet-pay-button/wallet-pay-button.d.ts.map +1 -0
  262. package/dist/i18n/locales/ar.d.ts +316 -0
  263. package/dist/i18n/locales/ar.d.ts.map +1 -1
  264. package/dist/i18n/locales/ar.js +307 -0
  265. package/dist/i18n/locales/ar.js.map +1 -1
  266. package/dist/i18n/locales/de.d.ts +316 -0
  267. package/dist/i18n/locales/de.d.ts.map +1 -1
  268. package/dist/i18n/locales/de.js +307 -0
  269. package/dist/i18n/locales/de.js.map +1 -1
  270. package/dist/i18n/locales/el.d.ts +316 -0
  271. package/dist/i18n/locales/el.d.ts.map +1 -1
  272. package/dist/i18n/locales/el.js +307 -0
  273. package/dist/i18n/locales/el.js.map +1 -1
  274. package/dist/i18n/locales/en.d.ts +316 -0
  275. package/dist/i18n/locales/en.d.ts.map +1 -1
  276. package/dist/i18n/locales/en.js +310 -0
  277. package/dist/i18n/locales/en.js.map +1 -1
  278. package/dist/i18n/locales/es.d.ts +316 -0
  279. package/dist/i18n/locales/es.d.ts.map +1 -1
  280. package/dist/i18n/locales/es.js +307 -0
  281. package/dist/i18n/locales/es.js.map +1 -1
  282. package/dist/i18n/locales/fr.d.ts +316 -0
  283. package/dist/i18n/locales/fr.d.ts.map +1 -1
  284. package/dist/i18n/locales/fr.js +307 -0
  285. package/dist/i18n/locales/fr.js.map +1 -1
  286. package/dist/i18n/locales/hi.d.ts +316 -0
  287. package/dist/i18n/locales/hi.d.ts.map +1 -1
  288. package/dist/i18n/locales/hi.js +307 -0
  289. package/dist/i18n/locales/hi.js.map +1 -1
  290. package/dist/i18n/locales/it.d.ts +316 -0
  291. package/dist/i18n/locales/it.d.ts.map +1 -1
  292. package/dist/i18n/locales/it.js +307 -0
  293. package/dist/i18n/locales/it.js.map +1 -1
  294. package/dist/i18n/locales/ja.d.ts +316 -0
  295. package/dist/i18n/locales/ja.d.ts.map +1 -1
  296. package/dist/i18n/locales/ja.js +303 -0
  297. package/dist/i18n/locales/ja.js.map +1 -1
  298. package/dist/i18n/locales/nl.d.ts +316 -0
  299. package/dist/i18n/locales/nl.d.ts.map +1 -1
  300. package/dist/i18n/locales/nl.js +307 -0
  301. package/dist/i18n/locales/nl.js.map +1 -1
  302. package/dist/i18n/locales/pl.d.ts +316 -0
  303. package/dist/i18n/locales/pl.d.ts.map +1 -1
  304. package/dist/i18n/locales/pl.js +307 -0
  305. package/dist/i18n/locales/pl.js.map +1 -1
  306. package/dist/i18n/locales/pt.d.ts +316 -0
  307. package/dist/i18n/locales/pt.d.ts.map +1 -1
  308. package/dist/i18n/locales/pt.js +310 -0
  309. package/dist/i18n/locales/pt.js.map +1 -1
  310. package/dist/i18n/locales/ro.d.ts +316 -0
  311. package/dist/i18n/locales/ro.d.ts.map +1 -1
  312. package/dist/i18n/locales/ro.js +307 -0
  313. package/dist/i18n/locales/ro.js.map +1 -1
  314. package/dist/i18n/locales/ru.d.ts +316 -0
  315. package/dist/i18n/locales/ru.d.ts.map +1 -1
  316. package/dist/i18n/locales/ru.js +307 -0
  317. package/dist/i18n/locales/ru.js.map +1 -1
  318. package/dist/i18n/locales/sq.d.ts +316 -0
  319. package/dist/i18n/locales/sq.d.ts.map +1 -1
  320. package/dist/i18n/locales/sq.js +307 -0
  321. package/dist/i18n/locales/sq.js.map +1 -1
  322. package/dist/i18n/locales/sv.d.ts +316 -0
  323. package/dist/i18n/locales/sv.d.ts.map +1 -1
  324. package/dist/i18n/locales/sv.js +307 -0
  325. package/dist/i18n/locales/sv.js.map +1 -1
  326. package/dist/i18n/locales/tr.d.ts +316 -0
  327. package/dist/i18n/locales/tr.d.ts.map +1 -1
  328. package/dist/i18n/locales/tr.js +307 -0
  329. package/dist/i18n/locales/tr.js.map +1 -1
  330. package/dist/i18n/locales/zh.d.ts +316 -0
  331. package/dist/i18n/locales/zh.d.ts.map +1 -1
  332. package/dist/i18n/locales/zh.js +303 -0
  333. package/dist/i18n/locales/zh.js.map +1 -1
  334. package/dist/index.js +597 -527
  335. package/dist/index.js.map +1 -1
  336. package/dist/locales/ar.json +316 -0
  337. package/dist/locales/de.json +316 -0
  338. package/dist/locales/el.json +316 -0
  339. package/dist/locales/en.json +316 -0
  340. package/dist/locales/es.json +316 -0
  341. package/dist/locales/fr.json +316 -0
  342. package/dist/locales/hi.json +316 -0
  343. package/dist/locales/it.json +316 -0
  344. package/dist/locales/ja.json +316 -0
  345. package/dist/locales/nl.json +316 -0
  346. package/dist/locales/pl.json +316 -0
  347. package/dist/locales/pt.json +316 -0
  348. package/dist/locales/ro.json +316 -0
  349. package/dist/locales/ru.json +316 -0
  350. package/dist/locales/sq.json +316 -0
  351. package/dist/locales/sv.json +316 -0
  352. package/dist/locales/tr.json +316 -0
  353. package/dist/locales/zh.json +316 -0
  354. package/dist/patterns/alia-assistant/index.js +1 -1
  355. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  356. package/dist/patterns/patient-shell/index.js +1 -1
  357. package/dist/tokens.css +1 -1
  358. package/package.json +57 -1
  359. package/dist/_chunks/chart-DLkVn_ex.js +0 -292
  360. package/dist/_chunks/chart-DLkVn_ex.js.map +0 -1
  361. package/dist/_chunks/chat-message-D53_fH2w.js.map +0 -1
  362. package/dist/_chunks/logo-_Z-jLq80.js.map +0 -1
  363. package/dist/_chunks/rich-text-editor-CHmr9Bz8.js.map +0 -1
  364. package/dist/_chunks/shield-check-BhHyReu8.js.map +0 -1
  365. package/dist/_chunks/subDays-CANHP9hz.js +0 -8
@@ -0,0 +1,540 @@
1
+ import { jsxs as N, jsx as l, Fragment as Ze } from "react/jsx-runtime";
2
+ import { forwardRef as Xe, useContext as je, useState as oe, useRef as P, useId as Ke, useEffect as Oe, useMemo as H, useCallback as ae } from "react";
3
+ import { c as ue } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as Ge } from "react-i18next";
5
+ import { u as We, F as Ye } from "./form-field-context-B3APVHKx.js";
6
+ import { I as ie, c as qe, a as L, b as Z } from "./input-surface-xyERuLU_.js";
7
+ import { c as Je } from "./compose-refs-C0k0tdqF.js";
8
+ import { u as Qe } from "./use-isomorphic-layout-effect-BGfaCOP1.js";
9
+ import { I as et } from "./icon-button-CKEOrN37.js";
10
+ import { u as tt } from "./registry-nPAVE19X.js";
11
+ import { c as st } from "./createLucideIcon-CrFbzy84.js";
12
+ import { C as ce } from "./circle-alert-ChA9opNA.js";
13
+ import { C as le } from "./circle-check-9AeSgJD_.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 nt = [
21
+ ["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", key: "1nb95v" }],
22
+ ["line", { x1: "8", x2: "16", y1: "6", y2: "6", key: "x4nwl0" }],
23
+ ["line", { x1: "16", x2: "16", y1: "14", y2: "18", key: "wjye3r" }],
24
+ ["path", { d: "M16 10h.01", key: "1m94wz" }],
25
+ ["path", { d: "M12 10h.01", key: "1nrarc" }],
26
+ ["path", { d: "M8 10h.01", key: "19clt8" }],
27
+ ["path", { d: "M12 14h.01", key: "1etili" }],
28
+ ["path", { d: "M8 14h.01", key: "6423bh" }],
29
+ ["path", { d: "M12 18h.01", key: "mhygvu" }],
30
+ ["path", { d: "M8 18h.01", key: "lrp35t" }]
31
+ ], rt = st("calculator", nt), ot = {
32
+ id: "fiscal-code-input",
33
+ capabilities: ["edit_inline"],
34
+ state: {
35
+ value: {
36
+ type: "string",
37
+ descriptionKey: "ui.agent.fiscalCodeInput.state.value",
38
+ description: "Current codice fiscale, normalised (uppercased, 0–16 [A-Z0-9] characters).",
39
+ read: (e) => e.getValue()
40
+ },
41
+ isValid: {
42
+ type: "boolean",
43
+ descriptionKey: "ui.agent.fiscalCodeInput.state.isValid",
44
+ description: "Whether the value is 16 structurally-sound characters with a matching control character.",
45
+ read: (e) => e.isValid()
46
+ }
47
+ },
48
+ actions: {
49
+ set_value: {
50
+ safety: "write",
51
+ argsType: "{ value: string }",
52
+ descriptionKey: "ui.agent.fiscalCodeInput.actions.setValue",
53
+ description: "Replace the codice fiscale. The value is uppercased and stripped to [A-Z0-9], capped at 16 characters.",
54
+ invoke: (e, t) => {
55
+ e.setValue(t.value);
56
+ }
57
+ },
58
+ clear: {
59
+ safety: "destructive",
60
+ descriptionKey: "ui.agent.fiscalCodeInput.actions.clear",
61
+ description: "Empty the input. Loses any typed value.",
62
+ invoke: (e) => {
63
+ e.clear();
64
+ }
65
+ },
66
+ focus: {
67
+ safety: "read",
68
+ descriptionKey: "ui.agent.fiscalCodeInput.actions.focus",
69
+ description: "Move keyboard focus to the codice fiscale input.",
70
+ invoke: (e) => {
71
+ e.focus();
72
+ }
73
+ }
74
+ },
75
+ domHooks: {
76
+ root: {
77
+ attr: "data-component",
78
+ value: "fiscal-code-input",
79
+ description: "Marks the FiscalCodeInput wrapper."
80
+ },
81
+ instanceId: {
82
+ attr: "data-component-id",
83
+ sourceProp: "id",
84
+ description: "Sourced from the id prop."
85
+ }
86
+ }
87
+ }, at = /* @__PURE__ */ new Set([0, 1, 2, 3, 4, 5, 8, 11]), it = /* @__PURE__ */ new Set([6, 7, 9, 10, 12, 13, 14]), ct = Object.freeze({
88
+ 0: 1,
89
+ 1: 0,
90
+ 2: 5,
91
+ 3: 7,
92
+ 4: 9,
93
+ 5: 13,
94
+ 6: 15,
95
+ 7: 17,
96
+ 8: 19,
97
+ 9: 21,
98
+ A: 1,
99
+ B: 0,
100
+ C: 5,
101
+ D: 7,
102
+ E: 9,
103
+ F: 13,
104
+ G: 15,
105
+ H: 17,
106
+ I: 19,
107
+ J: 21,
108
+ K: 2,
109
+ L: 4,
110
+ M: 18,
111
+ N: 20,
112
+ O: 11,
113
+ P: 3,
114
+ Q: 6,
115
+ R: 8,
116
+ S: 12,
117
+ T: 14,
118
+ U: 16,
119
+ V: 10,
120
+ W: 22,
121
+ X: 25,
122
+ Y: 24,
123
+ Z: 23
124
+ }), lt = Object.freeze({
125
+ 0: 0,
126
+ 1: 1,
127
+ 2: 2,
128
+ 3: 3,
129
+ 4: 4,
130
+ 5: 5,
131
+ 6: 6,
132
+ 7: 7,
133
+ 8: 8,
134
+ 9: 9,
135
+ A: 0,
136
+ B: 1,
137
+ C: 2,
138
+ D: 3,
139
+ E: 4,
140
+ F: 5,
141
+ G: 6,
142
+ H: 7,
143
+ I: 8,
144
+ J: 9,
145
+ K: 10,
146
+ L: 11,
147
+ M: 12,
148
+ N: 13,
149
+ O: 14,
150
+ P: 15,
151
+ Q: 16,
152
+ R: 17,
153
+ S: 18,
154
+ T: 19,
155
+ U: 20,
156
+ V: 21,
157
+ W: 22,
158
+ X: 23,
159
+ Y: 24,
160
+ Z: 25
161
+ }), dt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
162
+ function ut(e) {
163
+ if (!/^[A-Z0-9]{15}[A-Z]$/.test(e)) return !1;
164
+ for (let t = 0; t < 15; t += 1) {
165
+ const n = e[t], r = n >= "0" && n <= "9";
166
+ if (at.has(t) && r || it.has(t) && !r) return !1;
167
+ }
168
+ return !0;
169
+ }
170
+ function fe(e) {
171
+ let t = 0;
172
+ for (let n = 0; n < 15; n += 1) {
173
+ const r = e[n];
174
+ t += n % 2 === 0 ? ct[r] : lt[r];
175
+ }
176
+ return dt[t % 26];
177
+ }
178
+ function w(e) {
179
+ if (e.length === 0) return "empty";
180
+ if (e.length < 16) return "incomplete";
181
+ const t = e.slice(0, 16);
182
+ return ut(t) ? fe(t.slice(0, 15)) !== t[15] ? "badChecksum" : "valid" : "badFormat";
183
+ }
184
+ function Ut(e) {
185
+ return w(e) === "valid";
186
+ }
187
+ const pe = /* @__PURE__ */ new Set(["A", "E", "I", "O", "U"]), ft = [
188
+ "A",
189
+ "B",
190
+ "C",
191
+ "D",
192
+ "E",
193
+ "H",
194
+ "L",
195
+ "M",
196
+ "P",
197
+ "R",
198
+ "S",
199
+ "T"
200
+ ];
201
+ function me(e) {
202
+ return e.normalize("NFD").replace(/[̀-ͯ]/g, "").toUpperCase().replace(/[^A-Z]/g, "");
203
+ }
204
+ function he(e) {
205
+ return [...e].filter((t) => !pe.has(t)).join("");
206
+ }
207
+ function ge(e) {
208
+ return [...e].filter((t) => pe.has(t)).join("");
209
+ }
210
+ function pt(e) {
211
+ const t = me(e);
212
+ return (he(t) + ge(t) + "XXX").slice(0, 3);
213
+ }
214
+ function mt(e) {
215
+ const t = me(e), n = he(t);
216
+ return n.length >= 4 ? n[0] + n[2] + n[3] : (n + ge(t) + "XXX").slice(0, 3);
217
+ }
218
+ function ht(e) {
219
+ const t = e instanceof Date ? e : new Date(e);
220
+ if (Number.isNaN(t.getTime()))
221
+ throw new Error(`calculateCodiceFiscale: invalid birthDate "${e}"`);
222
+ return t;
223
+ }
224
+ function de(e) {
225
+ return String(e).padStart(2, "0");
226
+ }
227
+ function gt(e, t) {
228
+ const n = ht(e), r = de(n.getUTCFullYear() % 100), i = ft[n.getUTCMonth()], g = n.getUTCDate() + (t === "F" ? 40 : 0);
229
+ return r + i + de(g);
230
+ }
231
+ function Ct(e) {
232
+ const { surname: t, name: n, birthDate: r, sex: i, belfioreCode: g } = e, m = g.trim().toUpperCase();
233
+ if (!/^[A-Z][0-9]{3}$/.test(m))
234
+ throw new Error(
235
+ `calculateCodiceFiscale: belfioreCode must be a letter + 3 digits (e.g. "H501"), got "${g}"`
236
+ );
237
+ const S = pt(t) + mt(n) + gt(r, i) + m;
238
+ return S + fe(S);
239
+ }
240
+ const k = 16, vt = ue(
241
+ ["ds:relative ds:flex ds:items-center ds:w-full", qe].join(
242
+ " "
243
+ ),
244
+ {
245
+ variants: {
246
+ size: {
247
+ sm: L.sm,
248
+ md: L.md,
249
+ lg: L.lg
250
+ },
251
+ tone: {
252
+ default: ie.default,
253
+ error: `${ie.error} ds:focus-within:outline-destructive`
254
+ }
255
+ },
256
+ defaultVariants: { size: "md", tone: "default" }
257
+ }
258
+ ), bt = ue(
259
+ [
260
+ // dir="ltr" + tabular-nums keep the alphanumeric code rendering
261
+ // left-to-right and evenly spaced even under an RTL/CJK surrounding
262
+ // UI — this is a value-RENDERING concern (the code is never mirrored),
263
+ // not a layout-direction violation, so logical-prop rules don't apply
264
+ // to the code glyphs themselves.
265
+ "ds:w-full ds:min-w-0 ds:bg-transparent ds:text-foreground ds:placeholder:text-muted-foreground",
266
+ "ds:border-0 ds:outline-none ds:tabular-nums ds:uppercase ds:tracking-wide",
267
+ "ds:disabled:cursor-not-allowed",
268
+ "ds:read-only:cursor-default"
269
+ ].join(" "),
270
+ {
271
+ variants: {
272
+ size: {
273
+ sm: `ds:pe-3 ${Z.sm}`,
274
+ md: `ds:pe-3 ${Z.md}`,
275
+ lg: `ds:pe-4 ${Z.lg}`
276
+ },
277
+ // When the calculate affordance is shown, the input text starts after
278
+ // the inline-start icon button (mirrors `hasEnd`'s pe-10 reservation).
279
+ hasStart: {
280
+ true: "ds:ps-10",
281
+ false: ""
282
+ },
283
+ hasEnd: {
284
+ true: "ds:pe-10",
285
+ false: ""
286
+ }
287
+ },
288
+ compoundVariants: [
289
+ { size: "sm", hasStart: !1, class: "ds:ps-3" },
290
+ { size: "md", hasStart: !1, class: "ds:ps-3" },
291
+ { size: "lg", hasStart: !1, class: "ds:ps-4" }
292
+ ],
293
+ defaultVariants: { size: "md", hasStart: !1, hasEnd: !1 }
294
+ }
295
+ ), yt = "ds:absolute ds:inset-y-0 ds:end-0 ds:pe-3 ds:flex ds:items-center ds:pointer-events-none ds:[&_svg]:size-4", Et = "ds:absolute ds:inset-y-0 ds:start-0 ds:ps-1 ds:flex ds:items-center", X = "type-body-sm ds:mt-[var(--spacing-xs)]";
296
+ function p(e) {
297
+ return e.normalize("NFKC").replace(/[٠-٩]/g, (t) => String(t.charCodeAt(0) - 1632)).replace(/[۰-۹]/g, (t) => String(t.charCodeAt(0) - 1776)).toUpperCase().replace(/[^A-Z0-9]/g, "").slice(0, k);
298
+ }
299
+ function It(e, t) {
300
+ let n = 0;
301
+ for (let r = 0; r < t && r < e.length; r += 1) {
302
+ const i = e[r];
303
+ (i >= "0" && i <= "9" || i >= "A" && i <= "Z" || i >= "a" && i <= "z") && (n += 1);
304
+ }
305
+ return n;
306
+ }
307
+ const xt = Xe(function({
308
+ value: t,
309
+ defaultValue: n,
310
+ onChange: r,
311
+ size: i = "md",
312
+ tone: g = "default",
313
+ validateOn: m = "blur",
314
+ showError: S,
315
+ errorMessage: A,
316
+ disabled: Ce,
317
+ readOnly: d,
318
+ required: ve,
319
+ placeholder: be,
320
+ showFormatHint: ye = !0,
321
+ calculateFrom: R,
322
+ id: V,
323
+ name: Ee,
324
+ className: Ie,
325
+ "aria-label": j
326
+ }, xe) {
327
+ const { t: u } = Ge(), y = We(), f = je(Ye) !== null, C = t !== void 0, [Se, M] = oe(
328
+ () => p(n ?? "")
329
+ ), c = C ? p(t ?? "") : Se, [Te, K] = oe(!1), _ = P(!1), v = P(null), h = P(null), Fe = Je(xe, h), B = Ke(), O = `${B}-hint`, G = `${B}-status`, W = `${B}-error`;
330
+ Oe(() => {
331
+ }, [f, j]);
332
+ const T = H(
333
+ () => w(c),
334
+ [c]
335
+ ), Y = c.length === k, E = T === "valid", D = (f ? y.disabled : !1) || !!Ce, Ne = (f ? y.required : !1) || !!ve, we = !d && (!!S || Y && !E && (m === "change" || m === "blur" && Te)), q = f && y.invalid, b = we && !q, J = q || b, ke = J || g === "error" ? "error" : "default", Ae = H(() => A || u(T === "badChecksum" ? "inputs.fiscalCode.errorChecksum" : T === "badFormat" ? "inputs.fiscalCode.errorFormat" : "inputs.fiscalCode.errorIncomplete"), [A, T, u]), Q = !f && ye && !d, Re = f ? void 0 : [
336
+ Q ? O : null,
337
+ b ? W : G
338
+ ].filter(Boolean).join(" ") || void 0, Ve = f ? y.describedBy || void 0 : Re, Me = V ?? y.id, I = ae(
339
+ (s) => {
340
+ const o = w(s);
341
+ r == null || r(s, {
342
+ isValid: o === "valid",
343
+ isComplete: s.length === k,
344
+ reason: o
345
+ });
346
+ },
347
+ [r]
348
+ ), F = ae(
349
+ (s) => {
350
+ C || M(s), I(s);
351
+ },
352
+ [C, I]
353
+ );
354
+ Qe(() => {
355
+ if (v.current == null) return;
356
+ const s = v.current;
357
+ v.current = null;
358
+ const o = h.current;
359
+ if (o && document.activeElement === o) {
360
+ const a = Math.min(s, o.value.length);
361
+ o.setSelectionRange(a, a);
362
+ }
363
+ });
364
+ const _e = (s) => {
365
+ if (d || _.current) return;
366
+ const o = s.target, a = o.value, $ = o.selectionStart ?? a.length, z = It(a, $), x = p(a);
367
+ v.current = Math.min(z, x.length), F(x);
368
+ }, Be = () => {
369
+ _.current = !0;
370
+ }, De = (s) => {
371
+ if (_.current = !1, d) return;
372
+ const o = p(s.currentTarget.value);
373
+ v.current = o.length, F(o);
374
+ }, Ue = (s) => {
375
+ if (d) return;
376
+ const o = s.clipboardData.getData("text");
377
+ s.preventDefault();
378
+ const a = h.current, $ = (a == null ? void 0 : a.selectionStart) ?? c.length, z = (a == null ? void 0 : a.selectionEnd) ?? c.length, x = p(o), ne = c.slice(0, $), Le = c.slice(z), re = p(ne + x + Le);
379
+ v.current = Math.min((ne + x).length, re.length), F(re);
380
+ }, $e = () => {
381
+ m === "blur" && K(!0);
382
+ }, ze = () => {
383
+ var a;
384
+ if (!R || d || D) return;
385
+ let s;
386
+ try {
387
+ s = Ct(R);
388
+ } catch {
389
+ return;
390
+ }
391
+ const o = p(s);
392
+ m === "blur" && K(!0), F(o), (a = h.current) == null || a.focus();
393
+ }, Pe = H(
394
+ () => ({
395
+ getValue: () => c,
396
+ setValue: (s) => {
397
+ var a;
398
+ const o = p(s);
399
+ C || M(o), I(o), (a = h.current) == null || a.focus();
400
+ },
401
+ clear: () => {
402
+ var s;
403
+ C || M(""), I(""), (s = h.current) == null || s.focus();
404
+ },
405
+ focus: () => {
406
+ var s;
407
+ return (s = h.current) == null ? void 0 : s.focus();
408
+ },
409
+ isValid: () => w(c) === "valid"
410
+ }),
411
+ [c, C, I]
412
+ );
413
+ tt(ot, Pe, V);
414
+ const He = be ?? u("inputs.fiscalCode.placeholder"), U = d || f ? "" : E ? u("inputs.fiscalCode.valid") : c.length > 0 && !Y ? u("inputs.fiscalCode.charactersEntered", {
415
+ count: c.length
416
+ }) : "", ee = b ? Ae : "", te = !d && (b || E && !f), se = !!R && !d && !D;
417
+ return /* @__PURE__ */ N(
418
+ "div",
419
+ {
420
+ className: "ds:flex ds:flex-col",
421
+ "data-component": "fiscal-code-input",
422
+ "data-component-id": V,
423
+ children: [
424
+ /* @__PURE__ */ N(
425
+ "div",
426
+ {
427
+ "data-slot": "fiscal-code-input",
428
+ className: vt({ size: i, tone: ke, className: Ie }),
429
+ children: [
430
+ se ? /* @__PURE__ */ l("span", { className: Et, children: /* @__PURE__ */ l(
431
+ et,
432
+ {
433
+ type: "button",
434
+ size: "sm",
435
+ intent: "ghost",
436
+ icon: /* @__PURE__ */ l(rt, {}),
437
+ "aria-label": u("inputs.fiscalCode.calculate"),
438
+ onClick: ze
439
+ }
440
+ ) }) : null,
441
+ /* @__PURE__ */ l(
442
+ "input",
443
+ {
444
+ ref: Fe,
445
+ id: Me,
446
+ name: Ee,
447
+ dir: "ltr",
448
+ type: "text",
449
+ inputMode: "text",
450
+ autoCapitalize: "characters",
451
+ autoCorrect: "off",
452
+ autoComplete: "off",
453
+ spellCheck: !1,
454
+ maxLength: k,
455
+ pattern: "[A-Z0-9]{15}[A-Z]",
456
+ value: c,
457
+ placeholder: He,
458
+ disabled: D,
459
+ readOnly: d,
460
+ "aria-label": j,
461
+ "aria-describedby": Ve,
462
+ "aria-invalid": J || void 0,
463
+ "aria-required": Ne || void 0,
464
+ onChange: _e,
465
+ onCompositionStart: Be,
466
+ onCompositionEnd: De,
467
+ onPaste: Ue,
468
+ onBlur: $e,
469
+ className: bt({
470
+ size: i,
471
+ hasStart: se,
472
+ hasEnd: te
473
+ })
474
+ }
475
+ ),
476
+ te ? /* @__PURE__ */ l(
477
+ "span",
478
+ {
479
+ "aria-hidden": "true",
480
+ className: `${yt} ${b ? "ds:text-destructive" : "ds:text-success"}`,
481
+ children: b ? /* @__PURE__ */ l(ce, {}) : /* @__PURE__ */ l(le, {})
482
+ }
483
+ ) : null
484
+ ]
485
+ }
486
+ ),
487
+ Q ? /* @__PURE__ */ l(
488
+ "p",
489
+ {
490
+ id: O,
491
+ className: `${X} ds:text-muted-foreground`,
492
+ children: u("inputs.fiscalCode.formatHint")
493
+ }
494
+ ) : null,
495
+ /* @__PURE__ */ l(
496
+ "p",
497
+ {
498
+ id: G,
499
+ role: "status",
500
+ "aria-live": "polite",
501
+ className: `${X} ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ${E ? "ds:text-success" : "ds:text-muted-foreground"} ${U ? "" : "ds:sr-only"}`,
502
+ children: U ? /* @__PURE__ */ N(Ze, { children: [
503
+ E ? /* @__PURE__ */ l(
504
+ le,
505
+ {
506
+ "aria-hidden": "true",
507
+ className: "ds:size-4 ds:shrink-0"
508
+ }
509
+ ) : null,
510
+ /* @__PURE__ */ l("span", { children: U })
511
+ ] }) : null
512
+ }
513
+ ),
514
+ ee ? /* @__PURE__ */ N(
515
+ "p",
516
+ {
517
+ id: W,
518
+ role: "alert",
519
+ className: `${X} ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ds:text-destructive`,
520
+ children: [
521
+ /* @__PURE__ */ l(ce, { "aria-hidden": "true", className: "ds:size-4 ds:shrink-0" }),
522
+ /* @__PURE__ */ l("span", { children: ee })
523
+ ]
524
+ }
525
+ ) : null
526
+ ]
527
+ }
528
+ );
529
+ });
530
+ xt.displayName = "FiscalCodeInput";
531
+ export {
532
+ xt as F,
533
+ w as a,
534
+ fe as b,
535
+ Ct as c,
536
+ ot as f,
537
+ Ut as i,
538
+ vt as w
539
+ };
540
+ //# sourceMappingURL=fiscal-code-input-BZ0FxwUl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fiscal-code-input-BZ0FxwUl.js","sources":["../../node_modules/lucide-react/dist/esm/icons/calculator.js","../../src/components/fiscal-code-input/fiscal-code-input.agent.ts","../../src/components/fiscal-code-input/is-valid-codice-fiscale.ts","../../src/components/fiscal-code-input/calculate-codice-fiscale.ts","../../src/components/fiscal-code-input/fiscal-code-input.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 [\"rect\", { width: \"16\", height: \"20\", x: \"4\", y: \"2\", rx: \"2\", key: \"1nb95v\" }],\n [\"line\", { x1: \"8\", x2: \"16\", y1: \"6\", y2: \"6\", key: \"x4nwl0\" }],\n [\"line\", { x1: \"16\", x2: \"16\", y1: \"14\", y2: \"18\", key: \"wjye3r\" }],\n [\"path\", { d: \"M16 10h.01\", key: \"1m94wz\" }],\n [\"path\", { d: \"M12 10h.01\", key: \"1nrarc\" }],\n [\"path\", { d: \"M8 10h.01\", key: \"19clt8\" }],\n [\"path\", { d: \"M12 14h.01\", key: \"1etili\" }],\n [\"path\", { d: \"M8 14h.01\", key: \"6423bh\" }],\n [\"path\", { d: \"M12 18h.01\", key: \"mhygvu\" }],\n [\"path\", { d: \"M8 18h.01\", key: \"lrp35t\" }]\n];\nconst Calculator = createLucideIcon(\"calculator\", __iconNode);\n\nexport { __iconNode, Calculator as default };\n//# sourceMappingURL=calculator.js.map\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — FiscalCodeInput. */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` for the contract. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { FiscalCodeInputHandle } from './fiscal-code-input';\n\nexport const fiscalCodeInputAgent: AgentAdapter<FiscalCodeInputHandle> = {\n id: 'fiscal-code-input',\n capabilities: ['edit_inline'],\n state: {\n value: {\n type: 'string',\n descriptionKey: 'ui.agent.fiscalCodeInput.state.value',\n description:\n 'Current codice fiscale, normalised (uppercased, 0–16 [A-Z0-9] characters).',\n read: (handle) => handle.getValue(),\n },\n isValid: {\n type: 'boolean',\n descriptionKey: 'ui.agent.fiscalCodeInput.state.isValid',\n description:\n 'Whether the value is 16 structurally-sound characters with a matching control character.',\n read: (handle) => handle.isValid(),\n },\n },\n actions: {\n set_value: {\n safety: 'write',\n argsType: '{ value: string }',\n descriptionKey: 'ui.agent.fiscalCodeInput.actions.setValue',\n description:\n 'Replace the codice fiscale. The value is uppercased and stripped to [A-Z0-9], capped at 16 characters.',\n invoke: (handle, args: { value: string }) => {\n handle.setValue(args.value);\n },\n },\n clear: {\n safety: 'destructive',\n descriptionKey: 'ui.agent.fiscalCodeInput.actions.clear',\n description: 'Empty the input. Loses any typed value.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n focus: {\n safety: 'read',\n descriptionKey: 'ui.agent.fiscalCodeInput.actions.focus',\n description: 'Move keyboard focus to the codice fiscale input.',\n invoke: (handle) => {\n handle.focus();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'fiscal-code-input',\n description: 'Marks the FiscalCodeInput wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","/* ------------------------------------------------------------------ */\n/* Codice Fiscale (Italian fiscal code) — client-side structural + */\n/* control-character checksum validator. */\n/* */\n/* SCOPE: this is a CLIENT MIRROR of the platform's */\n/* ValidateFiscalCodeService used ONLY to give instant feedback. It */\n/* validates two things and nothing more: */\n/* 1. The structural shape — 15 alphanumerics followed by 1 control */\n/* letter, where each position obeys its letter/digit class */\n/* (/^[A-Z0-9]{15}[A-Z]$/ plus the per-position class pattern). */\n/* 2. The 16th control character, derived from the first 15 via the */\n/* official odd/even per-position weighted-sum mod-26 algorithm. */\n/* */\n/* OUT OF SCOPE (server stays source of truth): birth-date / comune */\n/* Belfiore-code cross-checks and omocodia digit-substitution. A */\n/* structurally-correct code with a valid control character can still */\n/* be rejected by the server — the client never hard-blocks submit on */\n/* its own verdict. */\n/* ------------------------------------------------------------------ */\n\n/** Outcome of a structural + checksum check on a 16-char candidate. */\nexport type FiscalCodeReason =\n | 'empty'\n | 'incomplete'\n | 'badFormat'\n | 'badChecksum'\n | 'valid';\n\n/**\n * Position classes for the 15 informative characters. Positions are\n * 0-indexed. Letter positions accept A–Z; digit positions accept 0–9.\n * The 16th (control) character is a letter and validated separately.\n *\n * Standard layout (ignoring omocodia substitution, which the SERVER\n * handles): surname (0–2 letters), name (3–5 letters), year (6–7\n * digits), month (8 letter), day (9–10 digits), comune (11 letter +\n * 12–14 digits). For client structural feedback we accept the canonical\n * non-omocodic layout; omocodic variants surface as `badFormat` here and\n * are resolved server-side — documented as an accepted client limitation.\n */\nconst LETTER_POSITIONS = new Set([0, 1, 2, 3, 4, 5, 8, 11]);\nconst DIGIT_POSITIONS = new Set([6, 7, 9, 10, 12, 13, 14]);\n\nconst ODD_MAP: Readonly<Record<string, number>> = Object.freeze({\n '0': 1,\n '1': 0,\n '2': 5,\n '3': 7,\n '4': 9,\n '5': 13,\n '6': 15,\n '7': 17,\n '8': 19,\n '9': 21,\n A: 1,\n B: 0,\n C: 5,\n D: 7,\n E: 9,\n F: 13,\n G: 15,\n H: 17,\n I: 19,\n J: 21,\n K: 2,\n L: 4,\n M: 18,\n N: 20,\n O: 11,\n P: 3,\n Q: 6,\n R: 8,\n S: 12,\n T: 14,\n U: 16,\n V: 10,\n W: 22,\n X: 25,\n Y: 24,\n Z: 23,\n});\n\nconst EVEN_MAP: Readonly<Record<string, number>> = Object.freeze({\n '0': 0,\n '1': 1,\n '2': 2,\n '3': 3,\n '4': 4,\n '5': 5,\n '6': 6,\n '7': 7,\n '8': 8,\n '9': 9,\n A: 0,\n B: 1,\n C: 2,\n D: 3,\n E: 4,\n F: 5,\n G: 6,\n H: 7,\n I: 8,\n J: 9,\n K: 10,\n L: 11,\n M: 12,\n N: 13,\n O: 14,\n P: 15,\n Q: 16,\n R: 17,\n S: 18,\n T: 19,\n U: 20,\n V: 21,\n W: 22,\n X: 23,\n Y: 24,\n Z: 25,\n});\n\nconst REMAINDER_TO_CONTROL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\n/** True when every informative position matches its letter/digit class. */\nfunction hasValidStructure(code: string): boolean {\n if (!/^[A-Z0-9]{15}[A-Z]$/.test(code)) return false;\n for (let i = 0; i < 15; i += 1) {\n const ch = code[i];\n const isDigit = ch >= '0' && ch <= '9';\n if (LETTER_POSITIONS.has(i) && isDigit) return false;\n if (DIGIT_POSITIONS.has(i) && !isDigit) return false;\n }\n return true;\n}\n\n/**\n * Compute the expected 16th control character from the first 15\n * informative characters. The input MUST already be 15 uppercase\n * `[A-Z0-9]` characters (callers guard with `hasValidStructure`).\n */\nexport function computeControlChar(first15: string): string {\n let sum = 0;\n for (let i = 0; i < 15; i += 1) {\n const ch = first15[i];\n // Per the official spec, odd POSITIONS (1st, 3rd, … — i.e. 0-indexed\n // even i) use the ODD weight table; even positions use the EVEN table.\n sum += i % 2 === 0 ? ODD_MAP[ch] : EVEN_MAP[ch];\n }\n return REMAINDER_TO_CONTROL[sum % 26];\n}\n\n/**\n * Classify a normalised (uppercased, `[A-Z0-9]`-only) candidate.\n *\n * - `empty` — no characters.\n * - `incomplete` — fewer than 16 characters.\n * - `badFormat` — 16 characters but the position-class pattern fails.\n * - `badChecksum` — 16 well-formed characters but the control char is wrong.\n * - `valid` — structurally sound and the control char matches.\n */\nexport function classifyCodiceFiscale(raw: string): FiscalCodeReason {\n if (raw.length === 0) return 'empty';\n if (raw.length < 16) return 'incomplete';\n // raw is normalised to at most 16 chars by the component; guard anyway.\n const code = raw.slice(0, 16);\n if (!hasValidStructure(code)) return 'badFormat';\n if (computeControlChar(code.slice(0, 15)) !== code[15]) return 'badChecksum';\n return 'valid';\n}\n\n/** Convenience boolean: structurally sound AND control character matches. */\nexport function isValidCodiceFiscale(raw: string): boolean {\n return classifyCodiceFiscale(raw) === 'valid';\n}\n","/* ------------------------------------------------------------------ */\n/* Codice Fiscale (Italian fiscal code) — client-side DERIVATION. */\n/* */\n/* SCOPE: a pure, self-contained function that computes the 16-char */\n/* codice fiscale from a person's identity data when the caller already */\n/* holds it. This is a CONVENIENCE so a form that knows surname / name */\n/* / birth date / sex / birthplace can pre-fill the field — the server */\n/* (ValidateFiscalCodeService) remains the source of truth. */\n/* */\n/* OUT OF SCOPE: municipality-name → Belfiore (cadastral) code lookup. */\n/* That mapping requires a ~8000-row table the kit must not bundle, so */\n/* the caller supplies the 4-character `belfioreCode` directly. */\n/* Omocodia digit-substitution (used only when two people would share a */\n/* code) is also out of scope — the base, non-omocodic code is emitted. */\n/* ------------------------------------------------------------------ */\n\nimport { computeControlChar } from './is-valid-codice-fiscale';\n\n/** Identity inputs needed to derive the (non-omocodic) codice fiscale. */\nexport interface CodiceFiscaleInput {\n /** Family name (cognome). Diacritics are folded; non-letters ignored. */\n surname: string;\n /** Given name (nome). Diacritics are folded; non-letters ignored. */\n name: string;\n /** Date of birth — a `Date` or an ISO `YYYY-MM-DD` (or full ISO) string. */\n birthDate: Date | string;\n /** Biological sex as recorded for the fiscal code: 'M' or 'F'. */\n sex: 'M' | 'F';\n /** 4-character cadastral / Belfiore code of the birthplace (e.g. H501). */\n belfioreCode: string;\n}\n\nconst VOWELS = new Set(['A', 'E', 'I', 'O', 'U']);\n\n/** Month → fiscal-code letter (Jan→A … Dec→T), 0-indexed by month. */\nconst MONTH_LETTERS = [\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'H',\n 'L',\n 'M',\n 'P',\n 'R',\n 'S',\n 'T',\n] as const;\n\n/**\n * Fold a free-text name to bare uppercase A–Z: strip diacritics via NFD,\n * drop combining marks, uppercase, and keep only A–Z. Spaces / apostrophes\n * in compound names collapse away (the algorithm treats the name as one run\n * of letters).\n */\nfunction foldToLetters(input: string): string {\n return input\n .normalize('NFD')\n .replace(/[̀-ͯ]/g, '')\n .toUpperCase()\n .replace(/[^A-Z]/g, '');\n}\n\nfunction consonantsOf(letters: string): string {\n return [...letters].filter((c) => !VOWELS.has(c)).join('');\n}\n\nfunction vowelsOf(letters: string): string {\n return [...letters].filter((c) => VOWELS.has(c)).join('');\n}\n\n/**\n * Surname triple: consonants first, then vowels, right-padded with 'X'.\n * (e.g. \"Rossi\" → R S S; \"Fo\" → F O X.)\n */\nfunction surnameCode(surname: string): string {\n const letters = foldToLetters(surname);\n const code = consonantsOf(letters) + vowelsOf(letters);\n return (code + 'XXX').slice(0, 3);\n}\n\n/**\n * Name triple. With 4+ consonants, take the 1st, 3rd and 4th (the standard\n * \"skip the 2nd consonant\" rule); otherwise consonants then vowels,\n * right-padded with 'X'. (e.g. \"Mario\" → M R A; \"Maria\" → M RA → MRA;\n * \"Gianfranco\" → G F R.)\n */\nfunction nameCode(name: string): string {\n const letters = foldToLetters(name);\n const cons = consonantsOf(letters);\n if (cons.length >= 4) {\n return cons[0] + cons[2] + cons[3];\n }\n const code = cons + vowelsOf(letters);\n return (code + 'XXX').slice(0, 3);\n}\n\n/** Coerce a `Date` or ISO string to a `Date`; throws on an unparseable value. */\nfunction toDate(birthDate: Date | string): Date {\n const d = birthDate instanceof Date ? birthDate : new Date(birthDate);\n if (Number.isNaN(d.getTime())) {\n throw new Error(`calculateCodiceFiscale: invalid birthDate \"${birthDate}\"`);\n }\n return d;\n}\n\n/**\n * Two-digit zero-padded value. The fiscal code uses LOCAL calendar fields\n * (a birth date is a calendar date, not an instant), so we read the UTC\n * fields of a date-only ISO string consistently — see the date handling\n * below.\n */\nfunction pad2(n: number): string {\n return String(n).padStart(2, '0');\n}\n\n/**\n * Birth-date triple: 2-digit year + month letter + 2-digit day (+40 for\n * female). Returns the 5 characters `YYMDD`.\n *\n * Date fields are read in UTC so a date-only string like \"1980-01-01\"\n * (parsed by `Date` as UTC midnight) yields day 01 regardless of the\n * runtime timezone. Callers passing a `Date` built from local components\n * should construct it at UTC midnight (e.g. `new Date('1980-01-01')`).\n */\nfunction birthCode(birthDate: Date | string, sex: 'M' | 'F'): string {\n const d = toDate(birthDate);\n const yy = pad2(d.getUTCFullYear() % 100);\n const monthLetter = MONTH_LETTERS[d.getUTCMonth()];\n const day = d.getUTCDate() + (sex === 'F' ? 40 : 0);\n return yy + monthLetter + pad2(day);\n}\n\n/**\n * Compute the full 16-character (non-omocodic) codice fiscale from a\n * person's identity data. The caller supplies the 4-char Belfiore code of\n * the birthplace (the kit does not bundle the municipality table).\n *\n * Throws if `birthDate` is unparseable or `belfioreCode` is not 4\n * `[A-Z][0-9]{3}`-shaped characters — i.e. a letter followed by 3 digits,\n * the canonical Belfiore shape.\n */\nexport function calculateCodiceFiscale(input: CodiceFiscaleInput): string {\n const { surname, name, birthDate, sex, belfioreCode } = input;\n\n const belfiore = belfioreCode.trim().toUpperCase();\n if (!/^[A-Z][0-9]{3}$/.test(belfiore)) {\n throw new Error(\n `calculateCodiceFiscale: belfioreCode must be a letter + 3 digits (e.g. \"H501\"), got \"${belfioreCode}\"`,\n );\n }\n\n const first15 =\n surnameCode(surname) +\n nameCode(name) +\n birthCode(birthDate, sex) +\n belfiore;\n\n return first15 + computeControlChar(first15);\n}\n","import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n type ClipboardEvent,\n type CompositionEvent,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { AlertCircle, CheckCircle2, Calculator } from 'lucide-react';\nimport {\n FormFieldContext,\n useFormField,\n} from '../form-field/form-field-context';\nimport {\n INPUT_SURFACE_CHROME,\n INPUT_SURFACE_HEIGHT,\n INPUT_SURFACE_TEXT,\n INPUT_SURFACE_TONE,\n} from '../_shared/input-surface';\nimport { composeRefs } from '../_shared/compose-refs';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\nimport { useAgentRegistration } from '../../agent';\nimport { IconButton } from '../button';\nimport { fiscalCodeInputAgent } from './fiscal-code-input.agent';\nimport {\n classifyCodiceFiscale,\n type FiscalCodeReason,\n} from './is-valid-codice-fiscale';\nimport {\n calculateCodiceFiscale,\n type CodiceFiscaleInput,\n} from './calculate-codice-fiscale';\n\n/** Agent-readiness curated handle for FiscalCodeInput. */\nexport interface FiscalCodeInputHandle {\n getValue: () => string;\n setValue: (value: string) => void;\n clear: () => void;\n focus: () => void;\n isValid: () => boolean;\n}\n\n/** Structured payload emitted on every keystroke alongside the raw value. */\nexport interface FiscalCodeChangeMeta {\n /** Structurally sound AND control character matches (always 16 chars). */\n isValid: boolean;\n /** Whether all 16 characters are present (regardless of validity). */\n isComplete: boolean;\n /** Why the value is (in)valid — drives consumer messaging. */\n reason: FiscalCodeReason;\n}\n\nexport interface FiscalCodeInputProps {\n /** Controlled value (raw, uppercased, no spaces). Pair with onChange. */\n value?: string;\n /** Uncontrolled initial value. Normalised on mount. */\n defaultValue?: string;\n /** Fires on every keystroke with the normalised raw string + meta. */\n onChange?: (raw: string, meta: FiscalCodeChangeMeta) => void;\n size?: 'sm' | 'md' | 'lg';\n tone?: 'default' | 'error';\n /** When the invalid tone + error string surface. Never marks partial input invalid. */\n validateOn?: 'change' | 'blur' | 'submit';\n /** Controlled escape hatch to force the invalid state (e.g. server rejection). */\n showError?: boolean;\n /** Overrides the kit's default i18n error string. */\n errorMessage?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n placeholder?: string;\n /** Render the \"16 characters\" caption when NOT inside a FormField. */\n showFormatHint?: boolean;\n /**\n * OPT-IN. When the consuming form already holds the person's identity\n * data, supply it here to render an inline \"calculate\" affordance: a\n * small icon button that derives the codice fiscale and fills the field.\n * The caller supplies the 4-char `belfioreCode` of the birthplace — the\n * kit does not bundle the municipality lookup table. Omit to render\n * nothing extra (no behavioural change). Ignored when readOnly/disabled.\n */\n calculateFrom?: CodiceFiscaleInput;\n id?: string;\n name?: string;\n className?: string;\n 'aria-label'?: string;\n}\n\nconst MAX_LEN = 16;\n\nconst wrapperVariants = cva(\n ['ds:relative ds:flex ds:items-center ds:w-full', INPUT_SURFACE_CHROME].join(\n ' ',\n ),\n {\n variants: {\n size: {\n sm: INPUT_SURFACE_HEIGHT.sm,\n md: INPUT_SURFACE_HEIGHT.md,\n lg: INPUT_SURFACE_HEIGHT.lg,\n },\n tone: {\n default: INPUT_SURFACE_TONE.default,\n error: `${INPUT_SURFACE_TONE.error} ds:focus-within:outline-destructive`,\n },\n },\n defaultVariants: { size: 'md', tone: 'default' },\n },\n);\n\nconst inputVariants = cva(\n [\n // dir=\"ltr\" + tabular-nums keep the alphanumeric code rendering\n // left-to-right and evenly spaced even under an RTL/CJK surrounding\n // UI — this is a value-RENDERING concern (the code is never mirrored),\n // not a layout-direction violation, so logical-prop rules don't apply\n // to the code glyphs themselves.\n 'ds:w-full ds:min-w-0 ds:bg-transparent ds:text-foreground ds:placeholder:text-muted-foreground',\n 'ds:border-0 ds:outline-none ds:tabular-nums ds:uppercase ds:tracking-wide',\n 'ds:disabled:cursor-not-allowed',\n 'ds:read-only:cursor-default',\n ].join(' '),\n {\n variants: {\n size: {\n sm: `ds:pe-3 ${INPUT_SURFACE_TEXT.sm}`,\n md: `ds:pe-3 ${INPUT_SURFACE_TEXT.md}`,\n lg: `ds:pe-4 ${INPUT_SURFACE_TEXT.lg}`,\n },\n // When the calculate affordance is shown, the input text starts after\n // the inline-start icon button (mirrors `hasEnd`'s pe-10 reservation).\n hasStart: {\n true: 'ds:ps-10',\n false: '',\n },\n hasEnd: {\n true: 'ds:pe-10',\n false: '',\n },\n },\n compoundVariants: [\n { size: 'sm', hasStart: false, class: 'ds:ps-3' },\n { size: 'md', hasStart: false, class: 'ds:ps-3' },\n { size: 'lg', hasStart: false, class: 'ds:ps-4' },\n ],\n defaultVariants: { size: 'md', hasStart: false, hasEnd: false },\n },\n);\n\nconst adornmentEnd =\n 'ds:absolute ds:inset-y-0 ds:end-0 ds:pe-3 ds:flex ds:items-center ds:pointer-events-none ds:[&_svg]:size-4';\n\n// Inline-start wrapper for the calculate icon button. Positioned over the\n// reserved `ps-10` gutter; the button itself remains pointer-interactive.\nconst adornmentStart =\n 'ds:absolute ds:inset-y-0 ds:start-0 ds:ps-1 ds:flex ds:items-center';\n\nconst captionBase = 'type-body-sm ds:mt-[var(--spacing-xs)]';\n\n/** Uppercase, strip non-[A-Z0-9], normalise full-width / Eastern-Arabic\n * digits, and cap at 16 characters. */\nfunction normaliseFiscalCode(input: string): string {\n return (\n input\n .normalize('NFKC')\n // Eastern-Arabic & Extended-Arabic-Indic digits → ASCII (otp-input precedent).\n .replace(/[٠-٩]/g, (c) => String(c.charCodeAt(0) - 0x0660))\n .replace(/[۰-۹]/g, (c) => String(c.charCodeAt(0) - 0x06f0))\n .toUpperCase()\n .replace(/[^A-Z0-9]/g, '')\n .slice(0, MAX_LEN)\n );\n}\n\n/** Count [A-Z0-9] characters before `position` in the RAW (pre-normalise)\n * string, so the caret can be restored after re-normalising. */\nfunction countKeptBefore(str: string, position: number): number {\n let kept = 0;\n for (let i = 0; i < position && i < str.length; i += 1) {\n const c = str[i];\n if (\n (c >= '0' && c <= '9') ||\n (c >= 'A' && c <= 'Z') ||\n (c >= 'a' && c <= 'z')\n ) {\n kept += 1;\n }\n }\n return kept;\n}\n\nexport const FiscalCodeInput = forwardRef<\n HTMLInputElement,\n FiscalCodeInputProps\n>(function FiscalCodeInput(\n {\n value,\n defaultValue,\n onChange,\n size = 'md',\n tone = 'default',\n validateOn = 'blur',\n showError,\n errorMessage,\n disabled,\n readOnly,\n required,\n placeholder,\n showFormatHint = true,\n calculateFrom,\n id,\n name,\n className,\n 'aria-label': ariaLabel,\n },\n ref,\n) {\n const { t } = useTranslation();\n const ctx = useFormField();\n const inFormField = useContext(FormFieldContext) !== null;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string>(() =>\n normaliseFiscalCode(defaultValue ?? ''),\n );\n const currentValue = isControlled\n ? normaliseFiscalCode(value ?? '')\n : internalValue;\n\n const [blurred, setBlurred] = useState(false);\n const composingRef = useRef(false);\n const pendingCaretRef = useRef<number | null>(null);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const composedRef = composeRefs(ref, inputRef);\n\n const reactId = useId();\n const generatedHintId = `${reactId}-hint`;\n const generatedStatusId = `${reactId}-status`;\n const generatedErrorId = `${reactId}-error`;\n\n // DEV-time guard: a standalone field with no visible label needs an\n // aria-label, mirroring Button's icon-only guard. No-op in production.\n useEffect(() => {\n const isDev =\n typeof import.meta !== 'undefined' &&\n typeof import.meta.env !== 'undefined' &&\n import.meta.env.DEV === true;\n if (isDev && !inFormField && !ariaLabel) {\n // eslint-disable-next-line no-console\n console.warn(\n '[FiscalCodeInput] No FormField/label and no `aria-label` — the field has no accessible name. Wrap it in a FormField or pass `aria-label`.',\n );\n }\n }, [inFormField, ariaLabel]);\n\n const reason = useMemo(\n () => classifyCodiceFiscale(currentValue),\n [currentValue],\n );\n const isComplete = currentValue.length === MAX_LEN;\n const isValid = reason === 'valid';\n\n const effectiveDisabled =\n (inFormField ? ctx.disabled : false) || Boolean(disabled);\n const effectiveRequired =\n (inFormField ? ctx.required : false) || Boolean(required);\n\n // Whether the component's OWN feedback should surface.\n //\n // `showError` is a controlled escape hatch (e.g. the server rejected the\n // code on submit): it forces the error regardless of completeness or the\n // client's own verdict. Otherwise the client only flags a COMPLETE\n // (16-char) code that fails its structural/checksum check — never a\n // partially-typed code — and `validateOn` governs the trigger.\n const ownFeedbackActive =\n !readOnly &&\n (Boolean(showError) ||\n (isComplete &&\n !isValid &&\n (validateOn === 'change' || (validateOn === 'blur' && blurred))));\n\n // When inside a FormField with its own error, FormField's role=alert wins\n // and this component stays silent (no double message / duplicate\n // aria-describedby target).\n const formFieldHasError = inFormField && ctx.invalid;\n const showOwnError = ownFeedbackActive && !formFieldHasError;\n\n const effectiveInvalid = formFieldHasError || showOwnError;\n const effectiveTone: 'default' | 'error' =\n effectiveInvalid || tone === 'error' ? 'error' : 'default';\n\n const ownErrorText = useMemo(() => {\n if (errorMessage) return errorMessage;\n if (reason === 'badChecksum') return t('inputs.fiscalCode.errorChecksum');\n if (reason === 'badFormat') return t('inputs.fiscalCode.errorFormat');\n return t('inputs.fiscalCode.errorIncomplete');\n }, [errorMessage, reason, t]);\n\n // Standalone (no FormField) describedby: format hint + the live region that\n // is currently surfacing. When the component is showing its OWN error we\n // point at the assertive error node; otherwise at the polite status node\n // (valid affordance / typing progress). Inside a FormField, the FormField\n // owns describedBy entirely.\n const wantsHint = !inFormField && showFormatHint && !readOnly;\n const standaloneDescribedBy = inFormField\n ? undefined\n : [\n wantsHint ? generatedHintId : null,\n showOwnError ? generatedErrorId : generatedStatusId,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n const describedBy = inFormField\n ? ctx.describedBy || undefined\n : standaloneDescribedBy;\n\n const inputId = id ?? ctx.id;\n\n const emit = useCallback(\n (next: string) => {\n const nextReason = classifyCodiceFiscale(next);\n onChange?.(next, {\n isValid: nextReason === 'valid',\n isComplete: next.length === MAX_LEN,\n reason: nextReason,\n });\n },\n [onChange],\n );\n\n const commit = useCallback(\n (next: string) => {\n if (!isControlled) setInternalValue(next);\n emit(next);\n },\n [isControlled, emit],\n );\n\n // Restore caret after a normalising re-render that may have changed the\n // string length (mid-string edit / paste). Mirrors phone-input's caret\n // discipline.\n useIsomorphicLayoutEffect(() => {\n if (pendingCaretRef.current == null) return;\n const pos = pendingCaretRef.current;\n pendingCaretRef.current = null;\n const node = inputRef.current;\n if (node && document.activeElement === node) {\n // Re-clamp against the value the input ACTUALLY rendered this pass, not\n // the value we committed: a controlled parent may transform or reject\n // the emitted change so the echoed value diverges. Clamping to the live\n // DOM length keeps the caret inside the rendered string.\n const safePos = Math.min(pos, node.value.length);\n node.setSelectionRange(safePos, safePos);\n }\n });\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (readOnly) return;\n // Don't re-mask mid-IME composition or the user loses input; the\n // uppercase mask is re-applied on composition end / next change.\n if (composingRef.current) return;\n const target = event.target;\n const raw = target.value;\n const caret = target.selectionStart ?? raw.length;\n const keptBefore = countKeptBefore(raw, caret);\n const next = normaliseFiscalCode(raw);\n pendingCaretRef.current = Math.min(keptBefore, next.length);\n commit(next);\n };\n\n const handleCompositionStart = () => {\n composingRef.current = true;\n };\n\n const handleCompositionEnd = (event: CompositionEvent<HTMLInputElement>) => {\n composingRef.current = false;\n if (readOnly) return;\n const next = normaliseFiscalCode(event.currentTarget.value);\n pendingCaretRef.current = next.length;\n commit(next);\n };\n\n const handlePaste = (event: ClipboardEvent<HTMLInputElement>) => {\n if (readOnly) return;\n const text = event.clipboardData.getData('text');\n event.preventDefault();\n const node = inputRef.current;\n const selStart = node?.selectionStart ?? currentValue.length;\n const selEnd = node?.selectionEnd ?? currentValue.length;\n const cleaned = normaliseFiscalCode(text);\n const before = currentValue.slice(0, selStart);\n const after = currentValue.slice(selEnd);\n const next = normaliseFiscalCode(before + cleaned + after);\n pendingCaretRef.current = Math.min((before + cleaned).length, next.length);\n commit(next);\n };\n\n const handleBlur = () => {\n if (validateOn === 'blur') setBlurred(true);\n };\n\n // Opt-in derivation. Compute the CF from the supplied identity data and\n // route it through the SAME commit path as typing/paste so the controlled\n // / uncontrolled contract, the validation verdict, and the live-region\n // announcement all behave identically to a user-entered value.\n const handleCalculate = () => {\n if (!calculateFrom || readOnly || effectiveDisabled) return;\n let computed: string;\n try {\n computed = calculateCodiceFiscale(calculateFrom);\n } catch {\n // Bad identity data (unparseable date / malformed Belfiore code) is a\n // caller error, not a user action — fail quietly rather than throwing\n // out of an event handler and leave the field untouched.\n return;\n }\n const next = normaliseFiscalCode(computed);\n // After a successful derivation the value is complete: let blur-gated\n // validation surface immediately (the derived code is valid by\n // construction, so this confirms rather than errors).\n if (validateOn === 'blur') setBlurred(true);\n commit(next);\n inputRef.current?.focus();\n };\n\n const agentHandle = useMemo<FiscalCodeInputHandle>(\n () => ({\n getValue: () => currentValue,\n setValue: (next) => {\n const normalised = normaliseFiscalCode(next);\n if (!isControlled) setInternalValue(normalised);\n emit(normalised);\n inputRef.current?.focus();\n },\n clear: () => {\n if (!isControlled) setInternalValue('');\n emit('');\n inputRef.current?.focus();\n },\n focus: () => inputRef.current?.focus(),\n isValid: () => classifyCodiceFiscale(currentValue) === 'valid',\n }),\n [currentValue, isControlled, emit],\n );\n useAgentRegistration(fiscalCodeInputAgent, agentHandle, id);\n\n const resolvedPlaceholder = placeholder ?? t('inputs.fiscalCode.placeholder');\n\n // Polite status text (role=status). Carries ONLY non-error affordances:\n // the valid confirmation and, while typing an incomplete code, the live\n // character-count progress. Errors the user must act on are announced\n // assertively via the separate role=alert node below — never here.\n // Gated on !inFormField (matching showEndIcon): inside a FormField the\n // FormField owns every helper/status/error slot, so this stays silent.\n const statusMessage =\n readOnly || inFormField\n ? ''\n : isValid\n ? t('inputs.fiscalCode.valid')\n : currentValue.length > 0 && !isComplete\n ? t('inputs.fiscalCode.charactersEntered', {\n count: currentValue.length,\n })\n : '';\n\n // Assertive error text (role=alert) — surfaces only the component's own\n // actionable validation error, mirroring FormField's error <p>.\n const errorText = showOwnError ? ownErrorText : '';\n\n const showEndIcon = !readOnly && (showOwnError || (isValid && !inFormField));\n\n // Opt-in calculate affordance: only when identity data is supplied AND the\n // field is editable. Disabled/read-only fields render nothing extra.\n const showCalculate =\n Boolean(calculateFrom) && !readOnly && !effectiveDisabled;\n\n return (\n <div\n className=\"ds:flex ds:flex-col\"\n data-component=\"fiscal-code-input\"\n data-component-id={id}\n >\n <div\n data-slot=\"fiscal-code-input\"\n className={wrapperVariants({ size, tone: effectiveTone, className })}\n >\n {showCalculate ? (\n <span className={adornmentStart}>\n <IconButton\n type=\"button\"\n size=\"sm\"\n intent=\"ghost\"\n icon={<Calculator />}\n aria-label={t('inputs.fiscalCode.calculate')}\n onClick={handleCalculate}\n />\n </span>\n ) : null}\n <input\n ref={composedRef}\n id={inputId}\n name={name}\n // dir=\"ltr\": the codice fiscale glyphs render LTR even under an\n // RTL surrounding UI — a value-rendering concern, not a layout\n // direction violation (see inputVariants comment).\n dir=\"ltr\"\n type=\"text\"\n inputMode=\"text\"\n autoCapitalize=\"characters\"\n autoCorrect=\"off\"\n autoComplete=\"off\"\n spellCheck={false}\n maxLength={MAX_LEN}\n // Loose structural mirror: 15 [A-Z0-9] + a final letter control\n // char (value is always uppercased). The real position-class /\n // checksum rule is enforced in classifyCodiceFiscale; this native\n // pattern is only a non-JS fallback.\n pattern=\"[A-Z0-9]{15}[A-Z]\"\n value={currentValue}\n placeholder={resolvedPlaceholder}\n disabled={effectiveDisabled}\n readOnly={readOnly}\n aria-label={ariaLabel}\n aria-describedby={describedBy}\n aria-invalid={effectiveInvalid || undefined}\n aria-required={effectiveRequired || undefined}\n onChange={handleChange}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n onPaste={handlePaste}\n onBlur={handleBlur}\n className={inputVariants({\n size,\n hasStart: showCalculate,\n hasEnd: showEndIcon,\n })}\n />\n {showEndIcon ? (\n <span\n aria-hidden=\"true\"\n className={`${adornmentEnd} ${\n showOwnError ? 'ds:text-destructive' : 'ds:text-success'\n }`}\n >\n {showOwnError ? <AlertCircle /> : <CheckCircle2 />}\n </span>\n ) : null}\n </div>\n\n {wantsHint ? (\n <p\n id={generatedHintId}\n className={`${captionBase} ds:text-muted-foreground`}\n >\n {t('inputs.fiscalCode.formatHint')}\n </p>\n ) : null}\n\n {/* Polite live region (role=status): announces the valid affordance\n and the typing-progress count as TEXT, satisfying 1.4.1 (never\n colour-only). Never carries an actionable error — that goes to the\n assertive node below, mirroring the kit's input-error convention. */}\n <p\n id={generatedStatusId}\n role=\"status\"\n aria-live=\"polite\"\n className={`${captionBase} ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ${\n isValid ? 'ds:text-success' : 'ds:text-muted-foreground'\n } ${statusMessage ? '' : 'ds:sr-only'}`}\n >\n {statusMessage ? (\n <>\n {isValid ? (\n <CheckCircle2\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:shrink-0\"\n />\n ) : null}\n <span>{statusMessage}</span>\n </>\n ) : null}\n </p>\n\n {/* Assertive error region (role=alert): a validation error the user\n must correct is announced assertively, mirroring FormField's error\n <p> (form-field.tsx). Rendered only when the component owns the\n error — inside a FormField, FormField's role=alert wins. */}\n {errorText ? (\n <p\n id={generatedErrorId}\n role=\"alert\"\n className={`${captionBase} ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ds:text-destructive`}\n >\n <AlertCircle aria-hidden=\"true\" className=\"ds:size-4 ds:shrink-0\" />\n <span>{errorText}</span>\n </p>\n ) : null}\n </div>\n );\n});\n\nFiscalCodeInput.displayName = 'FiscalCodeInput';\n\nexport { wrapperVariants as fiscalCodeWrapperVariants };\n"],"names":["__iconNode","Calculator","createLucideIcon","fiscalCodeInputAgent","handle","args","LETTER_POSITIONS","DIGIT_POSITIONS","ODD_MAP","EVEN_MAP","REMAINDER_TO_CONTROL","hasValidStructure","code","i","ch","isDigit","computeControlChar","first15","sum","classifyCodiceFiscale","raw","isValidCodiceFiscale","VOWELS","MONTH_LETTERS","foldToLetters","input","consonantsOf","letters","c","vowelsOf","surnameCode","surname","nameCode","name","cons","toDate","birthDate","d","pad2","n","birthCode","sex","yy","monthLetter","day","calculateCodiceFiscale","belfioreCode","belfiore","MAX_LEN","wrapperVariants","cva","INPUT_SURFACE_CHROME","INPUT_SURFACE_HEIGHT","INPUT_SURFACE_TONE","inputVariants","INPUT_SURFACE_TEXT","adornmentEnd","adornmentStart","captionBase","normaliseFiscalCode","countKeptBefore","str","position","kept","FiscalCodeInput","forwardRef","value","defaultValue","onChange","size","tone","validateOn","showError","errorMessage","disabled","readOnly","required","placeholder","showFormatHint","calculateFrom","id","className","ariaLabel","ref","t","useTranslation","ctx","useFormField","inFormField","useContext","FormFieldContext","isControlled","internalValue","setInternalValue","useState","currentValue","blurred","setBlurred","composingRef","useRef","pendingCaretRef","inputRef","composedRef","composeRefs","reactId","useId","generatedHintId","generatedStatusId","generatedErrorId","useEffect","reason","useMemo","isComplete","isValid","effectiveDisabled","effectiveRequired","ownFeedbackActive","formFieldHasError","showOwnError","effectiveInvalid","effectiveTone","ownErrorText","wantsHint","standaloneDescribedBy","describedBy","inputId","emit","useCallback","next","nextReason","commit","useIsomorphicLayoutEffect","pos","node","safePos","handleChange","event","target","caret","keptBefore","handleCompositionStart","handleCompositionEnd","handlePaste","text","selStart","selEnd","cleaned","before","after","handleBlur","handleCalculate","computed","_a","agentHandle","normalised","useAgentRegistration","resolvedPlaceholder","statusMessage","errorText","showEndIcon","showCalculate","jsxs","jsx","IconButton","AlertCircle","CheckCircle2","Fragment"],"mappings":"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","x_google_ignoreList":[0]}