@alfadocs/ui-kit-debug 1.132.0 → 1.134.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 (463) hide show
  1. package/dist/_chunks/{agenda-card-B8hV3dZV.js → agenda-card-B9wgX_Ed.js} +2 -2
  2. package/dist/_chunks/{agenda-card-B8hV3dZV.js.map → agenda-card-B9wgX_Ed.js.map} +1 -1
  3. package/dist/_chunks/{agenda-tray-Bu46s3dI.js → agenda-tray-CGcS_qoM.js} +2 -2
  4. package/dist/_chunks/{agenda-tray-Bu46s3dI.js.map → agenda-tray-CGcS_qoM.js.map} +1 -1
  5. package/dist/_chunks/appointment-card-DG3m9yN-.js +504 -0
  6. package/dist/_chunks/appointment-card-DG3m9yN-.js.map +1 -0
  7. package/dist/_chunks/{appointment-peek-DZa6xyUb.js → appointment-peek-BK0tDs4C.js} +2 -2
  8. package/dist/_chunks/{appointment-peek-DZa6xyUb.js.map → appointment-peek-BK0tDs4C.js.map} +1 -1
  9. package/dist/_chunks/{appointment-timeline-DQePqpyH.js → appointment-timeline-BiI2riRZ.js} +2 -2
  10. package/dist/_chunks/{appointment-timeline-DQePqpyH.js.map → appointment-timeline-BiI2riRZ.js.map} +1 -1
  11. package/dist/_chunks/appointment-tray-ClJCtYQj.js +200 -0
  12. package/dist/_chunks/appointment-tray-ClJCtYQj.js.map +1 -0
  13. package/dist/_chunks/{appointment-workflow-status-DMjuIK90.js → appointment-workflow-status-S-lx81Yz.js} +2 -2
  14. package/dist/_chunks/{appointment-workflow-status-DMjuIK90.js.map → appointment-workflow-status-S-lx81Yz.js.map} +1 -1
  15. package/dist/_chunks/ban-CiSCCcOE.js +15 -0
  16. package/dist/_chunks/ban-CiSCCcOE.js.map +1 -0
  17. package/dist/_chunks/{calendar-BIoOeBTT.js → calendar-CyLtLBNP.js} +2 -2
  18. package/dist/_chunks/{calendar-BIoOeBTT.js.map → calendar-CyLtLBNP.js.map} +1 -1
  19. package/dist/_chunks/calendar-appointment-editor-dialog-BSkIYGlW.js +13773 -0
  20. package/dist/_chunks/calendar-appointment-editor-dialog-BSkIYGlW.js.map +1 -0
  21. package/dist/_chunks/{calendar-event-card-BNEzkjm-.js → calendar-event-card-BJifpYZQ.js} +7 -6
  22. package/dist/_chunks/{calendar-event-card-BNEzkjm-.js.map → calendar-event-card-BJifpYZQ.js.map} +1 -1
  23. package/dist/_chunks/{care-plan-card-DKScH9Ss.js → care-plan-card-CjHq6PLo.js} +6 -6
  24. package/dist/_chunks/{care-plan-card-DKScH9Ss.js.map → care-plan-card-CjHq6PLo.js.map} +1 -1
  25. package/dist/_chunks/{care-plan-entry-card-AG1y3nyW.js → care-plan-entry-card-DY1toF6E.js} +2 -2
  26. package/dist/_chunks/{care-plan-entry-card-AG1y3nyW.js.map → care-plan-entry-card-DY1toF6E.js.map} +1 -1
  27. package/dist/_chunks/{care-plan-header-Dx5OMkc9.js → care-plan-header-CeFXUDnL.js} +6 -6
  28. package/dist/_chunks/{care-plan-header-Dx5OMkc9.js.map → care-plan-header-CeFXUDnL.js.map} +1 -1
  29. package/dist/_chunks/check-in-documents-CEVcgcYZ.js +136 -0
  30. package/dist/_chunks/check-in-documents-CEVcgcYZ.js.map +1 -0
  31. package/dist/_chunks/{clinical-note-card-pPaeWWnu.js → clinical-note-card-D--IwbZa.js} +2 -2
  32. package/dist/_chunks/{clinical-note-card-pPaeWWnu.js.map → clinical-note-card-D--IwbZa.js.map} +1 -1
  33. package/dist/_chunks/document-preview-DLVIrOYV.js +385 -0
  34. package/dist/_chunks/document-preview-DLVIrOYV.js.map +1 -0
  35. package/dist/_chunks/{entity-card-fpm-KUKc.js → entity-card-p-LANpYt.js} +18 -17
  36. package/dist/_chunks/{entity-card-fpm-KUKc.js.map → entity-card-p-LANpYt.js.map} +1 -1
  37. package/dist/_chunks/{error-page-B0fGNTRB.js → error-page-WLhmWUTq.js} +100 -115
  38. package/dist/_chunks/error-page-WLhmWUTq.js.map +1 -0
  39. package/dist/_chunks/finished-terminal-unDnXT4j.js +191 -0
  40. package/dist/_chunks/finished-terminal-unDnXT4j.js.map +1 -0
  41. package/dist/_chunks/house-DGCypGTo.js +21 -0
  42. package/dist/_chunks/house-DGCypGTo.js.map +1 -0
  43. package/dist/_chunks/is-safe-url-CEy9CEml.js +8 -0
  44. package/dist/_chunks/is-safe-url-CEy9CEml.js.map +1 -0
  45. package/dist/_chunks/keypad-DBH_keVs.js +152 -0
  46. package/dist/_chunks/keypad-DBH_keVs.js.map +1 -0
  47. package/dist/_chunks/keypad-button-mOaPQRrH.js +114 -0
  48. package/dist/_chunks/keypad-button-mOaPQRrH.js.map +1 -0
  49. package/dist/_chunks/{message-card-BG3_3nN1.js → message-card-Bw_q1qKx.js} +2 -2
  50. package/dist/_chunks/{message-card-BG3_3nN1.js.map → message-card-Bw_q1qKx.js.map} +1 -1
  51. package/dist/_chunks/{message-tray-BjZv0Fsk.js → message-tray-pLGgLmoG.js} +2 -2
  52. package/dist/_chunks/{message-tray-BjZv0Fsk.js.map → message-tray-pLGgLmoG.js.map} +1 -1
  53. package/dist/_chunks/{note-attachment-MNTIqdSz.js → note-attachment-JTIy9iXN.js} +2 -2
  54. package/dist/_chunks/{note-attachment-MNTIqdSz.js.map → note-attachment-JTIy9iXN.js.map} +1 -1
  55. package/dist/_chunks/{note-timeline-BQeW0VZY.js → note-timeline-BbjHMhkL.js} +2 -2
  56. package/dist/_chunks/{note-timeline-BQeW0VZY.js.map → note-timeline-BbjHMhkL.js.map} +1 -1
  57. package/dist/_chunks/{notes-panel-Cm-_pCRJ.js → notes-panel-BAyPOr8N.js} +2 -2
  58. package/dist/_chunks/{notes-panel-Cm-_pCRJ.js.map → notes-panel-BAyPOr8N.js.map} +1 -1
  59. package/dist/_chunks/{operator-hero-CnfWckNQ.js → operator-hero-D4wfVu2l.js} +2 -2
  60. package/dist/_chunks/{operator-hero-CnfWckNQ.js.map → operator-hero-D4wfVu2l.js.map} +1 -1
  61. package/dist/_chunks/otp-input-BNOTlxq3.js +342 -0
  62. package/dist/_chunks/otp-input-BNOTlxq3.js.map +1 -0
  63. package/dist/_chunks/patient-account-settings-BkAtIxJW.js +546 -0
  64. package/dist/_chunks/patient-account-settings-BkAtIxJW.js.map +1 -0
  65. package/dist/_chunks/patient-card-DTh3QTyS.js +125 -0
  66. package/dist/_chunks/patient-card-DTh3QTyS.js.map +1 -0
  67. package/dist/_chunks/patient-check-in-resume-xhqjC6gf.js +742 -0
  68. package/dist/_chunks/patient-check-in-resume-xhqjC6gf.js.map +1 -0
  69. package/dist/_chunks/patient-sign-in-pin-CDBqV254.js +432 -0
  70. package/dist/_chunks/patient-sign-in-pin-CDBqV254.js.map +1 -0
  71. package/dist/_chunks/patient-sign-in-steps-C2JSqlok.js +199 -0
  72. package/dist/_chunks/patient-sign-in-steps-C2JSqlok.js.map +1 -0
  73. package/dist/_chunks/{patient-summary-card-BUcZ-gaL.js → patient-summary-card-Bl2NknPe.js} +2 -2
  74. package/dist/_chunks/{patient-summary-card-BUcZ-gaL.js.map → patient-summary-card-Bl2NknPe.js.map} +1 -1
  75. package/dist/_chunks/{payment-request-card-Dv4WbRBe.js → payment-request-card-CNW00DCx.js} +6 -6
  76. package/dist/_chunks/{payment-request-card-Dv4WbRBe.js.map → payment-request-card-CNW00DCx.js.map} +1 -1
  77. package/dist/_chunks/{pdf-viewer-BnBKdx0y.js → pdf-viewer-TRC5jEm5.js} +472 -425
  78. package/dist/_chunks/pdf-viewer-TRC5jEm5.js.map +1 -0
  79. package/dist/_chunks/pin-entry-BugWQMOS.js +219 -0
  80. package/dist/_chunks/pin-entry-BugWQMOS.js.map +1 -0
  81. package/dist/_chunks/pin-indicator-Cb-n40UI.js +124 -0
  82. package/dist/_chunks/pin-indicator-Cb-n40UI.js.map +1 -0
  83. package/dist/_chunks/portal-details-CTEsm705.js +478 -0
  84. package/dist/_chunks/portal-details-CTEsm705.js.map +1 -0
  85. package/dist/_chunks/portal-documents-D8skew0h.js +902 -0
  86. package/dist/_chunks/portal-documents-D8skew0h.js.map +1 -0
  87. package/dist/_chunks/portal-parts-BdR29P7z.js +285 -0
  88. package/dist/_chunks/portal-parts-BdR29P7z.js.map +1 -0
  89. package/dist/_chunks/{privacy-mask-DJ1gee4c.js → privacy-mask-C19dJFMk.js} +5 -5
  90. package/dist/_chunks/{privacy-mask-DJ1gee4c.js.map → privacy-mask-C19dJFMk.js.map} +1 -1
  91. package/dist/_chunks/{product-hub-panel-a8wdVOUt.js → product-hub-panel-K4QbULG7.js} +2 -2
  92. package/dist/_chunks/{product-hub-panel-a8wdVOUt.js.map → product-hub-panel-K4QbULG7.js.map} +1 -1
  93. package/dist/_chunks/{registration-form-CwbhtKcy.js → registration-form-DS3RuKHu.js} +2 -2
  94. package/dist/_chunks/{registration-form-CwbhtKcy.js.map → registration-form-DS3RuKHu.js.map} +1 -1
  95. package/dist/_chunks/{reserved.agent-W8mR179D.js → reserved.agent-DOzOBUW7.js} +2 -2
  96. package/dist/_chunks/{reserved.agent-W8mR179D.js.map → reserved.agent-DOzOBUW7.js.map} +1 -1
  97. package/dist/_chunks/session-countdown-DOx1IBUB.js +232 -0
  98. package/dist/_chunks/session-countdown-DOx1IBUB.js.map +1 -0
  99. package/dist/_chunks/{sign-document-CQZVzfpk.js → sign-document-DDZbmYHu.js} +2 -2
  100. package/dist/_chunks/{sign-document-CQZVzfpk.js.map → sign-document-DDZbmYHu.js.map} +1 -1
  101. package/dist/_chunks/{signature-field-DjabvRZm.js → signature-field-BjlY_yXH.js} +39 -34
  102. package/dist/_chunks/signature-field-BjlY_yXH.js.map +1 -0
  103. package/dist/_chunks/{signature-request-4pGq3YBe.js → signature-request-CHsM_iWi.js} +2 -2
  104. package/dist/_chunks/{signature-request-4pGq3YBe.js.map → signature-request-CHsM_iWi.js.map} +1 -1
  105. package/dist/_chunks/{signature-status-chip-pIoQjvH8.js → signature-status-chip-DS9hHwIt.js} +66 -69
  106. package/dist/_chunks/signature-status-chip-DS9hHwIt.js.map +1 -0
  107. package/dist/_chunks/signing-end-screen-an9P8DOT.js +1041 -0
  108. package/dist/_chunks/signing-end-screen-an9P8DOT.js.map +1 -0
  109. package/dist/_chunks/sms-code-entry-Dgp4GwlM.js +316 -0
  110. package/dist/_chunks/sms-code-entry-Dgp4GwlM.js.map +1 -0
  111. package/dist/_chunks/step-up-dialog-C2JqJmCA.js +132 -0
  112. package/dist/_chunks/step-up-dialog-C2JqJmCA.js.map +1 -0
  113. package/dist/_chunks/{task-editor-BL2hHxNz.js → task-editor-g1AGfxhr.js} +38 -38
  114. package/dist/_chunks/{task-editor-BL2hHxNz.js.map → task-editor-g1AGfxhr.js.map} +1 -1
  115. package/dist/_chunks/{use-appointment-details-read-_b7FRB1x.js → use-appointment-details-read-Dzc6fEzG.js} +6 -6
  116. package/dist/_chunks/{use-appointment-details-read-_b7FRB1x.js.map → use-appointment-details-read-Dzc6fEzG.js.map} +1 -1
  117. package/dist/_chunks/use-zoom-drilldown-Cr1baU5X.js +221 -0
  118. package/dist/_chunks/use-zoom-drilldown-Cr1baU5X.js.map +1 -0
  119. package/dist/_chunks/{user-x-DYszNtIg.js → user-x-BJZg4kaP.js} +8 -19
  120. package/dist/_chunks/user-x-BJZg4kaP.js.map +1 -0
  121. package/dist/_chunks/{verify-identity-types-CxtrBXsZ.js → verify-identity-types-C6Bam8v6.js} +2 -2
  122. package/dist/_chunks/{verify-identity-types-CxtrBXsZ.js.map → verify-identity-types-C6Bam8v6.js.map} +1 -1
  123. package/dist/agent-catalog.json +723 -364
  124. package/dist/agent-i18n/en.json +75 -18
  125. package/dist/browser-support.js +1 -1
  126. package/dist/components/_shared/is-safe-url.d.ts +3 -1
  127. package/dist/components/_shared/is-safe-url.d.ts.map +1 -1
  128. package/dist/components/agenda-card/index.js +2 -2
  129. package/dist/components/agenda-tray/index.js +1 -1
  130. package/dist/components/appointment-card/appointment-card.d.ts +45 -0
  131. package/dist/components/appointment-card/appointment-card.d.ts.map +1 -1
  132. package/dist/components/appointment-card/appointment-tray.agent.d.ts.map +1 -1
  133. package/dist/components/appointment-card/appointment-tray.d.ts +11 -0
  134. package/dist/components/appointment-card/appointment-tray.d.ts.map +1 -1
  135. package/dist/components/appointment-card/index.js +3 -3
  136. package/dist/components/appointment-details-panel/index.js +1 -1
  137. package/dist/components/appointment-peek/index.js +1 -1
  138. package/dist/components/appointment-timeline/index.js +1 -1
  139. package/dist/components/booking/index.js +1 -1
  140. package/dist/components/calendar/index.js +1 -1
  141. package/dist/components/calendar-event-card/index.js +1 -1
  142. package/dist/components/care-plan-card/index.js +1 -1
  143. package/dist/components/care-plan-entry-card/index.js +1 -1
  144. package/dist/components/care-plan-header/index.js +1 -1
  145. package/dist/components/clinical-note-card/index.js +1 -1
  146. package/dist/components/document-preview/document-preview.agent.d.ts.map +1 -1
  147. package/dist/components/document-preview/document-preview.d.ts +61 -7
  148. package/dist/components/document-preview/document-preview.d.ts.map +1 -1
  149. package/dist/components/document-preview/index.js +1 -1
  150. package/dist/components/finished-terminal/finished-terminal.d.ts +63 -6
  151. package/dist/components/finished-terminal/finished-terminal.d.ts.map +1 -1
  152. package/dist/components/finished-terminal/index.d.ts +1 -1
  153. package/dist/components/finished-terminal/index.d.ts.map +1 -1
  154. package/dist/components/finished-terminal/index.js +1 -1
  155. package/dist/components/index.d.ts +12 -0
  156. package/dist/components/index.d.ts.map +1 -1
  157. package/dist/components/keypad/index.d.ts +3 -0
  158. package/dist/components/keypad/index.d.ts.map +1 -0
  159. package/dist/components/keypad/index.js +6 -0
  160. package/dist/components/keypad/index.js.map +1 -0
  161. package/dist/components/keypad/keypad.d.ts +54 -0
  162. package/dist/components/keypad/keypad.d.ts.map +1 -0
  163. package/dist/components/keypad-button/index.d.ts +3 -0
  164. package/dist/components/keypad-button/index.d.ts.map +1 -0
  165. package/dist/components/keypad-button/index.js +6 -0
  166. package/dist/components/keypad-button/index.js.map +1 -0
  167. package/dist/components/keypad-button/keypad-button.d.ts +33 -0
  168. package/dist/components/keypad-button/keypad-button.d.ts.map +1 -0
  169. package/dist/components/message-card/index.js +2 -2
  170. package/dist/components/message-tray/index.js +1 -1
  171. package/dist/components/note-timeline/index.js +1 -1
  172. package/dist/components/notes-panel/index.js +1 -1
  173. package/dist/components/operator-hero/index.js +1 -1
  174. package/dist/components/otp-input/index.js +1 -1
  175. package/dist/components/otp-input/otp-input.d.ts +11 -0
  176. package/dist/components/otp-input/otp-input.d.ts.map +1 -1
  177. package/dist/components/patient-summary-card/index.js +1 -1
  178. package/dist/components/payment-card/index.js +1 -1
  179. package/dist/components/pdf-viewer/index.js +1 -1
  180. package/dist/components/pdf-viewer/pdf-viewer.agent.d.ts.map +1 -1
  181. package/dist/components/pdf-viewer/pdf-viewer.d.ts +7 -0
  182. package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  183. package/dist/components/pin-entry/index.d.ts +3 -0
  184. package/dist/components/pin-entry/index.d.ts.map +1 -0
  185. package/dist/components/pin-entry/index.js +5 -0
  186. package/dist/components/pin-entry/index.js.map +1 -0
  187. package/dist/components/pin-entry/pin-entry.agent.d.ts +4 -0
  188. package/dist/components/pin-entry/pin-entry.agent.d.ts.map +1 -0
  189. package/dist/components/pin-entry/pin-entry.d.ts +64 -0
  190. package/dist/components/pin-entry/pin-entry.d.ts.map +1 -0
  191. package/dist/components/pin-indicator/index.d.ts +3 -0
  192. package/dist/components/pin-indicator/index.d.ts.map +1 -0
  193. package/dist/components/pin-indicator/index.js +9 -0
  194. package/dist/components/pin-indicator/index.js.map +1 -0
  195. package/dist/components/pin-indicator/pin-indicator.d.ts +34 -0
  196. package/dist/components/pin-indicator/pin-indicator.d.ts.map +1 -0
  197. package/dist/components/product-hub-tray/index.js +2 -2
  198. package/dist/components/session-countdown/index.js +1 -1
  199. package/dist/components/session-countdown/session-countdown.d.ts +19 -0
  200. package/dist/components/session-countdown/session-countdown.d.ts.map +1 -1
  201. package/dist/components/sign-document/index.js +1 -1
  202. package/dist/components/signature-field/index.js +1 -1
  203. package/dist/components/signature-field/signature-field.d.ts +17 -6
  204. package/dist/components/signature-field/signature-field.d.ts.map +1 -1
  205. package/dist/components/signature-status-chip/index.js +1 -1
  206. package/dist/components/signature-status-chip/signature-status-chip.d.ts +3 -2
  207. package/dist/components/signature-status-chip/signature-status-chip.d.ts.map +1 -1
  208. package/dist/components/sms-code-entry/index.d.ts +3 -0
  209. package/dist/components/sms-code-entry/index.d.ts.map +1 -0
  210. package/dist/components/sms-code-entry/index.js +5 -0
  211. package/dist/components/sms-code-entry/index.js.map +1 -0
  212. package/dist/components/sms-code-entry/sms-code-entry.agent.d.ts +4 -0
  213. package/dist/components/sms-code-entry/sms-code-entry.agent.d.ts.map +1 -0
  214. package/dist/components/sms-code-entry/sms-code-entry.d.ts +156 -0
  215. package/dist/components/sms-code-entry/sms-code-entry.d.ts.map +1 -0
  216. package/dist/components/step-up-dialog/index.d.ts +3 -0
  217. package/dist/components/step-up-dialog/index.d.ts.map +1 -0
  218. package/dist/components/step-up-dialog/index.js +5 -0
  219. package/dist/components/step-up-dialog/index.js.map +1 -0
  220. package/dist/components/step-up-dialog/step-up-dialog.d.ts +108 -0
  221. package/dist/components/step-up-dialog/step-up-dialog.d.ts.map +1 -0
  222. package/dist/components/task-editor/index.js +1 -1
  223. package/dist/components/workflow-status/index.js +1 -1
  224. package/dist/core.css +1 -1
  225. package/dist/hooks/index.js +1 -1
  226. package/dist/hooks/use-signing-session.d.ts +7 -2
  227. package/dist/hooks/use-signing-session.d.ts.map +1 -1
  228. package/dist/host-compat.css +10 -1
  229. package/dist/i18n/locales/ar.d.ts +514 -1
  230. package/dist/i18n/locales/ar.d.ts.map +1 -1
  231. package/dist/i18n/locales/ar.js +512 -4
  232. package/dist/i18n/locales/ar.js.map +1 -1
  233. package/dist/i18n/locales/de.d.ts +514 -1
  234. package/dist/i18n/locales/de.d.ts.map +1 -1
  235. package/dist/i18n/locales/de.js +520 -5
  236. package/dist/i18n/locales/de.js.map +1 -1
  237. package/dist/i18n/locales/el.d.ts +514 -1
  238. package/dist/i18n/locales/el.d.ts.map +1 -1
  239. package/dist/i18n/locales/el.js +515 -5
  240. package/dist/i18n/locales/el.js.map +1 -1
  241. package/dist/i18n/locales/en.d.ts +516 -1
  242. package/dist/i18n/locales/en.d.ts.map +1 -1
  243. package/dist/i18n/locales/en.js +522 -4
  244. package/dist/i18n/locales/en.js.map +1 -1
  245. package/dist/i18n/locales/es.d.ts +514 -1
  246. package/dist/i18n/locales/es.d.ts.map +1 -1
  247. package/dist/i18n/locales/es.js +513 -5
  248. package/dist/i18n/locales/es.js.map +1 -1
  249. package/dist/i18n/locales/fr.d.ts +514 -1
  250. package/dist/i18n/locales/fr.d.ts.map +1 -1
  251. package/dist/i18n/locales/fr.js +513 -5
  252. package/dist/i18n/locales/fr.js.map +1 -1
  253. package/dist/i18n/locales/hi.d.ts +514 -1
  254. package/dist/i18n/locales/hi.d.ts.map +1 -1
  255. package/dist/i18n/locales/hi.js +513 -5
  256. package/dist/i18n/locales/hi.js.map +1 -1
  257. package/dist/i18n/locales/it.d.ts +514 -1
  258. package/dist/i18n/locales/it.d.ts.map +1 -1
  259. package/dist/i18n/locales/it.js +520 -5
  260. package/dist/i18n/locales/it.js.map +1 -1
  261. package/dist/i18n/locales/ja.d.ts +514 -1
  262. package/dist/i18n/locales/ja.d.ts.map +1 -1
  263. package/dist/i18n/locales/ja.js +513 -5
  264. package/dist/i18n/locales/ja.js.map +1 -1
  265. package/dist/i18n/locales/nl.d.ts +514 -1
  266. package/dist/i18n/locales/nl.d.ts.map +1 -1
  267. package/dist/i18n/locales/nl.js +520 -5
  268. package/dist/i18n/locales/nl.js.map +1 -1
  269. package/dist/i18n/locales/pl.d.ts +514 -1
  270. package/dist/i18n/locales/pl.d.ts.map +1 -1
  271. package/dist/i18n/locales/pl.js +520 -5
  272. package/dist/i18n/locales/pl.js.map +1 -1
  273. package/dist/i18n/locales/pt.d.ts +514 -1
  274. package/dist/i18n/locales/pt.d.ts.map +1 -1
  275. package/dist/i18n/locales/pt.js +520 -5
  276. package/dist/i18n/locales/pt.js.map +1 -1
  277. package/dist/i18n/locales/ro.d.ts +514 -1
  278. package/dist/i18n/locales/ro.d.ts.map +1 -1
  279. package/dist/i18n/locales/ro.js +520 -5
  280. package/dist/i18n/locales/ro.js.map +1 -1
  281. package/dist/i18n/locales/ru.d.ts +514 -1
  282. package/dist/i18n/locales/ru.d.ts.map +1 -1
  283. package/dist/i18n/locales/ru.js +512 -4
  284. package/dist/i18n/locales/ru.js.map +1 -1
  285. package/dist/i18n/locales/sq.d.ts +514 -1
  286. package/dist/i18n/locales/sq.d.ts.map +1 -1
  287. package/dist/i18n/locales/sq.js +513 -5
  288. package/dist/i18n/locales/sq.js.map +1 -1
  289. package/dist/i18n/locales/sv.d.ts +514 -1
  290. package/dist/i18n/locales/sv.d.ts.map +1 -1
  291. package/dist/i18n/locales/sv.js +513 -5
  292. package/dist/i18n/locales/sv.js.map +1 -1
  293. package/dist/i18n/locales/tr.d.ts +514 -1
  294. package/dist/i18n/locales/tr.d.ts.map +1 -1
  295. package/dist/i18n/locales/tr.js +515 -5
  296. package/dist/i18n/locales/tr.js.map +1 -1
  297. package/dist/i18n/locales/zh.d.ts +514 -1
  298. package/dist/i18n/locales/zh.d.ts.map +1 -1
  299. package/dist/i18n/locales/zh.js +513 -5
  300. package/dist/i18n/locales/zh.js.map +1 -1
  301. package/dist/index.js +1271 -1204
  302. package/dist/index.js.map +1 -1
  303. package/dist/locales/ar.json +516 -3
  304. package/dist/locales/de.json +517 -4
  305. package/dist/locales/el.json +517 -4
  306. package/dist/locales/en.json +516 -3
  307. package/dist/locales/es.json +517 -4
  308. package/dist/locales/fr.json +517 -4
  309. package/dist/locales/hi.json +517 -4
  310. package/dist/locales/it.json +517 -4
  311. package/dist/locales/ja.json +517 -4
  312. package/dist/locales/nl.json +517 -4
  313. package/dist/locales/pl.json +517 -4
  314. package/dist/locales/pt.json +517 -4
  315. package/dist/locales/ro.json +517 -4
  316. package/dist/locales/ru.json +516 -3
  317. package/dist/locales/sq.json +517 -4
  318. package/dist/locales/sv.json +517 -4
  319. package/dist/locales/tr.json +517 -4
  320. package/dist/locales/zh.json +517 -4
  321. package/dist/patterns/calendar/calendar-workspace.d.ts.map +1 -1
  322. package/dist/patterns/calendar/calendar-workspace.model.d.ts.map +1 -1
  323. package/dist/patterns/calendar/calendar.journey.d.ts +4 -0
  324. package/dist/patterns/calendar/calendar.journey.d.ts.map +1 -1
  325. package/dist/patterns/calendar/calendar.sheets.d.ts.map +1 -1
  326. package/dist/patterns/calendar/calendar.surface.d.ts +15 -1
  327. package/dist/patterns/calendar/calendar.surface.d.ts.map +1 -1
  328. package/dist/patterns/calendar/calendar.types.d.ts +4 -0
  329. package/dist/patterns/calendar/calendar.types.d.ts.map +1 -1
  330. package/dist/patterns/calendar/index.js +1 -1
  331. package/dist/patterns/check-in-documents/check-in-documents.d.ts +61 -0
  332. package/dist/patterns/check-in-documents/check-in-documents.d.ts.map +1 -0
  333. package/dist/patterns/check-in-documents/check-in-signable-document.d.ts +32 -0
  334. package/dist/patterns/check-in-documents/check-in-signable-document.d.ts.map +1 -0
  335. package/dist/patterns/check-in-documents/index.d.ts +4 -0
  336. package/dist/patterns/check-in-documents/index.d.ts.map +1 -0
  337. package/dist/patterns/check-in-documents/index.js +5 -0
  338. package/dist/patterns/check-in-documents/index.js.map +1 -0
  339. package/dist/patterns/error-page/index.js +1 -1
  340. package/dist/patterns/patient-account-settings/index.d.ts +4 -0
  341. package/dist/patterns/patient-account-settings/index.d.ts.map +1 -0
  342. package/dist/patterns/patient-account-settings/index.js +5 -0
  343. package/dist/patterns/patient-account-settings/index.js.map +1 -0
  344. package/dist/patterns/patient-account-settings/patient-account-settings-panels.d.ts +36 -0
  345. package/dist/patterns/patient-account-settings/patient-account-settings-panels.d.ts.map +1 -0
  346. package/dist/patterns/patient-account-settings/patient-account-settings.d.ts +94 -0
  347. package/dist/patterns/patient-account-settings/patient-account-settings.d.ts.map +1 -0
  348. package/dist/patterns/patient-account-settings/patient-account-settings.types.d.ts +91 -0
  349. package/dist/patterns/patient-account-settings/patient-account-settings.types.d.ts.map +1 -0
  350. package/dist/patterns/patient-check-in/index.d.ts +20 -0
  351. package/dist/patterns/patient-check-in/index.d.ts.map +1 -0
  352. package/dist/patterns/patient-check-in/index.js +13 -0
  353. package/dist/patterns/patient-check-in/index.js.map +1 -0
  354. package/dist/patterns/patient-check-in/patient-check-in-changed.d.ts +33 -0
  355. package/dist/patterns/patient-check-in/patient-check-in-changed.d.ts.map +1 -0
  356. package/dist/patterns/patient-check-in/patient-check-in-connection-notice.d.ts +29 -0
  357. package/dist/patterns/patient-check-in/patient-check-in-connection-notice.d.ts.map +1 -0
  358. package/dist/patterns/patient-check-in/patient-check-in-done.d.ts +25 -0
  359. package/dist/patterns/patient-check-in/patient-check-in-done.d.ts.map +1 -0
  360. package/dist/patterns/patient-check-in/patient-check-in-entry.d.ts +29 -0
  361. package/dist/patterns/patient-check-in/patient-check-in-entry.d.ts.map +1 -0
  362. package/dist/patterns/patient-check-in/patient-check-in-hub-empty.d.ts +23 -0
  363. package/dist/patterns/patient-check-in/patient-check-in-hub-empty.d.ts.map +1 -0
  364. package/dist/patterns/patient-check-in/patient-check-in-hub.d.ts +61 -0
  365. package/dist/patterns/patient-check-in/patient-check-in-hub.d.ts.map +1 -0
  366. package/dist/patterns/patient-check-in/patient-check-in-personal-data.d.ts +73 -0
  367. package/dist/patterns/patient-check-in/patient-check-in-personal-data.d.ts.map +1 -0
  368. package/dist/patterns/patient-check-in/patient-check-in-privacy.d.ts +9 -0
  369. package/dist/patterns/patient-check-in/patient-check-in-privacy.d.ts.map +1 -0
  370. package/dist/patterns/patient-check-in/patient-check-in-resume.d.ts +29 -0
  371. package/dist/patterns/patient-check-in/patient-check-in-resume.d.ts.map +1 -0
  372. package/dist/patterns/patient-check-in/patient-check-in-shell.d.ts +60 -0
  373. package/dist/patterns/patient-check-in/patient-check-in-shell.d.ts.map +1 -0
  374. package/dist/patterns/patient-check-in/patient-check-in-types.d.ts +92 -0
  375. package/dist/patterns/patient-check-in/patient-check-in-types.d.ts.map +1 -0
  376. package/dist/patterns/patient-portal/index.d.ts +12 -0
  377. package/dist/patterns/patient-portal/index.d.ts.map +1 -0
  378. package/dist/patterns/patient-portal/index.js +13 -0
  379. package/dist/patterns/patient-portal/index.js.map +1 -0
  380. package/dist/patterns/patient-portal/portal-appointments.d.ts +70 -0
  381. package/dist/patterns/patient-portal/portal-appointments.d.ts.map +1 -0
  382. package/dist/patterns/patient-portal/portal-details.d.ts +148 -0
  383. package/dist/patterns/patient-portal/portal-details.d.ts.map +1 -0
  384. package/dist/patterns/patient-portal/portal-documents.d.ts +74 -0
  385. package/dist/patterns/patient-portal/portal-documents.d.ts.map +1 -0
  386. package/dist/patterns/patient-portal/portal-format.d.ts +14 -0
  387. package/dist/patterns/patient-portal/portal-format.d.ts.map +1 -0
  388. package/dist/patterns/patient-portal/portal-home.d.ts +71 -0
  389. package/dist/patterns/patient-portal/portal-home.d.ts.map +1 -0
  390. package/dist/patterns/patient-portal/portal-parts.d.ts +107 -0
  391. package/dist/patterns/patient-portal/portal-parts.d.ts.map +1 -0
  392. package/dist/patterns/patient-portal/portal-shell.d.ts +84 -0
  393. package/dist/patterns/patient-portal/portal-shell.d.ts.map +1 -0
  394. package/dist/patterns/patient-portal/portal-types.d.ts +157 -0
  395. package/dist/patterns/patient-portal/portal-types.d.ts.map +1 -0
  396. package/dist/patterns/patient-sign-in/index.d.ts +7 -0
  397. package/dist/patterns/patient-sign-in/index.d.ts.map +1 -0
  398. package/dist/patterns/patient-sign-in/index.js +15 -0
  399. package/dist/patterns/patient-sign-in/index.js.map +1 -0
  400. package/dist/patterns/patient-sign-in/patient-card.d.ts +74 -0
  401. package/dist/patterns/patient-sign-in/patient-card.d.ts.map +1 -0
  402. package/dist/patterns/patient-sign-in/patient-sign-in-email.d.ts +109 -0
  403. package/dist/patterns/patient-sign-in/patient-sign-in-email.d.ts.map +1 -0
  404. package/dist/patterns/patient-sign-in/patient-sign-in-pin.d.ts +157 -0
  405. package/dist/patterns/patient-sign-in/patient-sign-in-pin.d.ts.map +1 -0
  406. package/dist/patterns/patient-sign-in/patient-sign-in-steps.d.ts +143 -0
  407. package/dist/patterns/patient-sign-in/patient-sign-in-steps.d.ts.map +1 -0
  408. package/dist/patterns/registration-form/index.js +1 -1
  409. package/dist/patterns/signature-request/index.js +1 -1
  410. package/dist/patterns/signing/index.d.ts +25 -0
  411. package/dist/patterns/signing/index.d.ts.map +1 -0
  412. package/dist/patterns/signing/index.js +16 -0
  413. package/dist/patterns/signing/index.js.map +1 -0
  414. package/dist/patterns/signing/multi-field-signer.d.ts +117 -0
  415. package/dist/patterns/signing/multi-field-signer.d.ts.map +1 -0
  416. package/dist/patterns/signing/signing-awaiting-screen.d.ts +25 -0
  417. package/dist/patterns/signing/signing-awaiting-screen.d.ts.map +1 -0
  418. package/dist/patterns/signing/signing-chrome.d.ts +30 -0
  419. package/dist/patterns/signing/signing-chrome.d.ts.map +1 -0
  420. package/dist/patterns/signing/signing-document-screen.d.ts +87 -0
  421. package/dist/patterns/signing/signing-document-screen.d.ts.map +1 -0
  422. package/dist/patterns/signing/signing-end-screen.d.ts +27 -0
  423. package/dist/patterns/signing/signing-end-screen.d.ts.map +1 -0
  424. package/dist/patterns/signing/signing-finished-screen.d.ts +34 -0
  425. package/dist/patterns/signing/signing-finished-screen.d.ts.map +1 -0
  426. package/dist/patterns/signing/signing-footer.d.ts +56 -0
  427. package/dist/patterns/signing/signing-footer.d.ts.map +1 -0
  428. package/dist/patterns/signing/signing-handoff-screen.d.ts +37 -0
  429. package/dist/patterns/signing/signing-handoff-screen.d.ts.map +1 -0
  430. package/dist/patterns/signing/signing-message-dialog.d.ts +29 -0
  431. package/dist/patterns/signing/signing-message-dialog.d.ts.map +1 -0
  432. package/dist/patterns/signing/signing-progress-chip.d.ts +27 -0
  433. package/dist/patterns/signing/signing-progress-chip.d.ts.map +1 -0
  434. package/dist/patterns/signing/signing-roster.d.ts +44 -0
  435. package/dist/patterns/signing/signing-roster.d.ts.map +1 -0
  436. package/dist/patterns/signing/signing-staff-id-confirmation.d.ts +49 -0
  437. package/dist/patterns/signing/signing-staff-id-confirmation.d.ts.map +1 -0
  438. package/dist/patterns/verify-identity/index.js +1 -1
  439. package/dist/tokens.css +1 -1
  440. package/package.json +49 -1
  441. package/dist/_chunks/appointment-card-OAOur8lH.js +0 -434
  442. package/dist/_chunks/appointment-card-OAOur8lH.js.map +0 -1
  443. package/dist/_chunks/appointment-tray-DSFqO5Rm.js +0 -193
  444. package/dist/_chunks/appointment-tray-DSFqO5Rm.js.map +0 -1
  445. package/dist/_chunks/calendar-appointment-editor-dialog-WW6V1SGh.js +0 -13663
  446. package/dist/_chunks/calendar-appointment-editor-dialog-WW6V1SGh.js.map +0 -1
  447. package/dist/_chunks/document-preview-_kQ9QvZV.js +0 -291
  448. package/dist/_chunks/document-preview-_kQ9QvZV.js.map +0 -1
  449. package/dist/_chunks/error-page-B0fGNTRB.js.map +0 -1
  450. package/dist/_chunks/finished-terminal-FR8uc_Ws.js +0 -122
  451. package/dist/_chunks/finished-terminal-FR8uc_Ws.js.map +0 -1
  452. package/dist/_chunks/is-safe-url-DkETxeHz.js +0 -7
  453. package/dist/_chunks/is-safe-url-DkETxeHz.js.map +0 -1
  454. package/dist/_chunks/otp-input-gV1446Dw.js +0 -301
  455. package/dist/_chunks/otp-input-gV1446Dw.js.map +0 -1
  456. package/dist/_chunks/pdf-viewer-BnBKdx0y.js.map +0 -1
  457. package/dist/_chunks/session-countdown-C4tzbJVc.js +0 -223
  458. package/dist/_chunks/session-countdown-C4tzbJVc.js.map +0 -1
  459. package/dist/_chunks/signature-field-DjabvRZm.js.map +0 -1
  460. package/dist/_chunks/signature-status-chip-pIoQjvH8.js.map +0 -1
  461. package/dist/_chunks/use-zoom-drilldown-qCX34w9I.js +0 -210
  462. package/dist/_chunks/use-zoom-drilldown-qCX34w9I.js.map +0 -1
  463. package/dist/_chunks/user-x-DYszNtIg.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "packageVersion": "1.132.0",
