@alfadocs/ui-kit 0.68.0 → 0.69.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 (342) hide show
  1. package/dist/_chunks/{accordion-9lJSMMsZ.js → accordion-DnIa7OHX.js} +69 -47
  2. package/dist/_chunks/actions-cell-renderer-DrcaxB0w.js +2061 -0
  3. package/dist/_chunks/address-autocomplete-BEX9PXty.js +496 -0
  4. package/dist/_chunks/{agenda-card.agent-B_R47-c9.js → agenda-card.agent-mTCrkKSZ.js} +6 -1
  5. package/dist/_chunks/{agenda-tray-T-BumlGZ.js → agenda-tray-g0kg7HwB.js} +36 -24
  6. package/dist/_chunks/{ai-consent-banner-Dxtx_WAh.js → ai-consent-banner-CXlsNX1c.js} +3 -3
  7. package/dist/_chunks/{ai-prompt-input-BwEACCPm.js → ai-prompt-input-CuhTo9mh.js} +80 -61
  8. package/dist/_chunks/{ai-tools-rail-CInA_1-E.js → ai-tools-rail-BA_sqy1A.js} +87 -70
  9. package/dist/_chunks/{alia-sidebar-Ckv0yCKi.js → alia-sidebar-B47qRQb5.js} +5 -5
  10. package/dist/_chunks/{anamnesis-card-N8pIKWuS.js → anamnesis-card-DRmE24OQ.js} +2 -2
  11. package/dist/_chunks/{appointment-tray-BMl89NPW.js → appointment-tray-CZtvtaH-.js} +32 -20
  12. package/dist/_chunks/{audio-recorder-DjXLP4aF.js → audio-recorder-DYXXnGug.js} +59 -56
  13. package/dist/_chunks/{autocomplete-CcCFlVf-.js → autocomplete-DOeGouCL.js} +157 -132
  14. package/dist/_chunks/bishop-score-PJI3AXzA.js +304 -0
  15. package/dist/_chunks/bmi-calculator-BZtIJ53x.js +434 -0
  16. package/dist/_chunks/{booking-L8-YP8BJ.js → booking-C3VqFReX.js} +420 -397
  17. package/dist/_chunks/{breadcrumb-OTbaY70e.js → breadcrumb-CchdeG7d.js} +42 -28
  18. package/dist/_chunks/{calculator-dialog-CFk4I91b.js → calculator-dialog-BR5iU0kf.js} +2 -2
  19. package/dist/_chunks/{calendar-oYWOCrnf.js → calendar-CZUjL8SZ.js} +258 -201
  20. package/dist/_chunks/{care-plan-card-BwVUyUBb.js → care-plan-card-CvFGXa2z.js} +10 -6
  21. package/dist/_chunks/{care-plan-entry-card-VzdQHcOL.js → care-plan-entry-card-C3E_gClk.js} +17 -13
  22. package/dist/_chunks/{carousel.agent-vt21A_el.js → carousel.agent-4v8Emr9E.js} +219 -198
  23. package/dist/_chunks/{chart-Cg3e9EH9.js → chart-CMr3eW62.js} +150 -109
  24. package/dist/_chunks/{chat-container-ogB4OskO.js → chat-container-DWho5hPR.js} +47 -34
  25. package/dist/_chunks/{chat-input-B5zjNEUN.js → chat-input-BcXTetgM.js} +57 -41
  26. package/dist/_chunks/{checkbox-DRcOdmXv.js → checkbox-BuZ1u__2.js} +41 -27
  27. package/dist/_chunks/{checkbox-group-CpUwlHug.js → checkbox-group-PqNmQ-cE.js} +3 -3
  28. package/dist/_chunks/{clinical-note-card-gtrxv6zn.js → clinical-note-card-DqQYf_D4.js} +2 -2
  29. package/dist/_chunks/{collapsible-X3oaLPU3.js → collapsible-BrnRiCC6.js} +26 -23
  30. package/dist/_chunks/{color-picker-FXpItIaF.js → color-picker-C_fZl6sA.js} +124 -112
  31. package/dist/_chunks/{combobox-BC-DFx8G.js → combobox-Clum7gJ1.js} +165 -128
  32. package/dist/_chunks/{command-palette-BiPAAno-.js → command-palette-CJzmc5pC.js} +87 -64
  33. package/dist/_chunks/{contact-profile-card-7BMB85T6.js → contact-profile-card-Dramqa9C.js} +13 -11
  34. package/dist/_chunks/{copy-field-CCq7j6Zc.js → copy-field-Bjw9u2cV.js} +42 -35
  35. package/dist/_chunks/counter-dRlTNC_y.js +55 -0
  36. package/dist/_chunks/{cycle-calculator-BF0ointe.js → cycle-calculator-DmRGJNaT.js} +3 -3
  37. package/dist/_chunks/{date-picker-oGg5BnXL.js → date-picker-Dl9RKxaV.js} +76 -57
  38. package/dist/_chunks/{date-range-picker-C5BWfH_T.js → date-range-picker-CTUeR6Bj.js} +73 -46
  39. package/dist/_chunks/{date-time-picker-Ze1My59T.js → date-time-picker-BhoogS5Q.js} +64 -40
  40. package/dist/_chunks/{dependent-selector-DpzGtr_J.js → dependent-selector-CG_FOHya.js} +44 -30
  41. package/dist/_chunks/{dialog-DMGnSelc.js → dialog-ZNuboNmy.js} +35 -28
  42. package/dist/_chunks/{document-scanner-D2qehl3-.js → document-scanner-CTubA0-N.js} +12 -4
  43. package/dist/_chunks/{dropdown-menu-DwwPovMZ.js → dropdown-menu-qrxjymfw.js} +94 -93
  44. package/dist/_chunks/{due-date-calculator-DU9AEWNy.js → due-date-calculator-BTmsIQqD.js} +4 -4
  45. package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js +448 -0
  46. package/dist/_chunks/{email-input-lQivsFrw.js → email-input-B_Y55f5G.js} +3 -3
  47. package/dist/_chunks/{fetal-weight-BVSzOhuR.js → fetal-weight-CRz7KE2D.js} +2 -2
  48. package/dist/_chunks/{file-upload-BosbPDb1.js → file-upload-5ScQd4fE.js} +118 -100
  49. package/dist/_chunks/{fiscal-code-input-DPtqluVb.js → fiscal-code-input-Cf-8O4Fj.js} +76 -63
  50. package/dist/_chunks/{freemium-paywall-CkWjv3o6.js → freemium-paywall-DZ2mBS3w.js} +78 -71
  51. package/dist/_chunks/{gestational-age-calculator-DBlFdoiP.js → gestational-age-calculator-BleUdhbI.js} +5 -5
  52. package/dist/_chunks/{hcg-doubling-if4Q8aSX.js → hcg-doubling-CnjDXX6U.js} +3 -3
  53. package/dist/_chunks/{header-settings-CNOqIhoW.js → header-settings-DJqoAl5m.js} +86 -46
  54. package/dist/_chunks/{index.modern-D2LGACWg.js → index.modern-Zta-A4Jm.js} +3 -3
  55. package/dist/_chunks/{list-BOwqwy03.js → list-DgE1xWBM.js} +99 -84
  56. package/dist/_chunks/{locale-picker-C9JmBht3.js → locale-picker-ChYYSX2N.js} +47 -35
  57. package/dist/_chunks/{map-view-Tb5VfK9Y.js → map-view-BkOoGoX2.js} +160 -115
  58. package/dist/_chunks/{marketplace-app-shell-D4-T9Qzz.js → marketplace-app-shell-6T9W4Knl.js} +4 -4
  59. package/dist/_chunks/{message-card.agent-4IeIgrnJ.js → message-card.agent-ZLhx3Bs5.js} +6 -1
  60. package/dist/_chunks/{message-tray-CVyJajVJ.js → message-tray-DwrBLJlf.js} +90 -48
  61. package/dist/_chunks/{multi-select-BcPylvHR.js → multi-select-BdHHDrRN.js} +196 -153
  62. package/dist/_chunks/{navigation-menu-C6lBYVv9.js → navigation-menu-DRUi6sSj.js} +75 -42
  63. package/dist/_chunks/{notification-card.agent-Rqt3ofk9.js → notification-card.agent-DxGBZb8T.js} +5 -1
  64. package/dist/_chunks/{notification-tray-DlgenTEe.js → notification-tray-Btb9oQeZ.js} +112 -97
  65. package/dist/_chunks/{number-input-Dj5L3pXK.js → number-input-DxphVG_A.js} +36 -27
  66. package/dist/_chunks/{operator-hero-f_KaRhw5.js → operator-hero-CP2Nhupm.js} +12 -8
  67. package/dist/_chunks/{otp-input-xQ4Ps5VY.js → otp-input-DzBQ-CpE.js} +52 -33
  68. package/dist/_chunks/{pagination-DQOgnxxw.js → pagination-D58kglCr.js} +181 -162
  69. package/dist/_chunks/{patient-search-DR9XUYRQ.js → patient-search-CBC_ySF6.js} +69 -60
  70. package/dist/_chunks/{patient-shell-BfgufL_q.js → patient-shell-DV3XEtIB.js} +3 -3
  71. package/dist/_chunks/{patient-summary-card-hEmr4eTW.js → patient-summary-card-B836_fDB.js} +95 -103
  72. package/dist/_chunks/patient-table-CDuosVru.js +889 -0
  73. package/dist/_chunks/{payment-form-nXocS_MX.js → payment-form-DvjwYVIT.js} +56 -44
  74. package/dist/_chunks/{payment-request-card-CYE5vhZ0.js → payment-request-card-DioWKBUq.js} +2 -2
  75. package/dist/_chunks/{pdf-viewer-GsfNqeeT.js → pdf-viewer-D6BPfW2D.js} +205 -157
  76. package/dist/_chunks/{periodontal-chart-card-Dh3KgvYG.js → periodontal-chart-card-BuDEMbHE.js} +2 -2
  77. package/dist/_chunks/{phone-input-DVXhNlIl.js → phone-input-DjU-XmO_.js} +64 -47
  78. package/dist/_chunks/{popover-DTbfAuR0.js → popover-B2qCDhJC.js} +37 -32
  79. package/dist/_chunks/{practice-results-DND2SAt7.js → practice-results-KrTHqZua.js} +278 -242
  80. package/dist/_chunks/{pregnancy-dating-QY-sqpvj.js → pregnancy-dating-DORUAOHB.js} +6 -6
  81. package/dist/_chunks/{pregnancy-weight-gain-DOJXXNYP.js → pregnancy-weight-gain-DVz4rr7-.js} +3 -3
  82. package/dist/_chunks/{privacy-lock-C7JyMf0y.js → privacy-lock-BzMLQu-j.js} +32 -28
  83. package/dist/_chunks/{product-hub-panel-CAXDFeGP.js → product-hub-panel-e6pW220e.js} +45 -27
  84. package/dist/_chunks/{progress-kzIRcdaq.js → progress-DA413-zn.js} +2 -2
  85. package/dist/_chunks/{public-footer.agent-CfXuW1x6.js → public-footer.agent-D0cFbjWl.js} +151 -146
  86. package/dist/_chunks/{public-header.agent-BOhJgZEU.js → public-header.agent-DqkqA-ca.js} +107 -102
  87. package/dist/_chunks/{qr-code-DNXhi6se.js → qr-code-CPkEs5mG.js} +52 -46
  88. package/dist/_chunks/{radio-group-CLjK-SlK.js → radio-group-BPt7pKZW.js} +5 -5
  89. package/dist/_chunks/{recaptcha-widget-BCNHsgqt.js → recaptcha-widget-BC-4To9b.js} +9 -2
  90. package/dist/_chunks/registry-DvAUVLHh.js +51 -0
  91. package/dist/_chunks/{resizable-3vzqDlg6.js → resizable-DVGcfOrk.js} +193 -173
  92. package/dist/_chunks/{reviews-panel-DBktKm7i.js → reviews-panel-Dq7LMDcH.js} +87 -68
  93. package/dist/_chunks/{rich-text-editor-VawKN1FI.js → rich-text-editor-BsV7zUdg.js} +736 -647
  94. package/dist/_chunks/{search-bar-SY2BcV2N.js → search-bar-C_T3pBJn.js} +105 -78
  95. package/dist/_chunks/{search-input-DbxrnHkW.js → search-input-DQvGxR74.js} +2 -2
  96. package/dist/_chunks/{search-input.agent-CfZvViOd.js → search-input.agent-DRH54coT.js} +19 -4
  97. package/dist/_chunks/{select-CEtRcon5.js → select-DMLG44F5.js} +72 -56
  98. package/dist/_chunks/{session-countdown-LPnhTHjn.js → session-countdown-X1Ki6i0M.js} +3 -3
  99. package/dist/_chunks/{sheet-taJer-Ha.js → sheet-BxsE7eQm.js} +59 -45
  100. package/dist/_chunks/{sidebar-DaB4ulxH.js → sidebar-DY9jGjgt.js} +254 -248
  101. package/dist/_chunks/{sign-document-CdAiHiCh.js → sign-document-B4DeRhTe.js} +75 -49
  102. package/dist/_chunks/{signature-capture-COi0Uiqu.js → signature-capture-Ct_4Md4e.js} +138 -104
  103. package/dist/_chunks/{slider-BHWzXdjt.js → slider-DN1CWkKB.js} +85 -65
  104. package/dist/_chunks/{sparkline-DGhCSw8M.js → sparkline-iOXYgvJe.js} +75 -53
  105. package/dist/_chunks/{stepper-accordion.agent-C4quJ-MD.js → stepper-accordion.agent-cmEguIdx.js} +7 -1
  106. package/dist/_chunks/{stepper-progress-DDjq5nei.js → stepper-progress-Bv0njx4g.js} +30 -24
  107. package/dist/_chunks/{suggestion-chip.agent-6sNWFj7m.js → suggestion-chip.agent-Brn3CiFE.js} +9 -8
  108. package/dist/_chunks/{switch-BJ6HD3Mn.js → switch-OILsBLWo.js} +25 -19
  109. package/dist/_chunks/{tabs-BIQ0ew1T.js → tabs-BxcOziCo.js} +67 -58
  110. package/dist/_chunks/{task-card.agent-CUPKYd7w.js → task-card.agent-Bt14CzUd.js} +4 -1
  111. package/dist/_chunks/{task-tray-CAncV-QQ.js → task-tray-qOEQflu4.js} +74 -57
  112. package/dist/_chunks/{text-area-BIx0tZ05.js → text-area-Bt3p7Pt0.js} +41 -34
  113. package/dist/_chunks/{text-input-BaClJL8Y.js → text-input-B-OWQ1Je.js} +15 -8
  114. package/dist/_chunks/{theme-toggle-DETmSu_h.js → theme-toggle-XB6o_lgs.js} +38 -26
  115. package/dist/_chunks/{time-picker-B5umYwfv.js → time-picker-BPlJWm8w.js} +41 -31
  116. package/dist/_chunks/{timeline-DQa5Tyz4.js → timeline-CqA4nKTI.js} +33 -25
  117. package/dist/_chunks/{toast.agent-vuLRRn2a.js → toast.agent-57UzyR9U.js} +62 -45
  118. package/dist/_chunks/{tooth-scheme-BIx1O2aJ.js → tooth-scheme-yBr53cvv.js} +421 -348
  119. package/dist/_chunks/{transcript-panel-CLHmv83g.js → transcript-panel-3THQX6nJ.js} +47 -33
  120. package/dist/_chunks/unit-converter-YEpD9evj.js +337 -0
  121. package/dist/_chunks/{use-password-requirements-DsgduV1x.js → use-password-requirements-BXvS2MBS.js} +131 -117
  122. package/dist/_chunks/users-MBVtUzwd.js +17 -0
  123. package/dist/_chunks/warning-stack-BsgaEbL8.js +283 -0
  124. package/dist/_chunks/{whatsapp-button-DUjlWGKf.js → whatsapp-button-BIy6NaJK.js} +6 -3
  125. package/dist/_chunks/{workflow-map-JAZryZJr.js → workflow-map-Bdam9pGp.js} +99 -88
  126. package/dist/agent/index.d.ts +4 -4
  127. package/dist/agent/index.js +36 -0
  128. package/dist/agent/registry.d.ts +33 -0
  129. package/dist/agent/types.d.ts +78 -2
  130. package/dist/agent-catalog.json +6905 -509
  131. package/dist/agent-i18n/en.json +1175 -0
  132. package/dist/components/accordion/index.js +1 -1
  133. package/dist/components/address-autocomplete/address-autocomplete.agent.d.ts +4 -0
  134. package/dist/components/address-autocomplete/address-autocomplete.d.ts +18 -0
  135. package/dist/components/address-autocomplete/index.d.ts +2 -1
  136. package/dist/components/address-autocomplete/index.js +3 -2
  137. package/dist/components/agenda-card/index.js +1 -1
  138. package/dist/components/agenda-tray/index.js +1 -1
  139. package/dist/components/ai-consent-banner/index.js +1 -1
  140. package/dist/components/ai-prompt-input/index.js +1 -1
  141. package/dist/components/ai-tools-rail/index.js +1 -1
  142. package/dist/components/anamnesis-card/index.js +1 -1
  143. package/dist/components/appointment-card/index.js +1 -1
  144. package/dist/components/audio-recorder/index.js +1 -1
  145. package/dist/components/autocomplete/index.js +1 -1
  146. package/dist/components/bishop-score/bishop-score.agent.d.ts +4 -0
  147. package/dist/components/bishop-score/bishop-score.d.ts +17 -1
  148. package/dist/components/bishop-score/index.js +1 -1
  149. package/dist/components/bmi-calculator/bmi-calculator.agent.d.ts +4 -0
  150. package/dist/components/bmi-calculator/bmi-calculator.d.ts +26 -0
  151. package/dist/components/bmi-calculator/index.js +1 -1
  152. package/dist/components/booking/index.js +1 -1
  153. package/dist/components/breadcrumb/index.js +1 -1
  154. package/dist/components/calculator-dialog/index.js +1 -1
  155. package/dist/components/calendar/index.js +1 -1
  156. package/dist/components/care-plan-card/index.js +1 -1
  157. package/dist/components/care-plan-entry-card/index.js +1 -1
  158. package/dist/components/carousel/index.js +1 -1
  159. package/dist/components/chart/index.js +1 -1
  160. package/dist/components/chat-container/index.js +1 -1
  161. package/dist/components/chat-input/index.js +1 -1
  162. package/dist/components/checkbox/index.js +1 -1
  163. package/dist/components/checkbox-group/index.js +1 -1
  164. package/dist/components/clinical-note-card/index.js +1 -1
  165. package/dist/components/collapsible/index.js +1 -1
  166. package/dist/components/color-picker/index.js +1 -1
  167. package/dist/components/combobox/index.js +1 -1
  168. package/dist/components/command-palette/index.js +1 -1
  169. package/dist/components/contact-profile-card/index.js +1 -1
  170. package/dist/components/copy-field/index.js +1 -1
  171. package/dist/components/counter/counter.d.ts +22 -0
  172. package/dist/components/counter/index.d.ts +3 -0
  173. package/dist/components/counter/index.js +5 -0
  174. package/dist/components/cycle-calculator/index.js +1 -1
  175. package/dist/components/data-table/index.js +31 -30
  176. package/dist/components/date-picker/index.js +1 -1
  177. package/dist/components/date-range-picker/index.js +1 -1
  178. package/dist/components/date-time-picker/index.js +1 -1
  179. package/dist/components/dependent-selector/index.js +1 -1
  180. package/dist/components/dialog/index.js +1 -1
  181. package/dist/components/document-scanner/index.js +1 -1
  182. package/dist/components/dropdown-menu/index.js +1 -1
  183. package/dist/components/due-date-calculator/index.js +1 -1
  184. package/dist/components/email-input/index.js +1 -1
  185. package/dist/components/fetal-weight/index.js +1 -1
  186. package/dist/components/file-upload/index.js +1 -1
  187. package/dist/components/fiscal-code-input/index.js +1 -1
  188. package/dist/components/freemium-paywall/freemium-paywall.d.ts +6 -0
  189. package/dist/components/freemium-paywall/index.js +1 -1
  190. package/dist/components/gestational-age-calculator/index.js +1 -1
  191. package/dist/components/hcg-doubling/index.js +1 -1
  192. package/dist/components/header-settings/index.js +1 -1
  193. package/dist/components/index.d.ts +2 -0
  194. package/dist/components/list/index.js +1 -1
  195. package/dist/components/locale-picker/index.js +1 -1
  196. package/dist/components/map-view/index.js +1 -1
  197. package/dist/components/message-card/index.js +1 -1
  198. package/dist/components/message-tray/index.js +1 -1
  199. package/dist/components/multi-select/index.js +1 -1
  200. package/dist/components/navigation-menu/index.js +1 -1
  201. package/dist/components/notification-card/index.js +1 -1
  202. package/dist/components/notification-tray/index.js +1 -1
  203. package/dist/components/number-input/index.js +1 -1
  204. package/dist/components/operator-hero/index.js +1 -1
  205. package/dist/components/otp-input/index.js +1 -1
  206. package/dist/components/pagination/index.js +1 -1
  207. package/dist/components/password-input/index.js +1 -1
  208. package/dist/components/patient-search/index.js +1 -1
  209. package/dist/components/patient-summary-card/index.js +1 -1
  210. package/dist/components/patient-table/cell-renderers/balance-badge-cell.d.ts +13 -0
  211. package/dist/components/patient-table/cell-renderers/care-plan-status-cell.d.ts +43 -0
  212. package/dist/components/patient-table/cell-renderers/contact-cell.d.ts +45 -0
  213. package/dist/components/patient-table/cell-renderers/next-appointment-cell.d.ts +24 -0
  214. package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts +26 -0
  215. package/dist/components/patient-table/columns.d.ts +102 -0
  216. package/dist/components/patient-table/index.d.ts +24 -0
  217. package/dist/components/patient-table/index.js +13 -0
  218. package/dist/components/patient-table/patient-table.d.ts +138 -0
  219. package/dist/components/patient-table/types.d.ts +172 -0
  220. package/dist/components/patient-table/use-responsive-columns.d.ts +109 -0
  221. package/dist/components/payment-card/index.js +1 -1
  222. package/dist/components/payment-form/index.js +1 -1
  223. package/dist/components/pdf-viewer/index.js +1 -1
  224. package/dist/components/periodontal-chart-card/index.js +1 -1
  225. package/dist/components/phone-input/index.js +1 -1
  226. package/dist/components/popover/index.js +1 -1
  227. package/dist/components/practice-results/index.js +1 -1
  228. package/dist/components/pregnancy-dating/index.js +1 -1
  229. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  230. package/dist/components/privacy-lock/index.js +1 -1
  231. package/dist/components/product-hub-tray/index.js +1 -1
  232. package/dist/components/progress/index.js +1 -1
  233. package/dist/components/public-footer/index.js +1 -1
  234. package/dist/components/public-header/index.js +1 -1
  235. package/dist/components/qr-code/index.js +1 -1
  236. package/dist/components/radio-group/index.js +1 -1
  237. package/dist/components/recaptcha-widget/index.js +1 -1
  238. package/dist/components/resizable/index.js +1 -1
  239. package/dist/components/reviews-panel/index.js +1 -1
  240. package/dist/components/rich-text-editor/index.js +1 -1
  241. package/dist/components/search-bar/index.js +1 -1
  242. package/dist/components/search-input/index.js +2 -2
  243. package/dist/components/select/index.js +1 -1
  244. package/dist/components/session-countdown/index.js +1 -1
  245. package/dist/components/sheet/index.js +1 -1
  246. package/dist/components/sidebar/index.js +1 -1
  247. package/dist/components/sidebar/sidebar.d.ts +7 -0
  248. package/dist/components/sign-document/index.js +1 -1
  249. package/dist/components/signature-capture/index.js +1 -1
  250. package/dist/components/slider/index.js +1 -1
  251. package/dist/components/sparkline/index.js +1 -1
  252. package/dist/components/stepper-accordion/index.js +1 -1
  253. package/dist/components/stepper-progress/index.js +1 -1
  254. package/dist/components/suggestion-chip/index.js +1 -1
  255. package/dist/components/switch/index.js +1 -1
  256. package/dist/components/tabs/index.js +1 -1
  257. package/dist/components/task-card/index.js +1 -1
  258. package/dist/components/task-tray/index.js +1 -1
  259. package/dist/components/text-area/index.js +1 -1
  260. package/dist/components/text-input/index.js +1 -1
  261. package/dist/components/theme-toggle/index.js +1 -1
  262. package/dist/components/time-picker/index.js +1 -1
  263. package/dist/components/timeline/index.js +1 -1
  264. package/dist/components/toast/index.js +1 -1
  265. package/dist/components/tooth-scheme/index.js +1 -1
  266. package/dist/components/transcript-panel/index.js +1 -1
  267. package/dist/components/unit-converter/index.js +1 -1
  268. package/dist/components/unit-converter/unit-converter.agent.d.ts +4 -0
  269. package/dist/components/unit-converter/unit-converter.d.ts +27 -0
  270. package/dist/components/warning-stack/index.js +1 -1
  271. package/dist/components/warning-stack/warning-stack.d.ts +9 -0
  272. package/dist/components/whatsapp-button/index.d.ts +1 -1
  273. package/dist/components/whatsapp-button/index.js +3 -2
  274. package/dist/components/whatsapp-button/whatsapp-button.d.ts +3 -0
  275. package/dist/components/workflow/index.js +1 -1
  276. package/dist/i18n/locales/ar.d.ts +72 -0
  277. package/dist/i18n/locales/ar.js +73 -1
  278. package/dist/i18n/locales/de.d.ts +72 -0
  279. package/dist/i18n/locales/de.js +73 -1
  280. package/dist/i18n/locales/el.d.ts +72 -0
  281. package/dist/i18n/locales/el.js +73 -1
  282. package/dist/i18n/locales/en.d.ts +90 -0
  283. package/dist/i18n/locales/en.js +91 -1
  284. package/dist/i18n/locales/es.d.ts +72 -0
  285. package/dist/i18n/locales/es.js +73 -1
  286. package/dist/i18n/locales/fr.d.ts +72 -0
  287. package/dist/i18n/locales/fr.js +73 -1
  288. package/dist/i18n/locales/hi.d.ts +72 -0
  289. package/dist/i18n/locales/hi.js +73 -1
  290. package/dist/i18n/locales/it.d.ts +72 -0
  291. package/dist/i18n/locales/it.js +73 -1
  292. package/dist/i18n/locales/ja.d.ts +72 -0
  293. package/dist/i18n/locales/ja.js +73 -1
  294. package/dist/i18n/locales/nl.d.ts +72 -0
  295. package/dist/i18n/locales/nl.js +73 -1
  296. package/dist/i18n/locales/pl.d.ts +72 -0
  297. package/dist/i18n/locales/pl.js +73 -1
  298. package/dist/i18n/locales/pt.d.ts +72 -0
  299. package/dist/i18n/locales/pt.js +73 -1
  300. package/dist/i18n/locales/ro.d.ts +72 -0
  301. package/dist/i18n/locales/ro.js +73 -1
  302. package/dist/i18n/locales/ru.d.ts +72 -0
  303. package/dist/i18n/locales/ru.js +73 -1
  304. package/dist/i18n/locales/sq.d.ts +72 -0
  305. package/dist/i18n/locales/sq.js +73 -1
  306. package/dist/i18n/locales/sv.d.ts +72 -0
  307. package/dist/i18n/locales/sv.js +73 -1
  308. package/dist/i18n/locales/tr.d.ts +72 -0
  309. package/dist/i18n/locales/tr.js +73 -1
  310. package/dist/i18n/locales/zh.d.ts +72 -0
  311. package/dist/i18n/locales/zh.js +73 -1
  312. package/dist/index.js +688 -673
  313. package/dist/locales/ar.json +73 -1
  314. package/dist/locales/de.json +73 -1
  315. package/dist/locales/el.json +73 -1
  316. package/dist/locales/en.json +73 -1
  317. package/dist/locales/es.json +73 -1
  318. package/dist/locales/fr.json +73 -1
  319. package/dist/locales/hi.json +73 -1
  320. package/dist/locales/it.json +73 -1
  321. package/dist/locales/ja.json +73 -1
  322. package/dist/locales/nl.json +73 -1
  323. package/dist/locales/pl.json +73 -1
  324. package/dist/locales/pt.json +73 -1
  325. package/dist/locales/ro.json +73 -1
  326. package/dist/locales/ru.json +73 -1
  327. package/dist/locales/sq.json +73 -1
  328. package/dist/locales/sv.json +73 -1
  329. package/dist/locales/tr.json +73 -1
  330. package/dist/locales/zh.json +73 -1
  331. package/dist/patterns/alia-assistant/index.js +1 -1
  332. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  333. package/dist/patterns/patient-shell/index.js +1 -1
  334. package/dist/tokens.css +3 -2
  335. package/package.json +14 -1
  336. package/dist/_chunks/address-autocomplete-CT-9AOli.js +0 -358
  337. package/dist/_chunks/bishop-score-CjsB9bM-.js +0 -185
  338. package/dist/_chunks/bmi-calculator-n-823_1V.js +0 -258
  339. package/dist/_chunks/editable-currency-cell-renderer-DHOspPee.js +0 -2409
  340. package/dist/_chunks/registry-nPAVE19X.js +0 -21
  341. package/dist/_chunks/unit-converter-C1V3ACM9.js +0 -196
  342. package/dist/_chunks/warning-stack-Cv4fr5zo.js +0 -220
