@alfadocs/ui-kit-debug 1.76.0 → 1.77.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.
- package/dist/_chunks/{balance-badge-cell-B49xgL6H.js → balance-badge-cell-Dzd-Z_5W.js} +2 -2
- package/dist/_chunks/{balance-badge-cell-B49xgL6H.js.map → balance-badge-cell-Dzd-Z_5W.js.map} +1 -1
- package/dist/_chunks/booking-Cz_QjIJe.js +4051 -0
- package/dist/_chunks/booking-Cz_QjIJe.js.map +1 -0
- package/dist/_chunks/{breadcrumb-Boan-5n8.js → breadcrumb-Bn29NCnf.js} +8 -8
- package/dist/_chunks/breadcrumb-Bn29NCnf.js.map +1 -0
- package/dist/_chunks/{calendar-appointment-editor-dialog-B4My4eiB.js → calendar-appointment-editor-dialog-cvUpUjj-.js} +4 -4
- package/dist/_chunks/{calendar-appointment-editor-dialog-B4My4eiB.js.map → calendar-appointment-editor-dialog-cvUpUjj-.js.map} +1 -1
- package/dist/_chunks/{control-room-rail-CKZ2nemY.js → control-room-rail-DcJpHbp4.js} +2 -2
- package/dist/_chunks/{control-room-rail-CKZ2nemY.js.map → control-room-rail-DcJpHbp4.js.map} +1 -1
- package/dist/_chunks/{data-table-DTKGWUQm.js → data-table-BlONA1rP.js} +2 -2
- package/dist/_chunks/{data-table-DTKGWUQm.js.map → data-table-BlONA1rP.js.map} +1 -1
- package/dist/_chunks/{file-manager-Ct5QpZZI.js → file-manager-C9iJjDZt.js} +3 -3
- package/dist/_chunks/{file-manager-Ct5QpZZI.js.map → file-manager-C9iJjDZt.js.map} +1 -1
- package/dist/_chunks/{header-settings-Coh1r41O.js → header-settings-BYpVmLip.js} +2 -2
- package/dist/_chunks/{header-settings-Coh1r41O.js.map → header-settings-BYpVmLip.js.map} +1 -1
- package/dist/_chunks/{heatmap-Ba9cgfSY.js → heatmap-C2Rg-SV_.js} +2 -2
- package/dist/_chunks/{heatmap-Ba9cgfSY.js.map → heatmap-C2Rg-SV_.js.map} +1 -1
- package/dist/_chunks/{marketplace-app-shell-Ck5NVJcO.js → marketplace-app-shell-mS7Q2-81.js} +3 -3
- package/dist/_chunks/{marketplace-app-shell-Ck5NVJcO.js.map → marketplace-app-shell-mS7Q2-81.js.map} +1 -1
- package/dist/_chunks/{notes-panel-CxjMovCh.js → notes-panel-CZO1qsD-.js} +2 -2
- package/dist/_chunks/{notes-panel-CxjMovCh.js.map → notes-panel-CZO1qsD-.js.map} +1 -1
- package/dist/_chunks/{otp-input-CGMu30_e.js → otp-input-BgEZi0py.js} +54 -53
- package/dist/_chunks/otp-input-BgEZi0py.js.map +1 -0
- package/dist/_chunks/{practice-results-C5SJTgcd.js → practice-results-By2BZFCz.js} +732 -709
- package/dist/_chunks/practice-results-By2BZFCz.js.map +1 -0
- package/dist/_chunks/{recaptcha-widget-CsvwlYTE.js → recaptcha-widget-iglUBIF3.js} +2 -2
- package/dist/_chunks/{recaptcha-widget-CsvwlYTE.js.map → recaptcha-widget-iglUBIF3.js.map} +1 -1
- package/dist/_chunks/{registration-form-DeK2QiJu.js → registration-form-xORq2s4p.js} +3 -3
- package/dist/_chunks/{registration-form-DeK2QiJu.js.map → registration-form-xORq2s4p.js.map} +1 -1
- package/dist/_chunks/signature-request-DjY-X62H.js +2448 -0
- package/dist/_chunks/signature-request-DjY-X62H.js.map +1 -0
- package/dist/_chunks/{tasks-panel-Cmr0oMvc.js → tasks-panel-BkjtgjQ8.js} +2 -2
- package/dist/_chunks/{tasks-panel-Cmr0oMvc.js.map → tasks-panel-BkjtgjQ8.js.map} +1 -1
- package/dist/_chunks/{theme-toggle-DTrUzIBG.js → theme-toggle-DKpzb0-M.js} +2 -2
- package/dist/_chunks/{theme-toggle-DTrUzIBG.js.map → theme-toggle-DKpzb0-M.js.map} +1 -1
- package/dist/_chunks/{tool-rail-C_9lm0TC.js → tool-rail-Kup1b7xI.js} +2 -2
- package/dist/_chunks/{tool-rail-C_9lm0TC.js.map → tool-rail-Kup1b7xI.js.map} +1 -1
- package/dist/_chunks/use-theme-CYGyzFgZ.js +196 -0
- package/dist/_chunks/use-theme-CYGyzFgZ.js.map +1 -0
- package/dist/agent-catalog.json +46 -10
- package/dist/agent-i18n/en.json +5 -4
- package/dist/components/booking/booking-types.d.ts +22 -1
- package/dist/components/booking/booking-types.d.ts.map +1 -1
- package/dist/components/booking/booking.agent.d.ts.map +1 -1
- package/dist/components/booking/booking.d.ts +1 -1
- package/dist/components/booking/booking.d.ts.map +1 -1
- package/dist/components/booking/code-step.d.ts +6 -0
- package/dist/components/booking/code-step.d.ts.map +1 -0
- package/dist/components/booking/index.d.ts +1 -1
- package/dist/components/booking/index.d.ts.map +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/booking/step-focus.d.ts +9 -0
- package/dist/components/booking/step-focus.d.ts.map +1 -0
- package/dist/components/booking/use-booking-payment.d.ts +6 -3
- package/dist/components/booking/use-booking-payment.d.ts.map +1 -1
- package/dist/components/breadcrumb/index.js +1 -1
- package/dist/components/control-room-rail/index.js +1 -1
- package/dist/components/data-table/index.js +1 -1
- package/dist/components/file-manager/index.js +1 -1
- package/dist/components/header-settings/index.js +1 -1
- package/dist/components/heatmap/index.js +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/otp-input/index.js +1 -1
- package/dist/components/otp-input/otp-input.d.ts +1 -0
- package/dist/components/otp-input/otp-input.d.ts.map +1 -1
- package/dist/components/patient-table/index.js +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/practice-results/practice-results.d.ts +1 -1
- package/dist/components/practice-results/practice-results.d.ts.map +1 -1
- package/dist/components/recaptcha-widget/index.js +1 -1
- package/dist/components/tasks-panel/index.js +1 -1
- package/dist/components/theme-toggle/index.js +1 -1
- package/dist/components/tool-rail/index.js +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +88 -86
- package/dist/hooks/use-theme.d.ts +9 -0
- package/dist/hooks/use-theme.d.ts.map +1 -1
- package/dist/host-compat.css +4 -1
- package/dist/i18n/locales/ar.d.ts +29 -0
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +30 -1
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +29 -0
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +30 -1
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +29 -0
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +30 -1
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +29 -0
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +30 -1
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +29 -0
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +30 -1
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +29 -0
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +30 -1
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +29 -0
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +30 -1
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +29 -0
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +30 -1
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +29 -0
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +30 -1
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +29 -0
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +30 -1
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +29 -0
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +30 -1
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +29 -0
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +30 -1
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +29 -0
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +30 -1
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +29 -0
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +30 -1
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +29 -0
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +30 -1
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +29 -0
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +30 -1
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +29 -0
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +30 -1
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +29 -0
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +30 -1
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +1209 -1207
- package/dist/locales/ar.json +30 -1
- package/dist/locales/de.json +30 -1
- package/dist/locales/el.json +30 -1
- package/dist/locales/en.json +30 -1
- package/dist/locales/es.json +30 -1
- package/dist/locales/fr.json +30 -1
- package/dist/locales/hi.json +30 -1
- package/dist/locales/it.json +30 -1
- package/dist/locales/ja.json +30 -1
- package/dist/locales/nl.json +30 -1
- package/dist/locales/pl.json +30 -1
- package/dist/locales/pt.json +30 -1
- package/dist/locales/ro.json +30 -1
- package/dist/locales/ru.json +30 -1
- package/dist/locales/sq.json +30 -1
- package/dist/locales/sv.json +30 -1
- package/dist/locales/tr.json +30 -1
- package/dist/locales/zh.json +30 -1
- package/dist/patterns/calendar/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/registration-form/index.js +1 -1
- package/dist/patterns/signature-request/channel-meta.d.ts +8 -2
- package/dist/patterns/signature-request/channel-meta.d.ts.map +1 -1
- package/dist/patterns/signature-request/index.js +1 -1
- package/dist/patterns/signature-request/minor-patient.d.ts +41 -0
- package/dist/patterns/signature-request/minor-patient.d.ts.map +1 -0
- package/dist/patterns/signature-request/required-documents.d.ts +4 -3
- package/dist/patterns/signature-request/required-documents.d.ts.map +1 -1
- package/dist/patterns/signature-request/signature-request.d.ts +62 -12
- package/dist/patterns/signature-request/signature-request.d.ts.map +1 -1
- package/dist/theme-boot.js +26 -0
- package/dist/tokens.css +1 -1
- package/package.json +4 -2
- package/dist/_chunks/booking-D2r19Lia.js +0 -3901
- package/dist/_chunks/booking-D2r19Lia.js.map +0 -1
- package/dist/_chunks/breadcrumb-Boan-5n8.js.map +0 -1
- package/dist/_chunks/otp-input-CGMu30_e.js.map +0 -1
- package/dist/_chunks/practice-results-C5SJTgcd.js.map +0 -1
- package/dist/_chunks/signature-request-ldmXj2X6.js +0 -2221
- package/dist/_chunks/signature-request-ldmXj2X6.js.map +0 -1
- package/dist/_chunks/use-theme-CAuo6EYT.js +0 -159
- package/dist/_chunks/use-theme-CAuo6EYT.js.map +0 -1
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { useSyncExternalStore as N, useEffect as C, useCallback as L } from "react";
|
|
2
|
+
const f = "alfadocs-ui.theme", m = "alfadocs-ui.accessibility", s = {
|
|
3
|
+
light: "theme-light",
|
|
4
|
+
dark: "theme-dark",
|
|
5
|
+
accessible: "theme-accessible"
|
|
6
|
+
}, I = "data-alfadocs-theme-boot", k = "(prefers-color-scheme: dark)", E = "(prefers-contrast: more)";
|
|
7
|
+
function b(e) {
|
|
8
|
+
if (typeof window > "u") return null;
|
|
9
|
+
try {
|
|
10
|
+
return window.localStorage.getItem(e);
|
|
11
|
+
} catch {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function O(e, t) {
|
|
16
|
+
if (!(typeof window > "u"))
|
|
17
|
+
try {
|
|
18
|
+
t === null ? window.localStorage.removeItem(e) : window.localStorage.setItem(e, t);
|
|
19
|
+
} catch {
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function M(e) {
|
|
23
|
+
return e === "light" || e === "dark" || e === "system";
|
|
24
|
+
}
|
|
25
|
+
function T(e) {
|
|
26
|
+
return e === "default" || e === "accessible" || e === "system";
|
|
27
|
+
}
|
|
28
|
+
function H() {
|
|
29
|
+
if (typeof document > "u") return null;
|
|
30
|
+
const e = document.documentElement;
|
|
31
|
+
return e.hasAttribute(I) ? null : e.classList;
|
|
32
|
+
}
|
|
33
|
+
function J() {
|
|
34
|
+
const e = b(f), t = b(m), i = typeof window < "u" && typeof window.matchMedia == "function", n = H(), g = n ? n.contains(s.dark) ? "dark" : n.contains(s.light) ? "light" : null : null, D = n != null && n.contains(s.accessible) ? "accessible" : null;
|
|
35
|
+
return {
|
|
36
|
+
theme: M(e) ? e : g ?? "system",
|
|
37
|
+
accessibility: T(t) ? t : D ?? "system",
|
|
38
|
+
prefersDark: i ? window.matchMedia(k).matches : !1,
|
|
39
|
+
prefersMoreContrast: i ? window.matchMedia(E).matches : !1
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
let r = J();
|
|
43
|
+
const S = /* @__PURE__ */ new Set();
|
|
44
|
+
function c(e) {
|
|
45
|
+
e.theme === r.theme && e.accessibility === r.accessibility && e.prefersDark === r.prefersDark && e.prefersMoreContrast === r.prefersMoreContrast || (r = e, S.forEach((t) => t()));
|
|
46
|
+
}
|
|
47
|
+
function $(e) {
|
|
48
|
+
return S.add(e), () => {
|
|
49
|
+
S.delete(e);
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function V() {
|
|
53
|
+
return r;
|
|
54
|
+
}
|
|
55
|
+
function Y() {
|
|
56
|
+
return {
|
|
57
|
+
theme: "system",
|
|
58
|
+
accessibility: "system",
|
|
59
|
+
prefersDark: !1,
|
|
60
|
+
prefersMoreContrast: !1
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
let w = 0, h = null, y = null, d = null;
|
|
64
|
+
function j(e) {
|
|
65
|
+
c({ ...r, prefersDark: e.matches });
|
|
66
|
+
}
|
|
67
|
+
function B(e) {
|
|
68
|
+
c({ ...r, prefersMoreContrast: e.matches });
|
|
69
|
+
}
|
|
70
|
+
function U(e) {
|
|
71
|
+
if (e.key === f) {
|
|
72
|
+
const t = M(e.newValue) ? e.newValue : "system";
|
|
73
|
+
c({ ...r, theme: t });
|
|
74
|
+
} else if (e.key === m) {
|
|
75
|
+
const t = T(e.newValue) ? e.newValue : "system";
|
|
76
|
+
c({ ...r, accessibility: t });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function v() {
|
|
80
|
+
if (typeof document > "u") return;
|
|
81
|
+
const e = H(), t = b(f), i = b(m), n = e != null && e.contains(s.dark) ? "dark" : e != null && e.contains(s.light) ? "light" : null, g = e != null && e.contains(
|
|
82
|
+
s.accessible
|
|
83
|
+
) ? "accessible" : null;
|
|
84
|
+
c({
|
|
85
|
+
...r,
|
|
86
|
+
theme: M(t) ? t : n ?? "system",
|
|
87
|
+
accessibility: T(i) ? i : g ?? "system"
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function A(e, t) {
|
|
91
|
+
return typeof e.addEventListener == "function" ? (e.addEventListener("change", t), () => e.removeEventListener("change", t)) : (e.addListener(t), () => e.removeListener(t));
|
|
92
|
+
}
|
|
93
|
+
function F() {
|
|
94
|
+
return w += 1, w > 1 || typeof window > "u" || (typeof window.matchMedia == "function" && (h = window.matchMedia(k), y = window.matchMedia(E), c({
|
|
95
|
+
...r,
|
|
96
|
+
prefersDark: h.matches,
|
|
97
|
+
prefersMoreContrast: y.matches
|
|
98
|
+
}), o = A(h, j), l = A(y, B)), d = U, window.addEventListener("storage", d), typeof document < "u" && typeof MutationObserver < "u" && (v(), a = new MutationObserver(v), a.observe(document.documentElement, {
|
|
99
|
+
attributes: !0,
|
|
100
|
+
attributeFilter: ["class"]
|
|
101
|
+
}))), p;
|
|
102
|
+
}
|
|
103
|
+
let o = null, l = null, a = null;
|
|
104
|
+
function p() {
|
|
105
|
+
w -= 1, !(w > 0) && (o == null || o(), l == null || l(), o = null, l = null, h = null, y = null, d && typeof window < "u" && window.removeEventListener("storage", d), d = null, a == null || a.disconnect(), a = null);
|
|
106
|
+
}
|
|
107
|
+
function _(e) {
|
|
108
|
+
const t = e.theme === "system" ? e.prefersDark ? "dark" : "light" : e.theme, i = e.accessibility === "system" ? e.prefersMoreContrast : e.accessibility === "accessible";
|
|
109
|
+
return t === "dark" && i ? "dark-accessible" : t === "dark" ? "dark" : i ? "light-accessible" : "light";
|
|
110
|
+
}
|
|
111
|
+
function u(e) {
|
|
112
|
+
switch (e) {
|
|
113
|
+
case "light":
|
|
114
|
+
return [s.light];
|
|
115
|
+
case "dark":
|
|
116
|
+
return [s.dark];
|
|
117
|
+
case "light-accessible":
|
|
118
|
+
return [s.light, s.accessible];
|
|
119
|
+
case "dark-accessible":
|
|
120
|
+
return [s.dark, s.accessible];
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const R = [
|
|
124
|
+
s.light,
|
|
125
|
+
s.dark,
|
|
126
|
+
s.accessible
|
|
127
|
+
], Q = `(function () {
|
|
128
|
+
function read(key) {
|
|
129
|
+
try { return window.localStorage.getItem(key); }
|
|
130
|
+
catch (e) { return null; }
|
|
131
|
+
}
|
|
132
|
+
function matches(query) {
|
|
133
|
+
try {
|
|
134
|
+
return typeof window.matchMedia === 'function' && window.matchMedia(query).matches;
|
|
135
|
+
} catch (e) { return false; }
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
var root = document.documentElement;
|
|
139
|
+
var known = ${JSON.stringify(R)};
|
|
140
|
+
for (var i = 0; i < known.length; i++) {
|
|
141
|
+
if (root.classList.contains(known[i])) return;
|
|
142
|
+
}
|
|
143
|
+
var theme = read(${JSON.stringify(f)});
|
|
144
|
+
var accessibility = read(${JSON.stringify(m)});
|
|
145
|
+
var dark = theme === 'dark' || (theme !== 'light' && matches(${JSON.stringify(k)}));
|
|
146
|
+
var accessible = accessibility === 'accessible' || (accessibility !== 'default' && matches(${JSON.stringify(E)}));
|
|
147
|
+
var themes = ${JSON.stringify([
|
|
148
|
+
u("light"),
|
|
149
|
+
u("light-accessible"),
|
|
150
|
+
u("dark"),
|
|
151
|
+
u("dark-accessible")
|
|
152
|
+
])};
|
|
153
|
+
var next = themes[(dark ? 2 : 0) + (accessible ? 1 : 0)];
|
|
154
|
+
for (var j = 0; j < next.length; j++) root.classList.add(next[j]);
|
|
155
|
+
root.setAttribute(${JSON.stringify(I)}, '');
|
|
156
|
+
} catch (e) {}
|
|
157
|
+
})();`;
|
|
158
|
+
function G(e) {
|
|
159
|
+
if (typeof document > "u") return;
|
|
160
|
+
const t = document.documentElement, i = new Set(u(e));
|
|
161
|
+
R.forEach((n) => {
|
|
162
|
+
i.has(n) ? t.classList.add(n) : t.classList.remove(n);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
function q() {
|
|
166
|
+
const e = N($, V, Y);
|
|
167
|
+
C(() => F(), []), C(() => {
|
|
168
|
+
G(_(e));
|
|
169
|
+
}, [e]);
|
|
170
|
+
const t = L((n) => {
|
|
171
|
+
O(f, n === "system" ? null : n), c({ ...r, theme: n });
|
|
172
|
+
}, []), i = L((n) => {
|
|
173
|
+
O(
|
|
174
|
+
m,
|
|
175
|
+
n === "system" ? null : n
|
|
176
|
+
), c({ ...r, accessibility: n });
|
|
177
|
+
}, []);
|
|
178
|
+
return {
|
|
179
|
+
theme: e.theme,
|
|
180
|
+
accessibility: e.accessibility,
|
|
181
|
+
resolvedTheme: _(e),
|
|
182
|
+
setTheme: t,
|
|
183
|
+
setAccessibility: i
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
export {
|
|
187
|
+
m as A,
|
|
188
|
+
I as T,
|
|
189
|
+
Q as a,
|
|
190
|
+
s as b,
|
|
191
|
+
f as c,
|
|
192
|
+
_ as r,
|
|
193
|
+
u as t,
|
|
194
|
+
q as u
|
|
195
|
+
};
|
|
196
|
+
//# sourceMappingURL=use-theme-CYGyzFgZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-theme-CYGyzFgZ.js","sources":["../../src/hooks/use-theme.ts"],"sourcesContent":["import { useCallback, useEffect, useSyncExternalStore } from 'react';\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* */\n/* Modelled as two orthogonal axes per `src/docs/04-theming.mdx` — base */\n/* colour scheme and AAA contrast modifier — plus an explicit `system` */\n/* value meaning \"no user override, follow OS preferences\". The four */\n/* concrete applied themes called out in `hooks-gaps.mdx` are exposed */\n/* via `resolvedTheme` for code that needs to branch on the composed */\n/* result (e.g. data-visualisation libraries with their own theme */\n/* machinery). */\n/* -------------------------------------------------------------------- */\n\nexport type ThemeBase = 'light' | 'dark';\nexport type ThemePreference = ThemeBase | 'system';\nexport type AccessibilityPreference = 'default' | 'accessible' | 'system';\nexport type ResolvedTheme =\n | 'light'\n | 'dark'\n | 'light-accessible'\n | 'dark-accessible';\n\nexport interface UseThemeReturn {\n /** User's stored base-theme preference, or `'system'` when no override is set. */\n theme: ThemePreference;\n /** User's stored AAA-contrast preference, or `'system'` when no override is set. */\n accessibility: AccessibilityPreference;\n /** The theme actually applied to the DOM once the preferences + OS signals are resolved. */\n resolvedTheme: ResolvedTheme;\n /** Persist a new base-theme preference. Pass `'system'` to clear the override. */\n setTheme: (next: ThemePreference) => void;\n /** Persist a new AAA-contrast preference. Pass `'system'` to clear the override. */\n setAccessibility: (next: AccessibilityPreference) => void;\n}\n\n/* -------------------------------------------------------------------- */\n/* SSR-safe named constants */\n/* */\n/* Exported so a consuming app's SSR shim can plant the correct classes */\n/* on `<html>` at render time without importing the whole hook (which */\n/* pulls in React, `useSyncExternalStore`, etc.). */\n/* -------------------------------------------------------------------- */\n\nexport const THEME_STORAGE_KEY = 'alfadocs-ui.theme';\nexport const ACCESSIBILITY_STORAGE_KEY = 'alfadocs-ui.accessibility';\n\nexport const THEME_CLASS = {\n light: 'theme-light',\n dark: 'theme-dark',\n accessible: 'theme-accessible',\n} as const;\n\n/** Marks resolved boot classes so they are not mistaken for host overrides. */\nexport const THEME_BOOT_ATTRIBUTE = 'data-alfadocs-theme-boot';\n\nconst COLOR_SCHEME_QUERY = '(prefers-color-scheme: dark)';\nconst CONTRAST_QUERY = '(prefers-contrast: more)';\n\n/* -------------------------------------------------------------------- */\n/* Persistence — guarded against private-mode / disabled-storage throws */\n/* -------------------------------------------------------------------- */\n\nfunction safeReadStorage(key: string): string | null {\n if (typeof window === 'undefined') return null;\n try {\n return window.localStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\nfunction safeWriteStorage(key: string, value: string | null): void {\n if (typeof window === 'undefined') return;\n try {\n if (value === null) {\n window.localStorage.removeItem(key);\n } else {\n window.localStorage.setItem(key, value);\n }\n } catch {\n /* Storage can throw in private mode or when quota is exceeded — the\n in-memory state is the source of truth, so a write failure is\n recoverable. Silent-fail matches how `usePrefersReducedMotion`\n handles `matchMedia` being unavailable. */\n }\n}\n\nfunction isValidTheme(value: unknown): value is ThemePreference {\n return value === 'light' || value === 'dark' || value === 'system';\n}\n\nfunction isValidAccessibility(\n value: unknown,\n): value is AccessibilityPreference {\n return value === 'default' || value === 'accessible' || value === 'system';\n}\n\n/* -------------------------------------------------------------------- */\n/* External store — singleton so every `useTheme()` consumer in the */\n/* tree reads the same snapshot and only one `matchMedia` / storage */\n/* subscription is registered per tab. */\n/* -------------------------------------------------------------------- */\n\ninterface ThemeSnapshot {\n theme: ThemePreference;\n accessibility: AccessibilityPreference;\n prefersDark: boolean;\n prefersMoreContrast: boolean;\n}\n\nfunction readHostThemeClasses(): DOMTokenList | null {\n if (typeof document === 'undefined') return null;\n const root = document.documentElement;\n return root.hasAttribute(THEME_BOOT_ATTRIBUTE) ? null : root.classList;\n}\n\nfunction readInitialSnapshot(): ThemeSnapshot {\n const storedTheme = safeReadStorage(THEME_STORAGE_KEY);\n const storedA11y = safeReadStorage(ACCESSIBILITY_STORAGE_KEY);\n\n const hasMatchMedia =\n typeof window !== 'undefined' && typeof window.matchMedia === 'function';\n\n /* When storage has no explicit override, fall back to whatever theme\n classes are already on `<html>` (set by SSR, a consuming app's shell,\n or Storybook's `withThemeByClassName` decorator). Boot-script classes\n only reflect resolved preferences, so they are not overrides. Without this, a\n nested `<ThemeRoot>` driven by `resolvedTheme` would clobber the\n outer cascade with `theme-light` (the OS-preference default) and\n bomb the closest-ancestor token resolution for every child. */\n const htmlClasses = readHostThemeClasses();\n const htmlThemeOverride: ThemePreference | null = htmlClasses\n ? htmlClasses.contains(THEME_CLASS.dark)\n ? 'dark'\n : htmlClasses.contains(THEME_CLASS.light)\n ? 'light'\n : null\n : null;\n const htmlA11yOverride: AccessibilityPreference | null =\n htmlClasses?.contains(THEME_CLASS.accessible) ? 'accessible' : null;\n\n return {\n theme: isValidTheme(storedTheme)\n ? storedTheme\n : (htmlThemeOverride ?? 'system'),\n accessibility: isValidAccessibility(storedA11y)\n ? storedA11y\n : (htmlA11yOverride ?? 'system'),\n prefersDark: hasMatchMedia\n ? window.matchMedia(COLOR_SCHEME_QUERY).matches\n : false,\n prefersMoreContrast: hasMatchMedia\n ? window.matchMedia(CONTRAST_QUERY).matches\n : false,\n };\n}\n\nlet snapshot: ThemeSnapshot = readInitialSnapshot();\nconst listeners = new Set<() => void>();\n\nfunction commit(next: ThemeSnapshot): void {\n if (\n next.theme === snapshot.theme &&\n next.accessibility === snapshot.accessibility &&\n next.prefersDark === snapshot.prefersDark &&\n next.prefersMoreContrast === snapshot.prefersMoreContrast\n ) {\n return;\n }\n snapshot = next;\n listeners.forEach((listener) => listener());\n}\n\nfunction subscribe(listener: () => void): () => void {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\n\nfunction getSnapshot(): ThemeSnapshot {\n return snapshot;\n}\n\nfunction getServerSnapshot(): ThemeSnapshot {\n return {\n theme: 'system',\n accessibility: 'system',\n prefersDark: false,\n prefersMoreContrast: false,\n };\n}\n\n/* -------------------------------------------------------------------- */\n/* Media-query subscriptions — mounted once per tab, on the first time */\n/* `useTheme` is called in the browser. Cleanup happens via a ref-count */\n/* in the subscription effect below. */\n/* -------------------------------------------------------------------- */\n\nlet mediaSubscriberCount = 0;\nlet colorSchemeMql: MediaQueryList | null = null;\nlet contrastMql: MediaQueryList | null = null;\nlet storageHandler: ((event: StorageEvent) => void) | null = null;\n\nfunction onColorSchemeChange(event: MediaQueryListEvent): void {\n commit({ ...snapshot, prefersDark: event.matches });\n}\n\nfunction onContrastChange(event: MediaQueryListEvent): void {\n commit({ ...snapshot, prefersMoreContrast: event.matches });\n}\n\nfunction onStorage(event: StorageEvent): void {\n if (event.key === THEME_STORAGE_KEY) {\n const next = isValidTheme(event.newValue) ? event.newValue : 'system';\n commit({ ...snapshot, theme: next });\n } else if (event.key === ACCESSIBILITY_STORAGE_KEY) {\n const next = isValidAccessibility(event.newValue)\n ? event.newValue\n : 'system';\n commit({ ...snapshot, accessibility: next });\n }\n}\n\n/* The `<html>` class fallback from `readInitialSnapshot` must stay LIVE:\n Storybook's `withThemeByClassName` decorator (and host apps' shells)\n rewrite the documentElement classes after this module's initial read,\n and a one-shot sample leaves the hook pinned to a stale preference —\n a nested `<ThemeRoot>` then clobbers the outer cascade (e.g. a\n `theme-light` root inside a `theme-dark` page). Stored preferences\n still win, mirroring the initial-read precedence. Marked boot classes\n must remain excluded here too, so mounting does not pin System default. */\nfunction rederiveFromHtmlClasses(): void {\n if (typeof document === 'undefined') return;\n const classes = readHostThemeClasses();\n const storedTheme = safeReadStorage(THEME_STORAGE_KEY);\n const storedA11y = safeReadStorage(ACCESSIBILITY_STORAGE_KEY);\n const htmlTheme: ThemePreference | null = classes?.contains(THEME_CLASS.dark)\n ? 'dark'\n : classes?.contains(THEME_CLASS.light)\n ? 'light'\n : null;\n const htmlA11y: AccessibilityPreference | null = classes?.contains(\n THEME_CLASS.accessible,\n )\n ? 'accessible'\n : null;\n commit({\n ...snapshot,\n theme: isValidTheme(storedTheme) ? storedTheme : (htmlTheme ?? 'system'),\n accessibility: isValidAccessibility(storedA11y)\n ? storedA11y\n : (htmlA11y ?? 'system'),\n });\n}\n\nfunction attachMqlListener(\n mql: MediaQueryList,\n handler: (event: MediaQueryListEvent) => void,\n): () => void {\n if (typeof mql.addEventListener === 'function') {\n mql.addEventListener('change', handler);\n return () => mql.removeEventListener('change', handler);\n }\n // Safari < 14 fallback.\n mql.addListener(handler);\n return () => mql.removeListener(handler);\n}\n\nfunction mountMediaSubscriptions(): () => void {\n mediaSubscriberCount += 1;\n if (mediaSubscriberCount > 1) {\n return disposeOneSubscriber;\n }\n\n if (typeof window === 'undefined') {\n return disposeOneSubscriber;\n }\n\n if (typeof window.matchMedia === 'function') {\n colorSchemeMql = window.matchMedia(COLOR_SCHEME_QUERY);\n contrastMql = window.matchMedia(CONTRAST_QUERY);\n // Re-sync the module snapshot in case the OS preferences changed\n // between initial read and first effect run (hydration window).\n commit({\n ...snapshot,\n prefersDark: colorSchemeMql.matches,\n prefersMoreContrast: contrastMql.matches,\n });\n detachColorScheme = attachMqlListener(colorSchemeMql, onColorSchemeChange);\n detachContrast = attachMqlListener(contrastMql, onContrastChange);\n }\n\n // Cross-tab sync — `storage` only fires on *other* tabs, so the local\n // tab still needs setTheme to update snapshot directly (it does).\n storageHandler = onStorage;\n window.addEventListener('storage', storageHandler);\n\n // Live `<html>` class tracking — decorators / host shells may rewrite\n // the theme classes after mount; re-derive (and re-sync once now, in\n // case the classes changed inside the hydration window).\n if (\n typeof document !== 'undefined' &&\n typeof MutationObserver !== 'undefined'\n ) {\n rederiveFromHtmlClasses();\n htmlClassObserver = new MutationObserver(rederiveFromHtmlClasses);\n htmlClassObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n }\n\n return disposeOneSubscriber;\n}\n\nlet detachColorScheme: (() => void) | null = null;\nlet detachContrast: (() => void) | null = null;\nlet htmlClassObserver: MutationObserver | null = null;\n\nfunction disposeOneSubscriber(): void {\n mediaSubscriberCount -= 1;\n if (mediaSubscriberCount > 0) return;\n detachColorScheme?.();\n detachContrast?.();\n detachColorScheme = null;\n detachContrast = null;\n colorSchemeMql = null;\n contrastMql = null;\n if (storageHandler && typeof window !== 'undefined') {\n window.removeEventListener('storage', storageHandler);\n }\n storageHandler = null;\n htmlClassObserver?.disconnect();\n htmlClassObserver = null;\n}\n\n/* -------------------------------------------------------------------- */\n/* Resolution helpers */\n/* -------------------------------------------------------------------- */\n\nexport function resolveTheme(state: ThemeSnapshot): ResolvedTheme {\n const base: ThemeBase =\n state.theme === 'system'\n ? state.prefersDark\n ? 'dark'\n : 'light'\n : state.theme;\n const accessible =\n state.accessibility === 'system'\n ? state.prefersMoreContrast\n : state.accessibility === 'accessible';\n if (base === 'dark' && accessible) return 'dark-accessible';\n if (base === 'dark') return 'dark';\n if (accessible) return 'light-accessible';\n return 'light';\n}\n\nexport function themeClassList(resolved: ResolvedTheme): string[] {\n switch (resolved) {\n case 'light':\n return [THEME_CLASS.light];\n case 'dark':\n return [THEME_CLASS.dark];\n case 'light-accessible':\n return [THEME_CLASS.light, THEME_CLASS.accessible];\n case 'dark-accessible':\n return [THEME_CLASS.dark, THEME_CLASS.accessible];\n }\n}\n\nconst ALL_THEME_CLASSES = [\n THEME_CLASS.light,\n THEME_CLASS.dark,\n THEME_CLASS.accessible,\n];\n\n/**\n * Inline in <head> before stylesheets to apply preferences before first paint.\n * ES5, with no imports or runtime dependencies. Existing theme classes belong\n * to the host and are left untouched. The build writes this same string to\n * `@alfadocs/ui-kit/theme-boot.js` for hosts that do not import JavaScript.\n */\nexport const THEME_BOOT_SCRIPT = `(function () {\n function read(key) {\n try { return window.localStorage.getItem(key); }\n catch (e) { return null; }\n }\n function matches(query) {\n try {\n return typeof window.matchMedia === 'function' && window.matchMedia(query).matches;\n } catch (e) { return false; }\n }\n try {\n var root = document.documentElement;\n var known = ${JSON.stringify(ALL_THEME_CLASSES)};\n for (var i = 0; i < known.length; i++) {\n if (root.classList.contains(known[i])) return;\n }\n var theme = read(${JSON.stringify(THEME_STORAGE_KEY)});\n var accessibility = read(${JSON.stringify(ACCESSIBILITY_STORAGE_KEY)});\n var dark = theme === 'dark' || (theme !== 'light' && matches(${JSON.stringify(COLOR_SCHEME_QUERY)}));\n var accessible = accessibility === 'accessible' || (accessibility !== 'default' && matches(${JSON.stringify(CONTRAST_QUERY)}));\n var themes = ${JSON.stringify([\n themeClassList('light'),\n themeClassList('light-accessible'),\n themeClassList('dark'),\n themeClassList('dark-accessible'),\n ])};\n var next = themes[(dark ? 2 : 0) + (accessible ? 1 : 0)];\n for (var j = 0; j < next.length; j++) root.classList.add(next[j]);\n root.setAttribute(${JSON.stringify(THEME_BOOT_ATTRIBUTE)}, '');\n } catch (e) {}\n})();`;\n\nfunction applyToDocument(resolved: ResolvedTheme): void {\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n const next = new Set(themeClassList(resolved));\n ALL_THEME_CLASSES.forEach((cls) => {\n if (next.has(cls)) {\n root.classList.add(cls);\n } else {\n root.classList.remove(cls);\n }\n });\n}\n\n/* -------------------------------------------------------------------- */\n/* Public hook */\n/* -------------------------------------------------------------------- */\n\n/**\n * Read and update the DS theme preference.\n *\n * - `theme` / `accessibility` are the stored user preferences, with\n * `'system'` meaning \"no override — follow OS\".\n * - `resolvedTheme` composes preferences + live `matchMedia` state into\n * one of the four concrete themes.\n * - `setTheme` / `setAccessibility` persist the override to\n * `localStorage` and re-apply classes to `document.documentElement`\n * synchronously. Pass `'system'` to clear.\n *\n * Singleton under the hood — every hook call shares one `matchMedia`\n * subscription, so mounting the hook many times does not multiply the\n * listener count. The hook also listens for cross-tab `storage` events\n * so a theme change in tab A is reflected in tab B without a reload.\n */\nexport function useTheme(): UseThemeReturn {\n const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n\n useEffect(() => mountMediaSubscriptions(), []);\n\n useEffect(() => {\n applyToDocument(resolveTheme(state));\n }, [state]);\n\n const setTheme = useCallback((next: ThemePreference) => {\n safeWriteStorage(THEME_STORAGE_KEY, next === 'system' ? null : next);\n commit({ ...snapshot, theme: next });\n }, []);\n\n const setAccessibility = useCallback((next: AccessibilityPreference) => {\n safeWriteStorage(\n ACCESSIBILITY_STORAGE_KEY,\n next === 'system' ? null : next,\n );\n commit({ ...snapshot, accessibility: next });\n }, []);\n\n return {\n theme: state.theme,\n accessibility: state.accessibility,\n resolvedTheme: resolveTheme(state),\n setTheme,\n setAccessibility,\n };\n}\n\n/* -------------------------------------------------------------------- */\n/* Test hook — reset module-level state between tests. Not exported */\n/* from the barrel. */\n/* -------------------------------------------------------------------- */\n\nexport function __resetThemeStoreForTests(): void {\n snapshot = readInitialSnapshot();\n listeners.clear();\n mediaSubscriberCount = 0;\n detachColorScheme?.();\n detachContrast?.();\n detachColorScheme = null;\n detachContrast = null;\n colorSchemeMql = null;\n contrastMql = null;\n if (storageHandler && typeof window !== 'undefined') {\n window.removeEventListener('storage', storageHandler);\n }\n storageHandler = null;\n}\n"],"names":["THEME_STORAGE_KEY","ACCESSIBILITY_STORAGE_KEY","THEME_CLASS","THEME_BOOT_ATTRIBUTE","COLOR_SCHEME_QUERY","CONTRAST_QUERY","safeReadStorage","key","safeWriteStorage","value","isValidTheme","isValidAccessibility","readHostThemeClasses","root","readInitialSnapshot","storedTheme","storedA11y","hasMatchMedia","htmlClasses","htmlThemeOverride","htmlA11yOverride","snapshot","listeners","commit","next","listener","subscribe","getSnapshot","getServerSnapshot","mediaSubscriberCount","colorSchemeMql","contrastMql","storageHandler","onColorSchemeChange","event","onContrastChange","onStorage","rederiveFromHtmlClasses","classes","htmlTheme","htmlA11y","attachMqlListener","mql","handler","mountMediaSubscriptions","detachColorScheme","detachContrast","htmlClassObserver","disposeOneSubscriber","resolveTheme","state","base","accessible","themeClassList","resolved","ALL_THEME_CLASSES","THEME_BOOT_SCRIPT","applyToDocument","cls","useTheme","useSyncExternalStore","useEffect","setTheme","useCallback","setAccessibility"],"mappings":"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"}
|
package/dist/agent-catalog.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"packageVersion": "1.
|
|
3
|
+
"packageVersion": "1.77.0",
|
|
4
4
|
"components": [
|
|
5
5
|
{
|
|
6
6
|
"kind": "component",
|
|
@@ -1449,7 +1449,7 @@
|
|
|
1449
1449
|
{
|
|
1450
1450
|
"name": "currentStep",
|
|
1451
1451
|
"type": "number",
|
|
1452
|
-
"description": "The step the flow is on
|
|
1452
|
+
"description": "The step the flow is on: 1 insurance, 2 specialty, 3 service, 4 provider, 5 date, 6 time, 7 patient details, payment or optional SMS code verification, 8 confirmation after all required steps succeed. Read this back after `goto_step` to see where the clamp landed.",
|
|
1453
1453
|
"descriptionKey": "ui.agent.booking.state.currentStep"
|
|
1454
1454
|
}
|
|
1455
1455
|
],
|
|
@@ -1459,8 +1459,8 @@
|
|
|
1459
1459
|
"safety": "destructive",
|
|
1460
1460
|
"idempotent": true,
|
|
1461
1461
|
"errors": [
|
|
1462
|
-
"
|
|
1463
|
-
"Refused while
|
|
1462
|
+
"Refused while a payment session is open (step 7): the consumer must cancel the hold first.",
|
|
1463
|
+
"Refused while SMS code verification is pending (step 7): the submitted booking remains active. The host owns cancellation."
|
|
1464
1464
|
],
|
|
1465
1465
|
"description": "Clear the booking value back to an empty state. Use to abandon an in-progress flow.",
|
|
1466
1466
|
"descriptionKey": "ui.agent.booking.actions.reset"
|
|
@@ -1492,6 +1492,7 @@
|
|
|
1492
1492
|
},
|
|
1493
1493
|
"idempotent": true,
|
|
1494
1494
|
"errors": [
|
|
1495
|
+
"Navigation stays on step 7 while payment or SMS code verification is pending.",
|
|
1495
1496
|
"Requested step is not yet reachable — clamped to the first incomplete step.",
|
|
1496
1497
|
"Requested step is hidden for this practice (e.g. insurance outside Germany, or provider choice turned off) — clamped to the first incomplete step."
|
|
1497
1498
|
],
|
|
@@ -1511,7 +1512,7 @@
|
|
|
1511
1512
|
"root": {
|
|
1512
1513
|
"attr": "data-component",
|
|
1513
1514
|
"value": "booking",
|
|
1514
|
-
"description": "Marks the Booking root region. The host prop hideEmail (boolean, default false) hides the email field, skips its validation and omits email from submission. Pair with confirmationChannels [\"sms\"] for SMS-only confirmation with no channel picker. Patient contact details are never exposed through this adapter."
|
|
1515
|
+
"description": "Marks the Booking root region. The host prop hideEmail (boolean, default false) hides the email field, skips its validation and omits email from submission. Pair with confirmationChannels [\"sms\"] for SMS-only confirmation with no channel picker. The optional codeStep prop adds SMS verification after submission and payment; the step remains 7 until verification succeeds, then becomes 8. Patient contact details and verification codes are never exposed through this adapter."
|
|
1515
1516
|
},
|
|
1516
1517
|
"instanceId": {
|
|
1517
1518
|
"attr": "data-component-id",
|
|
@@ -11207,7 +11208,7 @@
|
|
|
11207
11208
|
"root": {
|
|
11208
11209
|
"attr": "data-component",
|
|
11209
11210
|
"value": "practice-results",
|
|
11210
|
-
"description": "Marks the PracticeResults root region. The headingLevel prop accepts 1 to 6 (default 2) for the optional results heading; use 1 when it is the page title.
|
|
11211
|
+
"description": "Marks the PracticeResults root region. The headingLevel prop accepts 1 to 6 (default 2) for the optional results heading; use 1 when it is the page title. Card names and default error and empty-state titles use the next level, capped at 6."
|
|
11211
11212
|
},
|
|
11212
11213
|
"instanceId": {
|
|
11213
11214
|
"attr": "data-component-id",
|
|
@@ -11216,7 +11217,7 @@
|
|
|
11216
11217
|
},
|
|
11217
11218
|
"item": {
|
|
11218
11219
|
"attr": "data-result-id",
|
|
11219
|
-
"description": "Stable result id emitted on each rendered result card. Used by scroll_to_result / focus_pin to address a single result. Each card also carries up to two anchors: data-component=\"practice-result-open-cta\" (practice page; absent when the consumer sets showCardOpenButton=false) and data-component=\"practice-result-book-cta\" (booking flow; data-slot-aware=\"true\" when it deep-links to a next slot). Card content carries its own read-only hooks: data-component=\"practice-result-tagline\", data-component=\"practice-result-description\", and data-component=\"practice-result-price\" (the kit-formatted first-visit cost
|
|
11220
|
+
"description": "Stable result id emitted on each rendered result card. Used by scroll_to_result / focus_pin to address a single result. The non-focusable card group is labelled by the practice-result-{id}-name heading, which contains data-component=\"practice-result-name-link\": a visible link to result.href that navigates without firing onResultSelect or click telemetry. Each card also carries up to two CTA anchors: data-component=\"practice-result-open-cta\" (practice page; absent when the consumer sets showCardOpenButton=false) and data-component=\"practice-result-book-cta\" (booking flow; data-slot-aware=\"true\" when it deep-links to a next slot). Card content carries its own read-only hooks: data-component=\"practice-result-tagline\", data-component=\"practice-result-description\", and data-component=\"practice-result-price\" (the kit-formatted first-visit cost, present only when the practice set one)."
|
|
11220
11221
|
}
|
|
11221
11222
|
}
|
|
11222
11223
|
},
|
|
@@ -23152,6 +23153,15 @@
|
|
|
23152
23153
|
"as": "minorSignerWarning",
|
|
23153
23154
|
"entity": "signer"
|
|
23154
23155
|
},
|
|
23156
|
+
{
|
|
23157
|
+
"component": "alert",
|
|
23158
|
+
"as": "minorPatientWarning"
|
|
23159
|
+
},
|
|
23160
|
+
{
|
|
23161
|
+
"component": "link",
|
|
23162
|
+
"as": "contactAction",
|
|
23163
|
+
"entity": "signer"
|
|
23164
|
+
},
|
|
23155
23165
|
{
|
|
23156
23166
|
"component": "alert",
|
|
23157
23167
|
"as": "submissionError"
|
|
@@ -23177,6 +23187,18 @@
|
|
|
23177
23187
|
"component": "button",
|
|
23178
23188
|
"as": "requestSignature"
|
|
23179
23189
|
},
|
|
23190
|
+
{
|
|
23191
|
+
"component": "list",
|
|
23192
|
+
"as": "recipientList"
|
|
23193
|
+
},
|
|
23194
|
+
{
|
|
23195
|
+
"component": "button",
|
|
23196
|
+
"as": "confirmSend"
|
|
23197
|
+
},
|
|
23198
|
+
{
|
|
23199
|
+
"component": "button",
|
|
23200
|
+
"as": "confirmBack"
|
|
23201
|
+
},
|
|
23180
23202
|
{
|
|
23181
23203
|
"component": "button",
|
|
23182
23204
|
"as": "close"
|
|
@@ -23335,7 +23357,7 @@
|
|
|
23335
23357
|
{
|
|
23336
23358
|
"name": "manage_signer_roster",
|
|
23337
23359
|
"safety": "write",
|
|
23338
|
-
"description": "Build the patient-side signer roster: pick who signs in each row (the patient or their configured signee, e.g. a legal guardian), add a second signer up to the cap, or remove a row. People already on the roster are excluded from the other rows; set_value with one of them, or anyone not offered in that row, leaves the row unchanged. In required documents mode the roster signs the whole batch: the main signer (row data-signer-role=\"main\"), then at most one second signee (data-signer-role=\"second\", a group named Second signee). The second signee is offered only when every listed item is a document that can carry a second signature (anamnesis interviews never can), the main signer's channel is on this device (the batch channel with channelMode batch, else the main signer's own row), and the main signer is a registered signee, not the patient (isPatient); otherwise Add signer is disabled and a visible line says why. The patient is never offered as the second signee. Changing the main signer removes the second signee, announced via a live region. Moving the main signer's channel off this device only hides them (they are not submitted) and announces why; back on this device they return. Per signer, the second signee has their own channel beside their name. A second signee who is the main signer again, is no longer on offer, or cannot receive their own channel (the batch channel in batch mode) shows a message under their row (data-note=\"second-signee-issue\") and keeps Request signature disabled. When the host marks
|
|
23360
|
+
"description": "Build the patient-side signer roster: pick who signs in each row (the patient or their configured signee, e.g. a legal guardian), add a second signer up to the cap, or remove a row. People already on the roster are excluded from the other rows; set_value with one of them, or anyone not offered in that row, leaves the row unchanged. In required documents mode the roster signs the whole batch: the main signer (row data-signer-role=\"main\"), then at most one second signee (data-signer-role=\"second\", a group named Second signee). The second signee is offered only when every listed item is a document that can carry a second signature (anamnesis interviews never can), the main signer's channel is on this device (the batch channel with channelMode batch, else the main signer's own row), and the main signer is a registered signee, not the patient (isPatient); otherwise Add signer is disabled and a visible line says why. The patient is never offered as the second signee. Changing the main signer removes the second signee, announced via a live region. Moving the main signer's channel off this device only hides them (they are not submitted) and announces why; back on this device they return. Per signer, the second signee has their own channel beside their name. A second signee who is the main signer again, is no longer on offer, or cannot receive their own channel (the batch channel in batch mode) shows a message under their row (data-note=\"second-signee-issue\") and keeps Request signature disabled. When the host marks the patient (the isPatient option) as under 18 (isMinor), a warning under the Patient signers heading (data-note=\"minor-patient\", data-warning addSignee, selectSignee, selectSecondSignee or addSecondSignee) gives platform's advice from the roster: with no registered signee on the roster, add a parent or guardian (none registered) or choose one (one registered); with one signee and a free second seat, have the other parent or guardian sign too (another registered) or add them (none). With two signees, or no second seat, it says nothing. Any other person marked isMinor gets a general reminder in their own row (data-note=\"minor-signer\"). Neither blocks the request, and the kit does not compute age. A link-style Add signatory button calls the host's onAddSignee: inside the minor patient warning when it asks to add someone, and in required documents mode under the Patient signers heading while the patient has no registered signee (no signer option without isPatient), only once. It is user-driven with no adapter action, and the host adds the new person to signerOptions.",
|
|
23339
23361
|
"descriptionKey": "ui.agent.signatureRequest.workflows.manageSignerRoster",
|
|
23340
23362
|
"uiActions": [
|
|
23341
23363
|
"select.set_value"
|
|
@@ -23348,7 +23370,7 @@
|
|
|
23348
23370
|
{
|
|
23349
23371
|
"name": "choose_delivery_channel",
|
|
23350
23372
|
"safety": "write",
|
|
23351
|
-
"description": "Choose how each signer's request is delivered in the channel dropdown beside their name, a select named Signature channel (one choice): SMS, e-mail, WhatsApp, signing on this device, or via QR (the signer scans a QR code the dialog shows in its QR step after the request; offered to every patient-side signer by default). Each signer row (data-signer-id) holds its dropdown, with the id signature-request-signer-channel-<row number>; the operator dropdown's id is signature-request-operator-channel. Each option carries data-option-id with the channel; set_value with a channel the dropdown does not offer or has disabled leaves the choice unchanged. A signer's available channels can hide any of these, Via QR included. A signer's unavailableChannels instead show a channel greyed out with the host's reason under it (e.g. SMS and WhatsApp with No mobile number): set_value refuses it, the row never falls back to it, and a signer with no channel left shows the reasons under the row and keeps Request signature disabled. On-device signers sign sequentially in roster order. The assigned operator has the same dropdown, named Operator signature channel, with SMS, e-mail, or on this device and never Via QR: the operator's own system-defined channel (defaultChannel, from their settings) arrives preselected and follows a newly picked operator, while a channel changed by hand is kept until the operator changes; the on-device option is enabled only while a patient signer also signs on this device (while disabled, its reason shows under the option and describes the trigger; an automatic fallback to the operator's default is announced via a live region when the last on-device patient row leaves). A host can replace that rule with resolveChannels: it receives the choices after every channel change (and on open) and returns the channels to use and to offer, e.g. the operator and the patient on this device together; set_value may then move another person's channel too (the operator or another signer), announced via the same live region. Channels are per signer by default, in the request form and in required documents mode. With channelMode batch there is no channel beside each name: one labelled Signature channel select (id signature-request-batch-channel) under the signers heading sets the channel for the whole roster, with SMS, e-mail, WhatsApp and Via QR offered when the main signer or the patient (isPatient) can receive them, greyed out only when neither can, and on this device always offered. It starts on e-mail, or SMS when the main signer is the patient and can receive it, unless the host passes initialBatchChannel; in required documents mode changing the main signer returns it to that default (initialBatchChannel is read only on open), announced via the live region. resolveChannels receives the batch channel as every signer's channel and moves the batch through the main signer's returned channel. In required documents mode with showOperatorChannels, each item with an assigned operator also has that operator's channel select (SMS, e-mail or on this device), named Operator signature channel for <item name> with the id signature-request-item-operator-channel-<item id>; it starts on the operator's defaultChannel and follows a newly picked operator (Assign to me included), keeping a channel changed by hand until then. Items on Assign later have none.",
|
|
23373
|
+
"description": "Choose how each signer's request is delivered in the channel dropdown beside their name, a select named Signature channel (one choice): SMS, e-mail, WhatsApp, signing on this device, or via QR (the signer scans a QR code the dialog shows in its QR step after the request; offered to every patient-side signer by default). Each signer row (data-signer-id) holds its dropdown, with the id signature-request-signer-channel-<row number>; the operator dropdown's id is signature-request-operator-channel. Each option carries data-option-id with the channel; set_value with a channel the dropdown does not offer or has disabled leaves the choice unchanged. A signer's available channels can hide any of these, Via QR included. A signer's unavailableChannels instead show a channel greyed out with the host's reason under it (e.g. SMS and WhatsApp with No mobile number): set_value refuses it, the row never falls back to it, and a signer with no channel left shows the reasons under the row and keeps Request signature disabled. When the host gives a greyed-out channel an actionHref, a link under the person (data-note=\"contact-actions\"), such as Add mobile number or Add e-mail address, leads to the host's page to fix it; in batch mode the main signer's links show under the batch channel select. They are plain links with no adapter action. On-device signers sign sequentially in roster order. The assigned operator has the same dropdown, named Operator signature channel, with SMS, e-mail, or on this device, WhatsApp only when the host rule lists it in operatorAvailableChannels (as platform does for operator-only documents), and never Via QR: the operator's own system-defined channel (defaultChannel, from their settings) arrives preselected and follows a newly picked operator, while a channel changed by hand is kept until the operator changes; the on-device option is enabled only while a patient signer also signs on this device (while disabled, its reason shows under the option and describes the trigger; an automatic fallback to the operator's default is announced via a live region when the last on-device patient row leaves). A host can replace that rule with resolveChannels: it receives the choices after every channel change (and on open) and returns the channels to use and to offer, e.g. the operator and the patient on this device together; set_value may then move another person's channel too (the operator or another signer), announced via the same live region. Channels are per signer by default, in the request form and in required documents mode. With channelMode batch there is no channel beside each name: one labelled Signature channel select (id signature-request-batch-channel) under the signers heading sets the channel for the whole roster, with SMS, e-mail, WhatsApp and Via QR offered when the main signer or the patient (isPatient) can receive them, greyed out only when neither can, and on this device always offered. It starts on e-mail, or SMS when the main signer is the patient and can receive it, unless the host passes initialBatchChannel; in required documents mode changing the main signer returns it to that default (initialBatchChannel is read only on open), announced via the live region. resolveChannels receives the batch channel as every signer's channel and moves the batch through the main signer's returned channel. In required documents mode with showOperatorChannels, each item with an assigned operator also has that operator's channel select (SMS, e-mail or on this device), named Operator signature channel for <item name> with the id signature-request-item-operator-channel-<item id>; it starts on the operator's defaultChannel and follows a newly picked operator (Assign to me included), keeping a channel changed by hand until then. Items on Assign later have none.",
|
|
23352
23374
|
"descriptionKey": "ui.agent.signatureRequest.workflows.chooseDeliveryChannel",
|
|
23353
23375
|
"uiActions": [
|
|
23354
23376
|
"select.set_value"
|
|
@@ -23375,7 +23397,7 @@
|
|
|
23375
23397
|
{
|
|
23376
23398
|
"name": "request_signature",
|
|
23377
23399
|
"safety": "phi",
|
|
23378
|
-
"description": "Send the signature request. Notifies every roster signer over their selected channel and hands the submission to the host. When any signer chose Via QR the dialog stays open and moves to its QR step. With channelMode batch the submission carries signMode (the batch channel, also on every signer). In required documents mode it also carries operatorAssignments (item id to operator id, null for assign later), requiredItemIds and, with showOperatorChannels, operatorChannels (item id to the operator's channel, for assigned items), with operatorChannel null; the main signer OTP waiver is skipOtp on the main signer, set only on this device.",
|
|
23400
|
+
"description": "Send the signature request. Notifies every roster signer over their selected channel and hands the submission to the host. With confirmRecipients, when anyone is reached by SMS, e-mail or WhatsApp, Request signature first shows the recipient check (see confirm_recipients) and nothing is handed over until Send. When any signer chose Via QR the dialog stays open and moves to its QR step. With channelMode batch the submission carries signMode (the batch channel, also on every signer). In required documents mode it also carries operatorAssignments (item id to operator id, null for assign later), requiredItemIds and, with showOperatorChannels, operatorChannels (item id to the operator's channel, for assigned items), with operatorChannel null; the main signer OTP waiver is skipOtp on the main signer, set only on this device.",
|
|
23379
23401
|
"descriptionKey": "ui.agent.signatureRequest.workflows.requestSignature",
|
|
23380
23402
|
"uiActions": [
|
|
23381
23403
|
"dialog.close"
|
|
@@ -23389,6 +23411,20 @@
|
|
|
23389
23411
|
"signature.request"
|
|
23390
23412
|
]
|
|
23391
23413
|
},
|
|
23414
|
+
{
|
|
23415
|
+
"name": "confirm_recipients",
|
|
23416
|
+
"safety": "phi",
|
|
23417
|
+
"description": "With confirmRecipients, a request that reaches anyone by SMS, e-mail or WhatsApp first shows a step headed \"Send the signature request?\" listing each recipient (list items with data-recipient=\"operator\" or \"signer\"): the assigned operator in the request form, then every roster signer on a remote channel, with their channel and the phone number or e-mail address the host gave as their contact. Send hands the submission to the host; Back returns to the form with nothing sent. On this device and Via QR need no check. The step stays while the host is busy; a new error returns to the form and an outcome replaces it. Send and Back are user-driven buttons with no adapter action; the contact is shown as text only, never in a DOM hook.",
|
|
23418
|
+
"descriptionKey": "ui.agent.signatureRequest.workflows.confirmRecipients",
|
|
23419
|
+
"uiActions": [
|
|
23420
|
+
"dialog.close",
|
|
23421
|
+
"dialog.dismiss"
|
|
23422
|
+
],
|
|
23423
|
+
"stateReads": [
|
|
23424
|
+
"dialog.isOpen"
|
|
23425
|
+
],
|
|
23426
|
+
"apiActions": []
|
|
23427
|
+
},
|
|
23392
23428
|
{
|
|
23393
23429
|
"name": "show_qr_code",
|
|
23394
23430
|
"safety": "phi",
|
package/dist/agent-i18n/en.json
CHANGED
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
"booking": {
|
|
154
154
|
"state": {
|
|
155
155
|
"variant": "Active variant — one of `inline-list`, `accordion`, `calendar`, `flexible`, `progress`.",
|
|
156
|
-
"currentStep": "The step the flow is on
|
|
156
|
+
"currentStep": "The step the flow is on: 1 insurance, 2 specialty, 3 service, 4 provider, 5 date, 6 time, 7 patient details, payment or optional SMS code verification, 8 confirmation after all required steps succeed. Read this back after `goto_step` to see where the clamp landed."
|
|
157
157
|
},
|
|
158
158
|
"actions": {
|
|
159
159
|
"reset": "Clear the booking value back to an empty state. Use to abandon an in-progress flow.",
|
|
@@ -2093,10 +2093,11 @@
|
|
|
2093
2093
|
"shareSignature": "Share one signed document from its row's Share menu (menu id signature-share-<record id>): link, e-mail or WhatsApp, in that order. The host receives onShareSignature(id, 'link' | 'email' | 'whatsapp') and does the sharing. The host decides which targets a row offers: the record's shareTargets, else the modal's signatureShareTargets, else all three. The button shows only when the host passes that callback and the row has at least one target.",
|
|
2094
2094
|
"deleteSignature": "Delete one signed document from its row's Delete button. It opens a confirmation, an alert dialog (dialog id signature-delete-<record id>) asking whether to delete this signed document, with the row's date under the question and Cancel and Delete. Only Delete calls onDeleteSignature(id); the host deletes and drops the record. Cancel, Esc or dialog.close / dialog.dismiss close it without deleting, and focus returns to the row's Delete button. Once the host drops the record, focus moves to the next row's first action (else the previous row's, else the line saying there are no signed versions) and a polite status says the signature was deleted. The button shows only when the host passes that callback.",
|
|
2095
2095
|
"assignOperator": "Pick the operator who must counter-sign (or \"Assign later\" to leave the request unassigned). The operators are listed in host order, then \"Assign later\". An operator the host marks disabled shows greyed out with the host's reason under the name (the trigger is described by every greyed-out operator and reason) and cannot be picked; set_value refuses them. An operator the host marks deleted is listed only while they are the current value, and is never seeded. \"Assign to me\" claims it for the signed-in operator.",
|
|
2096
|
-
"manageSignerRoster": "Build the patient-side signer roster: pick who signs in each row (the patient or their configured signee, e.g. a legal guardian), add a second signer up to the cap, or remove a row. People already on the roster are excluded from the other rows; set_value with one of them, or anyone not offered in that row, leaves the row unchanged. In required documents mode the roster signs the whole batch: the main signer (row data-signer-role=\"main\"), then at most one second signee (data-signer-role=\"second\", a group named Second signee). The second signee is offered only when every listed item is a document that can carry a second signature (anamnesis interviews never can), the main signer's channel is on this device (the batch channel with channelMode batch, else the main signer's own row), and the main signer is a registered signee, not the patient (isPatient); otherwise Add signer is disabled and a visible line says why. The patient is never offered as the second signee. Changing the main signer removes the second signee, announced via a live region. Moving the main signer's channel off this device only hides them (they are not submitted) and announces why; back on this device they return. Per signer, the second signee has their own channel beside their name. A second signee who is the main signer again, is no longer on offer, or cannot receive their own channel (the batch channel in batch mode) shows a message under their row (data-note=\"second-signee-issue\") and keeps Request signature disabled. When the host marks
|
|
2097
|
-
"chooseDeliveryChannel": "Choose how each signer's request is delivered in the channel dropdown beside their name, a select named Signature channel (one choice): SMS, e-mail, WhatsApp, signing on this device, or via QR (the signer scans a QR code the dialog shows in its QR step after the request; offered to every patient-side signer by default). Each signer row (data-signer-id) holds its dropdown, with the id signature-request-signer-channel-<row number>; the operator dropdown's id is signature-request-operator-channel. Each option carries data-option-id with the channel; set_value with a channel the dropdown does not offer or has disabled leaves the choice unchanged. A signer's available channels can hide any of these, Via QR included. A signer's unavailableChannels instead show a channel greyed out with the host's reason under it (e.g. SMS and WhatsApp with No mobile number): set_value refuses it, the row never falls back to it, and a signer with no channel left shows the reasons under the row and keeps Request signature disabled. On-device signers sign sequentially in roster order. The assigned operator has the same dropdown, named Operator signature channel, with SMS, e-mail, or on this device and never Via QR: the operator's own system-defined channel (defaultChannel, from their settings) arrives preselected and follows a newly picked operator, while a channel changed by hand is kept until the operator changes; the on-device option is enabled only while a patient signer also signs on this device (while disabled, its reason shows under the option and describes the trigger; an automatic fallback to the operator's default is announced via a live region when the last on-device patient row leaves). A host can replace that rule with resolveChannels: it receives the choices after every channel change (and on open) and returns the channels to use and to offer, e.g. the operator and the patient on this device together; set_value may then move another person's channel too (the operator or another signer), announced via the same live region. Channels are per signer by default, in the request form and in required documents mode. With channelMode batch there is no channel beside each name: one labelled Signature channel select (id signature-request-batch-channel) under the signers heading sets the channel for the whole roster, with SMS, e-mail, WhatsApp and Via QR offered when the main signer or the patient (isPatient) can receive them, greyed out only when neither can, and on this device always offered. It starts on e-mail, or SMS when the main signer is the patient and can receive it, unless the host passes initialBatchChannel; in required documents mode changing the main signer returns it to that default (initialBatchChannel is read only on open), announced via the live region. resolveChannels receives the batch channel as every signer's channel and moves the batch through the main signer's returned channel. In required documents mode with showOperatorChannels, each item with an assigned operator also has that operator's channel select (SMS, e-mail or on this device), named Operator signature channel for <item name> with the id signature-request-item-operator-channel-<item id>; it starts on the operator's defaultChannel and follows a newly picked operator (Assign to me included), keeping a channel changed by hand until then. Items on Assign later have none.",
|
|
2096
|
+
"manageSignerRoster": "Build the patient-side signer roster: pick who signs in each row (the patient or their configured signee, e.g. a legal guardian), add a second signer up to the cap, or remove a row. People already on the roster are excluded from the other rows; set_value with one of them, or anyone not offered in that row, leaves the row unchanged. In required documents mode the roster signs the whole batch: the main signer (row data-signer-role=\"main\"), then at most one second signee (data-signer-role=\"second\", a group named Second signee). The second signee is offered only when every listed item is a document that can carry a second signature (anamnesis interviews never can), the main signer's channel is on this device (the batch channel with channelMode batch, else the main signer's own row), and the main signer is a registered signee, not the patient (isPatient); otherwise Add signer is disabled and a visible line says why. The patient is never offered as the second signee. Changing the main signer removes the second signee, announced via a live region. Moving the main signer's channel off this device only hides them (they are not submitted) and announces why; back on this device they return. Per signer, the second signee has their own channel beside their name. A second signee who is the main signer again, is no longer on offer, or cannot receive their own channel (the batch channel in batch mode) shows a message under their row (data-note=\"second-signee-issue\") and keeps Request signature disabled. When the host marks the patient (the isPatient option) as under 18 (isMinor), a warning under the Patient signers heading (data-note=\"minor-patient\", data-warning addSignee, selectSignee, selectSecondSignee or addSecondSignee) gives platform's advice from the roster: with no registered signee on the roster, add a parent or guardian (none registered) or choose one (one registered); with one signee and a free second seat, have the other parent or guardian sign too (another registered) or add them (none). With two signees, or no second seat, it says nothing. Any other person marked isMinor gets a general reminder in their own row (data-note=\"minor-signer\"). Neither blocks the request, and the kit does not compute age. A link-style Add signatory button calls the host's onAddSignee: inside the minor patient warning when it asks to add someone, and in required documents mode under the Patient signers heading while the patient has no registered signee (no signer option without isPatient), only once. It is user-driven with no adapter action, and the host adds the new person to signerOptions.",
|
|
2097
|
+
"chooseDeliveryChannel": "Choose how each signer's request is delivered in the channel dropdown beside their name, a select named Signature channel (one choice): SMS, e-mail, WhatsApp, signing on this device, or via QR (the signer scans a QR code the dialog shows in its QR step after the request; offered to every patient-side signer by default). Each signer row (data-signer-id) holds its dropdown, with the id signature-request-signer-channel-<row number>; the operator dropdown's id is signature-request-operator-channel. Each option carries data-option-id with the channel; set_value with a channel the dropdown does not offer or has disabled leaves the choice unchanged. A signer's available channels can hide any of these, Via QR included. A signer's unavailableChannels instead show a channel greyed out with the host's reason under it (e.g. SMS and WhatsApp with No mobile number): set_value refuses it, the row never falls back to it, and a signer with no channel left shows the reasons under the row and keeps Request signature disabled. When the host gives a greyed-out channel an actionHref, a link under the person (data-note=\"contact-actions\"), such as Add mobile number or Add e-mail address, leads to the host's page to fix it; in batch mode the main signer's links show under the batch channel select. They are plain links with no adapter action. On-device signers sign sequentially in roster order. The assigned operator has the same dropdown, named Operator signature channel, with SMS, e-mail, or on this device, WhatsApp only when the host rule lists it in operatorAvailableChannels (as platform does for operator-only documents), and never Via QR: the operator's own system-defined channel (defaultChannel, from their settings) arrives preselected and follows a newly picked operator, while a channel changed by hand is kept until the operator changes; the on-device option is enabled only while a patient signer also signs on this device (while disabled, its reason shows under the option and describes the trigger; an automatic fallback to the operator's default is announced via a live region when the last on-device patient row leaves). A host can replace that rule with resolveChannels: it receives the choices after every channel change (and on open) and returns the channels to use and to offer, e.g. the operator and the patient on this device together; set_value may then move another person's channel too (the operator or another signer), announced via the same live region. Channels are per signer by default, in the request form and in required documents mode. With channelMode batch there is no channel beside each name: one labelled Signature channel select (id signature-request-batch-channel) under the signers heading sets the channel for the whole roster, with SMS, e-mail, WhatsApp and Via QR offered when the main signer or the patient (isPatient) can receive them, greyed out only when neither can, and on this device always offered. It starts on e-mail, or SMS when the main signer is the patient and can receive it, unless the host passes initialBatchChannel; in required documents mode changing the main signer returns it to that default (initialBatchChannel is read only on open), announced via the live region. resolveChannels receives the batch channel as every signer's channel and moves the batch through the main signer's returned channel. In required documents mode with showOperatorChannels, each item with an assigned operator also has that operator's channel select (SMS, e-mail or on this device), named Operator signature channel for <item name> with the id signature-request-item-operator-channel-<item id>; it starts on the operator's defaultChannel and follows a newly picked operator (Assign to me included), keeping a channel changed by hand until then. Items on Assign later have none.",
|
|
2098
2098
|
"waiveOtp": "Toggle a signer's on-device OTP waiver. Waiving OTP lowers the evidentiary value of that signature; the pattern surfaces a warning alert while waived. With channelMode batch there is one switch for the whole roster (Do not require OTP from the patient), shown only while the batch channel is on this device: it starts on when the patient cannot receive SMS, whoever the main signer is, and is on and disabled when the main signer is the patient and cannot receive SMS. The choice resets when the batch channel changes. Its warning (batchOtpWarning) is one batch-level alert outside every signer row; as on platform it shows while the waiver is on, and on every channel while it is forced. Per signer in required documents mode, the main signer's own switch follows the same rules (starts on, or on and disabled, described by the warning) and resets when that row's channel changes; other rows are the user's choice.",
|
|
2099
|
-
"requestSignature": "Send the signature request. Notifies every roster signer over their selected channel and hands the submission to the host. When any signer chose Via QR the dialog stays open and moves to its QR step. With channelMode batch the submission carries signMode (the batch channel, also on every signer). In required documents mode it also carries operatorAssignments (item id to operator id, null for assign later), requiredItemIds and, with showOperatorChannels, operatorChannels (item id to the operator's channel, for assigned items), with operatorChannel null; the main signer OTP waiver is skipOtp on the main signer, set only on this device.",
|
|
2099
|
+
"requestSignature": "Send the signature request. Notifies every roster signer over their selected channel and hands the submission to the host. With confirmRecipients, when anyone is reached by SMS, e-mail or WhatsApp, Request signature first shows the recipient check (see confirm_recipients) and nothing is handed over until Send. When any signer chose Via QR the dialog stays open and moves to its QR step. With channelMode batch the submission carries signMode (the batch channel, also on every signer). In required documents mode it also carries operatorAssignments (item id to operator id, null for assign later), requiredItemIds and, with showOperatorChannels, operatorChannels (item id to the operator's channel, for assigned items), with operatorChannel null; the main signer OTP waiver is skipOtp on the main signer, set only on this device.",
|
|
2100
|
+
"confirmRecipients": "With confirmRecipients, a request that reaches anyone by SMS, e-mail or WhatsApp first shows a step headed \"Send the signature request?\" listing each recipient (list items with data-recipient=\"operator\" or \"signer\"): the assigned operator in the request form, then every roster signer on a remote channel, with their channel and the phone number or e-mail address the host gave as their contact. Send hands the submission to the host; Back returns to the form with nothing sent. On this device and Via QR need no check. The step stays while the host is busy; a new error returns to the form and an outcome replaces it. Send and Back are user-driven buttons with no adapter action; the contact is shown as text only, never in a DOM hook.",
|
|
2100
2101
|
"showQrCode": "After a request with a signer on the Via QR channel, the same dialog shows its QR step: a loading state until the host passes the server-issued links, then one code per QR signer with the signer name and expiry (the code or its error carries data-signer-id). With several QR signers, the user moves between codes with Previous and Next (\"1 of 2\"); Done on the last code tells the host the codes were handed over (onQrDone) and closes the dialog. Previous, Next and Done are user-driven buttons with no adapter action. Closing through dialog.close, or dismissing the waiting state with dialog.dismiss, does not fire onQrDone. A QR signer with no link shows an error in place of the code. The operator is never offered Via QR.",
|
|
2101
2102
|
"reviewRequiredItems": "When the host passes `requiredItems` (or `requiredItemsLoading`), the form asks one patient to sign every outstanding item in one batch: documents to sign and anamnesis interviews to complete, as two lists named with their counts. Each row (data-required-item-id) shows the item name only, with no signing status: the documents API of the host says only whether an item is signed. Items marked signed are left out; when none is left the dialog shows the all signed outcome. Loading shows skeleton rows. The single operator row and the signed versions table do not appear in this mode.",
|
|
2102
2103
|
"assignItemOperators": "In required documents mode, pick the operator for each item that needs an operator signature (requiresOperator), or \"Assign later\", listed first. Each picker is named \"Operator for <item name>\" and has the id signature-request-item-operator-<item id>. Greyed-out and deleted operators follow the same rules as the single operator picker: a disabled operator shows its reason and set_value refuses them, a deleted one shows only in a picker still assigned to them. \"Assign to me\" (shown when the host passes currentOperatorId) sets every picker to the signed-in operator; it is a user-driven button with no adapter action. An info note shows while any picker is on Assign later, and another says each operator receives the request by e-mail or SMS per their own settings, unless the host passes showOperatorChannels: then each assigned item shows its operator's channel instead (see choose_delivery_channel).",
|
|
@@ -258,7 +258,8 @@ export interface BookingHandle {
|
|
|
258
258
|
getVariant: () => BookingVariant;
|
|
259
259
|
/**
|
|
260
260
|
* The step the flow is on — 1-7 while the cascade is in progress, and 8
|
|
261
|
-
* once
|
|
261
|
+
* once the confirmation view is showing. Payment and optional SMS code
|
|
262
|
+
* verification remain in step 7 until they succeed.
|
|
262
263
|
*
|
|
263
264
|
* This is the read-back for `goToStep`: it reports the **cursor**, which
|
|
264
265
|
* can sit behind the cascade's frontier after a backwards edit. It is
|
|
@@ -277,6 +278,24 @@ export interface BookingHandle {
|
|
|
277
278
|
*/
|
|
278
279
|
goToStep: (step: 1 | 2 | 3 | 4 | 5 | 6 | 7) => void;
|
|
279
280
|
}
|
|
281
|
+
/** Opt into SMS verification after submission and any required payment. */
|
|
282
|
+
export interface BookingCodeStep {
|
|
283
|
+
/** Number of characters, default 5. OTPInput clamps this to 3–10. */
|
|
284
|
+
length?: number;
|
|
285
|
+
/** Resolve ok only after the host has verified the code and confirmed the booking. */
|
|
286
|
+
onVerify: (code: string) => Promise<{
|
|
287
|
+
ok: true;
|
|
288
|
+
} | {
|
|
289
|
+
ok: false;
|
|
290
|
+
reason: 'wrong' | 'expired' | 'too-many-attempts';
|
|
291
|
+
}>;
|
|
292
|
+
/** Send a new SMS code. Only a successful resend restarts the countdown. */
|
|
293
|
+
onResend: () => Promise<void>;
|
|
294
|
+
/** Wait before resending, in seconds. Default 60; zero allows an immediate resend. */
|
|
295
|
+
resendSeconds?: number;
|
|
296
|
+
/** Optional masked mobile number shown in the instructions. */
|
|
297
|
+
phoneHint?: string;
|
|
298
|
+
}
|
|
280
299
|
export interface BookingProps extends Omit<ComponentPropsWithoutRef<'div'>, 'aria-label' | 'onChange' | 'onSubmit'> {
|
|
281
300
|
variant?: BookingVariant;
|
|
282
301
|
country?: string;
|
|
@@ -374,6 +393,8 @@ export interface BookingProps extends Omit<ComponentPropsWithoutRef<'div'>, 'ari
|
|
|
374
393
|
value: BookingValue;
|
|
375
394
|
onChange: (next: BookingValue) => void;
|
|
376
395
|
onSubmit: (payload: BookingSubmitPayload) => void | BookingSubmitResult | Promise<void | BookingSubmitResult>;
|
|
396
|
+
/** Optional SMS code step. Omit to retain the existing confirmation-link flow. */
|
|
397
|
+
codeStep?: BookingCodeStep;
|
|
377
398
|
/**
|
|
378
399
|
* Calendar/date-strip shimmer — set true while `availableDates` is being
|
|
379
400
|
* fetched. When omitted, the kit falls back to `loadingSlots` for the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"booking-types.d.ts","sourceRoot":"","sources":["../../../src/components/booking/booking-types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"booking-types.d.ts","sourceRoot":"","sources":["../../../src/components/booking/booking-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"booking.agent.d.ts","sourceRoot":"","sources":["../../../src/components/booking/booking.agent.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"booking.agent.d.ts","sourceRoot":"","sources":["../../../src/components/booking/booking.agent.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,aAAa,CAiFpD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BookingProps } from './booking-types';
|
|
2
|
-
export type { BookingPaymentSession, BookingPaymentState, BookingPaymentRenderContext, BookingSubmitResult, BookingServicePayment, BookingResolvedPayment, BookingBillingDetails, BookingDetails, BookingHandle, BookingOperator, BookingPracticeConsent, BookingProps, BookingService, BookingSlot, BookingSpecialty, BookingSubmitPayload, BookingValidationResult, BookingValidator, BookingValue, BookingVariant, ConfirmationChannel, InsuranceType, } from './booking-types';
|
|
2
|
+
export type { BookingCodeStep, BookingPaymentSession, BookingPaymentState, BookingPaymentRenderContext, BookingSubmitResult, BookingServicePayment, BookingResolvedPayment, BookingBillingDetails, BookingDetails, BookingHandle, BookingOperator, BookingPracticeConsent, BookingProps, BookingService, BookingSlot, BookingSpecialty, BookingSubmitPayload, BookingValidationResult, BookingValidator, BookingValue, BookingVariant, ConfirmationChannel, InsuranceType, } from './booking-types';
|
|
3
3
|
export { CONFIRMATION_CHANNEL_ORDER } from './booking-types';
|
|
4
4
|
export { OPERATORS_ALL } from './cascade';
|
|
5
5
|
export declare const Booking: import("react").ForwardRefExoticComponent<BookingProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"booking.d.ts","sourceRoot":"","sources":["../../../src/components/booking/booking.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"booking.d.ts","sourceRoot":"","sources":["../../../src/components/booking/booking.tsx"],"names":[],"mappings":"AAqFA,OAAO,KAAK,EAKV,YAAY,EAOb,MAAM,iBAAiB,CAAC;AAiCzB,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAotF1C,eAAO,MAAM,OAAO,yGAs1BnB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BookingCodeStep } from './booking-types';
|
|
2
|
+
/** Submit-phase UI. The host owns code generation, validation and SMS delivery. */
|
|
3
|
+
export declare function BookingCodeVerification({ length, onVerify, onResend, resendSeconds, phoneHint, onVerified, }: BookingCodeStep & {
|
|
4
|
+
onVerified: () => void;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=code-step.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-step.d.ts","sourceRoot":"","sources":["../../../src/components/booking/code-step.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAKvD,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,EACtC,MAAU,EACV,QAAQ,EACR,QAAQ,EACR,aAAkB,EAClB,SAAS,EACT,UAAU,GACX,EAAE,eAAe,GAAG;IAAE,UAAU,EAAE,MAAM,IAAI,CAAA;CAAE,2CA8L9C"}
|