3
+ "packageVersion": "1.134.0",
4
4
  "components": [
5
5
  {
6
6
  "kind": "component",
@@ -646,7 +646,7 @@
646
646
  "root": {
647
647
  "attr": "data-component",
648
648
  "value": "appointment-card",
649
- "description": "Marks the element as a kit AppointmentCard. The root also emits data-component-id sourced from item.id, data-state with the appointment lifecycle, and data-type with the delivery channel."
649
+ "description": "Marks the element as a kit AppointmentCard. The root also emits data-component-id sourced from item.id, data-state with the appointment lifecycle, and data-type with the delivery channel. When the card is interactive its activator (link or button) carries data-action=\"open-appointment\"."
650
650
  },
651
651
  "instanceId": {
652
652
  "attr": "data-component-id",
@@ -904,7 +904,7 @@
904
904
  "root": {
905
905
  "attr": "data-component",
906
906
  "value": "appointment-tray",
907
- "description": "Marks the AppointmentTray wrapper."
907
+ "description": "Marks the AppointmentTray wrapper. When the host passes onAddAppointment, the header button carries data-action=\"add-appointment\". It only calls the host, so it has a hook but no agent action: creating an appointment writes patient data and belongs to the host's own flow."
908
908
  },
909
909
  "instanceId": {
910
910
  "attr": "data-component-id",
@@ -6166,7 +6166,9 @@
6166
6166
  {
6167
6167
  "kind": "component",
6168
6168
  "id": "document-preview",
6169
- "capabilities": [],
6169
+ "capabilities": [
6170
+ "close"
6171
+ ],
6170
6172
  "state": [
6171
6173
  {
6172
6174
  "name": "kind",
@@ -6195,7 +6197,7 @@
6195
6197
  "root": {
6196
6198
  "attr": "data-component",
6197
6199
  "value": "document-preview",
6198
- "description": "Marks the DocumentPreview region."
6200
+ "description": "Marks the DocumentPreview region. When the host passes onClose and onDownload, the header buttons carry data-action=\"close-document\" and data-action=\"download-document\"; both only call the host."
6199
6201
  },
6200
6202
  "instanceId": {
6201
6203
  "attr": "data-component-id",
@@ -9574,6 +9576,53 @@
9574
9576
  }
9575
9577
  }
9576
9578
  },
9579
+ {
9580
+ "kind": "component",
9581
+ "id": "keypad",
9582
+ "capabilities": [],
9583
+ "state": [],
9584
+ "actions": [],
9585
+ "domHooks": {
9586
+ "root": {
9587
+ "attr": "data-component",
9588
+ "value": "keypad",
9589
+ "description": "Marks the 3 × 4 number pad (role=\"group\"). Its keys are KeypadButtons in fixed phone order."
9590
+ },
9591
+ "instanceId": {
9592
+ "attr": "data-component-id",
9593
+ "sourceProp": "id",
9594
+ "description": "Sourced from the id prop."
9595
+ },
9596
+ "item": {
9597
+ "attr": "data-key-id",
9598
+ "description": "On each key: \"0\" to \"9\" for the digits, \"delete\" for Delete. For tests and scripted demos only: an agent never presses these keys to type a PIN. The root carries a session-replay mask class (maskClassName, default ph-no-capture)."
9599
+ }
9600
+ }
9601
+ },
9602
+ {
9603
+ "kind": "component",
9604
+ "id": "keypad-button",
9605
+ "capabilities": [],
9606
+ "state": [],
9607
+ "actions": [],
9608
+ "domHooks": {
9609
+ "root": {
9610
+ "attr": "data-component",
9611
+ "value": "keypad-button",
9612
+ "description": "Marks one keypad key. `data-variant` is digit, action or spacer; a spacer is aria-hidden and never a target."
9613
+ },
9614
+ "instanceId": {
9615
+ "attr": "data-component-id",
9616
+ "sourceProp": "id",
9617
+ "description": "Sourced from the id prop."
9618
+ },
9619
+ "item": {
9620
+ "attr": "data-key-id",
9621
+ "sourceProp": "digit",
9622
+ "description": "The digit a digit key types. Action keys carry no data-key-id of their own; Keypad sets data-key-id=\"delete\" on its Delete key."
9623
+ }
9624
+ }
9625
+ },
9577
9626
  {
9578
9627
  "kind": "component",
9579
9628
  "id": "link",
@@ -12163,7 +12212,8 @@
12163
12212
  "domHooks": {
12164
12213
  "root": {
12165
12214
  "attr": "data-component",
12166
- "value": "pdf-viewer"
12215
+ "value": "pdf-viewer",
12216
+ "description": "Marks the PDFViewer. Each toolbar button carries a data-action: previous-page, next-page, zoom-out, zoom-in, open-search, close-search (the find bar) and print. go_to_page, set_zoom and print on this adapter do the same work through the handle."
12167
12217
  },
12168
12218
  "instanceId": {
12169
12219
  "attr": "data-component-id",
@@ -13083,6 +13133,82 @@
13083
13133
  }
13084
13134
  }
13085
13135
  },
13136
+ {
13137
+ "kind": "component",
13138
+ "id": "pin-entry",
13139
+ "capabilities": [],
13140
+ "state": [
13141
+ {
13142
+ "name": "filledCount",
13143
+ "type": "number",
13144
+ "description": "How many digits are typed. Never the digits themselves.",
13145
+ "descriptionKey": "ui.agent.pinEntry.state.filledCount"
13146
+ },
13147
+ {
13148
+ "name": "length",
13149
+ "type": "number",
13150
+ "description": "How many digits the PIN has.",
13151
+ "descriptionKey": "ui.agent.pinEntry.state.length"
13152
+ },
13153
+ {
13154
+ "name": "isComplete",
13155
+ "type": "boolean",
13156
+ "description": "Whether every digit is typed.",
13157
+ "descriptionKey": "ui.agent.pinEntry.state.isComplete"
13158
+ }
13159
+ ],
13160
+ "actions": [
13161
+ {
13162
+ "name": "clear",
13163
+ "safety": "destructive",
13164
+ "idempotent": true,
13165
+ "description": "Empty the PIN. Loses the digits typed so far.",
13166
+ "descriptionKey": "ui.agent.pinEntry.actions.clear"
13167
+ },
13168
+ {
13169
+ "name": "focus",
13170
+ "safety": "read",
13171
+ "idempotent": true,
13172
+ "description": "Move keyboard focus to the PIN field, so physical digits type into it.",
13173
+ "descriptionKey": "ui.agent.pinEntry.actions.focus"
13174
+ }
13175
+ ],
13176
+ "domHooks": {
13177
+ "root": {
13178
+ "attr": "data-component",
13179
+ "value": "pin-entry",
13180
+ "description": "Marks the PIN control: a label, the PIN dots over a real password field (inputmode=\"none\") and a Keypad."
13181
+ },
13182
+ "instanceId": {
13183
+ "attr": "data-component-id",
13184
+ "sourceProp": "id",
13185
+ "description": "Sourced from the id prop."
13186
+ }
13187
+ }
13188
+ },
13189
+ {
13190
+ "kind": "component",
13191
+ "id": "pin-indicator",
13192
+ "capabilities": [],
13193
+ "state": [],
13194
+ "actions": [],
13195
+ "domHooks": {
13196
+ "root": {
13197
+ "attr": "data-component",
13198
+ "value": "pin-indicator",
13199
+ "description": "Marks the PIN dots. data-state is idle, complete or error; data-filled and data-length give the count. The indicator never renders a digit."
13200
+ },
13201
+ "instanceId": {
13202
+ "attr": "data-component-id",
13203
+ "sourceProp": "id",
13204
+ "description": "Sourced from the id prop."
13205
+ },
13206
+ "item": {
13207
+ "attr": "data-dot-id",
13208
+ "description": "On each dot: its position, from 0. A dot also carries data-filled when that dot is filled; the root carries the number of digits typed."
13209
+ }
13210
+ }
13211
+ },
13086
13212
  {
13087
13213
  "kind": "component",
13088
13214
  "id": "popover",
@@ -15258,7 +15384,7 @@
15258
15384
  "root": {
15259
15385
  "attr": "data-component",
15260
15386
  "value": "session-countdown",
15261
- "description": "Marks the element as a kit SessionCountdown banner. The root also emits `data-tone=\"running\" | \"warning\" | \"expired\"` (derived from the remaining time). The accessible remaining-time announcement is surfaced via the region's aria-label and a nested polite live region."
15387
+ "description": "Marks the element as a kit SessionCountdown banner. The root also emits `data-tone=\"running\" | \"warning\" | \"expired\"` (derived from the remaining time). When the session has expired and the host passes onRestart, the only button carries data-action=\"restart-session\"; it only calls the host. The accessible remaining-time announcement is surfaced via the region's aria-label and a nested polite live region."
15262
15388
  }
15263
15389
  }
15264
15390
  },
@@ -16102,6 +16228,65 @@
16102
16228
  }
16103
16229
  }
16104
16230
  },
16231
+ {
16232
+ "kind": "component",
16233
+ "id": "sms-code-entry",
16234
+ "capabilities": [],
16235
+ "state": [
16236
+ {
16237
+ "name": "filledCount",
16238
+ "type": "number",
16239
+ "description": "How many digits are typed. Never the digits themselves.",
16240
+ "descriptionKey": "ui.agent.smsCodeEntry.state.filledCount"
16241
+ },
16242
+ {
16243
+ "name": "length",
16244
+ "type": "number",
16245
+ "description": "How many digits the code has.",
16246
+ "descriptionKey": "ui.agent.smsCodeEntry.state.length"
16247
+ },
16248
+ {
16249
+ "name": "isComplete",
16250
+ "type": "boolean",
16251
+ "description": "Whether every box is filled, so the person can press the submit button.",
16252
+ "descriptionKey": "ui.agent.smsCodeEntry.state.isComplete"
16253
+ },
16254
+ {
16255
+ "name": "error",
16256
+ "type": "'wrong' | 'expired' | 'locked' | 'send-failed' | 'resend-limit' | null",
16257
+ "description": "What the host reported about the code: wrong, expired, locked, send-failed or resend-limit, or null when it reported nothing.",
16258
+ "descriptionKey": "ui.agent.smsCodeEntry.state.error"
16259
+ }
16260
+ ],
16261
+ "actions": [
16262
+ {
16263
+ "name": "clear",
16264
+ "safety": "destructive",
16265
+ "idempotent": true,
16266
+ "description": "Empty the boxes. Loses the digits typed so far.",
16267
+ "descriptionKey": "ui.agent.smsCodeEntry.actions.clear"
16268
+ },
16269
+ {
16270
+ "name": "focus",
16271
+ "safety": "read",
16272
+ "idempotent": true,
16273
+ "description": "Move keyboard focus to the code boxes, so the person can type or paste the code. Does nothing while the boxes are disabled.",
16274
+ "descriptionKey": "ui.agent.smsCodeEntry.actions.focus"
16275
+ }
16276
+ ],
16277
+ "domHooks": {
16278
+ "root": {
16279
+ "attr": "data-component",
16280
+ "value": "sms-code-entry",
16281
+ "description": "Marks the SMS code step: the sentence naming the masked mobile, the code boxes (an OTPInput), the notes, \"Send a new code\" and the submit button."
16282
+ },
16283
+ "instanceId": {
16284
+ "attr": "data-component-id",
16285
+ "sourceProp": "id",
16286
+ "description": "Sourced from the id prop."
16287
+ }
16288
+ }
16289
+ },
16105
16290
  {
16106
16291
  "kind": "component",
16107
16292
  "id": "social-sign-in-button",
@@ -16271,6 +16456,29 @@
16271
16456
  }
16272
16457
  }