@@ -0,0 +1,1175 @@
1
+ {
2
+ "agent": {
3
+ "accordion": {
4
+ "state": {
5
+ "openItems": "Ids (values) of currently-expanded items. Single-mode accordions return an array with 0 or 1 entries."
6
+ },
7
+ "actions": {
8
+ "expand": "Expand the item with the given value.",
9
+ "collapse": "Collapse the item with the given value.",
10
+ "clear": "Collapse all items. Only meaningful for multi-mode accordions; single-mode equivalent to collapsing the active item."
11
+ }
12
+ },
13
+ "addressAutocomplete": {
14
+ "state": {
15
+ "value": "Current free-text value of the address input.",
16
+ "query": "Current query driving the suggestion listbox.",
17
+ "isOpen": "True when the suggestion listbox is visible."
18
+ },
19
+ "actions": {
20
+ "setValue": "Set the input text programmatically; opens and refreshes the suggestion list (issues an external address-lookup fetch).",
21
+ "applyFilter": "Set the query text, which refreshes the suggestion list via an external address-lookup fetch.",
22
+ "clear": "Clear the typed text and dismiss the suggestion list.",
23
+ "open": "Open the suggestion listbox.",
24
+ "close": "Close the suggestion listbox."
25
+ }
26
+ },
27
+ "agendaTray": {
28
+ "state": {
29
+ "items": "Currently-displayed appointments. Ids + status only — never patient identity."
30
+ },
31
+ "actions": {
32
+ "selectItem": "Activate the appointment with the given id."
33
+ }
34
+ },
35
+ "aiConsentBanner": {
36
+ "state": {
37
+ "consentState": "Current consent state. Structural only — never the grantee identity.",
38
+ "armed": "Whether the consent confirmation checkbox is ticked (required state only)."
39
+ }
40
+ },
41
+ "aiPromptInput": {
42
+ "state": {
43
+ "value": "Current text in the composer (no PHI processing).",
44
+ "isEmpty": "True when the composer has no text and no attachments.",
45
+ "isSubmitting": "True while an onSubmit invocation is in flight (best-effort)."
46
+ },
47
+ "actions": {
48
+ "setValue": "Replace the composer text with the given value.",
49
+ "clear": "Clear text and attachments. Irreversible from the same UI.",
50
+ "submit": "Submit the current composer state via onSubmit.",
51
+ "focus": "Move keyboard focus into the textarea."
52
+ }
53
+ },
54
+ "appointmentTray": {
55
+ "state": {
56
+ "items": "Currently-displayed appointments. Ids + lifecycle state only — never patient identity."
57
+ },
58
+ "actions": {
59
+ "selectItem": "Activate the appointment with the given id."
60
+ }
61
+ },
62
+ "audioRecorder": {
63
+ "state": {
64
+ "isRecording": "True while actively capturing audio (not paused).",
65
+ "duration": "Elapsed recording time in milliseconds (paused time excluded).",
66
+ "hasRecording": "True when a completed recording is available for submission."
67
+ },
68
+ "actions": {
69
+ "startRecording": "Request microphone permission and begin recording.",
70
+ "stopRecording": "Stop the current recording and finalise the blob.",
71
+ "discard": "Cancel the recording. Irreversible — the captured audio is dropped.",
72
+ "submit": "Stop the active recording, finalising it via onRecordingComplete."
73
+ }
74
+ },
75
+ "autocomplete": {
76
+ "state": {
77
+ "value": "Currently-selected option value, or null when nothing is committed.",
78
+ "query": "Current free-text query in the input.",
79
+ "isOpen": "True when the suggestion list is visible."
80
+ },
81
+ "actions": {
82
+ "setValue": "Set the committed value programmatically.",
83
+ "applyFilter": "Set the input query, which filters the suggestion list.",
84
+ "clear": "Clear the committed value and the query. Discards the typed input.",
85
+ "open": "Open the suggestion list.",
86
+ "close": "Close the suggestion list."
87
+ }
88
+ },
89
+ "bishopScore": {
90
+ "state": {
91
+ "selection": "The five cervical-exam findings keyed by component (dilation, effacement, station, consistency, position). Each value is an enumerated option key, not free text.",
92
+ "result": "Computed Bishop result — total (0–13) and favourability band (unfavourable / intermediate / favourable). Null until all five findings are set."
93
+ },
94
+ "actions": {
95
+ "setValue": "Set one cervical-exam finding to an enumerated option value. Unknown component/value pairs are ignored.",
96
+ "reset": "Clear all five findings and the computed result.",
97
+ "getResult": "Return the computed Bishop result, or null until all five findings are set."
98
+ }
99
+ },
100
+ "bmiCalculator": {
101
+ "state": {
102
+ "unitSystem": "Active unit system the inputs are entered in.",
103
+ "inputs": "Canonical metric measurements regardless of the active unit system — height in centimetres and weight in kilograms, or null when unset.",
104
+ "result": "Computed BMI (kg/m²) and WHO category (underweight / normal / overweight / obese). Null until both height and weight are valid."
105
+ },
106
+ "actions": {
107
+ "setValue": "Set height (cm) and/or weight (kg) in canonical metric units. Omitted fields are left unchanged.",
108
+ "setUnitSystem": "Switch the input unit system. Entered figures are preserved by conversion; the computed BMI is unchanged.",
109
+ "reset": "Clear height and weight and the computed result.",
110
+ "getResult": "Return the computed BMI + WHO category, or null until both inputs are valid."
111
+ }
112
+ },
113
+ "booking": {
114
+ "state": {
115
+ "variant": "Active variant — one of `inline-list`, `accordion`, `calendar`, `flexible`, `progress`."
116
+ },
117
+ "actions": {
118
+ "reset": "Clear the booking value back to an empty state. Use to abandon an in-progress flow.",
119
+ "gotoStep": "Jump to the given step. Implementations may clamp to the first incomplete step if the requested one is not reachable yet."
120
+ }
121
+ },
122
+ "breadcrumb": {
123
+ "state": {
124
+ "items": "Ordered list of crumb ids + hrefs in display order. Labels are intentionally excluded — they may contain PHI."
125
+ },
126
+ "actions": {
127
+ "navigateTo": "Activate the crumb with the given id — equivalent to clicking the link."
128
+ }
129
+ },
130
+ "calendar": {
131
+ "state": {
132
+ "currentView": "Active view name (e.g. dayGridMonth, timeGridWeek).",
133
+ "currentDate": "ISO date anchor of the visible range.",
134
+ "currentTitle": "Human title of the current range (e.g. \"April 2026\")."
135
+ },
136
+ "actions": {
137
+ "today": "Jump to the current day.",
138
+ "prev": "Move to the previous range.",
139
+ "next": "Move to the next range.",
140
+ "gotoDate": "Navigate to a specific date.",
141
+ "changeView": "Switch the calendar to the given view.",
142
+ "focusEvent": "Scroll an event into view and briefly highlight it."
143
+ }
144
+ },
145
+ "carePlanCard": {
146
+ "state": {
147
+ "state": "The plan lifecycle state. Enum value only — never the localised label or any PHI.",
148
+ "progress": "Line progress as done / total counts. Counts only — never treatment names or operator identity."
149
+ }
150
+ },
151
+ "carePlanEntryCard": {
152
+ "state": {
153
+ "done": "Whether the treatment line is marked executed.",
154
+ "phaseProgress": "Phase progress as executed / total counts. Counts only — never phase labels or operator identity."
155
+ }
156
+ },
157
+ "carousel": {
158
+ "state": {
159
+ "activeIndex": "Zero-based index of the currently snapped slide.",
160
+ "count": "Total slide count."
161
+ },
162
+ "actions": {
163
+ "scrollTo": "Scroll to the slide at the given index.",
164
+ "scrollPrev": "Scroll to the previous slide.",
165
+ "scrollNext": "Scroll to the next slide."
166
+ }
167
+ },
168
+ "chart": {
169
+ "actions": {
170
+ "updateSeries": "Replace the chart series without remounting.",
171
+ "exportPng": "Return a PNG data URI of the chart for export or screenshotting."
172
+ }
173
+ },
174
+ "chatContainer": {
175
+ "actions": {
176
+ "scrollToBottom": "Scroll the conversation viewport to the latest message."
177
+ }
178
+ },
179
+ "chatInput": {
180
+ "state": {
181
+ "value": "Current text in the composer.",
182
+ "isEmpty": "True when the composer has no text."
183
+ },
184
+ "actions": {
185
+ "setValue": "Replace the composer text.",
186
+ "clear": "Clear the composer. Irreversible from the same UI.",
187
+ "submit": "Submit the current composer state via onSubmit.",
188
+ "focus": "Move keyboard focus into the textarea."
189
+ }
190
+ },
191
+ "checkboxGroup": {
192
+ "state": {
193
+ "selection": "Values of currently-checked options."
194
+ },
195
+ "actions": {
196
+ "setSelection": "Replace the current selection with the given option values.",
197
+ "clearSelection": "Uncheck every option in the group."
198
+ }
199
+ },
200
+ "checkbox": {
201
+ "state": {
202
+ "checked": "Current checked state."
203
+ },
204
+ "actions": {
205
+ "setChecked": "Set the checked state to a specific value.",
206
+ "toggle": "Flip the checked state between checked and unchecked."
207
+ }
208
+ },
209
+ "clinicalNoteCard": {
210
+ "state": {
211
+ "noteId": "Stable identifier of the rendered note, when supplied.",
212
+ "pinned": "Whether the note is pinned to the top of the timeline.",
213
+ "flagged": "Whether the note is flagged for follow-up.",
214
+ "attachmentKind": "Structural kind the note is attached to. Never the attachment identity or content."
215
+ }
216
+ },
217
+ "collapsible": {
218
+ "state": {
219
+ "isOpen": "True when the content panel is expanded."
220
+ },
221
+ "actions": {
222
+ "toggle": "Toggle between open and closed.",
223
+ "open": "Expand the content panel.",
224
+ "close": "Collapse the content panel."
225
+ }
226
+ },
227
+ "colorPicker": {
228
+ "state": {
229
+ "value": "Currently picked colour as a hex string (e.g. \"#3b82f6\")."
230
+ },
231
+ "actions": {
232
+ "setValue": "Set the picked colour from a hex string."
233
+ }
234
+ },
235
+ "combobox": {
236
+ "state": {
237
+ "value": "Currently-selected option value, or null when nothing is selected.",
238
+ "query": "Current filter query in the combobox input.",
239
+ "isOpen": "True when the option list is visible."
240
+ },
241
+ "actions": {
242
+ "setValue": "Set the selected value programmatically.",
243
+ "applyFilter": "Set the filter query for the option list.",
244
+ "clearSelection": "Clear the current selection.",
245
+ "open": "Open the option list.",
246
+ "close": "Close the option list."
247
+ }
248
+ },
249
+ "commandPalette": {
250
+ "state": {
251
+ "query": "Current filter query in the command palette input.",
252
+ "isOpen": "True when the palette is visible."
253
+ },
254
+ "actions": {
255
+ "open": "Open the command palette.",
256
+ "close": "Close the command palette.",
257
+ "applyFilter": "Set the filter query."
258
+ }
259
+ },
260
+ "contactProfileCard": {
261
+ "state": {
262
+ "profession": "Profession string the card is currently rendering — undefined when the consumer omitted it."
263
+ }
264
+ },
265
+ "copyField": {
266
+ "state": {
267
+ "value": "The value displayed in the read-only field.",
268
+ "copied": "True for the brief window after a successful copy."
269
+ },
270
+ "actions": {
271
+ "copy": "Programmatically trigger the clipboard write."
272
+ }
273
+ },
274
+ "dataTable": {
275
+ "state": {
276
+ "selection": "Row ids of currently-selected rows.",
277
+ "filter": "Current ag-grid filter model, keyed by column id.",
278
+ "sort": "Active sort, in priority order.",
279
+ "currentPage": "Zero-indexed page number."
280
+ },
281
+ "actions": {
282
+ "selectRows": "Replace the current selection with the given row ids.",
283
+ "selectRange": "Select every row between fromId and toId, inclusive, in current sort order.",
284
+ "clearSelection": "Deselect all rows.",
285
+ "getSelection": "Return the row ids of the currently-selected rows.",
286
+ "applyFilter": "Replace the filter model with the given object.",
287
+ "sortBy": "Replace the active sort with the given list (priority order).",
288
+ "goToPage": "Navigate to the given zero-indexed page."
289
+ }
290
+ },
291
+ "datePicker": {
292
+ "state": {
293
+ "value": "Currently-selected ISO date, or null.",
294
+ "isOpen": "Whether the calendar popover is open."
295
+ },
296
+ "actions": {
297
+ "setDate": "Select a specific date (ISO yyyy-mm-dd).",
298
+ "clear": "Clear the selected date.",
299
+ "open": "Open the calendar popover.",
300
+ "close": "Close the calendar popover."
301
+ }
302
+ },
303
+ "dateRangePicker": {
304
+ "state": {
305
+ "range": "Currently-selected ISO date range endpoints, each possibly null.",
306
+ "isOpen": "Whether the range calendar popover is open."
307
+ },
308
+ "actions": {
309
+ "setRange": "Replace the selected range with the given ISO endpoints.",
310
+ "clear": "Clear the selected range.",
311
+ "open": "Open the range calendar popover.",
312
+ "close": "Close the range calendar popover."
313
+ }
314
+ },
315
+ "dateTimePicker": {
316
+ "state": {
317
+ "value": "Currently-selected ISO datetime, or null.",
318
+ "isOpen": "Whether the datetime popover is open."
319
+ },
320
+ "actions": {
321
+ "setDatetime": "Select a specific datetime (ISO string).",
322
+ "clear": "Clear the selected datetime.",
323
+ "open": "Open the datetime popover.",
324
+ "close": "Close the datetime popover."
325
+ }
326
+ },
327
+ "dependentSelector": {
328
+ "state": {
329
+ "value": "Id of the currently selected person, or empty string when none."
330
+ },
331
+ "actions": {
332
+ "setValue": "Select the person row with the given id."
333
+ }
334
+ },
335
+ "dialog": {
336
+ "state": {
337
+ "isOpen": "True when the dialog is currently open."
338
+ },
339
+ "actions": {
340
+ "open": "Open the dialog.",
341
+ "close": "Close the dialog. Reversible by reopening.",
342
+ "dismiss": "Dismiss the dialog. Loses any in-progress input that has not been committed."
343
+ }
344
+ },
345
+ "dropdownMenu": {
346
+ "state": {
347
+ "isOpen": "True when the menu is currently open."
348
+ },
349
+ "actions": {
350
+ "open": "Open the menu.",
351
+ "close": "Close the menu."
352
+ }
353
+ },
354
+ "emailInput": {
355
+ "state": {
356
+ "value": "The current email address typed into the field.",
357
+ "isValid": "True when the value is non-empty AND parses as a valid email per RFC 5322."
358
+ }
359
+ },
360
+ "fileUpload": {
361
+ "state": {
362
+ "files": "Files currently tracked by the uploader. Identifiers and metadata only — never file content."
363
+ },
364
+ "actions": {
365
+ "removeFile": "Remove the file with the given id from the upload list.",
366
+ "clear": "Remove all files from the upload list."
367
+ }
368
+ },
369
+ "fiscalCodeInput": {
370
+ "state": {
371
+ "value": "Current codice fiscale, normalised (uppercased, 0–16 [A-Z0-9] characters).",
372
+ "isValid": "Whether the value is 16 structurally-sound characters with a matching control character."
373
+ },
374
+ "actions": {
375
+ "setValue": "Replace the codice fiscale. The value is uppercased and stripped to [A-Z0-9], capped at 16 characters.",
376
+ "clear": "Empty the input. Loses any typed value.",
377
+ "focus": "Move keyboard focus to the codice fiscale input."
378
+ }
379
+ },
380
+ "freemiumPaywall": {
381
+ "state": {
382
+ "isOpen": "True when the paywall dialog is open.",
383
+ "selectedPlanId": "Opaque id of the currently-selected plan."
384
+ },
385
+ "actions": {
386
+ "upgrade": "Fire onUpgrade with the currently-selected plan id.",
387
+ "dismiss": "Dismiss the paywall via the Not Now action. Irreversible from the same UI."
388
+ }
389
+ },
390
+ "headerSettings": {
391
+ "actions": {
392
+ "setLocale": "Switch the active locale to the given IETF tag.",
393
+ "setTheme": "Switch the theme preference.",
394
+ "setAccessibility": "Switch the accessibility preference."
395
+ }
396
+ },
397
+ "list": {
398
+ "state": {
399
+ "selection": "Ids of currently-selected list items. Empty array when none selected or list is presentational."
400
+ },
401
+ "actions": {
402
+ "setSelection": "Replace the current selection with the given item ids. No-op on presentational lists.",
403
+ "clearSelection": "Deselect all items."
404
+ }
405
+ },
406
+ "localePicker": {
407
+ "actions": {
408
+ "setLocale": "Switch the active locale to the given IETF tag."
409
+ }
410
+ },
411
+ "mapView": {
412
+ "actions": {
413
+ "panTo": "Pan the map to a new centre without changing zoom.",
414
+ "setZoom": "Set the map zoom level (typical range 1–20).",
415
+ "selectMarker": "Select a marker by id, or pass null to clear the selection."
416
+ }
417
+ },
418
+ "messageTray": {
419
+ "state": {
420
+ "items": "Currently-displayed messages. Ids + read flag only — no PHI / no sender names.",
421
+ "unreadCount": "Badge unread count surfaced by the host.",
422
+ "isOpen": "Whether the dropdown panel is currently open."
423
+ },
424
+ "actions": {
425
+ "open": "Open the message panel.",
426
+ "close": "Close the message panel.",
427
+ "selectItem": "Activate the message with the given id.",
428
+ "markRead": "Request the host to mark a message as read.",
429
+ "dismiss": "Request the host to dismiss / archive the message with the given id."
430
+ }
431
+ },
432
+ "multiSelect": {
433
+ "state": {
434
+ "selection": "Values of currently-selected options.",
435
+ "query": "Current filter query.",
436
+ "isOpen": "True when the option list is visible."
437
+ },
438
+ "actions": {
439
+ "setSelection": "Replace the current selection with the given list of values.",
440
+ "clearSelection": "Clear the current selection.",
441
+ "applyFilter": "Set the filter query for the option list.",
442
+ "open": "Open the option list.",
443
+ "close": "Close the option list."
444
+ }
445
+ },
446
+ "navigationMenu": {
447
+ "state": {
448
+ "activeItem": "Id of the currently-active top-level navigation item, or null when none is active.",
449
+ "isOpen": "Whether a dropdown / mega-menu panel is currently open."
450
+ },
451
+ "actions": {
452
+ "selectItem": "Activate (open) the top-level item with the given id.",
453
+ "open": "Open the dropdown / mega-menu panel for the given top-level item id.",
454
+ "close": "Close any open dropdown / mega-menu panel."
455
+ }
456
+ },
457
+ "notificationTray": {
458
+ "state": {
459
+ "items": "Currently-displayed notifications. Ids + read flag only — no PHI.",
460
+ "unreadCount": "Badge unread count surfaced by the host.",
461
+ "isOpen": "Whether the dropdown panel is currently open."
462
+ },
463
+ "actions": {
464
+ "open": "Open the notification panel.",
465
+ "close": "Close the notification panel.",
466
+ "selectItem": "Activate the notification with the given id.",
467
+ "markRead": "Request the host to mark a notification as read.",
468
+ "dismiss": "Request the host to dismiss the notification with the given id."
469
+ }
470
+ },
471
+ "numberInput": {
472
+ "state": {
473
+ "value": "Current numeric value, or null when empty.",
474
+ "isEmpty": "Whether the input has no value."
475
+ },
476
+ "actions": {
477
+ "setValue": "Replace the numeric value, or pass null to clear.",
478
+ "clear": "Empty the input. Loses any typed value.",
479
+ "focus": "Move keyboard focus to the input."
480
+ }
481
+ },
482
+ "operatorHero": {
483
+ "state": {
484
+ "name": "Operator display name currently rendered.",
485
+ "hasColor": "Whether a calendar-colour identity dot is rendered. Structural flag only — never the colour id or any PHI."
486
+ }
487
+ },
488
+ "otpInput": {
489
+ "state": {
490
+ "value": "Current digits entered, packed into a single string.",
491
+ "isComplete": "Whether all required digits have been entered."
492
+ },
493
+ "actions": {
494
+ "setValue": "Replace the entered digits.",
495
+ "clear": "Empty all digit cells. Loses any typed value.",
496
+ "focus": "Move keyboard focus to the active digit cell."
497
+ }
498
+ },
499
+ "pagination": {
500
+ "state": {
501
+ "currentPage": "Current page index (1-based).",
502
+ "totalPages": "Total number of pages."
503
+ },
504
+ "actions": {
505
+ "goToPage": "Navigate to a specific 1-indexed page.",
506
+ "next": "Advance to the next page.",
507
+ "previous": "Step back to the previous page."
508
+ }
509
+ },
510
+ "passwordInput": {
511
+ "state": {
512
+ "value": "Current password value. Never log or persist this off-device.",
513
+ "isEmpty": "Whether the input has no value.",
514
+ "isRevealed": "Whether the password is currently shown in plain text."
515
+ },
516
+ "actions": {
517
+ "setValue": "Replace the password value.",
518
+ "clear": "Empty the input. Loses any typed value.",
519
+ "focus": "Move keyboard focus to the input.",
520
+ "toggleVisibility": "Toggle between masked and plain-text display."
521
+ }
522
+ },
523
+ "patientSearch": {
524
+ "state": {
525
+ "variant": "Active variant — one of `who-where`, `who-where-when`, `faceted`, `discovery`."
526
+ },
527
+ "actions": {
528
+ "reset": "Clear the current search query (WHO, WHERE, WHEN, facets, geo) via the consumer-owned onChange.",
529
+ "focusPrimary": "Move keyboard focus to the most-relevant search field for the current variant."
530
+ }
531
+ },
532
+ "patientSummaryCard": {
533
+ "state": {
534
+ "summary": "Structural summary of the patient card — identifiers, counts, and consent flags only. Never patient identity or clinical content."
535
+ }
536
+ },
537
+ "paymentCard": {
538
+ "state": {
539
+ "number": "Payment number / reference currently rendered.",
540
+ "state": "Resolved headline financial state. Structural state only — never patient identity."
541
+ }
542
+ },
543
+ "paymentRequestCard": {
544
+ "state": {
545
+ "status": "Current lifecycle status of the payment request. Structural state only."
546
+ }
547
+ },
548
+ "paymentForm": {
549
+ "actions": {
550
+ "submit": "Submit the payment. Charges the configured payment method — irreversible.",
551
+ "reset": "Reset the form to its initial state. Loses any in-progress input."
552
+ }
553
+ },
554
+ "pdfViewer": {
555
+ "actions": {
556
+ "goToPage": "Navigate to a specific 1-indexed page.",
557
+ "setZoom": "Apply a zoom preset or numeric scale factor.",
558
+ "search": "Search the document for the given query and highlight matches.",
559
+ "print": "Open the browser print dialog for the document."
560
+ }
561
+ },
562
+ "periodontalChartCard": {
563
+ "state": {
564
+ "toothIds": "FDI ids of the teeth currently charted. Tooth identifiers only — no patient identity.",
565
+ "siteCount": "Total number of probing sites rendered.",
566
+ "deepPocketCount": "Number of sites with a probing depth at or above the 6mm severe threshold."
567
+ }
568
+ },
569
+ "phoneInput": {
570
+ "state": {
571
+ "value": "Current E.164 phone number, or empty string when not yet valid.",
572
+ "isEmpty": "Whether the input has no value."
573
+ },
574
+ "actions": {
575
+ "setValue": "Replace the phone number (E.164 or national format; parser will infer country).",
576
+ "clear": "Empty the input. Loses any typed value.",
577
+ "focus": "Move keyboard focus to the phone-number input."
578
+ }
579
+ },
580
+ "popover": {
581
+ "state": {
582
+ "isOpen": "True when the popover is currently open."
583
+ },
584
+ "actions": {
585
+ "open": "Open the popover.",
586
+ "close": "Close the popover."
587
+ }
588
+ },
589
+ "practiceResults": {
590
+ "state": {
591
+ "variant": "Active variant — one of `split-list-map`, `map-first`, `rich-cards`."
592
+ },
593
+ "actions": {
594
+ "scrollToResult": "Scroll the result card with the given id into the visible viewport.",
595
+ "focusPin": "Highlight the map pin for the given result id (no-op on rich-cards)."
596
+ }
597
+ },
598
+ "privacyLock": {
599
+ "state": {
600
+ "isLocked": "True when the privacy overlay is open."
601
+ },
602
+ "actions": {
603
+ "lock": "Open the privacy overlay.",
604
+ "unlock": "Close the privacy overlay (consumer-confirmed action)."
605
+ }
606
+ },
607
+ "productHubPanel": {
608
+ "state": {
609
+ "items": "Currently-displayed releases. Ids + unseen flag only — no content.",
610
+ "unseenCount": "Number of displayed releases still marked unseen."
611
+ },
612
+ "actions": {
613
+ "selectItem": "Activate the release with the given id (fires the host analytics hook)."
614
+ }
615
+ },
616
+ "productHubTray": {
617
+ "state": {
618
+ "unseenCount": "Number of unseen product releases — the trigger badge count."
619
+ },
620
+ "actions": {
621
+ "open": "Open the product-updates panel.",
622
+ "close": "Close the product-updates panel."
623
+ }
624
+ },
625
+ "publicFooter": {
626
+ "state": {
627
+ "variant": "Active variant — one of `minimal`, `compact`, `full`.",
628
+ "legalUrls": "Resolved legal URLs for the active locale + marketingBaseUrl + overrides: `{ privacy, terms, contacts }`."
629
+ }
630
+ },
631
+ "publicHeader": {
632
+ "state": {
633
+ "menuOpen": "Whether the mobile drawer is currently open."
634
+ },
635
+ "actions": {
636
+ "openMenu": "Open the mobile drawer.",
637
+ "closeMenu": "Close the mobile drawer."
638
+ }
639
+ },
640
+ "qrCode": {
641
+ "state": {
642
+ "value": "The string (typically an https URL) encoded into the QR."
643
+ }
644
+ },
645
+ "radioGroup": {
646
+ "state": {
647
+ "value": "Currently selected radio value, or empty string when none."
648
+ },
649
+ "actions": {
650
+ "setValue": "Select the radio with the given value."
651
+ }
652
+ },
653
+ "recaptchaWidget": {
654
+ "state": {
655
+ "hasToken": "True when the widget currently holds a valid verification token."
656
+ },
657
+ "actions": {
658
+ "execute": "Programmatically trigger the captcha challenge. Issues a token via the callback.",
659
+ "reset": "Clear the current token and re-roll the captcha. Irreversible."
660
+ }
661
+ },
662
+ "resizable": {
663
+ "state": {
664
+ "sizes": "Current per-panel sizes as percentages of the group."
665
+ },
666
+ "actions": {
667
+ "setSizes": "Replace the panel sizes (percentages, summing to 100)."
668
+ }
669
+ },
670
+ "reviewsPanel": {
671
+ "state": {
672
+ "filter": "Active star-bucket filter — `\"all\"` or an integer 1..5. Reads the controlled `filter` prop.",
673
+ "visibleCount": "Number of reviews currently rendered after the filter is applied."
674
+ },
675
+ "actions": {
676
+ "setFilter": "Narrow the visible review list to a star bucket, or `\"all\"` to clear the filter."
677
+ }
678
+ },
679
+ "richTextEditor": {
680
+ "state": {
681
+ "html": "Sanitised HTML representation of the editor content.",
682
+ "text": "Plain-text content of the editor (tags stripped).",
683
+ "markdown": "Markdown representation of the editor content. The Redactor engine has no native Markdown serialiser, so this is always empty — read `html` instead."
684
+ },
685
+ "actions": {
686
+ "setContent": "Replace the editor content. Loses unsaved input.",
687
+ "insertAtCursor": "Insert content at the caret (replacing any selection). HTML is sanitised; pass asHtml:false for plain text. Seam for merge/template variables and AI-generated drafts.",
688
+ "applyFormat": "Toggle/apply a block or inline format on the current selection (bold, italic, strikethrough, bulleted/numbered list, heading, quote, paragraph).",
689
+ "clear": "Empty the editor. Loses unsaved input.",
690
+ "focus": "Move keyboard focus to the editor surface."
691
+ }
692
+ },
693
+ "searchBar": {
694
+ "state": {
695
+ "query": "Current raw query string (inline mode). Empty in launcher mode.",
696
+ "isEmpty": "True when the query is empty."
697
+ },
698
+ "actions": {
699
+ "setQuery": "Replace the current query (inline mode only). No-op in launcher mode.",
700
+ "clear": "Clear the query and close the result popover.",
701
+ "submit": "In launcher mode opens the CommandPalette; in inline mode commits the highlighted option.",
702
+ "focus": "Move keyboard focus to the SearchBar.",
703
+ "applySavedSearch": "Apply a saved-search by id. The host wires the actual query lookup; the adapter routes the id to its onApplySavedSearch handler. No-op when no handler is wired."
704
+ }
705
+ },
706
+ "searchInput": {
707
+ "state": {
708
+ "query": "Current raw query string (not debounced).",
709
+ "isEmpty": "True when the query is empty."
710
+ },
711
+ "actions": {
712
+ "setQuery": "Replace the current query with the given string and fire onChange immediately.",
713
+ "clear": "Clear the query and return focus to the input.",
714
+ "submit": "Fire the current query without waiting for debounce.",
715
+ "focus": "Move keyboard focus to the input (expanding it first if `variant=\"expandable\"`)."
716
+ }
717
+ },
718
+ "select": {
719
+ "state": {
720
+ "value": "Currently selected option value, or empty string when none.",
721
+ "isOpen": "Whether the option list is open."
722
+ },
723
+ "actions": {
724
+ "setValue": "Select the option with the given value.",
725
+ "clear": "Clear the current selection.",
726
+ "open": "Open the option list.",
727
+ "close": "Close the option list."
728
+ }
729
+ },
730
+ "sheet": {
731
+ "state": {
732
+ "isOpen": "True when the sheet is currently open."
733
+ },
734
+ "actions": {
735
+ "open": "Open the sheet.",
736
+ "close": "Close the sheet. Reversible by reopening.",
737
+ "dismiss": "Dismiss the sheet. Loses any in-progress input that has not been committed."
738
+ }
739
+ },
740
+ "sidebar": {
741
+ "state": {
742
+ "isCollapsed": "True when the sidebar is in its collapsed (rail) state."
743
+ },
744
+ "actions": {
745
+ "toggleCollapsed": "Toggle the sidebar between collapsed and expanded."
746
+ }
747
+ },
748
+ "signatureCapture": {
749
+ "state": {
750
+ "isEmpty": "True when no signature has been drawn or typed."
751
+ },
752
+ "actions": {
753
+ "clear": "Erase the current signature. Loses unsaved input.",
754
+ "undo": "Undo the last stroke.",
755
+ "confirm": "Commit the signature and return its serialised payload."
756
+ }
757
+ },
758
+ "slider": {
759
+ "state": {
760
+ "value": "Current thumb values; length 1 for a single slider, length 2 for a range."
761
+ },
762
+ "actions": {
763
+ "setValue": "Replace the thumb value(s). Pass a 1-tuple for single, 2-tuple for range."
764
+ }
765
+ },
766
+ "sparkline": {
767
+ "actions": {
768
+ "updateSeries": "Replace the sparkline data without remounting.",
769
+ "exportPng": "Return a PNG data URI of the sparkline."
770
+ }
771
+ },
772
+ "stepperAccordion": {
773
+ "state": {
774
+ "currentStep": "Zero-indexed active step.",
775
+ "totalSteps": "Total number of steps in the flow.",
776
+ "openSteps": "Indices of currently-open step panels (singleton under Radix single mode)."
777
+ },
778
+ "actions": {
779
+ "gotoStep": "Activate the given step. Upcoming steps are gated by the consumer’s validation in onStepChange.",
780
+ "next": "Advance to the next step. Subject to the consumer’s onStepChange validation.",
781
+ "previous": "Return to the previous step (re-opens a completed step in edit mode)."
782
+ }
783
+ },
784
+ "stepperProgress": {
785
+ "state": {
786
+ "currentStep": "Zero-indexed active step.",
787
+ "totalSteps": "Total number of steps in the flow."
788
+ },
789
+ "actions": {
790
+ "gotoStep": "Request the host to activate the given step via onStepChange. No-op when no handler is wired.",
791
+ "next": "Request the host to advance one step via onStepChange.",
792
+ "previous": "Request the host to retreat one step via onStepChange."
793
+ }
794
+ },
795
+ "suggestionChip": {
796
+ "state": {
797
+ "value": "The chip's emitted value (its `value` prop or string child)."
798
+ },
799
+ "actions": {
800
+ "select": "Activate the chip — fires onSelect and (by default) self-removes.",
801
+ "dismiss": "Remove the chip without activating it."
802
+ }
803
+ },
804
+ "switch": {
805
+ "state": {
806
+ "checked": "Whether the switch is on."
807
+ },
808
+ "actions": {
809
+ "setChecked": "Set the on/off state to a specific value.",
810
+ "toggle": "Flip the on/off state."
811
+ }
812
+ },
813
+ "tabs": {
814
+ "state": {
815
+ "activeTab": "Value of the currently-active tab."
816
+ },
817
+ "actions": {
818
+ "selectTab": "Activate the tab with the given value."
819
+ }
820
+ },
821
+ "taskTray": {
822
+ "state": {
823
+ "items": "Currently-displayed tasks. Ids + status only — never task title / patient."
824
+ },
825
+ "actions": {
826
+ "selectItem": "Activate the task with the given id.",
827
+ "toggleDone": "Request the host to toggle the done state of a task.",
828
+ "dismiss": "Request the host to dismiss / remove the task with the given id."
829
+ }
830
+ },
831
+ "textArea": {
832
+ "state": {
833
+ "value": "Current value of the textarea.",
834
+ "isEmpty": "Whether the textarea has no value."
835
+ },
836
+ "actions": {
837
+ "setValue": "Replace the textarea value.",
838
+ "clear": "Empty the textarea. Loses any typed value.",
839
+ "focus": "Move keyboard focus to the textarea."
840
+ }
841
+ },
842
+ "textInput": {
843
+ "state": {
844
+ "value": "Current value of the text input.",
845
+ "isEmpty": "Whether the input has no value."
846
+ },
847
+ "actions": {
848
+ "setValue": "Replace the input value.",
849
+ "clear": "Empty the input. Loses any typed value.",
850
+ "focus": "Move keyboard focus to the input."
851
+ }
852
+ },
853
+ "themeToggle": {
854
+ "state": {
855
+ "currentTheme": "Active theme preference: light, dark, or system.",
856
+ "currentAccessibility": "Active accessibility preference: default or accessible."
857
+ },
858
+ "actions": {
859
+ "setTheme": "Switch the theme preference.",
860
+ "setAccessibility": "Switch the accessibility preference."
861
+ }
862
+ },
863
+ "timePicker": {
864
+ "state": {
865
+ "value": "Currently-selected time as 24h HH:MM (always present — defaults to 00:00 when unset).",
866
+ "isOpen": "Whether the time popover is open. TimePicker has no popover of its own; always false."
867
+ },
868
+ "actions": {
869
+ "setTime": "Set the time using a 24h HH:MM string.",
870
+ "clear": "Clear the time (resets to 00:00).",
871
+ "open": "No-op: TimePicker has no popover of its own.",
872
+ "close": "No-op: TimePicker has no popover of its own."
873
+ }
874
+ },
875
+ "timeline": {
876
+ "state": {
877
+ "selectedEvent": "Opaque event id of the currently-active event, or null."
878
+ },
879
+ "actions": {
880
+ "selectEvent": "Scroll the given event into view and mark it as selected."
881
+ }
882
+ },
883
+ "toast": {
884
+ "state": {
885
+ "visibleToasts": "Snapshot of currently-visible toasts by opaque id. Never carries the toast body text."
886
+ },
887
+ "actions": {
888
+ "dismiss": "Dismiss the toast with the given id. Irreversible from the same UI.",
889
+ "dismissAll": "Dismiss every visible toast."
890
+ }
891
+ },
892
+ "toothScheme": {
893
+ "state": {
894
+ "chart": "Current dental chart — findings (and marked surfaces) keyed by FDI id.",
895
+ "chartedTeeth": "FDI ids of every tooth carrying at least one finding."
896
+ },
897
+ "actions": {
898
+ "focusTooth": "Move focus to a specific tooth by FDI id.",
899
+ "getTooth": "Read the findings recorded on one tooth (FDI id).",
900
+ "teethWith": "List the FDI ids of every tooth carrying a given finding (e.g. all teeth with caries).",
901
+ "setFinding": "Record a finding on a tooth (crown, implant, root canal, caries, …). Optionally mark the affected surfaces for a surface finding.",
902
+ "removeFinding": "Remove a single finding from a tooth.",
903
+ "clearTooth": "Clear every finding from a tooth."
904
+ }
905
+ },
906
+ "transcriptPanel": {
907
+ "state": {
908
+ "selectedTurn": "Opaque id (line index) of the currently-active turn, or null when none is active."
909
+ },
910
+ "actions": {
911
+ "focusTurn": "Scroll the given turn into view and focus its seek button.",
912
+ "copyTurn": "Copy the given turn's text to the clipboard."
913
+ }
914
+ },
915
+ "unitConverter": {
916
+ "state": {
917
+ "category": "Active measurement family. Determines which from/to units are selectable.",
918
+ "inputs": "Source value plus the from-unit and to-unit ids within the active category.",
919
+ "result": "Converted value in the to-unit, or null when the source value is empty."
920
+ },
921
+ "actions": {
922
+ "setValue": "Set the source value to convert.",
923
+ "setUnits": "Set the from-unit and/or to-unit. Ids outside the active category are ignored.",
924
+ "setCategory": "Switch the measurement family. Resets the from/to units to that category defaults.",
925
+ "getResult": "Return the converted value in the to-unit, or null when no source value is set."
926
+ }
927
+ },
928
+ "workflowEditor": {
929
+ "state": {
930
+ "totalSteps": "Total number of nodes currently in the workflow graph.",
931
+ "currentStep": "Opaque node id of the currently-focused step, or null."
932
+ },
933
+ "actions": {
934
+ "gotoStep": "Focus a node by its opaque id."
935
+ }
936
+ },
937
+ "alfascribeConsultation": {
938
+ "workflows": {
939
+ "toggleRecording": "Start or stop audio capture for the consultation; the level meter and transcript update while recording.",
940
+ "readTranscript": "Read the live transcript — focus or copy a specific turn (clinician / patient / AI).",
941
+ "addClinicianNote": "Type a clinician note or question into the composer and submit it into the transcript, optionally seeding it from a suggested follow-up chip.",
942
+ "regenerateSummary": "Regenerate the AI consultation summary; the new draft streams into the summary card.",
943
+ "copySummary": "Copy the AI summary to the clipboard; a success toast confirms the copy.",
944
+ "saveSummary": "Persist the reviewed consultation summary to the patient record."
945
+ }
946
+ },
947
+ "aliaAssistant": {
948
+ "workflows": {
949
+ "sendMessage": "Type a question into the composer and send it; Alia streams a reply into the conversation.",
950
+ "pickSuggestion": "Send one of the suggested prompts as the next user message.",
951
+ "stopGenerating": "Cancel the in-flight streaming response while Alia is generating.",
952
+ "togglePopout": "Open or close the floating Alia popout panel (FAB + Sheet) over the current page.",
953
+ "scrollToLatest": "Scroll the conversation log to the newest message.",
954
+ "reviewUsage": "Read the assistant usage meter; when the quota is full the composer locks behind an upgrade CTA."
955
+ }
956
+ },
957
+ "appointments": {
958
+ "workflows": {
959
+ "filterAppointments": "Narrow the agenda by date range, patient, operator, chair, type, or status using the per-column filters.",
960
+ "groupByOperator": "Toggle the \"group by operator\" view so appointments nest under their booked clinician.",
961
+ "addTreatment": "Add a treatment line to an appointment from its row action menu.",
962
+ "rescheduleAppointment": "Move an open appointment to a new slot via its row \"Reschedule\" action. Closed (done / absent / cancelled) appointments cannot be rescheduled.",
963
+ "cancelAppointment": "Cancel an open appointment via its row \"Cancel appointment\" action. Destructive — frees the chair and drops the booking.",
964
+ "executeTreatment": "Mark a planned treatment line as done from its line action menu.",
965
+ "contactPatient": "Message the patient on WhatsApp from the appointment row (e.g. send a confirmation reminder)."
966
+ }
967
+ },
968
+ "authLayout": {
969
+ "workflows": {
970
+ "signIn": "Fill the email + password fields and submit the login form.",
971
+ "signUp": "Fill name, work email, password + confirmation, accept the terms, and create an account.",
972
+ "requestPasswordReset": "Enter the account email on the forgot-password form and request a reset link.",
973
+ "togglePasswordVisibility": "Reveal or hide the entered password."
974
+ }
975
+ },
976
+ "carePlans": {
977
+ "workflows": {
978
+ "selectPlans": "Select one or more plan or care rows in the register for a bulk action.",
979
+ "filterByPeriod": "Choose a period preset (e.g. this month, this year) and filter the register to it.",
980
+ "createPlan": "Open the \"New plan\" action from the page header and persist a new treatment plan for the patient.",
981
+ "createAppointmentForCare": "From a planned care row action, schedule an appointment for that treatment.",
982
+ "generateInvoice": "Bill a completed treatment: create the doctor bill / invoice the selected care sits on.",
983
+ "exportCsv": "Download the current filtered register as a CSV from the page header.",
984
+ "deleteCare": "Delete the selected non-billed care row from its plan. Irreversible."
985
+ }
986
+ },
987
+ "confirmPhone": {
988
+ "workflows": {
989
+ "enterMobileNumber": "Type or edit the mobile number (Italy-default dial code, editable) in the phone field.",
990
+ "confirmMobileNumber": "Save the entered mobile number, enabling the SMS two-factor path. An invalid or landline number keeps the prompt open with an inline error.",
991
+ "skipPrompt": "Dismiss the prompt without saving. Access continues; the prompt re-appears at the next login.",
992
+ "reopenPrompt": "Open the confirm-phone prompt again after it was skipped."
993
+ }
994
+ },
995
+ "dashboardDailyQueues": {
996
+ "workflows": {
997
+ "completeTask": "Mark a task in the \"My next tasks\" tray as done so it drops out of the undone queue.",
998
+ "scheduleFromTask": "Open the \"Schedule appointment\" row action on a patient task to book a visit for the linked patient.",
999
+ "openAppointment": "Open one of the upcoming appointments in the agenda tray to view or edit the visit.",
1000
+ "createTask": "Use the tasks tray quick-create (or empty-state CTA) to start a new follow-up / recall / collection task.",
1001
+ "createAppointment": "Use the agenda tray quick-create (or empty-state CTA) to book a new appointment.",
1002
+ "deleteTask": "Remove a task from the queue via its row \"Delete task\" action. Irreversible."
1003
+ }
1004
+ },
1005
+ "dashboard": {
1006
+ "workflows": {
1007
+ "triageWarnings": "Review the outstanding-action notices and dismiss the ones that are handled. The strip folds away once every notice is cleared. Dismissal is delegated through the WarningStack item `onDismiss` callback, so there is no imperative ui action.",
1008
+ "openInbox": "Open the inline-end AI tools rail to the Inbox tool to read the merged notifications / messages / product-update feed.",
1009
+ "quickCreate": "Use a quick-entry tile CTA to start creating a new patient, appointment, treatment plan, or invoice.",
1010
+ "navigateSection": "Jump to another workspace section (patients, schedule, documents, settings) from the Sidebar.",
1011
+ "reviewEfficiency": "Read the Studio efficiency gauge and open the settings checklist to complete the remaining configuration steps."
1012
+ }
1013
+ },
1014
+ "entityCreateSheet": {
1015
+ "workflows": {
1016
+ "openCreateSheet": "Open the quick-create sheet over the current list / dashboard without navigating away.",
1017
+ "fillForm": "Populate the form fields: free-text inputs, the notes area, single-select choices, the autocomplete lookup, and the date/time field.",
1018
+ "saveEntity": "Submit the form to create the new entity. Missing required fields keep the sheet open with inline errors; on success the sheet closes.",
1019
+ "cancelCreate": "Dismiss the sheet without saving, discarding any entered values and returning to the underlying list."
1020
+ }
1021
+ },
1022
+ "entityIndexTable": {
1023
+ "workflows": {
1024
+ "selectRows": "Select one or more rows in the table.",
1025
+ "applyFilter": "Set the filter strip values and apply.",
1026
+ "createEntity": "Open the create form and submit a new entity.",
1027
+ "deleteSelected": "Delete every selected row. Irreversible.",
1028
+ "exportCsv": "Trigger the CSV export of the current filtered set."
1029
+ }
1030
+ },
1031
+ "marketplaceAppShell": {
1032
+ "workflows": {
1033
+ "navigate": "Navigate to one of the app sections via the sidebar nav (or the embedded tab strip). Routing is consumer-owned, so the destination resolves through the host router.",
1034
+ "toggleSidebar": "Collapse or expand the main navigation rail and read its current collapsed state.",
1035
+ "openAccountMenu": "Open the account dropdown to reach sign-out and account settings.",
1036
+ "setAppearance": "Change the active theme, locale, or accessibility profile from the header settings.",
1037
+ "connectAccount": "Start the AlfaDocs OAuth connect flow from the pre-auth screen. Persists an authorised session.",
1038
+ "signOut": "Sign out of the connected AlfaDocs account from the account menu. Ends the session."
1039
+ }
1040
+ },
1041
+ "multiSigneeSigning": {
1042
+ "workflows": {
1043
+ "verifyPartyIdentity": "The active party 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.",
1044
+ "signPartyFields": "The active party signs the surface filtered to its own fields: activate a field overlay, draw or type the signature in the capture dialog, and confirm it.",
1045
+ "handOffToNextParty": "After the active party finishes, hand the device to the next party (same-device flow), switching the active session and re-filtering the surface to the next party’s fields.",
1046
+ "completeEnvelope": "Finalise the envelope once every party has signed all of its fields."
1047
+ }
1048
+ },
1049
+ "patientAiSummary": {
1050
+ "workflows": {
1051
+ "openTool": "Open one of the rail tools — the Patient Summary brief or the Ask Alia chat — making its panel the active complementary landmark.",
1052
+ "readBrief": "Read the compiled patient brief — overview counts/flags, plan state and progress, and the latest payment record.",
1053
+ "expandSection": "Expand one section of the brief accordion (overview, appointment, history, plan, or attention) to reveal its entity card.",
1054
+ "grantAiConsent": "Record the patient AI-assistance consent that gates the brief, revealing the structured summary once granted.",
1055
+ "askAlia": "Open the Ask Alia tool and send a question about this patient; Alia can answer with an in-conversation entity card."
1056
+ }
1057
+ },
1058
+ "patientCheckIn": {
1059
+ "workflows": {
1060
+ "signInWithCode": "Request a one-time SMS/email code, enter it, and authenticate into the check-in flow.",
1061
+ "setLanguage": "Pick the kiosk language for the check-in session.",
1062
+ "selectSubject": "Choose who is checking in (self or a dependent) and confirm their personal data.",
1063
+ "captureIdDocument": "Photograph or upload the health card / ID document for the visit.",
1064
+ "signConsents": "Read each consent form, add the signature, and submit the signed consents.",
1065
+ "payForVisit": "Pay the visit fee by card or digital wallet.",
1066
+ "completeCheckIn": "Finalise the check-in once all steps are done; marks the patient as arrived."
1067
+ }
1068
+ },
1069
+ "patientPortal": {
1070
+ "workflows": {
1071
+ "signInWithCode": "Request a one-time SMS/email code, enter it, and authenticate into the portal.",
1072
+ "navigateSection": "Switch between the Appointments, Documents, and My details portal sections.",
1073
+ "checkIn": "Start the day-of check-in for an upcoming appointment from the portal home.",
1074
+ "cancelAppointment": "Cancel an upcoming appointment after confirming in the dialog. Frees the slot.",
1075
+ "uploadDocument": "Upload a file (PDF/JPG/PNG) to the patient document library.",
1076
+ "saveDetails": "Edit and save the patient personal details (contact, address, fiscal code)."
1077
+ }
1078
+ },
1079
+ "patientShell": {
1080
+ "workflows": {
1081
+ "toggleSidebar": "Collapse or expand the flat patient navigation rail.",
1082
+ "openSettings": "Open the header settings menu (fullscreen toggle and logout).",
1083
+ "signOut": "Log the patient out and navigate to the configured logout URL."
1084
+ }
1085
+ },
1086
+ "patients": {
1087
+ "workflows": {
1088
+ "filterFromNotice": "Apply a WarningStack notice’s \"View\" action to narrow the roster to the flagged patients (e.g. overdue balances, estimate-stage plans).",
1089
+ "selectPatients": "Select one or more patient rows in the roster for a bulk action.",
1090
+ "sendReminders": "Send an appointment or balance reminder to the selected patients through their eligible channel (email or SMS).",
1091
+ "tagPatients": "Add a tag to every selected patient.",
1092
+ "deletePatients": "Delete the selected patients. Archived patients cannot be deleted. Irreversible.",
1093
+ "applyView": "Choose a saved view from the switcher to apply its filter and sort (and saved column layout) to the roster."
1094
+ }
1095
+ },
1096
+ "practiceProfileHero": {
1097
+ "workflows": {
1098
+ "viewProfile": "Read the practice's public profile summary — name, tagline, average rating, review count, and trust badges."
1099
+ }
1100
+ },
1101
+ "prenota": {
1102
+ "workflows": {
1103
+ "searchPractitioners": "Pick a specialty / clinic and a location in the hero search comboboxes and submit to find matching practitioners.",
1104
+ "browseResults": "Scroll the search results list and focus a map pin to locate a practice geographically.",
1105
+ "openPractice": "Open a practice or operator profile from a result card to view contact details and reviews.",
1106
+ "filterReviews": "Filter the reviews panel on a profile by star rating to read targeted feedback.",
1107
+ "bookVisit": "Start booking a visit from a result card next-available slot or a profile \"Book visit\" CTA.",
1108
+ "navigateMenu": "Open the public header navigation (doctors, pricing, for-practices) or the sign-in / register actions."
1109
+ }
1110
+ },
1111
+ "printInvoice": {
1112
+ "workflows": {
1113
+ "sortLineItems": "Sort the invoice line-items table by a column.",
1114
+ "readFindings": "Read the charted odontogram findings on the treatment-plan variant.",
1115
+ "generatePdf": "Render the current invoice (or treatment plan) to a print-ready PDF document.",
1116
+ "sendInvoice": "Email the generated invoice document to the patient."
1117
+ }
1118
+ },
1119
+ "roiDashboard": {
1120
+ "workflows": {
1121
+ "viewFunnel": "Read the patient-journey funnel — per-stage efficiency, time saved, and potential for the selected period.",
1122
+ "setPeriod": "Change the reporting period for the whole funnel; every cubotto and KPI recomputes.",
1123
+ "drillIntoStage": "Open a stage cubotto to its per-KPI drill-down breakdown (and the AI insight cubotto to the ROI overview).",
1124
+ "switchRole": "Switch the dashboard to another role via the multi-role tab switcher and read the active role.",
1125
+ "openInbox": "Open the inbox rail's notifications/messages tool and read which tool is active.",
1126
+ "exportKpi": "Export a KPI chart as a PNG for a report, or request a full ROI report export.",
1127
+ "dismissAlert": "Dismiss an item from the top-of-page alerts strip. Persists the dismissal so it stays hidden."
1128
+ }
1129
+ },
1130
+ "settings": {
1131
+ "workflows": {
1132
+ "switchSection": "Switch the active settings section (Profile / Notifications / Billing / Security) via the vertical tab strip.",
1133
+ "editDisplayName": "Set the display-name text field; changing it marks the form dirty and enables Save.",
1134
+ "toggleEmailDigest": "Turn the weekly email digest preference on or off.",
1135
+ "setLanguage": "Choose the display language from the language select.",
1136
+ "saveSettings": "Persist the dirty profile form. Save is disabled until a field changes.",
1137
+ "discardChanges": "Cancel and reset the form to its last-saved baseline, re-disabling Save.",
1138
+ "collapseSidebar": "Collapse or expand the primary navigation sidebar."
1139
+ }
1140
+ },
1141
+ "signingWizard": {
1142
+ "workflows": {
1143
+ "verifyIdentity": "Complete the Verify step: enter the 5-character SMS code, or tick the confirm-identity checkbox when no mobile number is on file, then advance to the Sign step.",
1144
+ "navigateSteps": "Move between the Verify → Sign → Done steps of the wizard.",
1145
+ "readDocument": "Page through and zoom the document under signature on the Sign step.",
1146
+ "signField": "Activate a field overlay on the Sign step, draw or type the signature in the capture dialog, and confirm it.",
1147
+ "completeEnvelope": "Finalise the envelope once every required field is signed and the wizard reaches the Done step."
1148
+ }
1149
+ },
1150
+ "signing": {
1151
+ "workflows": {
1152
+ "verifyIdentity": "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.",
1153
+ "readDocument": "Page through and zoom the document under signature before signing each field.",
1154
+ "signField": "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.",
1155
+ "completeEnvelope": "Finalise the envelope once every required field carries a signature, persisting the completed document."
1156
+ }
1157
+ },
1158
+ "twoFactorLogin": {
1159
+ "workflows": {
1160
+ "enterCode": "Type the 6-digit verification code into the OTP field.",
1161
+ "verifyCode": "Submit the entered code to complete the second-factor challenge and sign in.",
1162
+ "resendCode": "Request a fresh SMS code (capped at the configured resend limit).",
1163
+ "switchMethod": "Switch between the SMS and authenticator-app verification methods, resetting the entry."
1164
+ }
1165
+ },
1166
+ "upgradePractice": {
1167
+ "workflows": {
1168
+ "viewPackages": "List the available upgrade packages with their headline benefits and price.",
1169
+ "openPackage": "Open a package card to its detail view with the quantified benefit rows.",
1170
+ "configurePackage": "In the basket, set the quantity or tier for a tiered/quantity package and read back the chosen value; the monthly-price-increase summary recomputes.",
1171
+ "confirmUpgrade": "Confirm the upgrade — add the configured package to the practice subscription and bill the prorated partial period. Persists a billing change."
1172
+ }
1173
+ }
1174
+ }
1175
+ }