@alfadocs/ui-kit 1.25.1-calendar.7 → 1.26.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/{address-fields-jFfjxOQR.js → address-fields-CZ0pEdEI.js} +3 -3
- package/dist/_chunks/{appointment-card-CvUFFEdS.js → appointment-card-Dzr3GeVz.js} +6 -8
- package/dist/_chunks/{appointment-timeline-DsMZY7U9.js → appointment-timeline-DhHwmHo1.js} +2 -2
- package/dist/_chunks/{appointment-tray-Z2GaOIYQ.js → appointment-tray-4FUu_5NX.js} +2 -2
- package/dist/_chunks/{booking-B8C7jMrn.js → booking-BtSOKjQu.js} +401 -384
- package/dist/_chunks/{calendar-CBqU-UIR.js → calendar-CI9MINcR.js} +2 -4
- package/dist/_chunks/calendar-workspace-CTXjHC4R.js +7506 -0
- package/dist/_chunks/{color-picker-Bl5f0iK1.js → color-picker-CU303VjY.js} +25 -28
- package/dist/_chunks/{combobox-DnSdYssy.js → combobox-D7_NLE2Z.js} +215 -216
- package/dist/_chunks/{country-select-CfDNFG5c.js → country-select-DzbPFktV.js} +2 -2
- package/dist/_chunks/{face-scheme-l-CQyLs-.js → face-scheme-DA2vjqaM.js} +2 -2
- package/dist/_chunks/{notes-panel-D4S2VwDx.js → notes-panel-CTNpsByN.js} +2 -2
- package/dist/_chunks/{patient-details-CdfursHt.js → patient-details-DYAmq76G.js} +3 -3
- package/dist/_chunks/{province-select-BaUnkg4S.js → province-select-BBc7s7vR.js} +2 -2
- package/dist/_chunks/{rich-text-editor-VJATL1Tk.js → rich-text-editor-lSCiE0Zz.js} +2 -2
- package/dist/_chunks/signature-status-chip-n57D-hhv.js +179 -0
- package/dist/agent-catalog.json +3 -6
- package/dist/agent-i18n/en.json +2 -2
- package/dist/components/address-fields/index.js +1 -1
- package/dist/components/appointment-card/index.js +2 -2
- package/dist/components/appointment-timeline/index.js +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/calendar/index.js +1 -1
- package/dist/components/color-picker/index.js +1 -1
- package/dist/components/combobox/combobox.d.ts +0 -5
- package/dist/components/combobox/index.js +1 -1
- package/dist/components/country-select/index.js +1 -1
- package/dist/components/face-scheme/index.js +1 -1
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/patient-details/index.js +1 -1
- package/dist/components/province-select/index.js +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/signature-status-chip/index.d.ts +2 -2
- package/dist/components/signature-status-chip/index.js +4 -3
- package/dist/components/signature-status-chip/signature-status-chip.d.ts +100 -1
- package/dist/i18n/locales/ar.d.ts +13 -0
- package/dist/i18n/locales/ar.js +17 -1
- package/dist/i18n/locales/de.d.ts +13 -0
- package/dist/i18n/locales/de.js +17 -1
- package/dist/i18n/locales/el.d.ts +13 -0
- package/dist/i18n/locales/el.js +17 -1
- package/dist/i18n/locales/en.d.ts +13 -0
- package/dist/i18n/locales/en.js +17 -1
- package/dist/i18n/locales/es.d.ts +13 -0
- package/dist/i18n/locales/es.js +17 -1
- package/dist/i18n/locales/fr.d.ts +13 -0
- package/dist/i18n/locales/fr.js +17 -1
- package/dist/i18n/locales/hi.d.ts +13 -0
- package/dist/i18n/locales/hi.js +13 -1
- package/dist/i18n/locales/it.d.ts +13 -0
- package/dist/i18n/locales/it.js +17 -1
- package/dist/i18n/locales/ja.d.ts +13 -0
- package/dist/i18n/locales/ja.js +17 -1
- package/dist/i18n/locales/nl.d.ts +13 -0
- package/dist/i18n/locales/nl.js +17 -1
- package/dist/i18n/locales/pl.d.ts +13 -0
- package/dist/i18n/locales/pl.js +17 -1
- package/dist/i18n/locales/pt.d.ts +13 -0
- package/dist/i18n/locales/pt.js +17 -1
- package/dist/i18n/locales/ro.d.ts +13 -0
- package/dist/i18n/locales/ro.js +17 -1
- package/dist/i18n/locales/ru.d.ts +13 -0
- package/dist/i18n/locales/ru.js +17 -1
- package/dist/i18n/locales/sq.d.ts +13 -0
- package/dist/i18n/locales/sq.js +17 -1
- package/dist/i18n/locales/sv.d.ts +13 -0
- package/dist/i18n/locales/sv.js +17 -1
- package/dist/i18n/locales/tr.d.ts +13 -0
- package/dist/i18n/locales/tr.js +17 -1
- package/dist/i18n/locales/zh.d.ts +13 -0
- package/dist/i18n/locales/zh.js +13 -1
- package/dist/index.js +281 -280
- package/dist/locales/ar.json +14 -1
- package/dist/locales/de.json +14 -1
- package/dist/locales/el.json +14 -1
- package/dist/locales/en.json +14 -1
- package/dist/locales/es.json +14 -1
- package/dist/locales/fr.json +14 -1
- package/dist/locales/hi.json +14 -1
- package/dist/locales/it.json +14 -1
- package/dist/locales/ja.json +14 -1
- package/dist/locales/nl.json +14 -1
- package/dist/locales/pl.json +14 -1
- package/dist/locales/pt.json +14 -1
- package/dist/locales/ro.json +14 -1
- package/dist/locales/ru.json +14 -1
- package/dist/locales/sq.json +14 -1
- package/dist/locales/sv.json +14 -1
- package/dist/locales/tr.json +14 -1
- package/dist/locales/zh.json +14 -1
- package/dist/patterns/calendar/calendar-workspace.d.ts +1 -21
- package/dist/patterns/calendar/calendar-workspace.model.d.ts +3 -1
- package/dist/patterns/calendar/calendar.data.d.ts +0 -17
- package/dist/patterns/calendar/calendar.journey.d.ts +1 -3
- package/dist/patterns/calendar/calendar.model.d.ts +0 -9
- package/dist/patterns/calendar/calendar.sheets.d.ts +4 -12
- package/dist/patterns/calendar/calendar.surface.d.ts +1 -3
- package/dist/patterns/calendar/index.d.ts +2 -3
- package/dist/patterns/calendar/index.js +1 -1
- package/package.json +2 -3
- package/dist/_chunks/calendar-workspace-CDhW8tPy.js +0 -7881
- package/dist/_chunks/signature-status-chip-DqrPIJtH.js +0 -97
- package/dist/patterns/calendar/calendar-editor-hydration.d.ts +0 -36
- package/dist/patterns/calendar/calendar-patient-picker.d.ts +0 -11
|
@@ -4,7 +4,7 @@ import { c as fe } from "./index-D2ZczOXr.js";
|
|
|
4
4
|
import { useTranslation as me } from "react-i18next";
|
|
5
5
|
import { u as ge } from "./registry-DvAUVLHh.js";
|
|
6
6
|
import { C as he } from "./clinical-note-card-BBgFd2nB.js";
|
|
7
|
-
import { R as ve } from "./rich-text-editor-
|
|
7
|
+
import { R as ve } from "./rich-text-editor-lSCiE0Zz.js";
|
|
8
8
|
import { T as be } from "./text-area-Bt3p7Pt0.js";
|
|
9
9
|
import { B as ye } from "./button-nJaPh_HC.js";
|
|
10
10
|
import { C as xe } from "./checkbox-BuZ1u__2.js";
|
|
@@ -350,4 +350,4 @@ const Me = oe(
|
|
|
350
350
|
export {
|
|
351
351
|
Me as N
|
|
352
352
|
};
|
|
353
|
-
//# sourceMappingURL=notes-panel-
|
|
353
|
+
//# sourceMappingURL=notes-panel-CTNpsByN.js.map
|
|
@@ -17,8 +17,8 @@ import { S as be } from "./select-Bi8zril7.js";
|
|
|
17
17
|
import { S as ye } from "./switch-OILsBLWo.js";
|
|
18
18
|
import { T as he } from "./text-area-Bt3p7Pt0.js";
|
|
19
19
|
import { T as ve } from "./text-input-CUvCb6ST.js";
|
|
20
|
-
import { C as xe } from "./country-select-
|
|
21
|
-
import { P as Ne } from "./province-select-
|
|
20
|
+
import { C as xe } from "./country-select-DzbPFktV.js";
|
|
21
|
+
import { P as Ne } from "./province-select-BBc7s7vR.js";
|
|
22
22
|
import { P as Ce } from "./postal-code-input-BznBxVxf.js";
|
|
23
23
|
import { C as Ve } from "./city-input-DaQc-Hbj.js";
|
|
24
24
|
import { u as we } from "./registry-DvAUVLHh.js";
|
|
@@ -757,4 +757,4 @@ export {
|
|
|
757
757
|
Ae as P,
|
|
758
758
|
Oe as p
|
|
759
759
|
};
|
|
760
|
-
//# sourceMappingURL=patient-details-
|
|
760
|
+
//# sourceMappingURL=patient-details-DYAmq76G.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as l } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef as N, useMemo as p, useCallback as O, useRef as h, useEffect as z } from "react";
|
|
3
3
|
import { useTranslation as U } from "react-i18next";
|
|
4
|
-
import { C as F } from "./combobox-
|
|
4
|
+
import { C as F } from "./combobox-D7_NLE2Z.js";
|
|
5
5
|
import { u as y } from "./use-controllable-state-BiY4xTzM.js";
|
|
6
6
|
import { u as G } from "./registry-DvAUVLHh.js";
|
|
7
7
|
const w = [
|
|
@@ -258,4 +258,4 @@ export {
|
|
|
258
258
|
k as P,
|
|
259
259
|
_ as p
|
|
260
260
|
};
|
|
261
|
-
//# sourceMappingURL=province-select-
|
|
261
|
+
//# sourceMappingURL=province-select-BBc7s7vR.js.map
|
|
@@ -19,7 +19,7 @@ import { a as pt } from "./tooltip-DvmfrNvB.js";
|
|
|
19
19
|
import { P as q } from "./popover-DP6WCVwm.js";
|
|
20
20
|
import { D as Ae } from "./dropdown-menu-DU-Hrf33.js";
|
|
21
21
|
import { D as B } from "./dialog-UbKJCi1X.js";
|
|
22
|
-
import { C as We } from "./color-picker-
|
|
22
|
+
import { C as We } from "./color-picker-CU303VjY.js";
|
|
23
23
|
import { T as Ie } from "./text-input-CUvCb6ST.js";
|
|
24
24
|
import { C as Xt } from "./checkbox-BuZ1u__2.js";
|
|
25
25
|
import { F as Ut } from "./file-upload-CwxdqkMK.js";
|
|
@@ -2626,4 +2626,4 @@ export {
|
|
|
2626
2626
|
hn as r,
|
|
2627
2627
|
Qn as w
|
|
2628
2628
|
};
|
|
2629
|
-
//# sourceMappingURL=rich-text-editor-
|
|
2629
|
+
//# sourceMappingURL=rich-text-editor-lSCiE0Zz.js.map
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { jsx as j } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as x } from "react";
|
|
3
|
+
import { useTranslation as F } from "react-i18next";
|
|
4
|
+
import { B as G } from "./badge-sTusUqZD.js";
|
|
5
|
+
import { T as P } from "./tooltip-DvmfrNvB.js";
|
|
6
|
+
function B(e) {
|
|
7
|
+
if (!e || typeof e == "string") return [];
|
|
8
|
+
const i = e.signedBy;
|
|
9
|
+
return i ? Array.isArray(i) ? i : [i] : [];
|
|
10
|
+
}
|
|
11
|
+
function d(e, i) {
|
|
12
|
+
if (e === "notRequired") return "notRequired";
|
|
13
|
+
const r = B(i).filter((t) => t.standing);
|
|
14
|
+
return r.length === 0 ? e : r.every((t) => t.standing === "signed") ? "signed" : "pending";
|
|
15
|
+
}
|
|
16
|
+
function M(e, i, r = "notRequired", t) {
|
|
17
|
+
const g = [
|
|
18
|
+
d(e, t == null ? void 0 : t.operator),
|
|
19
|
+
d(i, t == null ? void 0 : t.patient),
|
|
20
|
+
d(r, t == null ? void 0 : t.secondary)
|
|
21
|
+
].filter((l) => l !== "notRequired");
|
|
22
|
+
if (g.length === 0) return "notRequired";
|
|
23
|
+
const f = g.filter((l) => l === "signed").length;
|
|
24
|
+
return f === 0 ? "unsigned" : f === g.length ? "signed" : "partial";
|
|
25
|
+
}
|
|
26
|
+
const K = {
|
|
27
|
+
// Traffic light: green when everyone required has signed, amber when at
|
|
28
|
+
// least one party is still missing, red when nobody has.
|
|
29
|
+
signed: "success",
|
|
30
|
+
partial: "warning",
|
|
31
|
+
unsigned: "error",
|
|
32
|
+
notRequired: "neutral"
|
|
33
|
+
}, Y = {
|
|
34
|
+
operator: "Operator",
|
|
35
|
+
patient: "Patient",
|
|
36
|
+
secondary: "Second signee"
|
|
37
|
+
}, z = {
|
|
38
|
+
signed: "signed",
|
|
39
|
+
pending: "pending"
|
|
40
|
+
}, H = {
|
|
41
|
+
operator: "signatureStatusChip.missingOperator",
|
|
42
|
+
patient: "signatureStatusChip.missingPatient",
|
|
43
|
+
secondary: "signatureStatusChip.missingSecondary"
|
|
44
|
+
}, J = {
|
|
45
|
+
operator: "Operator signature missing",
|
|
46
|
+
patient: "Patient signature missing",
|
|
47
|
+
secondary: "Second signee signature missing"
|
|
48
|
+
};
|
|
49
|
+
function S(e) {
|
|
50
|
+
return `${e}`;
|
|
51
|
+
}
|
|
52
|
+
function Q(e, i, r) {
|
|
53
|
+
const t = [];
|
|
54
|
+
return e !== "notRequired" && t.push({ role: "operator", standing: e }), i !== "notRequired" && t.push({ role: "patient", standing: i }), r !== "notRequired" && t.push({ role: "secondary", standing: r }), t;
|
|
55
|
+
}
|
|
56
|
+
const W = x(
|
|
57
|
+
({
|
|
58
|
+
operator: e,
|
|
59
|
+
patient: i,
|
|
60
|
+
secondary: r = "notRequired",
|
|
61
|
+
names: t,
|
|
62
|
+
size: g = "md",
|
|
63
|
+
detail: f = !1,
|
|
64
|
+
tooltip: l = !1,
|
|
65
|
+
id: v,
|
|
66
|
+
className: V,
|
|
67
|
+
"aria-label": D,
|
|
68
|
+
title: w,
|
|
69
|
+
...E
|
|
70
|
+
}, _) => {
|
|
71
|
+
const { t: n } = F(), y = M(e, i, r, t), T = Q(
|
|
72
|
+
d(e, t == null ? void 0 : t.operator),
|
|
73
|
+
d(i, t == null ? void 0 : t.patient),
|
|
74
|
+
d(r, t == null ? void 0 : t.secondary)
|
|
75
|
+
), p = (() => {
|
|
76
|
+
switch (y) {
|
|
77
|
+
case "signed":
|
|
78
|
+
return n("signatureStatusChip.signed", { defaultValue: "Signed" });
|
|
79
|
+
case "unsigned":
|
|
80
|
+
return n("signatureStatusChip.unsigned", {
|
|
81
|
+
defaultValue: "Not signed"
|
|
82
|
+
});
|
|
83
|
+
case "notRequired":
|
|
84
|
+
return n("signatureStatusChip.notRequired", {
|
|
85
|
+
defaultValue: "No signature required"
|
|
86
|
+
});
|
|
87
|
+
case "partial": {
|
|
88
|
+
const u = T.filter((a) => a.standing === "pending");
|
|
89
|
+
if (u.length === 1) {
|
|
90
|
+
const a = u[0].role;
|
|
91
|
+
return n(H[a], {
|
|
92
|
+
defaultValue: J[a]
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return n("signatureStatusChip.missingCount", {
|
|
96
|
+
defaultValue: "{{count}} signatures missing",
|
|
97
|
+
count: u.length
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
})(), o = T.map(({ role: u, standing: a }) => {
|
|
102
|
+
const b = n(`signatureStatusChip.party.${u}`, {
|
|
103
|
+
defaultValue: Y[u]
|
|
104
|
+
}), N = n(`signatureStatusChip.state.${a}`, {
|
|
105
|
+
defaultValue: z[a]
|
|
106
|
+
}), h = t == null ? void 0 : t[u];
|
|
107
|
+
if (!h)
|
|
108
|
+
return n("signatureStatusChip.breakdownItem", {
|
|
109
|
+
defaultValue: "{{party}} {{state}}",
|
|
110
|
+
party: b,
|
|
111
|
+
state: N
|
|
112
|
+
});
|
|
113
|
+
const C = typeof h == "string" ? { name: h } : h, q = B(C);
|
|
114
|
+
if (q.length > 0) {
|
|
115
|
+
const A = (s) => s.relationship ? n("signatureStatusChip.representative", {
|
|
116
|
+
defaultValue: "{{name}} ({{relationship}})",
|
|
117
|
+
name: S(s.name),
|
|
118
|
+
relationship: s.relationship
|
|
119
|
+
}) : S(s.name), O = (s) => s.standing ?? a, L = q.filter((s) => O(s) === "signed"), $ = q.filter((s) => O(s) === "pending"), R = [];
|
|
120
|
+
return L.length > 0 && R.push(
|
|
121
|
+
n("signatureStatusChip.signedByList", {
|
|
122
|
+
defaultValue: "signed by {{signers}}",
|
|
123
|
+
signers: L.map(A).join(", ")
|
|
124
|
+
})
|
|
125
|
+
), $.length > 0 && R.push(
|
|
126
|
+
n("signatureStatusChip.awaitingList", {
|
|
127
|
+
defaultValue: "awaiting {{signers}}",
|
|
128
|
+
signers: $.map(A).join(", ")
|
|
129
|
+
})
|
|
130
|
+
), n("signatureStatusChip.breakdownItemOnBehalf", {
|
|
131
|
+
defaultValue: "{{party}}: {{name}}, {{detail}}",
|
|
132
|
+
party: b,
|
|
133
|
+
name: S(C.name),
|
|
134
|
+
detail: R.join(", ")
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return n("signatureStatusChip.breakdownItemNamed", {
|
|
138
|
+
defaultValue: "{{party}}: {{name}} ({{state}})",
|
|
139
|
+
party: b,
|
|
140
|
+
name: S(C.name),
|
|
141
|
+
state: N
|
|
142
|
+
});
|
|
143
|
+
}).join(" · "), k = o ? `${p}, ${o}` : p, U = f && o ? `${p} · ${o}` : p, c = l && o.length > 0, m = D ?? (c ? p : k), I = /* @__PURE__ */ j(
|
|
144
|
+
G,
|
|
145
|
+
{
|
|
146
|
+
ref: _,
|
|
147
|
+
variant: K[y],
|
|
148
|
+
size: g,
|
|
149
|
+
withDot: !0,
|
|
150
|
+
role: "img",
|
|
151
|
+
"aria-label": m,
|
|
152
|
+
title: c ? w : w ?? m,
|
|
153
|
+
tabIndex: c ? 0 : void 0,
|
|
154
|
+
"data-component": "signature-status-chip",
|
|
155
|
+
"data-status": y,
|
|
156
|
+
"data-component-id": v,
|
|
157
|
+
id: v,
|
|
158
|
+
className: c ? [
|
|
159
|
+
"ds:rounded-[var(--radius-full)]",
|
|
160
|
+
"ds:focus-visible:outline-[length:var(--focus-ring-width)]",
|
|
161
|
+
"ds:focus-visible:outline-solid",
|
|
162
|
+
"ds:focus-visible:outline-ring",
|
|
163
|
+
"ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
|
|
164
|
+
V
|
|
165
|
+
].filter(Boolean).join(" ") : V,
|
|
166
|
+
...E,
|
|
167
|
+
children: U
|
|
168
|
+
}
|
|
169
|
+
);
|
|
170
|
+
return c ? /* @__PURE__ */ j(P, { label: o, children: I }) : I;
|
|
171
|
+
}
|
|
172
|
+
);
|
|
173
|
+
W.displayName = "SignatureStatusChip";
|
|
174
|
+
export {
|
|
175
|
+
W as S,
|
|
176
|
+
d as e,
|
|
177
|
+
M as s
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=signature-status-chip-n57D-hhv.js.map
|
package/dist/agent-catalog.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"packageVersion": "1.
|
|
3
|
+
"packageVersion": "1.26.0",
|
|
4
4
|
"components": [
|
|
5
5
|
{
|
|
6
6
|
"kind": "component",
|
|
@@ -17083,14 +17083,13 @@
|
|
|
17083
17083
|
"control-room-rail.activeToolId"
|
|
17084
17084
|
],
|
|
17085
17085
|
"apiActions": [
|
|
17086
|
-
"patient.search",
|
|
17087
17086
|
"appointment.create"
|
|
17088
17087
|
]
|
|
17089
17088
|
},
|
|
17090
17089
|
{
|
|
17091
17090
|
"name": "edit_appointment",
|
|
17092
17091
|
"safety": "phi",
|
|
17093
|
-
"description": "Amend an existing appointment
|
|
17092
|
+
"description": "Amend an existing appointment. Clicking its card docks the SAME panel in details mode — the identity strip, the prefilled form, the read-only extras and the History sub-view — so there is one editing paradigm and no separate Edit jump. Change any field and save; for a member of a repeating series the save asks how far it reaches. On save the rail returns to the Appointments panel and a toast names the day, carrying a \"Go to\" action when that day is off screen, on a hidden weekend or filtered out. Writes patient-identifiable data.",
|
|
17094
17093
|
"descriptionKey": "ui.agent.calendar.workflows.editAppointment",
|
|
17095
17094
|
"uiActions": [
|
|
17096
17095
|
"calendar.focus_event",
|
|
@@ -17112,8 +17111,6 @@
|
|
|
17112
17111
|
"calendar.currentDate"
|
|
17113
17112
|
],
|
|
17114
17113
|
"apiActions": [
|
|
17115
|
-
"appointment.read",
|
|
17116
|
-
"patient.search",
|
|
17117
17114
|
"appointment.update",
|
|
17118
17115
|
"appointmentSeries.applyScope"
|
|
17119
17116
|
]
|
|
@@ -17376,7 +17373,7 @@
|
|
|
17376
17373
|
{
|
|
17377
17374
|
"name": "triage_online_booking",
|
|
17378
17375
|
"safety": "phi",
|
|
17379
|
-
"description": "
|
|
17376
|
+
"description": "Work the online-bookings panel — the platform's bookings page hosted in the rail, badged with the bookings of the last thirty days still missing a patient or an operator. A row can be shown on the grid, which selects it and docks its details, or completed, which docks the editor prefilled with what the person typed on the booking site so the missing patient or operator can be filled in and saved. Completing writes patient-identifiable data.",
|
|
17380
17377
|
"descriptionKey": "ui.agent.calendar.workflows.triageOnlineBooking",
|
|
17381
17378
|
"uiActions": [
|
|
17382
17379
|
"calendar.focus_event",
|
package/dist/agent-i18n/en.json
CHANGED
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
"dockTool": "Open one of the rail's tools — Appointments, the appointment editor / details panel, the waiting list, the online bookings or the free-slot finder — or read which one is docked. A host declares which of the five it can back with real data, so read the strip rather than assuming all five: a tool the host withheld is absent, and anything routed at it docks Appointments instead. Closing returns to the Appointments panel rather than collapsing the rail, so no path leaves an empty dock. Docking moves no focus; a polite live region announces the panel that arrived.",
|
|
174
174
|
"reviewUpcoming": "Read the rail's resting panel: the practice's upcoming appointments — now to the end of the seventh day, cancelled excluded, earliest first — each row led by the patient. The preset row, the jump-to-date picker and the edge loaders widen the derived window up to ±180 days. Activating a row selects that appointment on the grid, which docks its details. Read-only; the rows carry ids and lifecycle state, never patient identity.",
|
|
175
175
|
"createAppointment": "Book a new appointment in the editor panel, docked from the New appointment button, from a click on an empty slot (prefilled with the slot, the clicked column and the cog's default duration) or from an online booking being processed. Set the patient, the linked care or care-plan lines, the date, start time and duration, the operator, chair, branch and colour, the description (255 characters at most — a longer one blocks the save), and, once a patient is chosen, the SMS and e-mail reminders, the first-visit question and — where the patient has unsigned required documents — how they are asked to sign. Busy chair, busy operator and operator-away warnings are advisory and do not hold the save; only a practice closure does. Enter submits from any text field. Writes patient-identifiable data.",
|
|
176
|
-
"editAppointment": "Amend an existing appointment
|
|
176
|
+
"editAppointment": "Amend an existing appointment. Clicking its card docks the SAME panel in details mode — the identity strip, the prefilled form, the read-only extras and the History sub-view — so there is one editing paradigm and no separate Edit jump. Change any field and save; for a member of a repeating series the save asks how far it reaches. On save the rail returns to the Appointments panel and a toast names the day, carrying a \"Go to\" action when that day is off screen, on a hidden weekend or filtered out. Writes patient-identifiable data.",
|
|
177
177
|
"changeAppointmentStatus": "Set an appointment's attendance status from the Status select in the details panel. The status is patient-identifiable attendance data.",
|
|
178
178
|
"moveAppointment": "Reschedule an appointment either by dragging its card to a new slot or by arming \"Move…\" in the details panel and then clicking the target slot — the panel stays docked and a banner tinted with the appointment's own colour names what is being placed. Either route ends in the confirmation dialog, which offers the SMS and e-mail notify channels (kept even when the appointment recurs, where the platform drops them) and, for a series member, the recurring scope. Cancelling reverts the card and commits nothing. Writes patient-identifiable data.",
|
|
179
179
|
"resizeAppointment": "Change an appointment's duration by dragging its card edge. Unlike a move this SAVES AT ONCE with no confirmation, exactly as the platform does; the toast that follows carries an Undo that restores the previous duration and logs both changes on the appointment's history. Writes patient-identifiable data.",
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
"manageWaitingListEntry": "Add, amend or remove a waiting-list entry. The four-field form opens as a rail SUB-VIEW — from the toolbar split button's plus segment, from Add entry, or from a row's pencil — with a back arrow to the queue. Editing is refused on a row already linked to an appointment, because those fields belong to the appointment; the pencil stays focusable and names that reason. Remove deletes at once with no confirmation, platform parity, and its toast carries an Undo that puts the entry back. Writes patient-identifiable data.",
|
|
188
188
|
"scheduleWaitingPatient": "Give a waiting patient a slot. \"Schedule\" on an unlinked row hands off to the free-slot finder seeded from the entry — operator, chair, duration, patient, care and colour already filled in — and booking a slot opens the editor carrying the entry, so saving books the appointment and takes the entry off the list. A row already linked to an appointment reads \"Reschedule\" and seeds the same finder, but booking there MOVES the existing appointment rather than creating a second one. Writes patient-identifiable data.",
|
|
189
189
|
"findFreeSlot": "Search the practice for bookable time in the finder panel. Operator and chair scope are grouped checklists behind a popover per axis — a select-all row first, operators sectioned under their groups, nothing ticked searching every eligible resource — beside the care, the duration, the date range and, for a care that needs one, a medical-device select. The results list groups the slots under a day heading; a click steers the grid to that day and docks the editor prefilled with the date, time, duration, chair, operator and any seeded patient or care. The 185-day range warning is advisory (the search still runs), \"Show more slots\" pushes the To date out by 30 days and re-searches, and an alert names which business hours are missing when the practice or its operators hold none (it links to the scheduler only where the host supplies that navigation, which this workspace does not). Read-only until a slot is booked.",
|
|
190
|
-
"triageOnlineBooking": "
|
|
190
|
+
"triageOnlineBooking": "Work the online-bookings panel — the platform's bookings page hosted in the rail, badged with the bookings of the last thirty days still missing a patient or an operator. A row can be shown on the grid, which selects it and docks its details, or completed, which docks the editor prefilled with what the person typed on the booking site so the missing patient or operator can be filled in and saved. Completing writes patient-identifiable data.",
|
|
191
191
|
"printDaySheet": "Print the front-desk call sheet. The toolbar's printer icon opens a dialog asking which day — one day, never the visible range — and Print renders that day's appointments through the browser, scoped by the filters in force and masked when privacy mode is on. Nothing is sent to a server, but the sheet itself is a patient-identifiable document."
|
|
192
192
|
}
|
|
193
193
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as p } from "../../_chunks/appointment-card-
|
|
2
|
-
import { A as e, a as o, b as r } from "../../_chunks/appointment-tray-
|
|
1
|
+
import { A as p } from "../../_chunks/appointment-card-Dzr3GeVz.js";
|
|
2
|
+
import { A as e, a as o, b as r } from "../../_chunks/appointment-tray-4FUu_5NX.js";
|
|
3
3
|
import { i } from "../../_chunks/is-safe-url-DkETxeHz.js";
|
|
4
4
|
export {
|
|
5
5
|
p as AppointmentCard,
|
|
@@ -30,11 +30,6 @@ export interface ComboboxProps<T extends string = string> {
|
|
|
30
30
|
onCreate?: (value: string) => void;
|
|
31
31
|
open?: boolean;
|
|
32
32
|
onOpenChange?: (open: boolean) => void;
|
|
33
|
-
/** Query typed by the user (including IME commits and Clear), or set
|
|
34
|
-
* through the agent handle. Selection and closing do not emit queries.
|
|
35
|
-
* Pair with `filter` for host-provided results and `emptyMessage` for
|
|
36
|
-
* their state. This callback also fires when there are no options. */
|
|
37
|
-
onQueryChange?: (query: string) => void;
|
|
38
33
|
emptyMessage?: ReactNode;
|
|
39
34
|
'aria-label'?: string;
|
|
40
35
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as e, F as o, a as n, b as A, c as i, d as f, e as t, I, f as N, g as T, h as F, i as _, j as E, k as c, l as h, m as r, n as p, o as O, p as S, q as m, r as l, s as d, t as C, u as D } from "../../_chunks/face-scheme-
|
|
1
|
+
import { A as e, F as o, a as n, b as A, c as i, d as f, e as t, I, f as N, g as T, h as F, i as _, j as E, k as c, l as h, m as r, n as p, o as O, p as S, q as m, r as l, s as d, t as C, u as D } from "../../_chunks/face-scheme-DA2vjqaM.js";
|
|
2
2
|
export {
|
|
3
3
|
e as ANNOTATION_TOOL_KIND,
|
|
4
4
|
o as FACE_ANNOTATION_TOOLS,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { SignatureStatusChip, signatureStatusOf, } from './signature-status-chip';
|
|
2
|
-
export type { SignatureParty, SignatureStatus, SignatureStatusChipProps, } from './signature-status-chip';
|
|
1
|
+
export { SignatureStatusChip, signatureStatusOf, effectiveStanding, } from './signature-status-chip';
|
|
2
|
+
export type { SignatureParty, SignatureRole, SignerIdentity, SignerRepresentative, SignatureSignerNames, SignatureStatus, SignatureStatusChipProps, } from './signature-status-chip';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { S as s, s as
|
|
1
|
+
import { S as e, e as s, s as i } from "../../_chunks/signature-status-chip-n57D-hhv.js";
|
|
2
2
|
export {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
e as SignatureStatusChip,
|
|
4
|
+
s as effectiveStanding,
|
|
5
|
+
i as signatureStatusOf
|
|
5
6
|
};
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -3,17 +3,102 @@ import { type HTMLAttributes } from 'react';
|
|
|
3
3
|
export type SignatureParty = 'signed' | 'pending' | 'notRequired';
|
|
4
4
|
/** The chip's derived state. */
|
|
5
5
|
export type SignatureStatus = 'signed' | 'partial' | 'unsigned' | 'notRequired';
|
|
6
|
+
/**
|
|
7
|
+
* The parties a document can require. `secondary` is the second signee on a
|
|
8
|
+
* two-signee envelope (platform: `secondary_signee_id`) — a guardian, parent
|
|
9
|
+
* or co-signer. It is optional: a document that does not need one leaves it
|
|
10
|
+
* `notRequired`, which is the default.
|
|
11
|
+
*/
|
|
12
|
+
export type SignatureRole = 'operator' | 'patient' | 'secondary';
|
|
13
|
+
/**
|
|
14
|
+
* Who a party is, and — when they cannot sign for themselves — who signs in
|
|
15
|
+
* their place. A minor, or an adult who lacks capacity, is still the party
|
|
16
|
+
* the document is about; the parent, guardian or legal representative signs
|
|
17
|
+
* on their behalf. The standing (`signed` / `pending`) stays on the party,
|
|
18
|
+
* because it is their signature slot that is being filled.
|
|
19
|
+
*/
|
|
20
|
+
export interface SignerRepresentative {
|
|
21
|
+
/** The representative's display name. */
|
|
22
|
+
name: string;
|
|
23
|
+
/**
|
|
24
|
+
* Already-translated relationship to the party, e.g. "Mother",
|
|
25
|
+
* "Legal guardian". Same contract as `SignerRoster.relationship` — the
|
|
26
|
+
* host translates it, because the set is open.
|
|
27
|
+
*/
|
|
28
|
+
relationship?: string;
|
|
29
|
+
/**
|
|
30
|
+
* This representative's own standing. Supply it when representatives can
|
|
31
|
+
* be at different stages — both parents must consent and only one has
|
|
32
|
+
* signed. Omit it and the representative inherits the party's standing,
|
|
33
|
+
* which is the right default when a single person signs.
|
|
34
|
+
*/
|
|
35
|
+
standing?: Exclude<SignatureParty, 'notRequired'>;
|
|
36
|
+
}
|
|
37
|
+
export interface SignerIdentity {
|
|
38
|
+
/** The party's own display name. */
|
|
39
|
+
name: string;
|
|
40
|
+
/**
|
|
41
|
+
* Who signs in this party's place, when the party cannot sign for
|
|
42
|
+
* themselves. One representative for the ordinary guardian case; several
|
|
43
|
+
* where every one of them must sign — both parents consenting for a minor,
|
|
44
|
+
* where the minor never signs at all.
|
|
45
|
+
*
|
|
46
|
+
* When representatives carry their own `standing`, they become the source
|
|
47
|
+
* of truth for this party: the slot is `signed` only once every one of
|
|
48
|
+
* them has signed. Pass the same values to {@link signatureStatusOf} so
|
|
49
|
+
* host-side filtering agrees with the chip.
|
|
50
|
+
*/
|
|
51
|
+
signedBy?: SignerRepresentative | SignerRepresentative[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A party's effective standing. Representatives that carry their own
|
|
55
|
+
* `standing` override the party value, because they are the signatures that
|
|
56
|
+
* actually have to land: every one of them must sign before the slot is
|
|
57
|
+
* complete.
|
|
58
|
+
*/
|
|
59
|
+
export declare function effectiveStanding(party: SignatureParty, identity?: string | SignerIdentity): SignatureParty;
|
|
60
|
+
/**
|
|
61
|
+
* Display names for the signers, when the host has them and chooses to show
|
|
62
|
+
* them. A bare string is the common case; pass a {@link SignerIdentity} where
|
|
63
|
+
* someone signs on the party's behalf.
|
|
64
|
+
*/
|
|
65
|
+
export type SignatureSignerNames = Partial<Record<SignatureRole, string | SignerIdentity>>;
|
|
6
66
|
/**
|
|
7
67
|
* The rule, exported so hosts can sort/filter by the same state the chip
|
|
8
68
|
* shows: required = parties not `notRequired`; all signed → `signed`, some
|
|
9
69
|
* signed → `partial`, none signed → `unsigned`, nobody required → `notRequired`.
|
|
70
|
+
*
|
|
71
|
+
* `secondary` is optional and defaults to `notRequired`, so existing
|
|
72
|
+
* two-argument calls keep their exact meaning.
|
|
10
73
|
*/
|
|
11
|
-
export declare function signatureStatusOf(operator: SignatureParty, patient: SignatureParty): SignatureStatus;
|
|
74
|
+
export declare function signatureStatusOf(operator: SignatureParty, patient: SignatureParty, secondary?: SignatureParty, names?: SignatureSignerNames): SignatureStatus;
|
|
12
75
|
export interface SignatureStatusChipProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
|
|
13
76
|
/** The operator's standing. */
|
|
14
77
|
operator: SignatureParty;
|
|
15
78
|
/** The patient's standing. */
|
|
16
79
|
patient: SignatureParty;
|
|
80
|
+
/**
|
|
81
|
+
* The second signee's standing on a two-signee envelope — a guardian,
|
|
82
|
+
* parent or co-signer. Defaults to `notRequired`, so a document with only
|
|
83
|
+
* an operator and a patient behaves exactly as before.
|
|
84
|
+
*/
|
|
85
|
+
secondary?: SignatureParty;
|
|
86
|
+
/**
|
|
87
|
+
* Display names for the signers, keyed by role. Supply them and the
|
|
88
|
+
* breakdown reads "Operator: Dr Rossi (signed)" instead of "Operator
|
|
89
|
+
* signed"; omit them and only the roles are named.
|
|
90
|
+
*
|
|
91
|
+
* A role may be a bare name, or a {@link SignerIdentity} when someone
|
|
92
|
+
* signs on that party's behalf — a parent for a minor, a guardian for an
|
|
93
|
+
* adult who lacks capacity. Then the row reads "Patient: M. Bianchi,
|
|
94
|
+
* signed by A. Bianchi (Parent)".
|
|
95
|
+
*
|
|
96
|
+
* A name is shown in the chip's accessible name and its hover title, so
|
|
97
|
+
* pass one only where the viewer is already entitled to see that person —
|
|
98
|
+
* these are real people, and on the patient row usually a patient. Roles
|
|
99
|
+
* with no name fall back to the role alone, so a partial map is fine.
|
|
100
|
+
*/
|
|
101
|
+
names?: SignatureSignerNames;
|
|
17
102
|
/** Chip height — maps onto the Badge `sm` / `md` sizes. */
|
|
18
103
|
size?: 'sm' | 'md';
|
|
19
104
|
/**
|
|
@@ -22,6 +107,20 @@ export interface SignatureStatusChipProps extends Omit<HTMLAttributes<HTMLSpanEl
|
|
|
22
107
|
* always in the accessible name / title.
|
|
23
108
|
*/
|
|
24
109
|
detail?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Make the breakdown reachable by keyboard and touch, not only on hover.
|
|
112
|
+
*
|
|
113
|
+
* The chip becomes focusable and the breakdown moves out of the accessible
|
|
114
|
+
* name into the kit's `Tooltip`, which exposes it as the accessible
|
|
115
|
+
* description. Screen readers then hear the summary once and the detail
|
|
116
|
+
* once, instead of the whole string twice.
|
|
117
|
+
*
|
|
118
|
+
* Off by default for two reasons. It adds a tab stop, and a table of forty
|
|
119
|
+
* chips should not add forty; and it **requires a `TooltipProvider` above
|
|
120
|
+
* it** — without one the kit's Tooltip throws. Turn it on where the
|
|
121
|
+
* breakdown is something the user has to act on.
|
|
122
|
+
*/
|
|
123
|
+
tooltip?: boolean;
|
|
25
124
|
/** Agent-readiness consumer id, surfaced as `data-component-id`. */
|
|
26
125
|
id?: string;
|
|
27
126
|
}
|
|
@@ -2878,10 +2878,23 @@ export declare const arUi: {
|
|
|
2878
2878
|
readonly notRequired: "لا يلزم توقيع";
|
|
2879
2879
|
readonly missingOperator: "توقيع المشغّل مفقود";
|
|
2880
2880
|
readonly missingPatient: "توقيع المريض مفقود";
|
|
2881
|
+
readonly missingSecondary: "Second signee signature missing";
|
|
2882
|
+
readonly missingCount_zero: "{{count}} signatures missing";
|
|
2883
|
+
readonly missingCount_one: "{{count}} signature missing";
|
|
2884
|
+
readonly missingCount_two: "{{count}} signatures missing";
|
|
2885
|
+
readonly missingCount_few: "{{count}} signatures missing";
|
|
2886
|
+
readonly missingCount_many: "{{count}} signatures missing";
|
|
2887
|
+
readonly missingCount_other: "{{count}} signatures missing";
|
|
2881
2888
|
readonly breakdownItem: "{{party}}: {{state}}";
|
|
2889
|
+
readonly breakdownItemNamed: "{{party}}: {{name}} ({{state}})";
|
|
2890
|
+
readonly representative: "{{name}} ({{relationship}})";
|
|
2891
|
+
readonly awaitingList: "awaiting {{signers}}";
|
|
2892
|
+
readonly signedByList: "signed by {{signers}}";
|
|
2893
|
+
readonly breakdownItemOnBehalf: "{{party}}: {{name}}, {{detail}}";
|
|
2882
2894
|
readonly party: {
|
|
2883
2895
|
readonly operator: "المشغّل";
|
|
2884
2896
|
readonly patient: "المريض";
|
|
2897
|
+
readonly secondary: "Second signee";
|
|
2885
2898
|
};
|
|
2886
2899
|
readonly state: {
|
|
2887
2900
|
readonly signed: "تم التوقيع";
|
package/dist/i18n/locales/ar.js
CHANGED
|
@@ -2852,8 +2852,24 @@ const e = {
|
|
|
2852
2852
|
notRequired: "لا يلزم توقيع",
|
|
2853
2853
|
missingOperator: "توقيع المشغّل مفقود",
|
|
2854
2854
|
missingPatient: "توقيع المريض مفقود",
|
|
2855
|
+
missingSecondary: "Second signee signature missing",
|
|
2856
|
+
missingCount_zero: "{{count}} signatures missing",
|
|
2857
|
+
missingCount_one: "{{count}} signature missing",
|
|
2858
|
+
missingCount_two: "{{count}} signatures missing",
|
|
2859
|
+
missingCount_few: "{{count}} signatures missing",
|
|
2860
|
+
missingCount_many: "{{count}} signatures missing",
|
|
2861
|
+
missingCount_other: "{{count}} signatures missing",
|
|
2855
2862
|
breakdownItem: "{{party}}: {{state}}",
|
|
2856
|
-
|
|
2863
|
+
breakdownItemNamed: "{{party}}: {{name}} ({{state}})",
|
|
2864
|
+
representative: "{{name}} ({{relationship}})",
|
|
2865
|
+
awaitingList: "awaiting {{signers}}",
|
|
2866
|
+
signedByList: "signed by {{signers}}",
|
|
2867
|
+
breakdownItemOnBehalf: "{{party}}: {{name}}, {{detail}}",
|
|
2868
|
+
party: {
|
|
2869
|
+
operator: "المشغّل",
|
|
2870
|
+
patient: "المريض",
|
|
2871
|
+
secondary: "Second signee"
|
|
2872
|
+
},
|
|
2857
2873
|
state: { signed: "تم التوقيع", pending: "قيد الانتظار" }
|
|
2858
2874
|
},
|
|
2859
2875
|
signature: {
|