16273
16458
  },
16459
+ {
16460
+ "kind": "component",
16461
+ "id": "step-up-dialog",
16462
+ "capabilities": [
16463
+ "open",
16464
+ "close",
16465
+ "dismiss"
16466
+ ],
16467
+ "state": [],
16468
+ "actions": [],
16469
+ "domHooks": {
16470
+ "root": {
16471
+ "attr": "data-component",
16472
+ "value": "step-up-dialog",
16473
+ "description": "Marks the body wrapper inside the dialog surface: the title, the subject, the code entry (or the no-mobile refusal) and Cancel. The surrounding Dialog, with its own data-component=\"dialog\", owns the open-state handle."
16474
+ },
16475
+ "instanceId": {
16476
+ "attr": "data-component-id",
16477
+ "sourceProp": "id",
16478
+ "description": "Sourced from the id prop. Emitted on this body wrapper AND on the composed Dialog content, which registers `dialogAgent` under the same id, so one id addresses both the step-up body and the open-state handle."
16479
+ }
16480
+ }
16481
+ },
16274
16482
  {
16275
16483
  "kind": "component",
16276
16484
  "id": "stepper-accordion",
@@ -21959,6 +22167,54 @@
21959
22167
  }
21960
22168
  ]
21961
22169
  },
22170
+ {
22171
+ "kind": "pattern",
22172
+ "id": "check-in-documents",
22173
+ "composes": [
22174
+ {
22175
+ "component": "card",
22176
+ "as": "card"
22177
+ },
22178
+ {
22179
+ "component": "badge",
22180
+ "as": "status"
22181
+ },
22182
+ {
22183
+ "component": "alert",
22184
+ "as": "notice"
22185
+ },
22186
+ {
22187
+ "component": "button",
22188
+ "as": "action"
22189
+ }
22190
+ ],
22191
+ "workflows": [
22192
+ {
22193
+ "name": "read_documents",
22194
+ "safety": "read",
22195
+ "description": "Read which documents are due and which are signed. The screen is `data-component=\"check-in-documents\"`. Each document is a list item with `data-document-id` (its id) and a status badge: \"To sign\", \"Signed\" or \"Sign again\". A document that changed since it was signed has a notice naming it and the date. The count \"N of M signed\" is a status region above the list. Never invent a document that is not listed.",
22196
+ "descriptionKey": "ui.agent.checkInDocuments.workflows.readDocuments",
22197
+ "uiActions": [],
22198
+ "apiActions": []
22199
+ },
22200
+ {
22201
+ "name": "start_signing",
22202
+ "safety": "write",
22203
+ "description": "Open the signing round for every unsigned document (`data-action=\"sign-all\"`, \"Read and sign\"). The button shows only while a document is unsigned, the patient has a verified mobile and the host handles it; without one the screen says \"Contact the practice\" and has no such button. The person reads and signs the documents in one round, then presses Sign; the round has no code of its own (D133). The host opens the round.",
22204
+ "descriptionKey": "ui.agent.checkInDocuments.workflows.startSigning",
22205
+ "uiActions": [],
22206
+ "apiActions": []
22207
+ },
22208
+ {
22209
+ "name": "continue_check_in",
22210
+ "safety": "write",
22211
+ "description": "Move on to the next step (`data-action=\"documents-continue\"`, \"Continue\"). The button shows only when every listed document is signed. The host decides what comes next and may save progress.",
22212
+ "descriptionKey": "ui.agent.checkInDocuments.workflows.continueCheckIn",
22213
+ "uiActions": [],
22214
+ "apiActions": []
22215
+ }
22216
+ ]
22217
+ },
21962
22218
  {
21963
22219
  "kind": "pattern",
21964
22220
  "id": "confirm-phone",
@@ -22721,81 +22977,171 @@
22721
22977
  },
