@alfadocs/ui-kit-debug 1.31.0 → 1.33.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 (310) hide show
  1. package/dist/_chunks/{agenda-card-pdN49pMu.js → agenda-card-DVz3jwTf.js} +2 -2
  2. package/dist/_chunks/{agenda-card-pdN49pMu.js.map → agenda-card-DVz3jwTf.js.map} +1 -1
  3. package/dist/_chunks/{agenda-tray-BweO8pDo.js → agenda-tray-1oDWCJdB.js} +2 -2
  4. package/dist/_chunks/{agenda-tray-BweO8pDo.js.map → agenda-tray-1oDWCJdB.js.map} +1 -1
  5. package/dist/_chunks/{ai-prompt-input-CrHr-5H8.js → ai-prompt-input-Dt7tpCBh.js} +2 -2
  6. package/dist/_chunks/{ai-prompt-input-CrHr-5H8.js.map → ai-prompt-input-Dt7tpCBh.js.map} +1 -1
  7. package/dist/_chunks/{alia-sidebar-BWcWZivN.js → alia-sidebar-D18kp3p9.js} +3 -3
  8. package/dist/_chunks/{alia-sidebar-BWcWZivN.js.map → alia-sidebar-D18kp3p9.js.map} +1 -1
  9. package/dist/_chunks/{anamnesis-summary-rows-DMO3MWSt.js → anamnesis-summary-rows-BYgyp_i2.js} +6 -6
  10. package/dist/_chunks/{anamnesis-summary-rows-DMO3MWSt.js.map → anamnesis-summary-rows-BYgyp_i2.js.map} +1 -1
  11. package/dist/_chunks/{appointment-card-CvUFFEdS.js → appointment-card-D-oj_ugh.js} +2 -2
  12. package/dist/_chunks/{appointment-card-CvUFFEdS.js.map → appointment-card-D-oj_ugh.js.map} +1 -1
  13. package/dist/_chunks/{appointment-timeline-DsMZY7U9.js → appointment-timeline-CymGHyIP.js} +2 -2
  14. package/dist/_chunks/{appointment-timeline-DsMZY7U9.js.map → appointment-timeline-CymGHyIP.js.map} +1 -1
  15. package/dist/_chunks/{appointment-tray-Z2GaOIYQ.js → appointment-tray-DCk8gHod.js} +2 -2
  16. package/dist/_chunks/{appointment-tray-Z2GaOIYQ.js.map → appointment-tray-DCk8gHod.js.map} +1 -1
  17. package/dist/_chunks/{audio-recorder-DXG6LTtO.js → audio-recorder-11wClczr.js} +2 -2
  18. package/dist/_chunks/{audio-recorder-DXG6LTtO.js.map → audio-recorder-11wClczr.js.map} +1 -1
  19. package/dist/_chunks/{avatar-BNQNhoyL.js → avatar-CkDeQOSI.js} +37 -37
  20. package/dist/_chunks/avatar-CkDeQOSI.js.map +1 -0
  21. package/dist/_chunks/{balance-badge-cell-CX6b0ML4.js → balance-badge-cell-DhBtFRoW.js} +4 -4
  22. package/dist/_chunks/{balance-badge-cell-CX6b0ML4.js.map → balance-badge-cell-DhBtFRoW.js.map} +1 -1
  23. package/dist/_chunks/{bishop-score-CJUVBfAu.js → bishop-score-CAl7C5hm.js} +2 -2
  24. package/dist/_chunks/{bishop-score-CJUVBfAu.js.map → bishop-score-CAl7C5hm.js.map} +1 -1
  25. package/dist/_chunks/{bmi-calculator-CcH6upht.js → bmi-calculator-Dwkih9a4.js} +3 -3
  26. package/dist/_chunks/{bmi-calculator-CcH6upht.js.map → bmi-calculator-Dwkih9a4.js.map} +1 -1
  27. package/dist/_chunks/{booking-jGzRUETo.js → booking-BqkEtsKx.js} +777 -747
  28. package/dist/_chunks/{booking-jGzRUETo.js.map → booking-BqkEtsKx.js.map} +1 -1
  29. package/dist/_chunks/{calculator-dialog-12d3Sxaz.js → calculator-dialog-C0ixc3SU.js} +2 -2
  30. package/dist/_chunks/{calculator-dialog-12d3Sxaz.js.map → calculator-dialog-C0ixc3SU.js.map} +1 -1
  31. package/dist/_chunks/{calendar-BNQKpxhE.js → calendar-Dgvl5L4T.js} +2 -2
  32. package/dist/_chunks/{calendar-BNQKpxhE.js.map → calendar-Dgvl5L4T.js.map} +1 -1
  33. package/dist/_chunks/{calendar-workspace-Dy1jHBvG.js → calendar-workspace-BX-zDyVR.js} +14 -14
  34. package/dist/_chunks/{calendar-workspace-Dy1jHBvG.js.map → calendar-workspace-BX-zDyVR.js.map} +1 -1
  35. package/dist/_chunks/{care-plan-card-CQVboTn1.js → care-plan-card-CZW476Kg.js} +2 -2
  36. package/dist/_chunks/{care-plan-card-CQVboTn1.js.map → care-plan-card-CZW476Kg.js.map} +1 -1
  37. package/dist/_chunks/{care-plan-entry-card-jxHkzez5.js → care-plan-entry-card-BMUYagEw.js} +2 -2
  38. package/dist/_chunks/{care-plan-entry-card-jxHkzez5.js.map → care-plan-entry-card-BMUYagEw.js.map} +1 -1
  39. package/dist/_chunks/{chat-message-DBQu10rs.js → chat-message-C-8UU2av.js} +2 -2
  40. package/dist/_chunks/{chat-message-DBQu10rs.js.map → chat-message-C-8UU2av.js.map} +1 -1
  41. package/dist/_chunks/{clinical-note-card-yCTR9DB6.js → clinical-note-card-D2WTV2CO.js} +2 -2
  42. package/dist/_chunks/{clinical-note-card-yCTR9DB6.js.map → clinical-note-card-D2WTV2CO.js.map} +1 -1
  43. package/dist/_chunks/{data-table-DB5BiVQ0.js → data-table-DC96JJIq.js} +2 -2
  44. package/dist/_chunks/{data-table-DB5BiVQ0.js.map → data-table-DC96JJIq.js.map} +1 -1
  45. package/dist/_chunks/{dependent-selector-cJlJFAKD.js → dependent-selector-yTKKsuc9.js} +2 -2
  46. package/dist/_chunks/{dependent-selector-cJlJFAKD.js.map → dependent-selector-yTKKsuc9.js.map} +1 -1
  47. package/dist/_chunks/{dialog-UbKJCi1X.js → dialog-BJiLqhx6.js} +54 -46
  48. package/dist/_chunks/dialog-BJiLqhx6.js.map +1 -0
  49. package/dist/_chunks/{document-preview-CDb-n_W7.js → document-preview-BrhMHNh8.js} +2 -2
  50. package/dist/_chunks/{document-preview-CDb-n_W7.js.map → document-preview-BrhMHNh8.js.map} +1 -1
  51. package/dist/_chunks/{due-date-calculator-BtgWeFqp.js → due-date-calculator-CxgK8vzt.js} +3 -3
  52. package/dist/_chunks/{due-date-calculator-BtgWeFqp.js.map → due-date-calculator-CxgK8vzt.js.map} +1 -1
  53. package/dist/_chunks/{entity-summary-B_vO5Ur4.js → entity-summary-5o768XLU.js} +2 -2
  54. package/dist/_chunks/{entity-summary-B_vO5Ur4.js.map → entity-summary-5o768XLU.js.map} +1 -1
  55. package/dist/_chunks/{file-manager-Cd8V9IcZ.js → file-manager-CI2Qn8qW.js} +3 -3
  56. package/dist/_chunks/{file-manager-Cd8V9IcZ.js.map → file-manager-CI2Qn8qW.js.map} +1 -1
  57. package/dist/_chunks/{gestational-age-calculator-KdMg9z9H.js → gestational-age-calculator-CZHVrERT.js} +4 -4
  58. package/dist/_chunks/{gestational-age-calculator-KdMg9z9H.js.map → gestational-age-calculator-CZHVrERT.js.map} +1 -1
  59. package/dist/_chunks/{link-cell-renderer-tWEOv3Sc.js → link-cell-renderer-BEpMNtAa.js} +3 -3
  60. package/dist/_chunks/{link-cell-renderer-tWEOv3Sc.js.map → link-cell-renderer-BEpMNtAa.js.map} +1 -1
  61. package/dist/_chunks/{marketplace-app-shell-C4AjQmvz.js → marketplace-app-shell-CK_ND8Tr.js} +2 -2
  62. package/dist/_chunks/{marketplace-app-shell-C4AjQmvz.js.map → marketplace-app-shell-CK_ND8Tr.js.map} +1 -1
  63. package/dist/_chunks/{message-card-D8GB4FdF.js → message-card-BUMv16un.js} +2 -2
  64. package/dist/_chunks/{message-card-D8GB4FdF.js.map → message-card-BUMv16un.js.map} +1 -1
  65. package/dist/_chunks/{message-tray-CGIRQjx5.js → message-tray-0zsv27xX.js} +2 -2
  66. package/dist/_chunks/{message-tray-CGIRQjx5.js.map → message-tray-0zsv27xX.js.map} +1 -1
  67. package/dist/_chunks/{muscle-scheme-BSJsI4-I.js → muscle-scheme-UVz_x4iE.js} +2 -2
  68. package/dist/_chunks/{muscle-scheme-BSJsI4-I.js.map → muscle-scheme-UVz_x4iE.js.map} +1 -1
  69. package/dist/_chunks/{notes-panel-am6e-Lwh.js → notes-panel-C4G-mhZ9.js} +3 -3
  70. package/dist/_chunks/{notes-panel-am6e-Lwh.js.map → notes-panel-C4G-mhZ9.js.map} +1 -1
  71. package/dist/_chunks/{operator-hero-BnFv-Uef.js → operator-hero-D7-iiFQ9.js} +2 -2
  72. package/dist/_chunks/{operator-hero-BnFv-Uef.js.map → operator-hero-D7-iiFQ9.js.map} +1 -1
  73. package/dist/_chunks/{optical-prescription-BvwuqTpl.js → optical-prescription-DUJOhKz_.js} +2 -2
  74. package/dist/_chunks/{optical-prescription-BvwuqTpl.js.map → optical-prescription-DUJOhKz_.js.map} +1 -1
  75. package/dist/_chunks/{patient-details-CdfursHt.js → patient-details-BGiawUHd.js} +3 -3
  76. package/dist/_chunks/{patient-details-CdfursHt.js.map → patient-details-BGiawUHd.js.map} +1 -1
  77. package/dist/_chunks/{patient-summary-card-C9WBwct-.js → patient-summary-card--CT_gbaQ.js} +2 -2
  78. package/dist/_chunks/{patient-summary-card-C9WBwct-.js.map → patient-summary-card--CT_gbaQ.js.map} +1 -1
  79. package/dist/_chunks/{periodontal-diagnosis-HrFsVi-C.js → periodontal-diagnosis-lEwA8wqX.js} +3 -3
  80. package/dist/_chunks/{periodontal-diagnosis-HrFsVi-C.js.map → periodontal-diagnosis-lEwA8wqX.js.map} +1 -1
  81. package/dist/_chunks/{practice-profile-hero-YQ7h2K4o.js → practice-profile-hero-DQyDvpJL.js} +2 -2
  82. package/dist/_chunks/{practice-profile-hero-YQ7h2K4o.js.map → practice-profile-hero-DQyDvpJL.js.map} +1 -1
  83. package/dist/_chunks/{practice-results-CxIsU2YO.js → practice-results-DjEzPgAK.js} +2 -2
  84. package/dist/_chunks/{practice-results-CxIsU2YO.js.map → practice-results-DjEzPgAK.js.map} +1 -1
  85. package/dist/_chunks/{pregnancy-dating-m-c05DOI.js → pregnancy-dating-n5j5dAKy.js} +4 -4
  86. package/dist/_chunks/{pregnancy-dating-m-c05DOI.js.map → pregnancy-dating-n5j5dAKy.js.map} +1 -1
  87. package/dist/_chunks/{pregnancy-weight-gain-CJwbs9W-.js → pregnancy-weight-gain-D5A8vPjj.js} +3 -3
  88. package/dist/_chunks/{pregnancy-weight-gain-CJwbs9W-.js.map → pregnancy-weight-gain-D5A8vPjj.js.map} +1 -1
  89. package/dist/_chunks/qr-code-DOJs4suh.js +750 -0
  90. package/dist/_chunks/qr-code-DOJs4suh.js.map +1 -0
  91. package/dist/_chunks/radio-DNRe6H_8.js +193 -0
  92. package/dist/_chunks/radio-DNRe6H_8.js.map +1 -0
  93. package/dist/_chunks/radio-group-DyVBgnA3.js +297 -0
  94. package/dist/_chunks/radio-group-DyVBgnA3.js.map +1 -0
  95. package/dist/_chunks/{radiograph-panel.agent-ByM9M3qm.js → radiograph-panel.agent-o4jwEJPC.js} +2 -2
  96. package/dist/_chunks/{radiograph-panel.agent-ByM9M3qm.js.map → radiograph-panel.agent-o4jwEJPC.js.map} +1 -1
  97. package/dist/_chunks/{rich-text-editor-VJATL1Tk.js → rich-text-editor-CQ7yZdG3.js} +2 -2
  98. package/dist/_chunks/{rich-text-editor-VJATL1Tk.js.map → rich-text-editor-CQ7yZdG3.js.map} +1 -1
  99. package/dist/_chunks/select-CLSUnKjF.js +520 -0
  100. package/dist/_chunks/select-CLSUnKjF.js.map +1 -0
  101. package/dist/_chunks/signature-request-vihDT8On.js +2232 -0
  102. package/dist/_chunks/signature-request-vihDT8On.js.map +1 -0
  103. package/dist/_chunks/{tabs-DqKtTIjZ.js → tabs-BnRaLT0y.js} +2 -2
  104. package/dist/_chunks/{tabs-DqKtTIjZ.js.map → tabs-BnRaLT0y.js.map} +1 -1
  105. package/dist/_chunks/{tasks-panel-DPCNaRko.js → tasks-panel-DQuaVvl5.js} +2 -2
  106. package/dist/_chunks/{tasks-panel-DPCNaRko.js.map → tasks-panel-DQuaVvl5.js.map} +1 -1
  107. package/dist/_chunks/{timeline-u-2t9t_M.js → timeline-Bs9Erxlo.js} +2 -2
  108. package/dist/_chunks/{timeline-u-2t9t_M.js.map → timeline-Bs9Erxlo.js.map} +1 -1
  109. package/dist/_chunks/{tooth-scheme-C9jssOmy.js → tooth-scheme-Qe7LO5Di.js} +2 -2
  110. package/dist/_chunks/{tooth-scheme-C9jssOmy.js.map → tooth-scheme-Qe7LO5Di.js.map} +1 -1
  111. package/dist/_chunks/{unit-converter-C6jMjqL9.js → unit-converter-BTgU50gk.js} +2 -2
  112. package/dist/_chunks/{unit-converter-C6jMjqL9.js.map → unit-converter-BTgU50gk.js.map} +1 -1
  113. package/dist/_chunks/{widget-picker-em4xGgv0.js → widget-picker-DvUkBemi.js} +2 -2
  114. package/dist/_chunks/{widget-picker-em4xGgv0.js.map → widget-picker-DvUkBemi.js.map} +1 -1
  115. package/dist/agent-catalog.json +316 -20
  116. package/dist/agent-i18n/en.json +18 -8
  117. package/dist/components/agenda-card/index.js +1 -1
  118. package/dist/components/agenda-tray/index.js +1 -1
  119. package/dist/components/ai-prompt-input/index.js +1 -1
  120. package/dist/components/appointment-card/index.js +2 -2
  121. package/dist/components/appointment-timeline/index.js +1 -1
  122. package/dist/components/audio-recorder/index.js +1 -1
  123. package/dist/components/avatar/avatar.d.ts +2 -0
  124. package/dist/components/avatar/avatar.d.ts.map +1 -1
  125. package/dist/components/avatar/index.js +1 -1
  126. package/dist/components/bishop-score/index.js +1 -1
  127. package/dist/components/bmi-calculator/index.js +1 -1
  128. package/dist/components/booking/booking.d.ts.map +1 -1
  129. package/dist/components/booking/index.js +1 -1
  130. package/dist/components/calculator-dialog/index.js +1 -1
  131. package/dist/components/calendar/index.js +1 -1
  132. package/dist/components/care-plan-card/index.js +1 -1
  133. package/dist/components/care-plan-entry-card/index.js +1 -1
  134. package/dist/components/chat-message/index.js +1 -1
  135. package/dist/components/clinical-note-card/index.js +1 -1
  136. package/dist/components/data-table/index.js +2 -2
  137. package/dist/components/dependent-selector/index.js +1 -1
  138. package/dist/components/dialog/dialog.d.ts +9 -0
  139. package/dist/components/dialog/dialog.d.ts.map +1 -1
  140. package/dist/components/dialog/index.js +1 -1
  141. package/dist/components/document-preview/index.js +1 -1
  142. package/dist/components/due-date-calculator/index.js +1 -1
  143. package/dist/components/entity-summary/index.js +1 -1
  144. package/dist/components/file-manager/index.js +1 -1
  145. package/dist/components/gestational-age-calculator/index.js +1 -1
  146. package/dist/components/message-card/index.js +1 -1
  147. package/dist/components/message-tray/index.js +1 -1
  148. package/dist/components/muscle-scheme/index.js +1 -1
  149. package/dist/components/notes-panel/index.js +1 -1
  150. package/dist/components/operator-hero/index.js +1 -1
  151. package/dist/components/optical-prescription/index.js +1 -1
  152. package/dist/components/patient-details/index.js +1 -1
  153. package/dist/components/patient-summary-card/index.js +1 -1
  154. package/dist/components/patient-table/index.js +1 -1
  155. package/dist/components/periodontal-diagnosis/index.js +1 -1
  156. package/dist/components/practice-profile-hero/index.js +1 -1
  157. package/dist/components/practice-results/index.js +1 -1
  158. package/dist/components/pregnancy-dating/index.js +1 -1
  159. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  160. package/dist/components/qr-code/index.js +1 -1
  161. package/dist/components/qr-code/qr-encode.d.ts +14 -16
  162. package/dist/components/qr-code/qr-encode.d.ts.map +1 -1
  163. package/dist/components/radio/index.js +1 -1
  164. package/dist/components/radio-group/index.js +2 -2
  165. package/dist/components/radio-group/radio-group-context.d.ts +4 -1
  166. package/dist/components/radio-group/radio-group-context.d.ts.map +1 -1
  167. package/dist/components/radio-group/radio-group.agent.d.ts.map +1 -1
  168. package/dist/components/radio-group/radio-group.d.ts +13 -1
  169. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  170. package/dist/components/radio-group/radio.d.ts +24 -1
  171. package/dist/components/radio-group/radio.d.ts.map +1 -1
  172. package/dist/components/radiograph-panel/index.js +1 -1
  173. package/dist/components/rich-text-editor/index.js +1 -1
  174. package/dist/components/select/index.js +1 -1
  175. package/dist/components/select/select.agent.d.ts.map +1 -1
  176. package/dist/components/select/select.d.ts +33 -0
  177. package/dist/components/select/select.d.ts.map +1 -1
  178. package/dist/components/skeleton-scheme/index.js +1 -1
  179. package/dist/components/tabs/index.js +1 -1
  180. package/dist/components/tasks-panel/index.js +1 -1
  181. package/dist/components/timeline/index.js +1 -1
  182. package/dist/components/tooth-scheme/index.js +1 -1
  183. package/dist/components/unit-converter/index.js +1 -1
  184. package/dist/components/widget-picker/index.js +1 -1
  185. package/dist/i18n/locales/ar.d.ts +68 -0
  186. package/dist/i18n/locales/ar.d.ts.map +1 -1
  187. package/dist/i18n/locales/ar.js +69 -1
  188. package/dist/i18n/locales/ar.js.map +1 -1
  189. package/dist/i18n/locales/de.d.ts +68 -0
  190. package/dist/i18n/locales/de.d.ts.map +1 -1
  191. package/dist/i18n/locales/de.js +71 -1
  192. package/dist/i18n/locales/de.js.map +1 -1
  193. package/dist/i18n/locales/el.d.ts +68 -0
  194. package/dist/i18n/locales/el.d.ts.map +1 -1
  195. package/dist/i18n/locales/el.js +69 -1
  196. package/dist/i18n/locales/el.js.map +1 -1
  197. package/dist/i18n/locales/en.d.ts +68 -0
  198. package/dist/i18n/locales/en.d.ts.map +1 -1
  199. package/dist/i18n/locales/en.js +69 -1
  200. package/dist/i18n/locales/en.js.map +1 -1
  201. package/dist/i18n/locales/es.d.ts +68 -0
  202. package/dist/i18n/locales/es.d.ts.map +1 -1
  203. package/dist/i18n/locales/es.js +69 -1
  204. package/dist/i18n/locales/es.js.map +1 -1
  205. package/dist/i18n/locales/fr.d.ts +68 -0
  206. package/dist/i18n/locales/fr.d.ts.map +1 -1
  207. package/dist/i18n/locales/fr.js +69 -1
  208. package/dist/i18n/locales/fr.js.map +1 -1
  209. package/dist/i18n/locales/hi.d.ts +68 -0
  210. package/dist/i18n/locales/hi.d.ts.map +1 -1
  211. package/dist/i18n/locales/hi.js +69 -1
  212. package/dist/i18n/locales/hi.js.map +1 -1
  213. package/dist/i18n/locales/it.d.ts +68 -0
  214. package/dist/i18n/locales/it.d.ts.map +1 -1
  215. package/dist/i18n/locales/it.js +69 -1
  216. package/dist/i18n/locales/it.js.map +1 -1
  217. package/dist/i18n/locales/ja.d.ts +68 -0
  218. package/dist/i18n/locales/ja.d.ts.map +1 -1
  219. package/dist/i18n/locales/ja.js +69 -1
  220. package/dist/i18n/locales/ja.js.map +1 -1
  221. package/dist/i18n/locales/nl.d.ts +68 -0
  222. package/dist/i18n/locales/nl.d.ts.map +1 -1
  223. package/dist/i18n/locales/nl.js +69 -1
  224. package/dist/i18n/locales/nl.js.map +1 -1
  225. package/dist/i18n/locales/pl.d.ts +68 -0
  226. package/dist/i18n/locales/pl.d.ts.map +1 -1
  227. package/dist/i18n/locales/pl.js +69 -1
  228. package/dist/i18n/locales/pl.js.map +1 -1
  229. package/dist/i18n/locales/pt.d.ts +68 -0
  230. package/dist/i18n/locales/pt.d.ts.map +1 -1
  231. package/dist/i18n/locales/pt.js +69 -1
  232. package/dist/i18n/locales/pt.js.map +1 -1
  233. package/dist/i18n/locales/ro.d.ts +68 -0
  234. package/dist/i18n/locales/ro.d.ts.map +1 -1
  235. package/dist/i18n/locales/ro.js +69 -1
  236. package/dist/i18n/locales/ro.js.map +1 -1
  237. package/dist/i18n/locales/ru.d.ts +68 -0
  238. package/dist/i18n/locales/ru.d.ts.map +1 -1
  239. package/dist/i18n/locales/ru.js +69 -1
  240. package/dist/i18n/locales/ru.js.map +1 -1
  241. package/dist/i18n/locales/sq.d.ts +68 -0
  242. package/dist/i18n/locales/sq.d.ts.map +1 -1
  243. package/dist/i18n/locales/sq.js +69 -1
  244. package/dist/i18n/locales/sq.js.map +1 -1
  245. package/dist/i18n/locales/sv.d.ts +68 -0
  246. package/dist/i18n/locales/sv.d.ts.map +1 -1
  247. package/dist/i18n/locales/sv.js +69 -1
  248. package/dist/i18n/locales/sv.js.map +1 -1
  249. package/dist/i18n/locales/tr.d.ts +68 -0
  250. package/dist/i18n/locales/tr.d.ts.map +1 -1
  251. package/dist/i18n/locales/tr.js +69 -1
  252. package/dist/i18n/locales/tr.js.map +1 -1
  253. package/dist/i18n/locales/zh.d.ts +68 -0
  254. package/dist/i18n/locales/zh.d.ts.map +1 -1
  255. package/dist/i18n/locales/zh.js +69 -1
  256. package/dist/i18n/locales/zh.js.map +1 -1
  257. package/dist/index.js +57 -57
  258. package/dist/locales/ar.json +69 -1
  259. package/dist/locales/de.json +69 -1
  260. package/dist/locales/el.json +69 -1
  261. package/dist/locales/en.json +69 -1
  262. package/dist/locales/es.json +69 -1
  263. package/dist/locales/fr.json +69 -1
  264. package/dist/locales/hi.json +69 -1
  265. package/dist/locales/it.json +69 -1
  266. package/dist/locales/ja.json +69 -1
  267. package/dist/locales/nl.json +69 -1
  268. package/dist/locales/pl.json +69 -1
  269. package/dist/locales/pt.json +69 -1
  270. package/dist/locales/ro.json +69 -1
  271. package/dist/locales/ru.json +69 -1
  272. package/dist/locales/sq.json +69 -1
  273. package/dist/locales/sv.json +69 -1
  274. package/dist/locales/tr.json +69 -1
  275. package/dist/locales/zh.json +69 -1
  276. package/dist/patterns/alia-assistant/index.js +1 -1
  277. package/dist/patterns/anamnesis/index.js +1 -1
  278. package/dist/patterns/calendar/index.js +1 -1
  279. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  280. package/dist/patterns/signature-request/channel-meta.d.ts +27 -0
  281. package/dist/patterns/signature-request/channel-meta.d.ts.map +1 -0
  282. package/dist/patterns/signature-request/index.d.ts +1 -1
  283. package/dist/patterns/signature-request/index.d.ts.map +1 -1
  284. package/dist/patterns/signature-request/index.js +1 -1
  285. package/dist/patterns/signature-request/load-status.d.ts +13 -0
  286. package/dist/patterns/signature-request/load-status.d.ts.map +1 -0
  287. package/dist/patterns/signature-request/person-grid.d.ts +32 -0
  288. package/dist/patterns/signature-request/person-grid.d.ts.map +1 -0
  289. package/dist/patterns/signature-request/required-documents.d.ts +127 -0
  290. package/dist/patterns/signature-request/required-documents.d.ts.map +1 -0
  291. package/dist/patterns/signature-request/signature-history.d.ts +57 -0
  292. package/dist/patterns/signature-request/signature-history.d.ts.map +1 -0
  293. package/dist/patterns/signature-request/signature-outcome.d.ts +29 -0
  294. package/dist/patterns/signature-request/signature-outcome.d.ts.map +1 -0
  295. package/dist/patterns/signature-request/signature-request.d.ts +390 -26
  296. package/dist/patterns/signature-request/signature-request.d.ts.map +1 -1
  297. package/dist/tokens.css +1 -1
  298. package/package.json +3 -1
  299. package/dist/_chunks/avatar-BNQNhoyL.js.map +0 -1
  300. package/dist/_chunks/dialog-UbKJCi1X.js.map +0 -1
  301. package/dist/_chunks/qr-code-CPkEs5mG.js +0 -574
  302. package/dist/_chunks/qr-code-CPkEs5mG.js.map +0 -1
  303. package/dist/_chunks/radio-TWf9Q-mp.js +0 -108
  304. package/dist/_chunks/radio-TWf9Q-mp.js.map +0 -1
  305. package/dist/_chunks/radio-group-rXDJADzW.js +0 -175
  306. package/dist/_chunks/radio-group-rXDJADzW.js.map +0 -1
  307. package/dist/_chunks/select-Bi8zril7.js +0 -471
  308. package/dist/_chunks/select-Bi8zril7.js.map +0 -1
  309. package/dist/_chunks/signature-request-C-IsbkPf.js +0 -417
  310. package/dist/_chunks/signature-request-C-IsbkPf.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-code-DOJs4suh.js","sources":["../../src/components/qr-code/qr-code.agent.ts","../../node_modules/uqr/dist/index.mjs","../../src/components/qr-code/qr-encode.ts","../../src/components/qr-code/qr-code.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — QrCode. */\n/* */\n/* Presentational QR-code renderer. Pure presentation — registers the */\n/* canonical DOM hook and exposes the encoded `value` as read-only state */\n/* so an agent can confirm which destination a given code points at. No */\n/* actions/capabilities (a QR is scanned by a camera, not operated). */\n/* */\n/* By default the AlfaDocs mark is seated in the centre and the error- */\n/* correction level is auto-raised to \"H\" so the occluded centre still */\n/* decodes; the resolved level + logo state are surfaced on the root as */\n/* `data-ec` / `data-logo`. Consumers opt out with `logo={false}`. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\n\nexport const qrCodeAgent: AgentAdapter<string> = {\n id: 'qr-code',\n capabilities: [],\n state: {\n value: {\n type: 'string',\n descriptionKey: 'ui.agent.qrCode.state.value',\n description: 'The string (typically an https URL) encoded into the QR.',\n read: (handle) => handle,\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'qr-code',\n description: 'Marks the element as a kit QrCode renderer.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","var QrCodeDataType = /* @__PURE__ */ ((QrCodeDataType2) => {\n QrCodeDataType2[QrCodeDataType2[\"Border\"] = -1] = \"Border\";\n QrCodeDataType2[QrCodeDataType2[\"Data\"] = 0] = \"Data\";\n QrCodeDataType2[QrCodeDataType2[\"Function\"] = 1] = \"Function\";\n QrCodeDataType2[QrCodeDataType2[\"Position\"] = 2] = \"Position\";\n QrCodeDataType2[QrCodeDataType2[\"Timing\"] = 3] = \"Timing\";\n QrCodeDataType2[QrCodeDataType2[\"Alignment\"] = 4] = \"Alignment\";\n return QrCodeDataType2;\n})(QrCodeDataType || {});\n\nconst LOW = [0, 1];\nconst MEDIUM = [1, 0];\nconst QUARTILE = [2, 3];\nconst HIGH = [3, 2];\nconst EccMap = {\n L: LOW,\n M: MEDIUM,\n Q: QUARTILE,\n H: HIGH\n};\nconst NUMERIC_REGEX = /^\\d*$/;\nconst ALPHANUMERIC_REGEX = /^[A-Z0-9 $%*+./:-]*$/;\nconst ALPHANUMERIC_CHARSET = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:\";\nconst MIN_VERSION = 1;\nconst MAX_VERSION = 40;\nconst PENALTY_N1 = 3;\nconst PENALTY_N2 = 3;\nconst PENALTY_N3 = 40;\nconst PENALTY_N4 = 10;\nconst ECC_CODEWORDS_PER_BLOCK = [\n // Version: (note that index 0 is for padding, and is set to an illegal value)\n // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 Error correction level\n [-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n // Low\n [-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],\n // Medium\n [-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n // Quartile\n [-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]\n // High\n];\nconst NUM_ERROR_CORRECTION_BLOCKS = [\n // Version: (note that index 0 is for padding, and is set to an illegal value)\n // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 Error correction level\n [-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25],\n // Low\n [-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49],\n // Medium\n [-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68],\n // Quartile\n [-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81]\n // High\n];\nclass QrCode {\n /* -- Constructor (low level) and fields -- */\n // Creates a new QR Code with the given version number,\n // error correction level, data codeword bytes, and mask number.\n // This is a low-level API that most users should not use directly.\n // A mid-level API is the encodeSegments() function.\n constructor(version, ecc, dataCodewords, msk) {\n this.version = version;\n this.ecc = ecc;\n if (version < MIN_VERSION || version > MAX_VERSION)\n throw new RangeError(\"Version value out of range\");\n if (msk < -1 || msk > 7)\n throw new RangeError(\"Mask value out of range\");\n this.size = version * 4 + 17;\n const row = Array.from({ length: this.size }).fill(false);\n for (let i = 0; i < this.size; i++) {\n this.modules.push(row.slice());\n this.types.push(row.map(() => 0));\n }\n this.drawFunctionPatterns();\n const allCodewords = this.addEccAndInterleave(dataCodewords);\n this.drawCodewords(allCodewords);\n if (msk === -1) {\n let minPenalty = 1e9;\n for (let i = 0; i < 8; i++) {\n this.applyMask(i);\n this.drawFormatBits(i);\n const penalty = this.getPenaltyScore();\n if (penalty < minPenalty) {\n msk = i;\n minPenalty = penalty;\n }\n this.applyMask(i);\n }\n }\n this.mask = msk;\n this.applyMask(msk);\n this.drawFormatBits(msk);\n }\n /* -- Fields -- */\n // The width and height of this QR Code, measured in modules, between\n // 21 and 177 (inclusive). This is equal to version * 4 + 17.\n size;\n // The index of the mask pattern used in this QR Code, which is between 0 and 7 (inclusive).\n // Even if a QR Code is created with automatic masking requested (mask = -1),\n // the resulting object still has a mask value between 0 and 7.\n mask;\n // The modules of this QR Code (false = light, true = dark).\n // Immutable after constructor finishes. Accessed through getModule().\n modules = [];\n types = [];\n /* -- Accessor methods -- */\n // Returns the color of the module (pixel) at the given coordinates, which is false\n // for light or true for dark. The top left corner has the coordinates (x=0, y=0).\n // If the given coordinates are out of bounds, then false (light) is returned.\n getModule(x, y) {\n return x >= 0 && x < this.size && y >= 0 && y < this.size && this.modules[y][x];\n }\n /* -- Private helper methods for constructor: Drawing function modules -- */\n // Reads this object's version field, and draws and marks all function modules.\n drawFunctionPatterns() {\n for (let i = 0; i < this.size; i++) {\n this.setFunctionModule(6, i, i % 2 === 0, QrCodeDataType.Timing);\n this.setFunctionModule(i, 6, i % 2 === 0, QrCodeDataType.Timing);\n }\n this.drawFinderPattern(3, 3);\n this.drawFinderPattern(this.size - 4, 3);\n this.drawFinderPattern(3, this.size - 4);\n const alignPatPos = this.getAlignmentPatternPositions();\n const numAlign = alignPatPos.length;\n for (let i = 0; i < numAlign; i++) {\n for (let j = 0; j < numAlign; j++) {\n if (!(i === 0 && j === 0 || i === 0 && j === numAlign - 1 || i === numAlign - 1 && j === 0))\n this.drawAlignmentPattern(alignPatPos[i], alignPatPos[j]);\n }\n }\n this.drawFormatBits(0);\n this.drawVersion();\n }\n // Draws two copies of the format bits (with its own error correction code)\n // based on the given mask and this object's error correction level field.\n drawFormatBits(mask) {\n const data = this.ecc[1] << 3 | mask;\n let rem = data;\n for (let i = 0; i < 10; i++)\n rem = rem << 1 ^ (rem >>> 9) * 1335;\n const bits = (data << 10 | rem) ^ 21522;\n for (let i = 0; i <= 5; i++)\n this.setFunctionModule(8, i, getBit(bits, i));\n this.setFunctionModule(8, 7, getBit(bits, 6));\n this.setFunctionModule(8, 8, getBit(bits, 7));\n this.setFunctionModule(7, 8, getBit(bits, 8));\n for (let i = 9; i < 15; i++)\n this.setFunctionModule(14 - i, 8, getBit(bits, i));\n for (let i = 0; i < 8; i++)\n this.setFunctionModule(this.size - 1 - i, 8, getBit(bits, i));\n for (let i = 8; i < 15; i++)\n this.setFunctionModule(8, this.size - 15 + i, getBit(bits, i));\n this.setFunctionModule(8, this.size - 8, true);\n }\n // Draws two copies of the version bits (with its own error correction code),\n // based on this object's version field, iff 7 <= version <= 40.\n drawVersion() {\n if (this.version < 7)\n return;\n let rem = this.version;\n for (let i = 0; i < 12; i++)\n rem = rem << 1 ^ (rem >>> 11) * 7973;\n const bits = this.version << 12 | rem;\n for (let i = 0; i < 18; i++) {\n const color = getBit(bits, i);\n const a = this.size - 11 + i % 3;\n const b = Math.floor(i / 3);\n this.setFunctionModule(a, b, color);\n this.setFunctionModule(b, a, color);\n }\n }\n // Draws a 9*9 finder pattern including the border separator,\n // with the center module at (x, y). Modules can be out of bounds.\n drawFinderPattern(x, y) {\n for (let dy = -4; dy <= 4; dy++) {\n for (let dx = -4; dx <= 4; dx++) {\n const dist = Math.max(Math.abs(dx), Math.abs(dy));\n const xx = x + dx;\n const yy = y + dy;\n if (xx >= 0 && xx < this.size && yy >= 0 && yy < this.size)\n this.setFunctionModule(xx, yy, dist !== 2 && dist !== 4, QrCodeDataType.Position);\n }\n }\n }\n // Draws a 5*5 alignment pattern, with the center module\n // at (x, y). All modules must be in bounds.\n drawAlignmentPattern(x, y) {\n for (let dy = -2; dy <= 2; dy++) {\n for (let dx = -2; dx <= 2; dx++) {\n this.setFunctionModule(\n x + dx,\n y + dy,\n Math.max(Math.abs(dx), Math.abs(dy)) !== 1,\n QrCodeDataType.Alignment\n );\n }\n }\n }\n // Sets the color of a module and marks it as a function module.\n // Only used by the constructor. Coordinates must be in bounds.\n setFunctionModule(x, y, isDark, type = QrCodeDataType.Function) {\n this.modules[y][x] = isDark;\n this.types[y][x] = type;\n }\n /* -- Private helper methods for constructor: Codewords and masking -- */\n // Returns a new byte string representing the given data with the appropriate error correction\n // codewords appended to it, based on this object's version and error correction level.\n addEccAndInterleave(data) {\n const ver = this.version;\n const ecl = this.ecc;\n if (data.length !== getNumDataCodewords(ver, ecl))\n throw new RangeError(\"Invalid argument\");\n const numBlocks = NUM_ERROR_CORRECTION_BLOCKS[ecl[0]][ver];\n const blockEccLen = ECC_CODEWORDS_PER_BLOCK[ecl[0]][ver];\n const rawCodewords = Math.floor(getNumRawDataModules(ver) / 8);\n const numShortBlocks = numBlocks - rawCodewords % numBlocks;\n const shortBlockLen = Math.floor(rawCodewords / numBlocks);\n const blocks = [];\n const rsDiv = reedSolomonComputeDivisor(blockEccLen);\n for (let i = 0, k = 0; i < numBlocks; i++) {\n const dat = data.slice(k, k + shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1));\n k += dat.length;\n const ecc = reedSolomonComputeRemainder(dat, rsDiv);\n if (i < numShortBlocks)\n dat.push(0);\n blocks.push(dat.concat(ecc));\n }\n const result = [];\n for (let i = 0; i < blocks[0].length; i++) {\n blocks.forEach((block, j) => {\n if (i !== shortBlockLen - blockEccLen || j >= numShortBlocks)\n result.push(block[i]);\n });\n }\n return result;\n }\n // Draws the given sequence of 8-bit codewords (data and error correction) onto the entire\n // data area of this QR Code. Function modules need to be marked off before this is called.\n drawCodewords(data) {\n if (data.length !== Math.floor(getNumRawDataModules(this.version) / 8))\n throw new RangeError(\"Invalid argument\");\n let i = 0;\n for (let right = this.size - 1; right >= 1; right -= 2) {\n if (right === 6)\n right = 5;\n for (let vert = 0; vert < this.size; vert++) {\n for (let j = 0; j < 2; j++) {\n const x = right - j;\n const upward = (right + 1 & 2) === 0;\n const y = upward ? this.size - 1 - vert : vert;\n if (!this.types[y][x] && i < data.length * 8) {\n this.modules[y][x] = getBit(data[i >>> 3], 7 - (i & 7));\n i++;\n }\n }\n }\n }\n }\n // XORs the codeword modules in this QR Code with the given mask pattern.\n // The function modules must be marked and the codeword bits must be drawn\n // before masking. Due to the arithmetic of XOR, calling applyMask() with\n // the same mask value a second time will undo the mask. A final well-formed\n // QR Code needs exactly one (not zero, two, etc.) mask applied.\n applyMask(mask) {\n if (mask < 0 || mask > 7)\n throw new RangeError(\"Mask value out of range\");\n for (let y = 0; y < this.size; y++) {\n for (let x = 0; x < this.size; x++) {\n let invert;\n switch (mask) {\n case 0:\n invert = (x + y) % 2 === 0;\n break;\n case 1:\n invert = y % 2 === 0;\n break;\n case 2:\n invert = x % 3 === 0;\n break;\n case 3:\n invert = (x + y) % 3 === 0;\n break;\n case 4:\n invert = (Math.floor(x / 3) + Math.floor(y / 2)) % 2 === 0;\n break;\n case 5:\n invert = x * y % 2 + x * y % 3 === 0;\n break;\n case 6:\n invert = (x * y % 2 + x * y % 3) % 2 === 0;\n break;\n case 7:\n invert = ((x + y) % 2 + x * y % 3) % 2 === 0;\n break;\n default:\n throw new Error(\"Unreachable\");\n }\n if (!this.types[y][x] && invert)\n this.modules[y][x] = !this.modules[y][x];\n }\n }\n }\n // Calculates and returns the penalty score based on state of this QR Code's current modules.\n // This is used by the automatic mask choice algorithm to find the mask pattern that yields the lowest score.\n getPenaltyScore() {\n let result = 0;\n for (let y = 0; y < this.size; y++) {\n let runColor = false;\n let runX = 0;\n const runHistory = [0, 0, 0, 0, 0, 0, 0];\n for (let x = 0; x < this.size; x++) {\n if (this.modules[y][x] === runColor) {\n runX++;\n if (runX === 5)\n result += PENALTY_N1;\n else if (runX > 5)\n result++;\n } else {\n this.finderPenaltyAddHistory(runX, runHistory);\n if (!runColor)\n result += this.finderPenaltyCountPatterns(runHistory) * PENALTY_N3;\n runColor = this.modules[y][x];\n runX = 1;\n }\n }\n result += this.finderPenaltyTerminateAndCount(runColor, runX, runHistory) * PENALTY_N3;\n }\n for (let x = 0; x < this.size; x++) {\n let runColor = false;\n let runY = 0;\n const runHistory = [0, 0, 0, 0, 0, 0, 0];\n for (let y = 0; y < this.size; y++) {\n if (this.modules[y][x] === runColor) {\n runY++;\n if (runY === 5)\n result += PENALTY_N1;\n else if (runY > 5)\n result++;\n } else {\n this.finderPenaltyAddHistory(runY, runHistory);\n if (!runColor)\n result += this.finderPenaltyCountPatterns(runHistory) * PENALTY_N3;\n runColor = this.modules[y][x];\n runY = 1;\n }\n }\n result += this.finderPenaltyTerminateAndCount(runColor, runY, runHistory) * PENALTY_N3;\n }\n for (let y = 0; y < this.size - 1; y++) {\n for (let x = 0; x < this.size - 1; x++) {\n const color = this.modules[y][x];\n if (color === this.modules[y][x + 1] && color === this.modules[y + 1][x] && color === this.modules[y + 1][x + 1]) {\n result += PENALTY_N2;\n }\n }\n }\n let dark = 0;\n for (const row of this.modules)\n dark = row.reduce((sum, color) => sum + (color ? 1 : 0), dark);\n const total = this.size * this.size;\n const k = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1;\n result += k * PENALTY_N4;\n return result;\n }\n /* -- Private helper functions -- */\n // Returns an ascending list of positions of alignment patterns for this version number.\n // Each position is in the range [0,177), and are used on both the x and y axes.\n // This could be implemented as lookup table of 40 variable-length lists of integers.\n getAlignmentPatternPositions() {\n if (this.version === 1) {\n return [];\n } else {\n const numAlign = Math.floor(this.version / 7) + 2;\n const step = this.version === 32 ? 26 : Math.ceil((this.version * 4 + 4) / (numAlign * 2 - 2)) * 2;\n const result = [6];\n for (let pos = this.size - 7; result.length < numAlign; pos -= step)\n result.splice(1, 0, pos);\n return result;\n }\n }\n // Can only be called immediately after a light run is added, and\n // returns either 0, 1, or 2. A helper function for getPenaltyScore().\n finderPenaltyCountPatterns(runHistory) {\n const n = runHistory[1];\n const core = n > 0 && runHistory[2] === n && runHistory[3] === n * 3 && runHistory[4] === n && runHistory[5] === n;\n return (core && runHistory[0] >= n * 4 && runHistory[6] >= n ? 1 : 0) + (core && runHistory[6] >= n * 4 && runHistory[0] >= n ? 1 : 0);\n }\n // Must be called at the end of a line (row or column) of modules. A helper function for getPenaltyScore().\n finderPenaltyTerminateAndCount(currentRunColor, currentRunLength, runHistory) {\n if (currentRunColor) {\n this.finderPenaltyAddHistory(currentRunLength, runHistory);\n currentRunLength = 0;\n }\n currentRunLength += this.size;\n this.finderPenaltyAddHistory(currentRunLength, runHistory);\n return this.finderPenaltyCountPatterns(runHistory);\n }\n // Pushes the given value to the front and drops the last value. A helper function for getPenaltyScore().\n finderPenaltyAddHistory(currentRunLength, runHistory) {\n if (runHistory[0] === 0)\n currentRunLength += this.size;\n runHistory.pop();\n runHistory.unshift(currentRunLength);\n }\n}\nfunction appendBits(val, len, bb) {\n if (len < 0 || len > 31 || val >>> len !== 0)\n throw new RangeError(\"Value out of range\");\n for (let i = len - 1; i >= 0; i--)\n bb.push(val >>> i & 1);\n}\nfunction getBit(x, i) {\n return (x >>> i & 1) !== 0;\n}\nclass QrSegment {\n // Creates a new QR Code segment with the given attributes and data.\n // The character count (numChars) must agree with the mode and the bit buffer length,\n // but the constraint isn't checked. The given bit buffer is cloned and stored.\n constructor(mode, numChars, bitData) {\n this.mode = mode;\n this.numChars = numChars;\n this.bitData = bitData;\n if (numChars < 0)\n throw new RangeError(\"Invalid argument\");\n this.bitData = bitData.slice();\n }\n /* -- Methods -- */\n // Returns a new copy of the data bits of this segment.\n getData() {\n return this.bitData.slice();\n }\n}\nconst MODE_NUMERIC = [1, 10, 12, 14];\nconst MODE_ALPHANUMERIC = [2, 9, 11, 13];\nconst MODE_BYTE = [4, 8, 16, 16];\nfunction numCharCountBits(mode, ver) {\n return mode[Math.floor((ver + 7) / 17) + 1];\n}\nfunction makeBytes(data) {\n const bb = [];\n for (const b of data)\n appendBits(b, 8, bb);\n return new QrSegment(MODE_BYTE, data.length, bb);\n}\nfunction makeNumeric(digits) {\n if (!isNumeric(digits))\n throw new RangeError(\"String contains non-numeric characters\");\n const bb = [];\n for (let i = 0; i < digits.length; ) {\n const n = Math.min(digits.length - i, 3);\n appendBits(Number.parseInt(digits.substring(i, i + n), 10), n * 3 + 1, bb);\n i += n;\n }\n return new QrSegment(MODE_NUMERIC, digits.length, bb);\n}\nfunction makeAlphanumeric(text) {\n if (!isAlphanumeric(text))\n throw new RangeError(\"String contains unencodable characters in alphanumeric mode\");\n const bb = [];\n let i;\n for (i = 0; i + 2 <= text.length; i += 2) {\n let temp = ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)) * 45;\n temp += ALPHANUMERIC_CHARSET.indexOf(text.charAt(i + 1));\n appendBits(temp, 11, bb);\n }\n if (i < text.length)\n appendBits(ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)), 6, bb);\n return new QrSegment(MODE_ALPHANUMERIC, text.length, bb);\n}\nfunction makeSegments(text) {\n if (text === \"\")\n return [];\n else if (isNumeric(text))\n return [makeNumeric(text)];\n else if (isAlphanumeric(text))\n return [makeAlphanumeric(text)];\n else\n return [makeBytes(toUtf8ByteArray(text))];\n}\nfunction isNumeric(text) {\n return NUMERIC_REGEX.test(text);\n}\nfunction isAlphanumeric(text) {\n return ALPHANUMERIC_REGEX.test(text);\n}\nfunction getTotalBits(segs, version) {\n let result = 0;\n for (const seg of segs) {\n const ccbits = numCharCountBits(seg.mode, version);\n if (seg.numChars >= 1 << ccbits)\n return Number.POSITIVE_INFINITY;\n result += 4 + ccbits + seg.bitData.length;\n }\n return result;\n}\nfunction toUtf8ByteArray(str) {\n str = encodeURI(str);\n const result = [];\n for (let i = 0; i < str.length; i++) {\n if (str.charAt(i) !== \"%\") {\n result.push(str.charCodeAt(i));\n } else {\n result.push(Number.parseInt(str.substring(i + 1, i + 3), 16));\n i += 2;\n }\n }\n return result;\n}\nfunction getNumRawDataModules(ver) {\n if (ver < MIN_VERSION || ver > MAX_VERSION)\n throw new RangeError(\"Version number out of range\");\n let result = (16 * ver + 128) * ver + 64;\n if (ver >= 2) {\n const numAlign = Math.floor(ver / 7) + 2;\n result -= (25 * numAlign - 10) * numAlign - 55;\n if (ver >= 7)\n result -= 36;\n }\n return result;\n}\nfunction getNumDataCodewords(ver, ecl) {\n return Math.floor(getNumRawDataModules(ver) / 8) - ECC_CODEWORDS_PER_BLOCK[ecl[0]][ver] * NUM_ERROR_CORRECTION_BLOCKS[ecl[0]][ver];\n}\nfunction reedSolomonComputeDivisor(degree) {\n if (degree < 1 || degree > 255)\n throw new RangeError(\"Degree out of range\");\n const result = [];\n for (let i = 0; i < degree - 1; i++)\n result.push(0);\n result.push(1);\n let root = 1;\n for (let i = 0; i < degree; i++) {\n for (let j = 0; j < result.length; j++) {\n result[j] = reedSolomonMultiply(result[j], root);\n if (j + 1 < result.length)\n result[j] ^= result[j + 1];\n }\n root = reedSolomonMultiply(root, 2);\n }\n return result;\n}\nfunction reedSolomonComputeRemainder(data, divisor) {\n const result = divisor.map((_) => 0);\n for (const b of data) {\n const factor = b ^ result.shift();\n result.push(0);\n divisor.forEach((coef, i) => result[i] ^= reedSolomonMultiply(coef, factor));\n }\n return result;\n}\nfunction reedSolomonMultiply(x, y) {\n if (x >>> 8 !== 0 || y >>> 8 !== 0)\n throw new RangeError(\"Byte out of range\");\n let z = 0;\n for (let i = 7; i >= 0; i--) {\n z = z << 1 ^ (z >>> 7) * 285;\n z ^= (y >>> i & 1) * x;\n }\n return z;\n}\nfunction encodeSegments(segs, ecl, minVersion = 1, maxVersion = 40, mask = -1, boostEcl = true) {\n if (!(MIN_VERSION <= minVersion && minVersion <= maxVersion && maxVersion <= MAX_VERSION) || mask < -1 || mask > 7) {\n throw new RangeError(\"Invalid value\");\n }\n let version;\n let dataUsedBits;\n for (version = minVersion; ; version++) {\n const dataCapacityBits2 = getNumDataCodewords(version, ecl) * 8;\n const usedBits = getTotalBits(segs, version);\n if (usedBits <= dataCapacityBits2) {\n dataUsedBits = usedBits;\n break;\n }\n if (version >= maxVersion)\n throw new RangeError(\"Data too long\");\n }\n for (const newEcl of [MEDIUM, QUARTILE, HIGH]) {\n if (boostEcl && dataUsedBits <= getNumDataCodewords(version, newEcl) * 8)\n ecl = newEcl;\n }\n const bb = [];\n for (const seg of segs) {\n appendBits(seg.mode[0], 4, bb);\n appendBits(seg.numChars, numCharCountBits(seg.mode, version), bb);\n for (const b of seg.getData())\n bb.push(b);\n }\n const dataCapacityBits = getNumDataCodewords(version, ecl) * 8;\n appendBits(0, Math.min(4, dataCapacityBits - bb.length), bb);\n appendBits(0, (8 - bb.length % 8) % 8, bb);\n for (let padByte = 236; bb.length < dataCapacityBits; padByte ^= 236 ^ 17)\n appendBits(padByte, 8, bb);\n const dataCodewords = Array.from({ length: Math.ceil(bb.length / 8) }, () => 0);\n bb.forEach((b, i) => dataCodewords[i >>> 3] |= b << 7 - (i & 7));\n return new QrCode(version, ecl, dataCodewords, mask);\n}\n\nfunction encode(data, options) {\n const {\n ecc = \"L\",\n boostEcc = false,\n minVersion = 1,\n maxVersion = 40,\n maskPattern = -1,\n border = 1\n } = options || {};\n const segment = typeof data === \"string\" ? makeSegments(data) : Array.isArray(data) ? [makeBytes(data)] : void 0;\n if (!segment)\n throw new Error(`uqr only supports encoding string and binary data, but got: ${typeof data}`);\n const qr = encodeSegments(\n segment,\n EccMap[ecc],\n minVersion,\n maxVersion,\n maskPattern,\n boostEcc\n );\n const result = addBorder({\n version: qr.version,\n maskPattern: qr.mask,\n size: qr.size,\n data: qr.modules,\n types: qr.types\n }, border);\n if (options?.invert)\n result.data = result.data.map((row) => row.map((mod) => !mod));\n options?.onEncoded?.(result);\n return result;\n}\nfunction addBorder(input, border = 1) {\n if (!border)\n return input;\n const { size } = input;\n const newSize = size + border * 2;\n input.size = newSize;\n input.data.forEach((row) => {\n for (let i = 0; i < border; i++) {\n row.unshift(false);\n row.push(false);\n }\n });\n for (let i = 0; i < border; i++) {\n input.data.unshift(Array.from({ length: newSize }, (_) => false));\n input.data.push(Array.from({ length: newSize }, (_) => false));\n }\n const b = QrCodeDataType.Border;\n input.types.forEach((row) => {\n for (let i = 0; i < border; i++) {\n row.unshift(b);\n row.push(b);\n }\n });\n for (let i = 0; i < border; i++) {\n input.types.unshift(Array.from({ length: newSize }, (_) => b));\n input.types.push(Array.from({ length: newSize }, (_) => b));\n }\n return input;\n}\nfunction getDataAt(data, x, y, defaults = false) {\n if (x < 0 || y < 0 || x >= data.length || y >= data.length)\n return defaults;\n return data[y][x];\n}\n\nfunction renderUnicode(data, options = {}) {\n const {\n whiteChar = \"\\u2588\",\n blackChar = \"\\u2591\"\n } = options;\n const result = encode(data, options);\n return result.data.map((row) => {\n return row.map((mod) => mod ? blackChar : whiteChar).join(\"\");\n }).join(\"\\n\");\n}\nfunction renderANSI(data, options = {}) {\n return renderUnicode(data, {\n ...options,\n blackChar: \"\\x1B[40m\\u3000\\x1B[0m\",\n whiteChar: \"\\x1B[47m\\u3000\\x1B[0m\"\n });\n}\nfunction renderUnicodeCompact(data, options = {}) {\n const palette = {\n WHITE_ALL: \"\\u2588\",\n WHITE_BLACK: \"\\u2580\",\n BLACK_WHITE: \"\\u2584\",\n BLACK_ALL: \" \"\n };\n const result = encode(data, options);\n const WHITE = false;\n const BLACK = true;\n const at = (x, y) => getDataAt(result.data, x, y, true);\n const lines = [];\n let line = \"\";\n for (let row = 0; row < result.size; row += 2) {\n for (let col = 0; col < result.size; col++) {\n if (at(col, row) === WHITE && at(col, row + 1) === WHITE)\n line += palette.WHITE_ALL;\n else if (at(col, row) === WHITE && at(col, row + 1) === BLACK)\n line += palette.WHITE_BLACK;\n else if (at(col, row) === BLACK && at(col, row + 1) === WHITE)\n line += palette.BLACK_WHITE;\n else\n line += palette.BLACK_ALL;\n }\n lines.push(line);\n line = \"\";\n }\n return lines.join(\"\\n\");\n}\n\nfunction escapeAttr(value) {\n return value.replace(/&/g, \"&amp;\").replace(/\"/g, \"&quot;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n}\nfunction renderSVG(data, options = {}) {\n const result = encode(data, options);\n const {\n pixelSize = 10,\n whiteColor = \"white\",\n blackColor = \"black\"\n } = options;\n const height = result.size * pixelSize;\n const width = result.size * pixelSize;\n let svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${width} ${height}\">`;\n const paths = [];\n for (let row = 0; row < result.size; row++) {\n for (let col = 0; col < result.size; col++) {\n const x = col * pixelSize;\n const y = row * pixelSize;\n if (result.data[row][col])\n paths.push(`M${x},${y}h${pixelSize}v${pixelSize}h-${pixelSize}z`);\n }\n }\n svg += `<rect fill=\"${escapeAttr(whiteColor)}\" width=\"${width}\" height=\"${height}\"/>`;\n svg += `<path fill=\"${escapeAttr(blackColor)}\" d=\"${paths.join(\"\")}\"/>`;\n svg += \"</svg>\";\n return svg;\n}\n\nexport { QrCodeDataType, encode, renderANSI, renderSVG, renderUnicode, renderUnicodeCompact };\n","/* -------------------------------------------------------------------- */\n/* QR matrix geometry. */\n/* */\n/* The encoder is `uqr` (MIT, zero dependencies), whose algorithm comes */\n/* from Project Nayuki's reference QR-Code-generator. It covers versions */\n/* 1–40 with automatic segment modes (numeric / alphanumeric / UTF-8 */\n/* byte) and the standard mask selection. This module only adapts its */\n/* `boolean[][]` output into the row-major `QrMatrix` QrCode renders; */\n/* QrCode draws its own quiet zone, so uqr's border is switched off. */\n/* */\n/* Decode round-trips with jsQR in qr-code.test.tsx guard the output. */\n/* -------------------------------------------------------------------- */\n\nimport { encode } from 'uqr';\n\nexport type ErrorCorrectionLevel = 'L' | 'M' | 'Q' | 'H';\n\nexport interface QrMatrix {\n /** Edge length in modules (e.g. 21 for version 1, 177 for version 40). */\n size: number;\n /** Row-major `size * size` booleans — true = dark module. */\n modules: boolean[];\n}\n\n/**\n * Shape of the geometry `qrcode.create()` returns, so a host that has that\n * package installed can hand its output straight to the renderer.\n */\nexport interface QrcodeCreateResult {\n modules: { size: number; data: Uint8Array | number[] };\n}\n\n/** Injectable geometry provider (see {@link setQrCreate}). */\nexport type QrCreateFn = (\n value: string,\n options: { errorCorrectionLevel: ErrorCorrectionLevel },\n) => QrcodeCreateResult;\n\nlet externalCreate: QrCreateFn | null = null;\n\n/**\n * OPTIONAL override, kept for backwards compatibility — no longer needed.\n * The shipped encoder (`uqr`) already supports versions 1–40, so there is no\n * capacity reason to swap in another library. A host that still registers the\n * npm `qrcode` package's `create` keeps working:\n *\n * import QRCode from 'qrcode';\n * import { setQrCreate } from '@alfadocs/ui-kit/qr-code';\n * setQrCreate(QRCode.create);\n *\n * Pass `null` to revert to the built-in `uqr` encoder.\n */\nexport function setQrCreate(fn: QrCreateFn | null): void {\n externalCreate = fn;\n}\n\n/**\n * Build the QR module matrix for `value` with `uqr` (versions 1–40), or with a\n * provider registered via {@link setQrCreate}. Returns raw module geometry\n * with no quiet zone — the component renders its own token-styled SVG.\n *\n * Throws when the value exceeds version-40 capacity at the requested level;\n * callers catch and render the empty state (see QrCode's try/catch).\n */\nexport function createQrMatrix(\n value: string,\n errorCorrectionLevel: ErrorCorrectionLevel,\n): QrMatrix {\n if (externalCreate) {\n const qr = externalCreate(value, { errorCorrectionLevel });\n const { size, data } = qr.modules;\n const modules: boolean[] = [];\n for (let i = 0; i < data.length; i++) modules.push(data[i] === 1);\n return { size, modules };\n }\n // boostEcc stays off so the level QrCode reports (`data-ec`) is the level\n // actually encoded. uqr throws RangeError(\"Data too long\") on overflow.\n const qr = encode(value, {\n ecc: errorCorrectionLevel,\n border: 0,\n boostEcc: false,\n });\n const modules: boolean[] = [];\n for (const row of qr.data) for (const dark of row) modules.push(dark);\n return { size: qr.size, modules };\n}\n","import {\n forwardRef,\n useMemo,\n type ForwardedRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useAgentRegistration } from '../../agent/registry';\n// The canonical AlfaDocs mark glyph — imported VERBATIM from the brand asset\n// (read-only). It renders with `fill=\"currentColor\"`, so the knockout patch\n// below sets the ink via a token class on the wrapping span.\nimport { AlfadocsLogoMark } from '../../brand/logo-asset';\nimport { qrCodeAgent } from './qr-code.agent';\nimport {\n createQrMatrix,\n type ErrorCorrectionLevel,\n type QrMatrix,\n} from './qr-encode';\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst qrCodeVariants = cva(\n [\n 'ds:inline-flex ds:flex-col ds:items-center ds:shrink-0',\n 'ds:gap-[var(--spacing-sm)]',\n // The matrix must never mirror in RTL — a mirrored QR is unscannable —\n // so the wrapper pins LTR while caption/label text still flips via the\n // logical `text-*` utilities. Mirrors Sparkline's `dir=\"ltr\"` pin.\n 'ds:leading-none',\n ],\n {\n variants: {\n variant: {\n plain: '',\n framed: [\n 'ds:bg-[var(--card)] ds:text-[var(--card-foreground)]',\n 'ds:border ds:border-[color:var(--border)]',\n // Accessible theme thickens the boundary in step with Card / Stat.\n 'ds:[.theme-accessible_&]:border-2',\n 'ds:rounded-[var(--radius-lg)]',\n 'ds:p-[var(--spacing-md)]',\n // Forced-colors: the UA strips background; keep a CanvasText\n // boundary so the frame survives Windows High Contrast Mode.\n 'ds:forced-colors:border ds:forced-colors:border-[CanvasText]',\n ],\n 'with-caption': [\n 'ds:bg-[var(--card)] ds:text-[var(--card-foreground)]',\n 'ds:border ds:border-[color:var(--border)]',\n 'ds:[.theme-accessible_&]:border-2',\n 'ds:rounded-[var(--radius-lg)]',\n 'ds:p-[var(--spacing-md)]',\n 'ds:forced-colors:border ds:forced-colors:border-[CanvasText]',\n ],\n },\n // Edge length of the matrix box, driven by dedicated tokens\n // (`--qr-code-size-*`, parallel to `--logo-size-*`). The token owner\n // controls the scale and the accessible theme can lift it; the\n // var() fallback is only a graceful default so the box renders before\n // those token rows land — the token wins whenever it is defined.\n size: {\n sm: 'ds:[--qr-edge:var(--qr-code-size-sm,8rem)]',\n md: 'ds:[--qr-edge:var(--qr-code-size-md,12rem)]',\n lg: 'ds:[--qr-edge:var(--qr-code-size-lg,16rem)]',\n },\n tone: {\n default: '',\n // Light modules on a dark quiet zone. The chrome inverts via tokens;\n // the matrix colours themselves are swapped in the SVG (scanner\n // constraint — see the literal note below).\n inverted: '',\n },\n },\n defaultVariants: { variant: 'framed', size: 'md', tone: 'default' },\n },\n);\n\nconst captionVariants = cva(\n [\n 'type-body-sm',\n 'ds:text-[color:var(--card-foreground)]',\n // Caption flips with reading direction; the matrix above stays LTR.\n 'ds:text-center',\n ],\n {\n variants: {\n tone: {\n default: '',\n inverted: '',\n },\n },\n defaultVariants: { tone: 'default' },\n },\n);\n\n// Centre-logo knockout: a solid, tone-matched roundel that visually clears the\n// modules behind the mark (ECC-H reconstructs them on scan). The fill follows\n// the surface (`--background`) so it matches the quiet zone each tone is\n// designed for; the mark ink contrasts that knockout per tone (`--primary` on\n// a light surface, `--foreground` on the dark/inverted surface). All-token —\n// the #000/#fff matrix carve-out stays matrix-only.\nconst logoKnockoutVariants = cva(\n [\n 'ds:pointer-events-none ds:absolute ds:inset-0 ds:m-auto',\n 'ds:flex ds:items-center ds:justify-center',\n 'ds:rounded-[var(--radius-sm)] ds:p-[var(--spacing-2xs)]',\n 'ds:bg-[var(--background)]',\n // Clamp to the published LOGO_EDGE_FRACTION of the matrix edge.\n 'ds:[block-size:calc(var(--qr-edge)*var(--qr-logo-edge))]',\n 'ds:[inline-size:calc(var(--qr-edge)*var(--qr-logo-edge))]',\n // The mark/custom node fills the padded knockout box.\n 'ds:[&>*]:h-full ds:[&>*]:w-full',\n 'ds:[&>*]:max-h-full ds:[&>*]:max-w-full',\n ],\n {\n variants: {\n tone: {\n default: 'ds:text-[color:var(--primary)]',\n inverted: 'ds:text-[color:var(--foreground)]',\n },\n },\n defaultVariants: { tone: 'default' },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Constants */\n/* ------------------------------------------------------------------ */\n\nconst MIN_QUIET_ZONE = 4;\n/**\n * Centre-logo overlay clamp — never larger than this fraction of the edge.\n * Single source of truth: the value is published to the matrix wrapper as the\n * `--qr-logo-edge` custom property (see `LOGO_EDGE_VAR_CLASS`) and the overlay\n * box derives its size from `calc(var(--qr-edge) * var(--qr-logo-edge))`, so\n * changing the fraction here actually moves the rendered box.\n *\n * 0.22 of the edge ≈ 0.048 of the matrix AREA (0.22²) — comfortably under the\n * ~25%-area ceiling that ECC-H (~30% codeword recovery) can reconstruct, so the\n * modules the knockout clears under the mark always decode back. See the\n * always-on-logo / ECC-H notes in `qr-code.mdx`.\n */\nconst LOGO_EDGE_FRACTION = 0.22;\n/**\n * Static Tailwind arbitrary-property class that publishes `LOGO_EDGE_FRACTION`\n * as `--qr-logo-edge`. The JIT needs a literal class string, so the numeric\n * value is mirrored once here — kept adjacent to the constant so the two never\n * drift, and asserted equal at module init below.\n */\nconst LOGO_EDGE_VAR_CLASS = 'ds:[--qr-logo-edge:0.22]';\nif (\n import.meta.env.DEV &&\n !LOGO_EDGE_VAR_CLASS.includes(String(LOGO_EDGE_FRACTION))\n) {\n console.warn(\n `[QrCode] LOGO_EDGE_FRACTION (${LOGO_EDGE_FRACTION}) and LOGO_EDGE_VAR_CLASS (${LOGO_EDGE_VAR_CLASS}) have drifted — keep them in sync.`,\n );\n}\n\n/**\n * The default centre logo: the canonical AlfaDocs mark, rendered decoratively.\n * The product wants the mark present on every QR, so this is the value the\n * `logo` prop falls back to unless the consumer passes `logo={false}` (off) or\n * `logo={<custom/>}` (override). `aria-hidden` because the QR's own accessible\n * name already announces the destination — the mark adds no information.\n *\n * Rendered with `currentColor`; the knockout span sets the ink to `--primary`\n * (light) / a tone-matched token (inverted) via class, so no hardcoded colour\n * lives here and no brand asset is hand-typed.\n */\nconst DEFAULT_LOGO: ReactNode = (\n <AlfadocsLogoMark aria-hidden focusable=\"false\" />\n);\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\ntype QrCodeVariantProps = VariantProps<typeof qrCodeVariants>;\n\ninterface QrCodeBase\n extends\n Omit<\n HTMLAttributes<HTMLDivElement>,\n 'role' | 'aria-label' | 'aria-hidden' | 'children' | 'color'\n >,\n QrCodeVariantProps {\n /**\n * The string encoded into the QR — typically an absolute https URL\n * (check-in landing or patient-portal link), but any text is valid. An\n * empty string renders the empty state. Not validated as a URL: the kit\n * is byte-transparent and the consumer passes a fully-formed value.\n */\n value: string;\n /**\n * Reed-Solomon redundancy. When omitted it defaults to `H` (high, ~30%\n * recovery) whenever a centre logo is shown — the obscured centre still\n * decodes — and to `M` when the logo is disabled (`logo={false}`). Pass an\n * explicit level to override (raising to `Q`/`H` is required if a logo\n * occludes the centre).\n */\n errorCorrectionLevel?: ErrorCorrectionLevel;\n /**\n * Centre mark over the matrix. The product wants the AlfaDocs mark present\n * on every code, so this defaults to the canonical mark\n * ({@link AlfadocsLogoMark}, decorative). Pass `logo={false}` to disable it,\n * or `logo={<custom/>}` to override with your own node. The mark is clamped\n * to ~22% of the edge and seated on a tone-matched opaque knockout so the\n * modules beneath it are visually cleared; ECC-H reconstructs them on scan.\n */\n logo?: ReactNode | false;\n /** Caption for `variant=\"with-caption\"`. Defaults to the i18n caption. */\n caption?: string;\n /** Quiet-zone width in MODULES. Clamped up to the spec minimum of 4. */\n quietZone?: number;\n}\n\ntype QrCodeA11y =\n | {\n /**\n * Human-readable destination woven into the accessible name, e.g. a\n * practice name → \"QR code to check in at Studio Dentistico Rossi\".\n * Not rendered visually.\n */\n label?: string;\n decorative?: never;\n }\n | {\n label?: never;\n /**\n * Decorative usage — the code is hidden from assistive tech (rare; the\n * same QR is duplicated purely ornamentally next to a real one).\n */\n decorative: true;\n };\n\nexport type QrCodeProps = QrCodeBase & QrCodeA11y;\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nfunction buildMatrix(value: string, ec: ErrorCorrectionLevel): QrMatrix | null {\n if (!value) return null;\n try {\n return createQrMatrix(value, ec);\n } catch (err) {\n // A value that overflows QR capacity for the chosen EC level makes the\n // encoder throw. Fall back to the empty state rather than crash the\n // render tree.\n if (import.meta.env.DEV) {\n console.warn(\n `[QrCode] Could not encode value (${(err as Error).message}). Rendering the empty state.`,\n );\n }\n return null;\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* QrCode */\n/* ------------------------------------------------------------------ */\n\nexport const QrCode = forwardRef<HTMLDivElement, QrCodeProps>(\n (\n {\n value,\n variant = 'framed',\n size = 'md',\n tone = 'default',\n errorCorrectionLevel,\n logo,\n caption,\n quietZone = MIN_QUIET_ZONE,\n label,\n decorative,\n className,\n id,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n /* ---- logo resolution -------------------------------------------- */\n // The mark is always-on by default. `logo === false` opts out; any other\n // node (including the default) is shown. `logo === undefined` → default\n // AlfaDocs mark.\n const logoEnabled = logo !== false;\n const logoNode = logoEnabled ? (logo ?? DEFAULT_LOGO) : null;\n\n /* ---- error-correction resolution -------------------------------- */\n // A centre logo occludes the middle of the matrix, so default to EC \"H\"\n // (~30% recovery) whenever a logo is shown — the obscured centre still\n // decodes. With no logo, \"M\" is the friendlier density default. An\n // explicit `errorCorrectionLevel` always wins.\n const ec: ErrorCorrectionLevel =\n errorCorrectionLevel ?? (logoEnabled ? 'H' : 'M');\n\n /* ---- DEV guards ------------------------------------------------- */\n if (import.meta.env.DEV) {\n if (decorative && label) {\n console.warn(\n '[QrCode] Both `decorative` and `label` were provided. Decorative codes must not expose an accessible name — the TypeScript type already forbids this combination.',\n );\n }\n if (tone === 'inverted') {\n console.warn(\n '[QrCode] tone=\"inverted\" renders light modules on a dark quiet zone. Inverted/dark-surface codes scan less reliably on many phone cameras (especially in low light) — test on real devices before shipping.',\n );\n }\n if (logoNode && ec !== 'Q' && ec !== 'H') {\n console.warn(\n `[QrCode] A centre logo occludes centre modules and is only safe at errorCorrectionLevel \"Q\" or \"H\" (got \"${ec}\"). Raise the EC level or the code may fail to scan.`,\n );\n }\n if (quietZone < MIN_QUIET_ZONE) {\n console.warn(\n `[QrCode] quietZone must be at least ${MIN_QUIET_ZONE} modules per the QR spec (got ${quietZone}). Clamping up — a sub-spec quiet zone breaks scanning.`,\n );\n }\n }\n\n /* ---- geometry --------------------------------------------------- */\n const matrix = useMemo(() => buildMatrix(value, ec), [value, ec]);\n\n const quiet = Math.max(MIN_QUIET_ZONE, Math.floor(quietZone));\n\n /* ---- accessible name ------------------------------------------- */\n const ariaLabel = !matrix\n ? t('qrCode.empty')\n : label\n ? t('qrCode.ariaLabelNamed', { label })\n : t('qrCode.ariaLabel');\n\n const a11y = decorative\n ? ({ role: 'presentation', 'aria-hidden': true } as const)\n : ({ role: 'img', 'aria-label': ariaLabel } as const);\n\n const showCaption = variant === 'with-caption';\n const captionText = showCaption\n ? (caption ?? t('qrCode.caption'))\n : undefined;\n\n /* ---- SVG geometry ---------------------------------------------- */\n // Module artwork is intentionally pure black-on-white (or the exact\n // inverse for tone=\"inverted\"). This is the ONE place outside\n // src/tokens/** and src/brand/** where #000/#fff literals are permitted:\n // camera decoders require maximal black/white contrast, so the matrix\n // and quiet zone colours are a functional symbology requirement, NOT a\n // styling choice (see src/docs/23-constraints.mdx, QR matrix carve-out).\n // Scoped strictly to the <rect> fills below; frame/caption chrome stays\n // 100% token-driven.\n // eslint-disable-next-line no-restricted-syntax -- scanner carve-out: QR matrix requires literal black/white for camera decode (see comment above + 23-constraints)\n const MODULE_DARK = tone === 'inverted' ? '#fff' : '#000'; // scanner-fixed\n // eslint-disable-next-line no-restricted-syntax -- scanner carve-out: QR quiet zone requires literal black/white for camera decode (see comment above + 23-constraints)\n const QUIET_FILL = tone === 'inverted' ? '#000' : '#fff'; // scanner-fixed\n\n const rects: ReactNode[] = [];\n let viewBox = `0 0 ${(MIN_QUIET_ZONE * 2 + 1) * 1} ${(MIN_QUIET_ZONE * 2 + 1) * 1}`;\n if (matrix) {\n const total = matrix.size + quiet * 2;\n viewBox = `0 0 ${total} ${total}`;\n for (let r = 0; r < matrix.size; r++) {\n for (let c = 0; c < matrix.size; c++) {\n if (!matrix.modules[r * matrix.size + c]) continue;\n rects.push(\n <rect\n key={`${r}-${c}`}\n x={c + quiet}\n y={r + quiet}\n width={1}\n height={1}\n fill={MODULE_DARK}\n />,\n );\n }\n }\n }\n\n useAgentRegistration(qrCodeAgent, value, id);\n\n return (\n <div\n ref={ref as ForwardedRef<HTMLDivElement>}\n {...a11y}\n {...rest}\n id={id}\n dir=\"ltr\"\n data-component=\"qr-code\"\n data-component-id={id}\n data-tone={tone}\n data-ec={ec}\n data-logo={logoNode ? 'true' : 'false'}\n className={qrCodeVariants({ variant, size, tone, className })}\n >\n <div\n className={`ds:relative ds:w-[var(--qr-edge)] ds:h-[var(--qr-edge)] ds:max-w-full ${LOGO_EDGE_VAR_CLASS}`}\n >\n {matrix ? (\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n viewBox={viewBox}\n shapeRendering=\"crispEdges\"\n className=\"ds:block ds:h-full ds:w-full\"\n >\n {/* Quiet zone — rendered INSIDE the viewBox (not CSS padding)\n so a consumer cascade cannot collapse it. Scanner-fixed\n fill; see the matrix colour note above. */}\n <rect x={0} y={0} width=\"100%\" height=\"100%\" fill={QUIET_FILL} />\n {rects}\n </svg>\n ) : (\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n viewBox={viewBox}\n className=\"ds:block ds:h-full ds:w-full\"\n >\n <rect\n x={0}\n y={0}\n width=\"100%\"\n height=\"100%\"\n fill={QUIET_FILL}\n className=\"ds:opacity-0\"\n />\n </svg>\n )}\n\n {matrix && logoNode ? (\n <span\n aria-hidden=\"true\"\n data-slot=\"qr-center-logo\"\n // Tone-matched knockout roundel (see `logoKnockoutVariants`):\n // a solid `--background` patch that clears the modules behind\n // the mark so it reads cleanly; ECC-H reconstructs them on scan.\n // The clamp size derives from `--qr-logo-edge` (published on the\n // wrapper) via calc() — no inline style, no divergent literal.\n className={logoKnockoutVariants({ tone })}\n >\n {logoNode}\n </span>\n ) : null}\n </div>\n\n {captionText ? (\n <p className={captionVariants({ tone })}>{captionText}</p>\n ) : null}\n </div>\n );\n },\n);\n\nQrCode.displayName = 'QrCode';\n"],"names":["qrCodeAgent","handle","QrCodeDataType","QrCodeDataType2","LOW","MEDIUM","QUARTILE","HIGH","EccMap","NUMERIC_REGEX","ALPHANUMERIC_REGEX","ALPHANUMERIC_CHARSET","MIN_VERSION","MAX_VERSION","PENALTY_N1","PENALTY_N2","PENALTY_N3","PENALTY_N4","ECC_CODEWORDS_PER_BLOCK","NUM_ERROR_CORRECTION_BLOCKS","QrCode$1","version","ecc","dataCodewords","msk","__publicField","row","i","allCodewords","minPenalty","penalty","x","y","alignPatPos","numAlign","j","mask","data","rem","bits","getBit","color","a","b","dy","dx","dist","xx","yy","isDark","type","ver","ecl","getNumDataCodewords","numBlocks","blockEccLen","rawCodewords","getNumRawDataModules","numShortBlocks","shortBlockLen","blocks","rsDiv","reedSolomonComputeDivisor","k","dat","reedSolomonComputeRemainder","result","block","right","vert","invert","runColor","runX","runHistory","runY","dark","sum","total","step","pos","n","core","currentRunColor","currentRunLength","appendBits","val","len","bb","QrSegment","mode","numChars","bitData","MODE_NUMERIC","MODE_ALPHANUMERIC","MODE_BYTE","numCharCountBits","makeBytes","makeNumeric","digits","isNumeric","makeAlphanumeric","text","isAlphanumeric","temp","makeSegments","toUtf8ByteArray","getTotalBits","segs","seg","ccbits","str","degree","root","reedSolomonMultiply","divisor","_","factor","coef","z","encodeSegments","minVersion","maxVersion","boostEcl","dataUsedBits","dataCapacityBits2","usedBits","newEcl","dataCapacityBits","padByte","QrCode","encode","options","boostEcc","maskPattern","border","segment","qr","addBorder","mod","_a","input","size","newSize","externalCreate","setQrCreate","fn","createQrMatrix","value","errorCorrectionLevel","modules","qrCodeVariants","cva","captionVariants","logoKnockoutVariants","MIN_QUIET_ZONE","LOGO_EDGE_VAR_CLASS","DEFAULT_LOGO","AlfadocsLogoMark","buildMatrix","ec","forwardRef","variant","tone","logo","caption","quietZone","label","decorative","className","id","rest","ref","t","useTranslation","logoEnabled","logoNode","matrix","useMemo","quiet","ariaLabel","a11y","captionText","MODULE_DARK","QUIET_FILL","rects","viewBox","r","c","jsx","useAgentRegistration","jsxs"],"mappings":"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","x_google_ignoreList":[1]}
@@ -0,0 +1,193 @@
1
+ import { jsx as s, jsxs as o, Fragment as V } from "react/jsx-runtime";
2
+ import { useContext as B, createContext as G, forwardRef as O, useId as E, useState as H, useRef as _, useEffect as q } from "react";
3
+ import * as c from "@radix-ui/react-radio-group";
4
+ import { c as z } from "./index-D2ZczOXr.js";
5
+ import { T as y } from "./tooltip-DvmfrNvB.js";
6
+ const A = G(null);
7
+ function D() {
8
+ return B(A);
9
+ }
10
+ const J = z(
11
+ [
12
+ "ds:group ds:inline-flex ds:items-center ds:justify-center ds:shrink-0 ds:rounded-full",
13
+ "ds:border ds:border-border ds:bg-background",
14
+ "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
15
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
16
+ "ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
17
+ "ds:disabled:cursor-not-allowed ds:disabled:opacity-50",
18
+ "ds:data-[state=checked]:border-primary",
19
+ "ds:data-[disabled]:border-muted",
20
+ 'ds:relative ds:before:absolute ds:before:inset-[calc((var(--min-target-size)-100%)/-2)] ds:before:content-[""]'
21
+ ].join(" "),
22
+ {
23
+ variants: {
24
+ size: {
25
+ sm: "ds:size-3.5",
26
+ md: "ds:size-4",
27
+ lg: "ds:size-5"
28
+ }
29
+ },
30
+ defaultVariants: {
31
+ size: "md"
32
+ }
33
+ }
34
+ ), K = z(
35
+ [
36
+ "ds:relative ds:inline-flex ds:shrink-0 ds:items-center ds:justify-center ds:gap-[var(--spacing-xs)]",
37
+ "ds:min-h-[var(--min-target-size)] ds:min-w-[var(--min-target-size)]",
38
+ "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
39
+ "ds:rounded-[var(--radius-sm)] ds:whitespace-nowrap type-label"
40
+ ].join(" "),
41
+ {
42
+ variants: {
43
+ interactive: {
44
+ true: [
45
+ "ds:cursor-pointer ds:bg-transparent ds:text-foreground",
46
+ "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
47
+ "ds:data-[state=unchecked]:hover:enabled:bg-muted",
48
+ "ds:data-[state=checked]:bg-primary ds:data-[state=checked]:text-primary-foreground",
49
+ "ds:focus-visible:z-10 ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
50
+ "ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
51
+ "ds:forced-colors:focus-visible:outline-[CanvasText]",
52
+ // Forced colours drop background fills, so the chosen segment
53
+ // keeps the system highlight pair instead.
54
+ "ds:forced-colors:data-[state=checked]:[forced-color-adjust:none]",
55
+ "ds:forced-colors:data-[state=checked]:bg-[Highlight] ds:forced-colors:data-[state=checked]:text-[HighlightText]",
56
+ "ds:disabled:cursor-not-allowed ds:disabled:opacity-50"
57
+ ].join(" "),
58
+ false: ""
59
+ }
60
+ },
61
+ defaultVariants: {
62
+ interactive: !1
63
+ }
64
+ }
65
+ );
66
+ function L({
67
+ icon: d,
68
+ text: r,
69
+ collapsed: e
70
+ }) {
71
+ return /* @__PURE__ */ o(V, { children: [
72
+ d ? /* @__PURE__ */ s(
73
+ "span",
74
+ {
75
+ "aria-hidden": "true",
76
+ className: "ds:inline-flex ds:shrink-0 ds:items-center ds:[&>svg]:size-4",
77
+ children: d
78
+ }
79
+ ) : null,
80
+ /* @__PURE__ */ s("span", { className: e && d ? "ds:sr-only" : void 0, children: r })
81
+ ] });
82
+ }
83
+ const M = {
84
+ sm: "ds:size-1.5",
85
+ md: "ds:size-2",
86
+ lg: "ds:size-2.5"
87
+ }, P = O(
88
+ ({
89
+ label: d,
90
+ size: r = "md",
91
+ disabled: e,
92
+ disabledReason: t,
93
+ description: l,
94
+ icon: u,
95
+ shortLabel: k,
96
+ id: N,
97
+ className: m,
98
+ value: i,
99
+ ...f
100
+ }, p) => {
101
+ const j = E(), n = N ?? j, a = D(), C = (a == null ? void 0 : a.variant) === "card", [w, I] = H(!1);
102
+ if (_(!1), q(() => {
103
+ }, [a]), (a == null ? void 0 : a.variant) === "segmented") {
104
+ const v = !!(e && t), b = a.collapsed && !e, x = v || b && !!u;
105
+ return /* @__PURE__ */ s(
106
+ y,
107
+ {
108
+ label: v && t ? t : d,
109
+ open: x && w,
110
+ onOpenChange: (T) => I(x ? T : !1),
111
+ children: /* @__PURE__ */ s("span", { className: "ds:flex", "data-component": "radio", children: /* @__PURE__ */ s(
112
+ c.Item,
113
+ {
114
+ ref: p,
115
+ id: n,
116
+ disabled: e,
117
+ "aria-disabled": e || void 0,
118
+ "aria-label": d,
119
+ value: i,
120
+ className: K({ interactive: !0, className: m }),
121
+ "data-option-id": i,
122
+ ...f,
123
+ children: /* @__PURE__ */ s(
124
+ L,
125
+ {
126
+ icon: u,
127
+ text: k ?? d,
128
+ collapsed: b
129
+ }
130
+ )
131
+ }
132
+ ) })
133
+ }
134
+ );
135
+ }
136
+ const R = [
137
+ "ds:rounded-full ds:bg-primary",
138
+ M[r],
139
+ "ds:group-data-[disabled]:bg-muted"
140
+ ].join(" "), g = /* @__PURE__ */ s(
141
+ c.Item,
142
+ {
143
+ ref: p,
144
+ id: n,
145
+ disabled: e,
146
+ "aria-disabled": e || void 0,
147
+ value: i,
148
+ className: J({ size: r, className: m }),
149
+ "data-component": "radio",
150
+ "data-option-id": i,
151
+ ...f,
152
+ children: /* @__PURE__ */ s(
153
+ c.Indicator,
154
+ {
155
+ asChild: !0,
156
+ className: "ds:inline-flex ds:items-center ds:justify-center",
157
+ children: /* @__PURE__ */ s("span", { "aria-hidden": "true", className: R })
158
+ }
159
+ )
160
+ }
161
+ ), F = [
162
+ "type-label ds:text-foreground ds:select-none",
163
+ e ? "ds:cursor-not-allowed ds:opacity-50" : "ds:cursor-pointer"
164
+ ].join(" "), S = [
165
+ "ds:flex ds:items-start ds:gap-[var(--spacing-md)]",
166
+ "ds:rounded-[var(--radius-md)] ds:border ds:border-border",
167
+ "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:py-[var(--spacing-md)]",
168
+ "ds:min-h-[var(--min-target-size)]",
169
+ "ds:has-[[data-state=checked]]:border-ring",
170
+ "ds:has-[[data-state=checked]]:bg-[color-mix(in_srgb,var(--accent)_5%,transparent)]",
171
+ "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
172
+ e ? "ds:cursor-not-allowed ds:opacity-50" : "ds:cursor-pointer"
173
+ ].join(" "), h = C ? /* @__PURE__ */ o("label", { htmlFor: n, className: S, children: [
174
+ g,
175
+ /* @__PURE__ */ o("span", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:text-start", children: [
176
+ /* @__PURE__ */ s("span", { className: "type-label ds:text-foreground", children: d }),
177
+ l ? /* @__PURE__ */ s("span", { className: "type-body-sm ds:text-muted-foreground", children: l }) : null
178
+ ] })
179
+ ] }) : /* @__PURE__ */ o("div", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)] ds:min-h-[var(--min-target-size)]", children: [
180
+ g,
181
+ /* @__PURE__ */ s("label", { htmlFor: n, className: F, children: d })
182
+ ] });
183
+ return e && t ? /* @__PURE__ */ s(y, { label: t, children: h }) : h;
184
+ }
185
+ );
186
+ P.displayName = "Radio";
187
+ export {
188
+ P as R,
189
+ L as a,
190
+ A as b,
191
+ K as r
192
+ };
193
+ //# sourceMappingURL=radio-DNRe6H_8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-DNRe6H_8.js","sources":["../../src/components/radio-group/radio-group-context.ts","../../src/components/radio-group/radio.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type RadioGroupVariant =\n | 'vertical'\n | 'horizontal'\n | 'card'\n | 'segmented';\n\nexport interface RadioGroupInternalContextShape {\n variant: RadioGroupVariant;\n /** Segmented variant only: the labels no longer fit on one line, so each\n * segment shows its icon alone and its label in a tooltip. */\n collapsed: boolean;\n}\n\nexport const RadioGroupInternalContext =\n createContext<RadioGroupInternalContextShape | null>(null);\n\nexport function useRadioGroupContext(): RadioGroupInternalContextShape | null {\n return useContext(RadioGroupInternalContext);\n}\n","import {\n forwardRef,\n useEffect,\n useId,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react';\nimport * as RadixRadioGroup from '@radix-ui/react-radio-group';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useRadioGroupContext } from './radio-group-context';\nimport { Tooltip } from '../tooltip';\n\nconst radioVariants = cva(\n [\n 'ds:group ds:inline-flex ds:items-center ds:justify-center ds:shrink-0 ds:rounded-full',\n 'ds:border ds:border-border ds:bg-background',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:cursor-not-allowed ds:disabled:opacity-50',\n 'ds:data-[state=checked]:border-primary',\n 'ds:data-[disabled]:border-muted',\n 'ds:relative ds:before:absolute ds:before:inset-[calc((var(--min-target-size)-100%)/-2)] ds:before:content-[\"\"]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:size-3.5',\n md: 'ds:size-4',\n lg: 'ds:size-5',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * One segment of a `variant=\"segmented\"` group. `interactive: false` is the\n * same box without states, used by the group's hidden measuring row so the\n * measured width always matches the live segment.\n */\nexport const radioSegmentVariants = cva(\n [\n 'ds:relative ds:inline-flex ds:shrink-0 ds:items-center ds:justify-center ds:gap-[var(--spacing-xs)]',\n 'ds:min-h-[var(--min-target-size)] ds:min-w-[var(--min-target-size)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-sm)] ds:whitespace-nowrap type-label',\n ].join(' '),\n {\n variants: {\n interactive: {\n true: [\n 'ds:cursor-pointer ds:bg-transparent ds:text-foreground',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:data-[state=unchecked]:hover:enabled:bg-muted',\n 'ds:data-[state=checked]:bg-primary ds:data-[state=checked]:text-primary-foreground',\n 'ds:focus-visible:z-10 ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n // Forced colours drop background fills, so the chosen segment\n // keeps the system highlight pair instead.\n 'ds:forced-colors:data-[state=checked]:[forced-color-adjust:none]',\n 'ds:forced-colors:data-[state=checked]:bg-[Highlight] ds:forced-colors:data-[state=checked]:text-[HighlightText]',\n 'ds:disabled:cursor-not-allowed ds:disabled:opacity-50',\n ].join(' '),\n false: '',\n },\n },\n defaultVariants: {\n interactive: false,\n },\n },\n);\n\n/** Icon plus visible label of a segment. Collapsed, the label stays in the\n * DOM but visually hidden; a segment without an icon never collapses. */\nexport function RadioSegmentFace({\n icon,\n text,\n collapsed,\n}: {\n icon?: ReactNode;\n text: string;\n collapsed: boolean;\n}) {\n return (\n <>\n {icon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:shrink-0 ds:items-center ds:[&>svg]:size-4\"\n >\n {icon}\n </span>\n ) : null}\n <span className={collapsed && icon ? 'ds:sr-only' : undefined}>\n {text}\n </span>\n </>\n );\n}\n\nconst discSizeBySize = {\n sm: 'ds:size-1.5',\n md: 'ds:size-2',\n lg: 'ds:size-2.5',\n} as const;\n\ntype RadixItemProps = ComponentPropsWithoutRef<typeof RadixRadioGroup.Item>;\n\nexport interface RadioProps\n extends Omit<RadixItemProps, 'children'>, VariantProps<typeof radioVariants> {\n /** Visible label; in a segmented group, the accessible name and the\n * collapsed tooltip. */\n label: string;\n size?: 'sm' | 'md' | 'lg';\n disabledReason?: string;\n description?: string;\n /** Segmented group only: decorative icon shown before the label, and\n * alone once the group collapses. */\n icon?: ReactNode;\n /** Segmented group only: shorter visible text. `label` stays the\n * accessible name and must contain it (WCAG 2.5.3). */\n shortLabel?: string;\n}\n\nexport const Radio = forwardRef<HTMLButtonElement, RadioProps>(\n (\n {\n label,\n size = 'md',\n disabled,\n disabledReason,\n description,\n icon,\n shortLabel,\n id,\n className,\n value,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const radioId = id ?? generatedId;\n const ctx = useRadioGroupContext();\n const isCard = ctx?.variant === 'card';\n // Segmented tooltip: always mounted so a collapse never remounts the\n // radio (and drops its focus); it opens only while it has a job.\n const [tipOpen, setTipOpen] = useState(false);\n\n const warnedRef = useRef(false);\n useEffect(() => {\n if (import.meta.env.DEV && !ctx && !warnedRef.current) {\n warnedRef.current = true;\n console.warn(\n '<Radio> rendered without a <RadioGroup> ancestor. A lone radio is rarely meaningful — use <Checkbox> for a single on/off choice.',\n );\n }\n }, [ctx]);\n\n if (ctx?.variant === 'segmented') {\n const hasReason = Boolean(disabled && disabledReason);\n // A disabled segment leaves the tab order, so keyboard users could\n // never open its tooltip: it keeps its text instead of collapsing.\n const collapsedFace = ctx.collapsed && !disabled;\n const tipEnabled = hasReason || (collapsedFace && Boolean(icon));\n return (\n <Tooltip\n label={hasReason && disabledReason ? disabledReason : label}\n open={tipEnabled && tipOpen}\n onOpenChange={(next) => setTipOpen(tipEnabled ? next : false)}\n >\n {/* The trigger is a wrapper so a disabled segment still gets hover\n and focus-within events for its reason, and so the trigger's\n data-state never overwrites the radio's. As the outermost\n element it carries the bounding marker. */}\n <span className=\"ds:flex\" data-component=\"radio\">\n <RadixRadioGroup.Item\n ref={ref}\n id={radioId}\n disabled={disabled}\n aria-disabled={disabled || undefined}\n aria-label={label}\n value={value as string}\n className={radioSegmentVariants({ interactive: true, className })}\n data-option-id={value as string}\n {...props}\n >\n <RadioSegmentFace\n icon={icon}\n text={shortLabel ?? label}\n collapsed={collapsedFace}\n />\n </RadixRadioGroup.Item>\n </span>\n </Tooltip>\n );\n }\n\n const discClasses = [\n 'ds:rounded-full ds:bg-primary',\n discSizeBySize[size],\n 'ds:group-data-[disabled]:bg-muted',\n ].join(' ');\n\n const item = (\n <RadixRadioGroup.Item\n ref={ref}\n id={radioId}\n disabled={disabled}\n aria-disabled={disabled || undefined}\n value={value as string}\n className={radioVariants({ size, className })}\n data-component=\"radio\"\n data-option-id={value as string}\n {...props}\n >\n <RadixRadioGroup.Indicator\n asChild\n className=\"ds:inline-flex ds:items-center ds:justify-center\"\n >\n <span aria-hidden=\"true\" className={discClasses} />\n </RadixRadioGroup.Indicator>\n </RadixRadioGroup.Item>\n );\n\n const labelClasses = [\n 'type-label ds:text-foreground ds:select-none',\n disabled ? 'ds:cursor-not-allowed ds:opacity-50' : 'ds:cursor-pointer',\n ].join(' ');\n\n const cardClasses = [\n 'ds:flex ds:items-start ds:gap-[var(--spacing-md)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:py-[var(--spacing-md)]',\n 'ds:min-h-[var(--min-target-size)]',\n 'ds:has-[[data-state=checked]]:border-ring',\n 'ds:has-[[data-state=checked]]:bg-[color-mix(in_srgb,var(--accent)_5%,transparent)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n disabled ? 'ds:cursor-not-allowed ds:opacity-50' : 'ds:cursor-pointer',\n ].join(' ');\n\n const content = isCard ? (\n <label htmlFor={radioId} className={cardClasses}>\n {item}\n <span className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:text-start\">\n <span className=\"type-label ds:text-foreground\">{label}</span>\n {description ? (\n <span className=\"type-body-sm ds:text-muted-foreground\">\n {description}\n </span>\n ) : null}\n </span>\n </label>\n ) : (\n <div className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)] ds:min-h-[var(--min-target-size)]\">\n {item}\n <label htmlFor={radioId} className={labelClasses}>\n {label}\n </label>\n </div>\n );\n\n if (disabled && disabledReason) {\n return <Tooltip label={disabledReason}>{content}</Tooltip>;\n }\n\n return content;\n },\n);\n\nRadio.displayName = 'Radio';\n"],"names":["RadioGroupInternalContext","createContext","useRadioGroupContext","useContext","radioVariants","cva","radioSegmentVariants","RadioSegmentFace","icon","text","collapsed","jsxs","Fragment","jsx","discSizeBySize","Radio","forwardRef","label","size","disabled","disabledReason","description","shortLabel","id","className","value","props","ref","generatedId","useId","radioId","ctx","isCard","tipOpen","setTipOpen","useState","useRef","useEffect","hasReason","collapsedFace","tipEnabled","Tooltip","next","RadixRadioGroup","discClasses","item","labelClasses","cardClasses","content"],"mappings":";;;;;AAeO,MAAMA,IACXC,EAAqD,IAAI;AAEpD,SAASC,IAA8D;AAC5E,SAAOC,EAAWH,CAAyB;AAC7C;ACNA,MAAMI,IAAgBC;AAAA,EACpB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GAOaC,IAAuBD;AAAA,EAClC;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,aAAa;AAAA,QACX,MAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA;AAAA,UAGA;AAAA,UACA;AAAA,UACA;AAAA,QAAA,EACA,KAAK,GAAG;AAAA,QACV,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,iBAAiB;AAAA,MACf,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ;AAIO,SAASE,EAAiB;AAAA,EAC/B,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,WAAAC;AACF,GAIG;AACD,SACE,gBAAAC,EAAAC,GAAA,EACG,UAAA;AAAA,IAAAJ,IACC,gBAAAK;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAY;AAAA,QACZ,WAAU;AAAA,QAET,UAAAL;AAAA,MAAA;AAAA,IAAA,IAED;AAAA,sBACH,QAAA,EAAK,WAAWE,KAAaF,IAAO,eAAe,QACjD,UAAAC,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;AAEA,MAAMK,IAAiB;AAAA,EACrB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAoBaC,IAAQC;AAAA,EACnB,CACE;AAAA,IACE,OAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,UAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,MAAAb;AAAA,IACA,YAAAc;AAAA,IACA,IAAAC;AAAA,IACA,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAcC,EAAA,GACdC,IAAUP,KAAMK,GAChBG,IAAM7B,EAAA,GACN8B,KAASD,KAAA,gBAAAA,EAAK,aAAY,QAG1B,CAACE,GAASC,CAAU,IAAIC,EAAS,EAAK;AAY5C,QAVkBC,EAAO,EAAK,GAC9BC,EAAU,MAAM;AAAA,IAOhB,GAAG,CAACN,CAAG,CAAC,IAEJA,KAAA,gBAAAA,EAAK,aAAY,aAAa;AAChC,YAAMO,IAAY,GAAQnB,KAAYC,IAGhCmB,IAAgBR,EAAI,aAAa,CAACZ,GAClCqB,IAAaF,KAAcC,KAAiB,EAAQ/B;AAC1D,aACE,gBAAAK;AAAA,QAAC4B;AAAA,QAAA;AAAA,UACC,OAAOH,KAAalB,IAAiBA,IAAiBH;AAAA,UACtD,MAAMuB,KAAcP;AAAA,UACpB,cAAc,CAACS,MAASR,EAAWM,IAAaE,IAAO,EAAK;AAAA,UAM5D,4BAAC,QAAA,EAAK,WAAU,WAAU,kBAAe,SACvC,UAAA,gBAAA7B;AAAA,YAAC8B,EAAgB;AAAA,YAAhB;AAAA,cACC,KAAAhB;AAAA,cACA,IAAIG;AAAA,cACJ,UAAAX;AAAA,cACA,iBAAeA,KAAY;AAAA,cAC3B,cAAYF;AAAA,cACZ,OAAAQ;AAAA,cACA,WAAWnB,EAAqB,EAAE,aAAa,IAAM,WAAAkB,GAAW;AAAA,cAChE,kBAAgBC;AAAA,cACf,GAAGC;AAAA,cAEJ,UAAA,gBAAAb;AAAA,gBAACN;AAAA,gBAAA;AAAA,kBACC,MAAAC;AAAA,kBACA,MAAMc,KAAcL;AAAA,kBACpB,WAAWsB;AAAA,gBAAA;AAAA,cAAA;AAAA,YACb;AAAA,UAAA,GAEJ;AAAA,QAAA;AAAA,MAAA;AAAA,IAGN;AAEA,UAAMK,IAAc;AAAA,MAClB;AAAA,MACA9B,EAAeI,CAAI;AAAA,MACnB;AAAA,IAAA,EACA,KAAK,GAAG,GAEJ2B,IACJ,gBAAAhC;AAAA,MAAC8B,EAAgB;AAAA,MAAhB;AAAA,QACC,KAAAhB;AAAA,QACA,IAAIG;AAAA,QACJ,UAAAX;AAAA,QACA,iBAAeA,KAAY;AAAA,QAC3B,OAAAM;AAAA,QACA,WAAWrB,EAAc,EAAE,MAAAc,GAAM,WAAAM,GAAW;AAAA,QAC5C,kBAAe;AAAA,QACf,kBAAgBC;AAAA,QACf,GAAGC;AAAA,QAEJ,UAAA,gBAAAb;AAAA,UAAC8B,EAAgB;AAAA,UAAhB;AAAA,YACC,SAAO;AAAA,YACP,WAAU;AAAA,YAEV,4BAAC,QAAA,EAAK,eAAY,QAAO,WAAWC,GAAa;AAAA,UAAA;AAAA,QAAA;AAAA,MACnD;AAAA,IAAA,GAIEE,IAAe;AAAA,MACnB;AAAA,MACA3B,IAAW,wCAAwC;AAAA,IAAA,EACnD,KAAK,GAAG,GAEJ4B,IAAc;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA5B,IAAW,wCAAwC;AAAA,IAAA,EACnD,KAAK,GAAG,GAEJ6B,IAAUhB,IACd,gBAAArB,EAAC,WAAM,SAASmB,GAAS,WAAWiB,GACjC,UAAA;AAAA,MAAAF;AAAA,MACD,gBAAAlC,EAAC,QAAA,EAAK,WAAU,gEACd,UAAA;AAAA,0BAAC,QAAA,EAAK,WAAU,iCAAiC,UAAAM,GAAM;AAAA,QACtDI,sBACE,QAAA,EAAK,WAAU,yCACb,aACH,IACE;AAAA,MAAA,GACN;AAAA,IAAA,EAAA,CACF,IAEA,gBAAAV,EAAC,OAAA,EAAI,WAAU,+FACZ,UAAA;AAAA,MAAAkC;AAAA,wBACA,SAAA,EAAM,SAASf,GAAS,WAAWgB,GACjC,UAAA7B,EAAA,CACH;AAAA,IAAA,GACF;AAGF,WAAIE,KAAYC,sBACNqB,GAAA,EAAQ,OAAOrB,GAAiB,UAAA4B,GAAQ,IAG3CA;AAAA,EACT;AACF;AAEAjC,EAAM,cAAc;"}