22722
22978
  {
22723
22979
  "kind": "pattern",
22724
- "id": "patient-ai-summary",
22980
+ "id": "patient-account-settings",
22725
22981
  "composes": [
22726
22982
  {
22727
- "component": "tool-rail",
22728
- "as": "toolRail"
22983
+ "component": "pin-entry",
22984
+ "as": "pin"
22729
22985
  },
22730
22986
  {
22731
- "component": "accordion",
22732
- "as": "briefSections",
22733
- "entity": "patientSection"
22987
+ "component": "email-input",
22988
+ "as": "email"
22734
22989
  },
22735
22990
  {
22736
- "component": "patient-summary-card",
22737
- "as": "overview",
22738
- "entity": "patient"
22991
+ "component": "phone-input",
22992
+ "as": "mobile"
22739
22993
  },
22740
22994
  {
22741
- "component": "appointment-card",
22742
- "as": "nextAppointment",
22743
- "entity": "appointment"
22995
+ "component": "form-field",
22996
+ "as": "field"
22744
22997
  },
22745
22998
  {
22746
- "component": "anamnesis-card",
22747
- "as": "medicalHistory",
22748
- "entity": "anamnesis"
22999
+ "component": "step-up-dialog",
23000
+ "as": "smsCheck"
22749
23001
  },
22750
23002
  {
22751
- "component": "clinical-note-card",
22752
- "as": "latestNote",
22753
- "entity": "clinicalNote"
23003
+ "component": "empty-state",
23004
+ "as": "message"
22754
23005
  },
22755
23006
  {
22756
- "component": "care-plan-card",
22757
- "as": "activePlan",
22758
- "entity": "carePlan"
23007
+ "component": "skeleton",
23008
+ "as": "loading"
22759
23009
  },
22760
23010
  {
22761
- "component": "payment-card",
22762
- "as": "latestPayment",
22763
- "entity": "payment"
23011
+ "component": "alert",
23012
+ "as": "alert"
22764
23013
  },
22765
23014
  {
22766
- "component": "ai-consent-banner",
22767
- "as": "consentGate"
23015
+ "component": "button",
23016
+ "as": "action"
22768
23017
  }
22769
23018
  ],
22770
23019
  "workflows": [
22771
23020
  {
22772
- "name": "open_tool",
22773
- "safety": "read",
22774
- "description": "Open one of the rail tools — the Patient Summary brief or the Ask Alia chat — making its panel the open region inside the rail landmark.",
22775
- "descriptionKey": "ui.agent.patientAiSummary.workflows.openTool",
22776
- "uiActions": [
22777
- "tool-rail.open",
22778
- "tool-rail.select_tool"
22779
- ],
22780
- "stateReads": [
22781
- "tool-rail.activeToolId"
22782
- ],
23021
+ "name": "read_screen",
23022
+ "safety": "phi",
23023
+ "description": "Read the account settings. The screen is `data-component=\"patient-account-settings\"`; each row is `data-component=\"patient-account-settings-row\"` with `data-row-id` and `data-kind` (`email`, `mobile`, `pin` or `readonly`). Rows sit in sections, each carrying an opaque id as `data-section-id`. The state is ids and kinds only: no attribute holds the email or the mobile. Reading the row text reads the login email and the masked mobile back, so it is `phi`; under privacy the values are masked and the Change buttons are hidden. The PIN is never shown. A loading or message placeholder carries `data-state` `loading`, `empty` or `error`. It returns row ids, row kinds and that state, and no email or mobile value. Never read or repeat a PIN or an SMS code.",
23024
+ "descriptionKey": "ui.agent.patientAccountSettings.workflows.readScreen",
23025
+ "uiActions": [],
22783
23026
  "apiActions": []
22784
23027
  },
22785
23028
  {
22786
- "name": "read_brief",
22787
- "safety": "read",
22788
- "description": "Read the compiled patient brief — overview counts/flags, plan state and progress, and the latest payment record.",
22789
- "descriptionKey": "ui.agent.patientAiSummary.workflows.readBrief",
23029
+ "name": "change_email",
23030
+ "safety": "phi",
23031
+ "description": "Change the login email: \"Change email\" (`data-action=\"change-email\"`) opens a panel, type the new email, then Save (`data-action=\"save-change\"`) or Cancel (`data-action=\"cancel-change\"`). The host asks for an SMS code before it saves; the old email stays until it does. The SMS step is for the person only: an agent does not read, type or resend the code.",
23032
+ "descriptionKey": "ui.agent.patientAccountSettings.workflows.changeEmail",
22790
23033
  "uiActions": [],
22791
- "stateReads": [
22792
- "patient-summary-card.summary",
22793
- "care-plan-card.state",
22794
- "care-plan-card.progress",
22795
- "payment-card.state"
22796
- ],
22797
23034
  "apiActions": [
22798
- "patient.summarise"
23035
+ "account.changeEmail"
23036
+ ]
23037
+ },
23038
+ {
23039
+ "name": "change_mobile",
23040
+ "safety": "phi",
23041
+ "description": "Change the mobile: \"Change mobile\" (`data-action=\"change-mobile\"`) opens a panel that asks the current PIN on the keypad and the new number, then Save (`data-action=\"save-change\"`). The SMS code goes to the current mobile. The person types the PIN and the code.",
23042
+ "descriptionKey": "ui.agent.patientAccountSettings.workflows.changeMobile",
23043
+ "uiActions": [],
23044
+ "apiActions": [
23045
+ "account.changeMobile"
23046
+ ]
23047
+ },
23048
+ {
23049
+ "name": "change_pin",
23050
+ "safety": "phi",
23051
+ "description": "Change the PIN in three keypad steps (current, new, new again): \"Change PIN\" (`data-action=\"change-pin\"`), Continue (`data-action=\"continue-change\"`), then Save (`data-action=\"save-change\"`). The host compares the two new PINs and may refuse the PIN. The person types every PIN and the SMS code.",
23052
+ "descriptionKey": "ui.agent.patientAccountSettings.workflows.changePin",
23053
+ "uiActions": [],
23054
+ "apiActions": [
23055
+ "account.changePin"
23056
+ ]
23057
+ },
23058
+ {
23059
+ "name": "retry",
23060
+ "safety": "read",
23061
+ "description": "Read the settings again after an error (`data-action=\"retry\"`). Present only when the host gives a handler.",
23062
+ "descriptionKey": "ui.agent.patientAccountSettings.workflows.retry",
23063
+ "uiActions": [],
23064
+ "apiActions": []
23065
+ }
23066
+ ]
23067
+ },
23068
+ {
23069
+ "kind": "pattern",
23070
+ "id": "patient-ai-summary",
23071
+ "composes": [
23072
+ {
23073
+ "component": "tool-rail",
23074
+ "as": "toolRail"
23075
+ },
23076
+ {
23077
+ "component": "accordion",
23078
+ "as": "briefSections",
23079
+ "entity": "patientSection"
23080
+ },
23081
+ {
23082
+ "component": "patient-summary-card",
23083
+ "as": "overview",
23084
+ "entity": "patient"
23085
+ },
23086
+ {
23087
+ "component": "appointment-card",
23088
+ "as": "nextAppointment",
23089
+ "entity": "appointment"
23090
+ },
23091
+ {
23092
+ "component": "anamnesis-card",
23093
+ "as": "medicalHistory",
23094
+ "entity": "anamnesis"
23095
+ },
23096
+ {
23097
+ "component": "clinical-note-card",
23098
+ "as": "latestNote",
23099
+ "entity": "clinicalNote"
23100
+ },
23101
+ {
23102
+ "component": "care-plan-card",
23103
+ "as": "activePlan",
23104
+ "entity": "carePlan"
23105
+ },
23106
+ {
23107
+ "component": "payment-card",
23108
+ "as": "latestPayment",
23109
+ "entity": "payment"
23110
+ },
23111
+ {
23112
+ "component": "ai-consent-banner",
23113
+ "as": "consentGate"
23114
+ }
23115
+ ],
23116
+ "workflows": [
23117
+ {
23118
+ "name": "open_tool",
23119
+ "safety": "read",
23120
+ "description": "Open one of the rail tools — the Patient Summary brief or the Ask Alia chat — making its panel the open region inside the rail landmark.",
23121
+ "descriptionKey": "ui.agent.patientAiSummary.workflows.openTool",
23122
+ "uiActions": [
23123
+ "tool-rail.open",
23124
+ "tool-rail.select_tool"
23125
+ ],
23126
+ "stateReads": [
23127
+ "tool-rail.activeToolId"
23128
+ ],
23129
+ "apiActions": []
23130
+ },
23131
+ {
23132
+ "name": "read_brief",
23133
+ "safety": "read",
23134
+ "description": "Read the compiled patient brief — overview counts/flags, plan state and progress, and the latest payment record.",
23135
+ "descriptionKey": "ui.agent.patientAiSummary.workflows.readBrief",
23136
+ "uiActions": [],
23137
+ "stateReads": [
23138
+ "patient-summary-card.summary",
23139
+ "care-plan-card.state",
23140
+ "care-plan-card.progress",
23141
+ "payment-card.state"
23142
+ ],
23143
+ "apiActions": [
23144
+ "patient.summarise"
22799
23145
  ]
22800
23146
  },
22801
23147
  {
@@ -22848,215 +23194,172 @@
22848
23194
  "id": "patient-check-in",
22849
23195
  "composes": [
22850
23196
  {
22851
- "component": "qr-code",
22852
- "as": "checkInQr"
22853
- },
22854
- {
22855
- "component": "locale-picker",
22856
- "as": "languagePicker"
22857
- },
22858
- {
22859
- "component": "social-sign-in-button",
22860
- "as": "ssoSignIn"
22861
- },
22862
- {
22863
- "component": "email-input",
22864
- "as": "signInEmail"
22865
- },
22866
- {
22867
- "component": "phone-input",
22868
- "as": "signInPhone"
23197
+ "component": "card",
23198
+ "as": "card"
22869
23199
  },
22870
23200
  {
22871
- "component": "otp-input",
22872
- "as": "verifyCode"
23201
+ "component": "appointment-card",
23202
+ "as": "appointment",
23203
+ "entity": "appointment"
22873
23204
  },
22874
23205
  {
22875
- "component": "card",
22876
- "as": "appointmentHub",
22877
- "entity": "appointment"
23206
+ "component": "session-countdown",
23207
+ "as": "sessionBanner"
22878
23208
  },
22879
23209
  {
22880
- "component": "dependent-selector",
22881
- "as": "whoIsCheckingIn",
22882
- "entity": "person"
23210
+ "component": "description-list",
23211
+ "as": "details"
22883
23212
  },
22884
23213
  {
22885
23214
  "component": "form-field",
22886
- "as": "detailsField"
23215
+ "as": "field"
22887
23216
  },
22888
23217
  {
22889
23218
  "component": "text-input",
22890
- "as": "detailsName"
23219
+ "as": "text"
22891
23220
  },
22892
23221
  {
22893
- "component": "fiscal-code-input",
22894
- "as": "detailsFiscalCode"
22895
- },
22896
- {
22897
- "component": "address-autocomplete",
22898
- "as": "detailsAddress"
23222
+ "component": "email-input",
23223
+ "as": "email"
22899
23224
  },
22900
23225
  {
22901
- "component": "date-picker",
22902
- "as": "detailsBirthDate"
23226
+ "component": "country-select",
23227
+ "as": "country"
22903
23228
  },
22904
23229
  {
22905
23230
  "component": "select",
22906
- "as": "detailsCountry"
22907
- },
22908
- {
22909
- "component": "radio-group",
22910
- "as": "detailsGender"
23231
+ "as": "source"
22911
23232
  },
22912
23233
  {
22913
- "component": "document-scanner",
22914
- "as": "idCapture"
23234
+ "component": "step-up-dialog",
23235
+ "as": "smsCheck"
22915
23236
  },
22916
23237
  {
22917
- "component": "file-upload",
22918
- "as": "idUpload"
22919
- },
22920
- {
22921
- "component": "sign-document",
22922
- "as": "consentDoc"
23238
+ "component": "finished-terminal",
23239
+ "as": "endScreen"
22923
23240
  },
22924
23241
  {
22925
- "component": "signature-capture",
22926
- "as": "consentSignature"
23242
+ "component": "badge",
23243
+ "as": "status"
22927
23244
  },
22928
23245
  {
22929
- "component": "payment-form",
22930
- "as": "visitPayment"
23246
+ "component": "alert",
23247
+ "as": "notice"
22931
23248
  },
22932
23249
  {
22933
- "component": "wallet-pay-button",
22934
- "as": "walletPay"
22935
- },
23250
+ "component": "button",
23251
+ "as": "action"
23252
+ }
23253
+ ],
23254
+ "workflows": [
22936
23255
  {
22937
- "component": "session-countdown",
22938
- "as": "sessionGuard"
23256
+ "name": "read_screen",
23257
+ "safety": "phi",
23258
+ "description": "Read which check-in screen is showing. The roots are `check-in-entry`, `check-in-hub`, `check-in-hub-empty`, `check-in-personal-data`, `check-in-done`, `check-in-appointment-changed` and `check-in-resume`, inside `check-in-shell`; a lost connection adds `check-in-connection-notice` above the current step. On the hub each due item is a list item with `data-step-id` and a status badge, \"Open\" or \"Done\". When the session timed out the shell shows only `patient-session-ended`. The personal data step shows the same fields and the masked mobile, and the hub lists the due treatments, so reading it is `phi`; under privacy the values are masked. Paperwork done is not arrival: never tell the person they are checked in.",
23259
+ "descriptionKey": "ui.agent.patientCheckIn.workflows.readScreen",
23260
+ "uiActions": [],
23261
+ "apiActions": []
22939
23262
  },
22940
23263
  {
22941
- "component": "alert",
22942
- "as": "statusNotice"
23264
+ "name": "sign_in",
23265
+ "safety": "write",
23266
+ "description": "Start sign-in from the entry screen (`data-action=\"sign-in\"`). The screen names no patient, appointment or practice. The host opens the sign-in; the person types their own PIN and SMS code.",
23267
+ "descriptionKey": "ui.agent.patientCheckIn.workflows.signIn",
23268
+ "uiActions": [],
23269
+ "apiActions": [
23270
+ "auth.signIn"
23271
+ ]
22943
23272
  },
22944
23273
  {
22945
- "component": "badge",
22946
- "as": "appointmentBadge"
23274
+ "name": "continue_check_in",
23275
+ "safety": "write",
23276
+ "description": "Move on from the hub (`data-action=\"continue\"`, \"Continue\"). It is disabled while online check-in is off and absent once the host says the paperwork is done. It selects and marks nothing: the host opens the next step.",
23277
+ "descriptionKey": "ui.agent.patientCheckIn.workflows.continueCheckIn",
23278
+ "uiActions": [],
23279
+ "apiActions": [
23280
+ "checkIn.continue"
23281
+ ]
22947
23282
  },
22948
23283
  {
22949
- "component": "separator",
22950
- "as": "stepDivider"
22951
- }
22952
- ],
22953
- "workflows": [
22954
- {
22955
- "name": "sign_in_with_code",
23284
+ "name": "not_me",
22956
23285
  "safety": "write",
22957
- "description": "Request a one-time SMS/email code, enter it, and authenticate into the check-in flow.",
22958
- "descriptionKey": "ui.agent.patientCheckIn.workflows.signInWithCode",
22959
- "uiActions": [
22960
- "otp-input.set_value"
22961
- ],
22962
- "stateReads": [
22963
- "otp-input.isComplete",
22964
- "email-input.value"
22965
- ],
23286
+ "description": "Say the appointment shown is not the signed-in person (`data-action=\"not-me\"`, \"Not me\"). The host decides where this leads and changes no status.",
23287
+ "descriptionKey": "ui.agent.patientCheckIn.workflows.notMe",
23288
+ "uiActions": [],
22966
23289
  "apiActions": [
22967
- "auth.requestOtp",
22968
- "auth.verifyOtp"
23290
+ "checkIn.notMe"
22969
23291
  ]
22970
23292
  },
22971
23293
  {
22972
- "name": "set_language",
23294
+ "name": "open_documents",
22973
23295
  "safety": "read",
22974
- "description": "Pick the kiosk language for the check-in session.",
22975
- "descriptionKey": "ui.agent.patientCheckIn.workflows.setLanguage",
22976
- "uiActions": [
22977
- "locale-picker.set_locale"
22978
- ],
23296
+ "description": "Open the documents step from the hub (`data-action=\"documents\"`). The button shows only when the host handles it.",
23297
+ "descriptionKey": "ui.agent.patientCheckIn.workflows.openDocuments",
23298
+ "uiActions": [],
22979
23299
  "apiActions": []
22980
23300
  },
22981
23301
  {
22982
- "name": "select_subject",
22983
- "safety": "write",
22984
- "description": "Choose who is checking in (self or a dependent) and confirm their personal data.",
22985
- "descriptionKey": "ui.agent.patientCheckIn.workflows.selectSubject",
22986
- "uiActions": [
22987
- "dependent-selector.set_value",
22988
- "text-input.set_value",
22989
- "fiscal-code-input.set_value",
22990
- "address-autocomplete.set_value",
22991
- "date-picker.set_date",
22992
- "select.set_value",
22993
- "radio-group.set_value"
22994
- ],
22995
- "stateReads": [
22996
- "dependent-selector.value",
22997
- "fiscal-code-input.isValid"
22998
- ],
23302
+ "name": "cancel_appointment",
23303
+ "safety": "destructive",
23304
+ "description": "Ask to cancel the appointment from the hub (`data-action=\"cancel-appointment\"`). The button shows only when the host handles it; the host decides, and may ask for an SMS code first.",
23305
+ "descriptionKey": "ui.agent.patientCheckIn.workflows.cancelAppointment",
23306
+ "uiActions": [],
22999
23307
  "apiActions": [
23000
- "patient.updateDetails"
23308
+ "appointment.cancel"
23001
23309
  ]
23002
23310
  },
23003
23311
  {
23004
- "name": "capture_id_document",
23005
- "safety": "write",
23006
- "description": "Photograph or upload the health card / ID document for the visit.",
23007
- "descriptionKey": "ui.agent.patientCheckIn.workflows.captureIdDocument",
23008
- "uiActions": [
23009
- "document-scanner.start_camera",
23010
- "document-scanner.capture",
23011
- "document-scanner.submit",
23012
- "file-upload.clear"
23013
- ],
23014
- "stateReads": [
23015
- "document-scanner.hasCapture",
23016
- "file-upload.files"
23017
- ],
23312
+ "name": "confirm_details",
23313
+ "safety": "phi",
23314
+ "description": "Check the personal details and press \"Continue\" (`data-action=\"details-continue\"`). Values from the record are marked \"From your record\"; the date of birth, codice fiscale and mobile are read-only. When the practice asks, choose a source (Fonte). The kit validates nothing: the host answers with field errors. A change may wait for an SMS code. Without a verified mobile the details are read-only, there is no Continue, and the person is sent to the front desk.",
23315
+ "descriptionKey": "ui.agent.patientCheckIn.workflows.confirmDetails",
23316
+ "uiActions": [],
23018
23317
  "apiActions": [
23019
- "document.upload"
23318
+ "patient.updateDetails"
23020
23319
  ]
23021
23320
  },
23022
23321
  {
23023
- "name": "sign_consents",
23322
+ "name": "open_portal",
23323
+ "safety": "read",
23324
+ "description": "Open the patient portal from the end screen, an empty hub or the appointment-changed screen (`data-action=\"portal\"`; on the end screen with a portal link it is `data-action=\"next-step\"`). On the timed-out screen `data-action=\"next-step\"` is \"Restart\", not the portal: see `restart_after_timeout`. The host routes.",
23325
+ "descriptionKey": "ui.agent.patientCheckIn.workflows.openPortal",
23326
+ "uiActions": [],
23327
+ "apiActions": []
23328
+ },
23329
+ {
23330
+ "name": "resume_check_in",
23024
23331
  "safety": "write",
23025
- "description": "Read each consent form, add the signature, and submit the signed consents.",
23026
- "descriptionKey": "ui.agent.patientCheckIn.workflows.signConsents",
23027
- "uiActions": [
23028
- "signature-capture.confirm",
23029
- "signature-capture.clear",
23030
- "sign-document.submit"
23031
- ],
23032
- "stateReads": [
23033
- "signature-capture.isEmpty",
23034
- "sign-document.isReadComplete"
23035
- ],
23332
+ "description": "Pick up an earlier check-in with \"Resume check-in\" (`data-action=\"resume\"`) or begin again with \"Start over\" (`data-action=\"start-over\"`). The host opens the first step that is not done.",
23333
+ "descriptionKey": "ui.agent.patientCheckIn.workflows.resumeCheckIn",
23334
+ "uiActions": [],
23036
23335
  "apiActions": [
23037
- "consent.sign"
23336
+ "checkIn.resume"
23038
23337
  ]
23039
23338
  },
23040
23339
  {
23041
- "name": "pay_for_visit",
23340
+ "name": "retry",
23042
23341
  "safety": "write",
23043
- "description": "Pay the visit fee by card or digital wallet.",
23044
- "descriptionKey": "ui.agent.patientCheckIn.workflows.payForVisit",
23045
- "uiActions": [
23046
- "payment-form.submit"
23047
- ],
23048
- "apiActions": [
23049
- "payment.charge"
23050
- ]
23342
+ "description": "Try the last step again after a lost connection (`data-action=\"retry\"` in the connection notice). What the person typed stays on screen.",
23343
+ "descriptionKey": "ui.agent.patientCheckIn.workflows.retry",
23344
+ "uiActions": [],
23345
+ "apiActions": []
23051
23346
  },
23052
23347
  {
23053
- "name": "complete_check_in",
23348
+ "name": "restart_after_timeout",
23349
+ "safety": "write",
23350
+ "description": "On the timed-out screen (the session ended because of inactivity) press \"Restart\" (`data-action=\"next-step\"`, the only button) to begin again. The host decides what Restart does; the kit calls nothing.",
23351
+ "descriptionKey": "ui.agent.patientCheckIn.workflows.restartAfterTimeout",
23352
+ "uiActions": [],
23353
+ "apiActions": []
23354
+ },
23355
+ {
23356
+ "name": "sign_out",
23054
23357
  "safety": "write",
23055
- "description": "Finalise the check-in once all steps are done; marks the patient as arrived.",
23056
- "descriptionKey": "ui.agent.patientCheckIn.workflows.completeCheckIn",
23358
+ "description": "Sign out (`data-action=\"sign-out\"` in the session banner). It is visible in every tone of the banner. The host ends the session. After a timeout the session-ended screen shows only \"Restart\" (`data-action=\"next-step\"`).",
23359
+ "descriptionKey": "ui.agent.patientCheckIn.workflows.signOut",
23057
23360
  "uiActions": [],
23058
23361
  "apiActions": [
23059
- "appointment.checkIn"
23362
+ "auth.signOut"
23060
23363
  ]
23061
23364
  }
23062
23365
  ]
@@ -23595,177 +23898,162 @@
23595
23898
  "id": "patient-portal",
23596
23899
  "composes": [
23597
23900
  {
23598
- "component": "social-sign-in-button",
23599
- "as": "ssoSignIn"
23600
- },
23601
- {
23602
- "component": "email-input",
23603
- "as": "signInEmail"
23901
+ "component": "tab-bar",
23902
+ "as": "tabs"
23604
23903
  },
23605
23904
  {
23606
- "component": "phone-input",
23607
- "as": "signInPhone"
23905
+ "component": "session-countdown",
23906
+ "as": "sessionBanner"
23608
23907
  },
23609
23908
  {
23610
- "component": "otp-input",
23611
- "as": "verifyCode"
23909
+ "component": "appointment-card",
23910
+ "as": "appointment",
23911
+ "entity": "appointment"
23612
23912
  },
23613
23913
  {
23614
- "component": "tab-bar",
23615
- "as": "sectionNav"
23914
+ "component": "whatsapp-button",
23915
+ "as": "practiceContact"
23616
23916
  },
23617
23917
  {
23618
- "component": "card",
23619
- "as": "sectionCard"
23918
+ "component": "document-preview",
23919
+ "as": "documentViewer"
23620
23920
  },
23621
23921
  {
23622
- "component": "badge",
23623
- "as": "appointmentBadge"
23922
+ "component": "step-up-dialog",
23923
+ "as": "smsCheck"
23624
23924
  },
23625
23925
  {
23626
23926
  "component": "dialog",
23627
23927
  "as": "cancelConfirm"
23628
23928
  },
23629
23929
  {
23630
- "component": "button",
23631
- "as": "cancelAppointment"
23632
- },
23633
- {
23634
- "component": "alert",
23635
- "as": "cancelTooLate"
23930
+ "component": "description-list",
23931
+ "as": "details"
23636
23932
  },
23637
23933
  {
23638
- "component": "file-upload",
23639
- "as": "documentUpload"
23934
+ "component": "form-field",
23935
+ "as": "field"
23640
23936
  },
23641
23937
  {
23642
- "component": "progress",
23643
- "as": "uploadProgress"
23938
+ "component": "text-input",
23939
+ "as": "text"
23644
23940
  },
23645
23941
  {
23646
- "component": "form-field",
23647
- "as": "detailsField"
23942
+ "component": "email-input",
23943
+ "as": "email"
23648
23944
  },
23649
23945
  {
23650
- "component": "text-input",
23651
- "as": "detailsName"
23946
+ "component": "country-select",
23947
+ "as": "country"
23652
23948
  },
23653
23949
  {
23654
- "component": "fiscal-code-input",
23655
- "as": "detailsFiscalCode"
23950
+ "component": "checkbox",
23951
+ "as": "consent"
23656
23952
  },
23657
23953
  {
23658
- "component": "address-autocomplete",
23659
- "as": "detailsAddress"
23954
+ "component": "empty-state",
23955
+ "as": "message"
23660
23956
  },
23661
23957
  {
23662
- "component": "date-picker",
23663
- "as": "detailsBirthDate"
23958
+ "component": "skeleton",
23959
+ "as": "loading"
23664
23960
  },
23665
23961
  {
23666
- "component": "select",
23667
- "as": "detailsCountry"
23962
+ "component": "alert",
23963
+ "as": "alert"
23668
23964
  },
23669
23965
  {
23670
- "component": "radio-group",
23671
- "as": "detailsGender"
23966
+ "component": "button",
23967
+ "as": "action"
23672
23968
  },
23673
23969
  {
23674
- "component": "separator",
23675
- "as": "sectionDivider"
23970
+ "component": "finished-terminal",
23971
+ "as": "endScreen"
23676
23972
  }
23677
23973
  ],
23678
23974
  "workflows": [
23679
23975
  {
23680
- "name": "sign_in_with_code",
23681
- "safety": "write",
23682
- "description": "Request a one-time SMS/email code, enter it, and authenticate into the portal.",
23683
- "descriptionKey": "ui.agent.patientPortal.workflows.signInWithCode",
23684
- "uiActions": [
23685
- "otp-input.set_value"
23686
- ],
23687
- "stateReads": [
23688
- "otp-input.isComplete",
23689
- "email-input.value"
23690
- ],
23691
- "apiActions": [
23692
- "auth.requestOtp",
23693
- "auth.verifyOtp"
23694
- ]
23976
+ "name": "read_screen",
23977
+ "safety": "phi",
23978
+ "description": "Read which portal screen is showing and its state. The shell is `data-component=\"portal-shell\"`; the screens are `portal-home`, `portal-appointments`, `portal-documents` and `portal-details`, and the shell content area carries `data-state` (`ready`, `loading` or `error`) for the state of the read; a loading or message placeholder inside it carries `data-state` `loading`, `empty` or `error`, and a polite status (`data-live=\"portal\"`) says loading, errors and a cancelled visit. When the session has ended the shell shows `patient-session-ended` and nothing else. The parts inside a screen carry their own `data-component`: `portal-practice-contact` on Home, `portal-details-fields` and `portal-details-read-only-list` on My details. Reading My details reads the name, address, email, phone, birth date and codice fiscale back, so it is `phi`; under privacy the values are masked. Never read or repeat an SMS code.",
23979
+ "descriptionKey": "ui.agent.patientPortal.workflows.readScreen",
23980
+ "uiActions": [],
23981
+ "apiActions": []
23695
23982
  },
23696
23983
  {
23697
- "name": "navigate_section",
23984
+ "name": "navigate_tab",
23698
23985
  "safety": "read",
23699
- "description": "Switch between the Appointments, Documents, and My details portal sections.",
23700
- "descriptionKey": "ui.agent.patientPortal.workflows.navigateSection",
23986
+ "description": "Move between Home, Appointments, Documents and My details with the tab bar (`[data-tab-id]`). The host routes; the shell only reports the chosen tab.",
23987
+ "descriptionKey": "ui.agent.patientPortal.workflows.navigateTab",
23701
23988
  "uiActions": [],
23702
23989
  "apiActions": []
23703
23990
  },
23704
23991
  {
23705
23992
  "name": "check_in",
23706
23993
  "safety": "write",
23707
- "description": "Start the day-of check-in for an upcoming appointment from the portal home.",
23994
+ "description": "Start check-in for an appointment with paperwork due (`data-action=\"check-in\"` on Home). The button names the visit; the host opens check-in.",
23708
23995
  "descriptionKey": "ui.agent.patientPortal.workflows.checkIn",
23709
23996
  "uiActions": [],
23710
23997
  "apiActions": [
23711
- "appointment.checkIn"
23998
+ "checkIn.start"
23712
23999
  ]
23713
24000
  },
23714
24001
  {
23715
24002
  "name": "cancel_appointment",
23716
24003
  "safety": "destructive",
23717
- "description": "Cancel an upcoming appointment after confirming in the dialog. Frees the slot.",
24004
+ "description": "Cancel an upcoming appointment: \"Cancel appointment\" (`data-action=\"cancel-appointment\"`) opens a confirm step, \"Yes, cancel it\" (`data-action=\"confirm-cancel\"`) asks the host, which may ask for an SMS code first. \"Keep appointment\" (`data-action=\"keep-appointment\"`) closes the confirm step and changes nothing. Inside the practice cut-off there is no Cancel: only a call to the practice (`data-action=\"call-practice\"`). A cancelled visit may offer \"Book a new appointment\" (`data-action=\"rebook\"`), a link to the practice's booking page in a new tab.",
23718
24005
  "descriptionKey": "ui.agent.patientPortal.workflows.cancelAppointment",
23719
- "uiActions": [
23720
- "dialog.open",
23721
- "dialog.close"
23722
- ],
23723
- "stateReads": [
23724
- "dialog.isOpen"
23725
- ],
24006
+ "uiActions": [],
23726
24007
  "apiActions": [
23727
24008
  "appointment.cancel"
23728
24009
  ]
23729
24010
  },
23730
24011
  {
23731
- "name": "upload_document",
23732
- "safety": "write",
23733
- "description": "Upload a file (PDF/JPG/PNG) to the patient document library.",
23734
- "descriptionKey": "ui.agent.patientPortal.workflows.uploadDocument",
23735
- "uiActions": [
23736
- "file-upload.clear"
23737
- ],
23738
- "stateReads": [
23739
- "file-upload.files"
23740
- ],
24012
+ "name": "open_document",
24013
+ "safety": "phi",
24014
+ "description": "Open (`data-action=\"open-document\"`) or download (`data-action=\"download-document\"`) a shared document. The host may ask for an SMS code first. An opened file shows inside the page and closes with its Close button (`data-action=\"close-document\"`).",
24015
+ "descriptionKey": "ui.agent.patientPortal.workflows.openDocument",
24016
+ "uiActions": [],
23741
24017
  "apiActions": [
23742
- "document.upload"
24018
+ "document.open",
24019
+ "document.download"
23743
24020
  ]
23744
24021
  },
23745
24022
  {
23746
- "name": "save_details",
23747
- "safety": "write",
23748
- "description": "Edit and save the patient personal details (contact, address, fiscal code).",
23749
- "descriptionKey": "ui.agent.patientPortal.workflows.saveDetails",
23750
- "uiActions": [
23751
- "text-input.set_value",
23752
- "fiscal-code-input.set_value",
23753
- "address-autocomplete.set_value",
23754
- "date-picker.set_date",
23755
- "select.set_value",
23756
- "radio-group.set_value"
23757
- ],
23758
- "stateReads": [
23759
- "text-input.value",
23760
- "fiscal-code-input.isValid",
23761
- "address-autocomplete.value",
23762
- "date-picker.value",
23763
- "select.value",
23764
- "radio-group.value"
23765
- ],
24023
+ "name": "edit_details",
24024
+ "safety": "phi",
24025
+ "description": "Edit the personal details: Edit (`data-action=\"edit-details\"`), change the fields, then Save (`data-action=\"save-details\"`) or Discard (`data-action=\"discard-details\"`). The codice fiscale and date of birth are read-only. Saving may wait for an SMS code. The host reports field errors and the outcome.",
24026
+ "descriptionKey": "ui.agent.patientPortal.workflows.editDetails",
24027
+ "uiActions": [],
23766
24028
  "apiActions": [
23767
24029
  "patient.updateDetails"
23768
24030
  ]
24031
+ },
24032
+ {
24033
+ "name": "contact_practice",
24034
+ "safety": "read",
24035
+ "description": "Contact a practice: the WhatsApp button (`data-action=\"whatsapp\"`) opens a chat in a new tab, or, with no WhatsApp number, a phone link (`data-action=\"call-practice\"`).",
24036
+ "descriptionKey": "ui.agent.patientPortal.workflows.contactPractice",
24037
+ "uiActions": [],
24038
+ "apiActions": []
24039
+ },
24040
+ {
24041
+ "name": "sign_out",
24042
+ "safety": "write",
24043
+ "description": "Sign out (`data-action=\"sign-out\"`). It is visible in every state of the session banner. The host ends the session.",
24044
+ "descriptionKey": "ui.agent.patientPortal.workflows.signOut",
24045
+ "uiActions": [],
24046
+ "apiActions": [
24047
+ "auth.signOut"
24048
+ ]
24049
+ },
24050
+ {
24051
+ "name": "retry",
24052
+ "safety": "read",
24053
+ "description": "Read a list again after an error (`data-action=\"retry\"`). Present only when the host gives a handler.",
24054
+ "descriptionKey": "ui.agent.patientPortal.workflows.retry",
24055
+ "uiActions": [],
24056
+ "apiActions": []
23769
24057
  }
23770
24058
  ]
23771
24059
  },
@@ -23895,6 +24183,116 @@
23895
24183
  }
23896
24184
  ]
23897
24185
  },
24186
+ {
24187
+ "kind": "pattern",
24188
+ "id": "patient-sign-in",
24189
+ "composes": [
24190
+ {
24191
+ "component": "card",
24192
+ "as": "card"
24193
+ },
24194
+ {
24195
+ "component": "alert",
24196
+ "as": "message"
24197
+ },
24198
+ {
24199
+ "component": "form-field",
24200
+ "as": "field"
24201
+ },
24202
+ {
24203
+ "component": "email-input",
24204
+ "as": "email"
24205
+ },
24206
+ {
24207
+ "component": "pin-entry",
24208
+ "as": "pin"
24209
+ },
24210
+ {
24211
+ "component": "button",
24212
+ "as": "action"
24213
+ },
24214
+ {
24215
+ "component": "finished-terminal",
24216
+ "as": "endScreen"
24217
+ },
24218
+ {
24219
+ "component": "session-countdown",
24220
+ "as": "sessionBanner"
24221
+ }
24222
+ ],
24223
+ "workflows": [
24224
+ {
24225
+ "name": "read_screen",
24226
+ "safety": "phi",
24227
+ "description": "Read which sign-in screen is showing and what is wrong with it. Each screen has its own `data-component`: `patient-sign-in-email`, `patient-sign-in-pin`, `patient-sign-in-code`, `patient-set-pin`, `patient-forgot-pin`, `patient-forgot-pin-sent`, `patient-pin-changed`, `patient-no-mobile`, `patient-session-ended`. A refusal from the host is an alert inside the screen. Reading the screen reads the login email back (\"Signing in as\", \"We sent a link to\"), so it is `phi`. Never read or repeat the PIN or the code.",
24228
+ "descriptionKey": "ui.agent.patientSignIn.workflows.readScreen",
24229
+ "uiActions": [],
24230
+ "apiActions": []
24231
+ },
24232
+ {
24233
+ "name": "submit_email",
24234
+ "safety": "write",
24235
+ "description": "Continue from the email screen (`data-action=\"sign-in-email\"`) or send the PIN reset link (`data-action=\"send-link\"`). The person types the email; the button is off while the field is empty. The host looks the account up and answers with \"no account\" or \"too many tries\".",
24236
+ "descriptionKey": "ui.agent.patientSignIn.workflows.submitEmail",
24237
+ "uiActions": [],
24238
+ "apiActions": [
24239
+ "auth.lookupEmail"
24240
+ ]
24241
+ },
24242
+ {
24243
+ "name": "submit_pin",
24244
+ "safety": "write",
24245
+ "description": "Continue from the PIN screen (`data-action=\"sign-in-submit\"`) or the set-PIN screen (`data-action=\"set-pin-continue\"`). The person types the PIN on the keypad; the button is off until every digit is typed, and the PIN is never auto-submitted. The host compares the PIN.",
24246
+ "descriptionKey": "ui.agent.patientSignIn.workflows.submitPin",
24247
+ "uiActions": [
24248
+ "pin-entry.focus"
24249
+ ],
24250
+ "stateReads": [
24251
+ "pin-entry.isComplete"
24252
+ ],
24253
+ "apiActions": [
24254
+ "auth.verifyPin",
24255
+ "auth.setPin"
24256
+ ]
24257
+ },
24258
+ {
24259
+ "name": "reset_pin",
24260
+ "safety": "write",
24261
+ "description": "Start a PIN reset: \"Forgot your PIN?\" (`data-action=\"forgot-pin\"`) or, when sign-in is paused, \"Reset my PIN\" (`data-action=\"paused-reset\"`). Both only tell the host; the host sends the link.",
24262
+ "descriptionKey": "ui.agent.patientSignIn.workflows.resetPin",
24263
+ "uiActions": [],
24264
+ "apiActions": [
24265
+ "auth.requestPinReset"
24266
+ ]
24267
+ },
24268
+ {
24269
+ "name": "navigate_back",
24270
+ "safety": "read",
24271
+ "description": "Go back a step: `data-action=\"back\"` or `data-action=\"change-email\"`. On the end screens `patient-forgot-pin-sent`, `patient-no-mobile` and `patient-pin-changed`, the one button is `data-action=\"next-step\"` and returns to sign in. Each is present only when the host gives its handler.",
24272
+ "descriptionKey": "ui.agent.patientSignIn.workflows.navigateBack",
24273
+ "uiActions": [],
24274
+ "apiActions": []
24275
+ },
24276
+ {
24277
+ "name": "sign_out",
24278
+ "safety": "write",
24279
+ "description": "Sign out (`data-action=\"sign-out\"`, in `data-component=\"patient-session-bar\"`). The bar stays visible in every tone, running, warning and expired. The host ends the session.",
24280
+ "descriptionKey": "ui.agent.patientSignIn.workflows.signOut",
24281
+ "uiActions": [],
24282
+ "apiActions": [
24283
+ "auth.signOut"
24284
+ ]
24285
+ },
24286
+ {
24287
+ "name": "sign_in_again",
24288
+ "safety": "read",
24289
+ "description": "Start sign-in again from the session-ended screen (`data-action=\"next-step\"`, in `data-component=\"patient-session-ended\"`). There is no countdown and no automatic redirect.",
24290
+ "descriptionKey": "ui.agent.patientSignIn.workflows.signInAgain",
24291
+ "uiActions": [],
24292
+ "apiActions": []
24293
+ }
24294
+ ]
24295
+ },
23898
24296
  {
23899
24297
  "kind": "pattern",
23900
24298
  "id": "patients",
@@ -25955,26 +26353,6 @@
25955
26353
  "component": "signature-capture",
25956
26354
  "as": "capturePad"
25957
26355
  },
25958
- {
25959
- "component": "otp-input",
25960
- "as": "gateCode"
25961
- },
25962
- {
25963
- "component": "checkbox",
25964
- "as": "gateConfirm"
25965
- },
25966
- {
25967
- "component": "alert",
25968
- "as": "gateNotice"
25969
- },
25970
- {
25971
- "component": "card",
25972
- "as": "gateCard"
25973
- },
25974
- {
25975
- "component": "button",
25976
- "as": "gateVerify"
25977
- },
25978
26356
  {
25979
26357
  "component": "finished-terminal",
25980
26358
  "as": "terminal"
@@ -25990,8 +26368,12 @@
25990
26368
  "entity": "signer"
25991
26369
  },
25992
26370
  {
25993
- "component": "empty-state",
25994
- "as": "invalidLink"
26371
+ "component": "button",
26372
+ "as": "action"
26373
+ },
26374
+ {
26375
+ "component": "alert",
26376
+ "as": "captureError"
25995
26377
  },
25996
26378
  {
25997
26379
  "component": "spinner",
@@ -25999,24 +26381,6 @@
25999
26381
  }
26000
26382
  ],
26001
26383
  "workflows": [
26002
- {
26003
- "name": "verify_identity",
26004
- "safety": "write",
26005
- "description": "Pass the identity gate before the document is shown: enter the 5-character SMS code, or tick the confirm-identity checkbox when no mobile number is on file, then verify.",
26006
- "descriptionKey": "ui.agent.signing.workflows.verifyIdentity",
26007
- "uiActions": [
26008
- "otp-input.set_value",
26009
- "checkbox.set_checked"
26010
- ],
26011
- "stateReads": [
26012
- "otp-input.isComplete",
26013
- "checkbox.checked"
26014
- ],
26015
- "apiActions": [
26016
- "signing.verifyIdentity",
26017
- "signing.resendCode"
26018
- ]
26019
- },
26020
26384
  {
26021
26385
  "name": "read_document",
26022
26386
  "safety": "read",
@@ -26030,8 +26394,8 @@
26030
26394
  },
26031
26395
  {
26032
26396
  "name": "sign_field",
26033
- "safety": "write",
26034
- "description": "Activate a signature / initial / date field overlay, draw or type the signature in the capture dialog, and confirm it. Signing the last field auto-advances to the success terminal.",
26397
+ "safety": "phi",
26398
+ "description": "Activate a signature / initial / date field overlay, draw or type the signature in the capture dialog, and confirm it. A signed field cannot be reopened. Signing the last field arms the Sign button in the footer.",
26035
26399
  "descriptionKey": "ui.agent.signing.workflows.signField",
26036
26400
  "uiActions": [
26037
26401
  "dialog.open",
@@ -26049,32 +26413,14 @@
26049
26413
  },
26050
26414
  {
26051
26415
  "name": "complete_envelope",
26052
- "safety": "write",
26053
- "description": "Finalise the envelope once every required field carries a signature (with two signees: once both the primary and the secondary have signed all of their fields), persisting the completed document.",
26416
+ "safety": "phi",
26417
+ "description": "Once every field of the active signee is signed, the Sign button in the footer (`data-action=\"sign\"`) is armed (`data-armed=\"true\"`, accent). The person presses it themselves; the host signs the envelope and the footer shows \"Completing your document…\". No code is asked at the end: the person was checked before the document opened (D133). With two signees, each signee presses Sign for their own fields, and the envelope is complete once both have. Never press Sign on a person's behalf without their explicit instruction.",
26054
26418
  "descriptionKey": "ui.agent.signing.workflows.completeEnvelope",
26055
26419
  "uiActions": [],
26056
26420
  "apiActions": [
26057
26421
  "signing.completeEnvelope"
26058
26422
  ]
26059
26423
  },
26060
- {
26061
- "name": "verify_signee_identity",
26062
- "safety": "write",
26063
- "description": "The active signee (primary or secondary) passes its own identity gate: enter the 5-character SMS code, or tick the confirm-identity checkbox when no mobile number is on file, then verify.",
26064
- "descriptionKey": "ui.agent.signing.workflows.verifySigneeIdentity",
26065
- "uiActions": [
26066
- "otp-input.set_value",
26067
- "checkbox.set_checked"
26068
- ],
26069
- "stateReads": [
26070
- "otp-input.isComplete",
26071
- "checkbox.checked"
26072
- ],
26073
- "apiActions": [
26074
- "signing.verifySigneeIdentity",
26075
- "signing.resendCode"
26076
- ]
26077
- },
26078
26424
  {
26079
26425
  "name": "sign_signee_fields",
26080
26426
  "safety": "write",
@@ -26098,12 +26444,25 @@
26098
26444
  {
26099
26445
  "name": "hand_off_to_secondary_signee",
26100
26446
  "safety": "write",
26101
- "description": "After the primary signee finishes, hand the device to the secondary signee (same-device flow), switching the active session and re-filtering the surface to the secondary signee’s fields.",
26447
+ "description": "After the primary signee presses Sign, hand the device to the secondary signee (same-device flow). The secondary signee passes their own check before their document shows (D133); the host then switches the active session and re-filters the surface to the secondary signee’s fields.",
26102
26448
  "descriptionKey": "ui.agent.signing.workflows.handOffToSecondarySignee",
26103
26449
  "uiActions": [],
26104
26450
  "apiActions": [
26105
26451
  "signing.handOffToSecondarySignee"
26106
26452
  ]
26453
+ },
26454
+ {
26455
+ "name": "confirm_staff_id",
26456
+ "safety": "phi",
26457
+ "description": "On a practice device, when the patient has no mobile for a code, the logged-in staff member presses \"I have seen the ID\" (`data-action=\"confirm-staff-id\"`) in the dialog `data-component=\"signing-staff-id-confirmation\"`, before the document opens (D133). It is recorded against the staff member's name, the time and the document; only then does the host open the document. There is no tick box. An agent never presses it on a person's behalf without the staff member's explicit instruction.",
26458
+ "descriptionKey": "ui.agent.signing.workflows.confirmStaffId",
26459
+ "uiActions": [],
26460
+ "stateReads": [
26461
+ "dialog.isOpen"
26462
+ ],
26463
+ "apiActions": [
26464
+ "signing.confirmStaffId"
26465
+ ]
26107
26466
  }
26108
26467
  ]
26109
26468
  },