@alfadocs/ui-kit 1.29.0 → 1.31.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-CZ0pEdEI.js → address-fields-jFfjxOQR.js} +3 -3
- package/dist/_chunks/{anamnesis-summary-rows-DwjqZgR5.js → anamnesis-summary-rows-DMO3MWSt.js} +2 -2
- package/dist/_chunks/{appointment-card-Dzr3GeVz.js → appointment-card-CvUFFEdS.js} +8 -6
- package/dist/_chunks/{appointment-timeline-DhHwmHo1.js → appointment-timeline-DsMZY7U9.js} +2 -2
- package/dist/_chunks/{appointment-tray-4FUu_5NX.js → appointment-tray-Z2GaOIYQ.js} +2 -2
- package/dist/_chunks/{booking-AabCk7CI.js → booking-jGzRUETo.js} +2 -2
- package/dist/_chunks/{calendar-CI9MINcR.js → calendar-BNQKpxhE.js} +494 -438
- package/dist/_chunks/{calendar-event-card-66CEEWU6.js → calendar-event-card-DSh-69HT.js} +130 -122
- package/dist/_chunks/calendar-workspace-Dy1jHBvG.js +9392 -0
- package/dist/_chunks/{clinical-note-card-BBgFd2nB.js → clinical-note-card-yCTR9DB6.js} +185 -188
- package/dist/_chunks/{color-picker-CU303VjY.js → color-picker-Bl5f0iK1.js} +28 -25
- package/dist/_chunks/{combobox-D7_NLE2Z.js → combobox-DnSdYssy.js} +216 -215
- package/dist/_chunks/{country-select-DzbPFktV.js → country-select-CfDNFG5c.js} +2 -2
- package/dist/_chunks/{face-scheme-DA2vjqaM.js → face-scheme-l-CQyLs-.js} +2 -2
- package/dist/_chunks/notes-panel-am6e-Lwh.js +380 -0
- package/dist/_chunks/{patient-details-DYAmq76G.js → patient-details-CdfursHt.js} +3 -3
- package/dist/_chunks/{province-select-BBc7s7vR.js → province-select-BaUnkg4S.js} +2 -2
- package/dist/_chunks/{rich-text-editor-lSCiE0Zz.js → rich-text-editor-VJATL1Tk.js} +2 -2
- package/dist/_chunks/{sparkline-BmGcEyZO.js → sparkline-Dx_sxK3J.js} +228 -198
- package/dist/_chunks/{timeline-r-8IUoBS.js → timeline-u-2t9t_M.js} +37 -35
- package/dist/_chunks/use-zoom-drilldown-qCX34w9I.js +210 -0
- package/dist/agent-catalog.json +55 -11
- package/dist/agent-i18n/en.json +10 -8
- package/dist/components/_shared/get-error-message.d.ts +3 -0
- 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/calendar.d.ts +26 -2
- package/dist/components/calendar/index.js +1 -1
- package/dist/components/calendar-event-card/calendar-event-card.d.ts +9 -0
- package/dist/components/calendar-event-card/index.js +1 -1
- package/dist/components/clinical-note-card/clinical-note-card.d.ts +16 -1
- package/dist/components/clinical-note-card/index.js +1 -1
- package/dist/components/color-picker/index.js +1 -1
- package/dist/components/combobox/combobox.d.ts +5 -0
- 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/index.d.ts +2 -2
- package/dist/components/notes-panel/index.d.ts +1 -1
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/notes-panel/notes-panel.d.ts +24 -5
- 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/sparkline/index.js +1 -1
- package/dist/components/sparkline/sparkline.d.ts +6 -0
- package/dist/components/timeline/index.js +1 -1
- package/dist/components/timeline/timeline.d.ts +2 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +56 -54
- package/dist/hooks/use-zoom-drilldown.d.ts +23 -0
- package/dist/host-compat.css +10 -1
- package/dist/i18n/locales/ar.d.ts +50 -0
- package/dist/i18n/locales/ar.js +54 -4
- package/dist/i18n/locales/de.d.ts +60 -10
- package/dist/i18n/locales/de.js +64 -14
- package/dist/i18n/locales/el.d.ts +50 -0
- package/dist/i18n/locales/el.js +54 -4
- package/dist/i18n/locales/en.d.ts +50 -0
- package/dist/i18n/locales/en.js +54 -4
- package/dist/i18n/locales/es.d.ts +50 -0
- package/dist/i18n/locales/es.js +54 -4
- package/dist/i18n/locales/fr.d.ts +50 -0
- package/dist/i18n/locales/fr.js +53 -3
- package/dist/i18n/locales/hi.d.ts +50 -0
- package/dist/i18n/locales/hi.js +54 -4
- package/dist/i18n/locales/it.d.ts +60 -10
- package/dist/i18n/locales/it.js +64 -14
- package/dist/i18n/locales/ja.d.ts +50 -0
- package/dist/i18n/locales/ja.js +54 -4
- package/dist/i18n/locales/nl.d.ts +50 -0
- package/dist/i18n/locales/nl.js +54 -4
- package/dist/i18n/locales/pl.d.ts +50 -0
- package/dist/i18n/locales/pl.js +54 -4
- package/dist/i18n/locales/pt.d.ts +50 -0
- package/dist/i18n/locales/pt.js +54 -4
- package/dist/i18n/locales/ro.d.ts +50 -0
- package/dist/i18n/locales/ro.js +53 -3
- package/dist/i18n/locales/ru.d.ts +50 -0
- package/dist/i18n/locales/ru.js +54 -4
- package/dist/i18n/locales/sq.d.ts +50 -0
- package/dist/i18n/locales/sq.js +54 -4
- package/dist/i18n/locales/sv.d.ts +50 -0
- package/dist/i18n/locales/sv.js +54 -4
- package/dist/i18n/locales/tr.d.ts +50 -0
- package/dist/i18n/locales/tr.js +54 -4
- package/dist/i18n/locales/zh.d.ts +50 -0
- package/dist/i18n/locales/zh.js +54 -4
- package/dist/index.js +1073 -1070
- package/dist/locales/ar.json +54 -4
- package/dist/locales/de.json +64 -14
- package/dist/locales/el.json +54 -4
- package/dist/locales/en.json +54 -4
- package/dist/locales/es.json +54 -4
- package/dist/locales/fr.json +53 -3
- package/dist/locales/hi.json +54 -4
- package/dist/locales/it.json +64 -14
- package/dist/locales/ja.json +54 -4
- package/dist/locales/nl.json +54 -4
- package/dist/locales/pl.json +54 -4
- package/dist/locales/pt.json +54 -4
- package/dist/locales/ro.json +53 -3
- package/dist/locales/ru.json +54 -4
- package/dist/locales/sq.json +54 -4
- package/dist/locales/sv.json +54 -4
- package/dist/locales/tr.json +54 -4
- package/dist/locales/zh.json +54 -4
- package/dist/patterns/anamnesis/index.js +1 -1
- package/dist/patterns/calendar/calendar-appointment-details.d.ts +145 -0
- package/dist/patterns/calendar/calendar-appointment-details.sections.d.ts +32 -0
- package/dist/patterns/calendar/calendar-editor-hydration.d.ts +59 -0
- package/dist/patterns/calendar/calendar-notes-tool.d.ts +14 -0
- package/dist/patterns/calendar/calendar-patient-picker.d.ts +11 -0
- package/dist/patterns/calendar/calendar-series-scope-chooser.d.ts +18 -0
- package/dist/patterns/calendar/calendar-workspace.d.ts +26 -1
- package/dist/patterns/calendar/calendar-workspace.model.d.ts +8 -5
- package/dist/patterns/calendar/calendar.data.d.ts +66 -1
- package/dist/patterns/calendar/calendar.host.d.ts +2 -0
- package/dist/patterns/calendar/calendar.journey.d.ts +42 -7
- package/dist/patterns/calendar/calendar.model.d.ts +54 -5
- package/dist/patterns/calendar/calendar.sheets.d.ts +68 -15
- package/dist/patterns/calendar/calendar.surface.d.ts +12 -2
- package/dist/patterns/calendar/calendar.types.d.ts +29 -1
- package/dist/patterns/calendar/index.d.ts +9 -6
- package/dist/patterns/calendar/index.js +15 -14
- package/dist/tokens.css +10 -2
- package/package.json +1 -1
- package/dist/_chunks/calendar-workspace-a84AHQwj.js +0 -7506
- package/dist/_chunks/notes-panel-CTNpsByN.js +0 -353
- package/dist/_chunks/use-signing-session-CyOZWinp.js +0 -147
|
@@ -130,10 +130,10 @@ const K = {
|
|
|
130
130
|
layout: t = "rail-start",
|
|
131
131
|
order: r = "newest-first",
|
|
132
132
|
className: s,
|
|
133
|
-
children:
|
|
133
|
+
children: a,
|
|
134
134
|
...n
|
|
135
|
-
},
|
|
136
|
-
const
|
|
135
|
+
}, d) => {
|
|
136
|
+
const i = p(() => ({ layout: t, order: r }), [t, r]), o = w(null), [l, z] = V(null), h = w(null);
|
|
137
137
|
h.current = l;
|
|
138
138
|
const x = I((y) => {
|
|
139
139
|
var T;
|
|
@@ -149,7 +149,7 @@ const K = {
|
|
|
149
149
|
}),
|
|
150
150
|
[x]
|
|
151
151
|
);
|
|
152
|
-
return O(
|
|
152
|
+
return O(d, () => o.current, []), B(K, R, n.id), /* @__PURE__ */ e(v.Provider, { value: i, children: /* @__PURE__ */ e(
|
|
153
153
|
"ol",
|
|
154
154
|
{
|
|
155
155
|
ref: o,
|
|
@@ -158,37 +158,37 @@ const K = {
|
|
|
158
158
|
"data-selected-event": l ?? void 0,
|
|
159
159
|
className: U({ layout: t, order: r, className: s }),
|
|
160
160
|
...n,
|
|
161
|
-
children:
|
|
161
|
+
children: a
|
|
162
162
|
}
|
|
163
163
|
) });
|
|
164
164
|
}
|
|
165
165
|
);
|
|
166
166
|
E.displayName = "Timeline";
|
|
167
167
|
const S = m(
|
|
168
|
-
({ type: t = "neutral", eventId: r, className: s, children:
|
|
169
|
-
const { layout:
|
|
170
|
-
return
|
|
168
|
+
({ type: t = "neutral", eventId: r, className: s, children: a, ...n }, d) => {
|
|
169
|
+
const { layout: i } = u(v), { t: o } = A(), l = p(() => ({ type: t }), [t]);
|
|
170
|
+
return i === "alternating" ? /* @__PURE__ */ e(g.Provider, { value: l, children: /* @__PURE__ */ c(
|
|
171
171
|
"li",
|
|
172
172
|
{
|
|
173
|
-
ref:
|
|
173
|
+
ref: d,
|
|
174
174
|
"data-event-id": r,
|
|
175
175
|
className: ["ds:contents", s].filter(Boolean).join(" "),
|
|
176
176
|
...n,
|
|
177
177
|
children: [
|
|
178
178
|
/* @__PURE__ */ e("span", { className: "ds:sr-only", children: o(`timeline.type.${t}`) }),
|
|
179
|
-
|
|
179
|
+
a
|
|
180
180
|
]
|
|
181
181
|
}
|
|
182
182
|
) }) : /* @__PURE__ */ e(g.Provider, { value: l, children: /* @__PURE__ */ c(
|
|
183
183
|
"li",
|
|
184
184
|
{
|
|
185
|
-
ref:
|
|
185
|
+
ref: d,
|
|
186
186
|
"data-event-id": r,
|
|
187
|
-
className: W({ layout:
|
|
187
|
+
className: W({ layout: i, className: s }),
|
|
188
188
|
...n,
|
|
189
189
|
children: [
|
|
190
190
|
/* @__PURE__ */ e("span", { className: "ds:sr-only", children: o(`timeline.type.${t}`) }),
|
|
191
|
-
|
|
191
|
+
a
|
|
192
192
|
]
|
|
193
193
|
}
|
|
194
194
|
) });
|
|
@@ -196,38 +196,38 @@ const S = m(
|
|
|
196
196
|
);
|
|
197
197
|
S.displayName = "Timeline.Event";
|
|
198
198
|
const _ = m(
|
|
199
|
-
({ icon: t, className: r, ...s },
|
|
200
|
-
const { type: n } = u(g), { layout:
|
|
199
|
+
({ icon: t, className: r, ...s }, a) => {
|
|
200
|
+
const { type: n } = u(g), { layout: d } = u(v), i = /* @__PURE__ */ e(
|
|
201
201
|
"div",
|
|
202
202
|
{
|
|
203
|
-
ref:
|
|
203
|
+
ref: a,
|
|
204
204
|
"aria-hidden": "true",
|
|
205
205
|
className: Y({ type: n, className: r }),
|
|
206
206
|
...s,
|
|
207
207
|
children: t ?? X[n]
|
|
208
208
|
}
|
|
209
209
|
);
|
|
210
|
-
return
|
|
210
|
+
return d === "alternating" ? /* @__PURE__ */ c(
|
|
211
211
|
"div",
|
|
212
212
|
{
|
|
213
213
|
"aria-hidden": "true",
|
|
214
214
|
className: "ds:col-start-2 ds:flex ds:flex-col ds:items-center",
|
|
215
215
|
children: [
|
|
216
216
|
/* @__PURE__ */ e("div", { className: "ds:w-[var(--border-width-md)] ds:flex-1 ds:bg-[var(--border)] ds:first:hidden" }),
|
|
217
|
-
|
|
217
|
+
i,
|
|
218
218
|
/* @__PURE__ */ e("div", { className: "ds:w-[var(--border-width-md)] ds:flex-1 ds:bg-[var(--border)]" })
|
|
219
219
|
]
|
|
220
220
|
}
|
|
221
|
-
) :
|
|
221
|
+
) : i;
|
|
222
222
|
}
|
|
223
223
|
);
|
|
224
224
|
_.displayName = "Timeline.Dot";
|
|
225
225
|
const j = m(
|
|
226
|
-
({ title: t, description: r, actor: s, children:
|
|
226
|
+
({ title: t, description: r, actor: s, children: a, className: n, ...d }, i) => {
|
|
227
227
|
const { layout: o } = u(v), l = /* @__PURE__ */ e(
|
|
228
228
|
"div",
|
|
229
229
|
{
|
|
230
|
-
ref:
|
|
230
|
+
ref: i,
|
|
231
231
|
className: [
|
|
232
232
|
"ds:flex-1 ds:min-w-0 ds:pb-[var(--spacing-md)]",
|
|
233
233
|
// Wrap policy: `break-word` (not `anywhere`) preserves word-
|
|
@@ -240,7 +240,7 @@ const j = m(
|
|
|
240
240
|
"ds:[&_*]:break-normal ds:[&_*]:[overflow-wrap:break-word]",
|
|
241
241
|
n
|
|
242
242
|
].filter(Boolean).join(" "),
|
|
243
|
-
...
|
|
243
|
+
...d,
|
|
244
244
|
children: /* @__PURE__ */ e(N, { variant: "outlined", children: /* @__PURE__ */ c(N.Body, { children: [
|
|
245
245
|
/* @__PURE__ */ e("p", { className: "type-label ds:text-[var(--foreground)]", children: t }),
|
|
246
246
|
r && /* @__PURE__ */ e("p", { className: "ds:mt-[var(--spacing-xs)] type-body-sm ds:text-[var(--muted-foreground)]", children: r }),
|
|
@@ -248,7 +248,7 @@ const j = m(
|
|
|
248
248
|
/* @__PURE__ */ e(P, { size: "xs", name: s.name, src: s.src }),
|
|
249
249
|
/* @__PURE__ */ e("span", { className: "type-meta ds:text-[var(--muted-foreground)]", children: s.name })
|
|
250
250
|
] }),
|
|
251
|
-
|
|
251
|
+
a
|
|
252
252
|
] }) })
|
|
253
253
|
}
|
|
254
254
|
);
|
|
@@ -259,24 +259,26 @@ j.displayName = "Timeline.Content";
|
|
|
259
259
|
const G = 1440 * 60 * 1e3, k = m(
|
|
260
260
|
({
|
|
261
261
|
date: t,
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
262
|
+
locale: r,
|
|
263
|
+
relative: s = !0,
|
|
264
|
+
format: a = { dateStyle: "medium", timeStyle: "short" },
|
|
265
|
+
className: n,
|
|
266
|
+
...d
|
|
267
|
+
}, i) => /* @__PURE__ */ e(
|
|
267
268
|
q,
|
|
268
269
|
{
|
|
269
|
-
ref:
|
|
270
|
+
ref: i,
|
|
270
271
|
value: t,
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
272
|
+
locale: r,
|
|
273
|
+
format: s ? "relative" : "absolute",
|
|
274
|
+
relativeWindow: s ? G : void 0,
|
|
275
|
+
absoluteFormat: a,
|
|
274
276
|
className: [
|
|
275
277
|
"ds:text-[var(--muted-foreground)]",
|
|
276
278
|
"ds:[font-variant-numeric:var(--font-feature-tabular)]",
|
|
277
|
-
|
|
279
|
+
n
|
|
278
280
|
].filter(Boolean).join(" "),
|
|
279
|
-
...
|
|
281
|
+
...d
|
|
280
282
|
}
|
|
281
283
|
)
|
|
282
284
|
);
|
|
@@ -291,4 +293,4 @@ export {
|
|
|
291
293
|
le as T,
|
|
292
294
|
K as t
|
|
293
295
|
};
|
|
294
|
-
//# sourceMappingURL=timeline-
|
|
296
|
+
//# sourceMappingURL=timeline-u-2t9t_M.js.map
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { useRef as I, useEffect as M, useState as F, useMemo as E, useCallback as s } from "react";
|
|
2
|
+
import { flushSync as R } from "react-dom";
|
|
3
|
+
function x(e) {
|
|
4
|
+
return e != null && e.current ? e.current : typeof document > "u" ? null : document;
|
|
5
|
+
}
|
|
6
|
+
function O(e, l) {
|
|
7
|
+
const c = typeof CSS < "u" && typeof CSS.escape == "function" ? CSS.escape(e) : (
|
|
8
|
+
// SSR / jsdom fallback — drop every character that's
|
|
9
|
+
// significant in a CSS attribute selector. Conservative but
|
|
10
|
+
// robust enough for the test environment.
|
|
11
|
+
e.replace(/["'\\[\]]/g, "")
|
|
12
|
+
), d = `[data-error-anchor="${c}"], [name="${c}"], [name$="[${c}]"]`, u = Array.from(l.querySelectorAll(d));
|
|
13
|
+
return u.length === 0 ? null : u.find((p) => p.offsetParent !== null) ?? u[0];
|
|
14
|
+
}
|
|
15
|
+
function $(e, l, c = {}) {
|
|
16
|
+
const {
|
|
17
|
+
scope: d,
|
|
18
|
+
scrollOptions: u = { behavior: "smooth", block: "center" },
|
|
19
|
+
focus: a = !0,
|
|
20
|
+
skipInitialMount: p = !0
|
|
21
|
+
} = c, o = I(!1), f = I(null), i = l.find((h) => !!e[h]) ?? null;
|
|
22
|
+
M(() => {
|
|
23
|
+
if (p && !o.current) {
|
|
24
|
+
o.current = !0, f.current = i;
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (!i) {
|
|
28
|
+
f.current = null;
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (i === f.current || typeof window > "u") return;
|
|
32
|
+
const h = window.requestAnimationFrame(() => {
|
|
33
|
+
const g = x(d);
|
|
34
|
+
if (!g) return;
|
|
35
|
+
const t = O(i, g);
|
|
36
|
+
t && (t.scrollIntoView(u), a && t.focus({ preventScroll: !0 }), f.current = i);
|
|
37
|
+
});
|
|
38
|
+
return () => window.cancelAnimationFrame(h);
|
|
39
|
+
}, [i]);
|
|
40
|
+
}
|
|
41
|
+
function k(e, l = !1) {
|
|
42
|
+
const c = {};
|
|
43
|
+
for (const d of e)
|
|
44
|
+
c[d.id] = { signed: l ? !1 : !!d.signed };
|
|
45
|
+
return c;
|
|
46
|
+
}
|
|
47
|
+
function D(e) {
|
|
48
|
+
const [l, c] = F(
|
|
49
|
+
() => k(e)
|
|
50
|
+
), [d, u] = F(null), [a, p] = F(
|
|
51
|
+
() => {
|
|
52
|
+
var n;
|
|
53
|
+
return ((n = e[0]) == null ? void 0 : n.id) ?? null;
|
|
54
|
+
}
|
|
55
|
+
), o = E(
|
|
56
|
+
() => e.map((n) => {
|
|
57
|
+
const r = l[n.id];
|
|
58
|
+
return {
|
|
59
|
+
...n,
|
|
60
|
+
signed: r ? r.signed : !!n.signed,
|
|
61
|
+
payload: r == null ? void 0 : r.payload
|
|
62
|
+
};
|
|
63
|
+
}),
|
|
64
|
+
[e, l]
|
|
65
|
+
), f = E(
|
|
66
|
+
() => o.reduce((n, r) => r.signed ? n + 1 : n, 0),
|
|
67
|
+
[o]
|
|
68
|
+
), i = o.length, h = i > 0 && f === i, g = s((n) => {
|
|
69
|
+
u(n);
|
|
70
|
+
}, []), t = s(() => {
|
|
71
|
+
u(null);
|
|
72
|
+
}, []), w = s((n, r) => {
|
|
73
|
+
c((m) => ({ ...m, [n]: { signed: !0, payload: r } })), u((m) => m === n ? null : m);
|
|
74
|
+
}, []), T = s(
|
|
75
|
+
(n) => {
|
|
76
|
+
var r;
|
|
77
|
+
return !!((r = l[n]) != null && r.signed);
|
|
78
|
+
},
|
|
79
|
+
[l]
|
|
80
|
+
), S = s(() => {
|
|
81
|
+
var n;
|
|
82
|
+
c(k(e, !0)), u(null), p(((n = e[0]) == null ? void 0 : n.id) ?? null);
|
|
83
|
+
}, [e]), C = s(() => {
|
|
84
|
+
p((n) => {
|
|
85
|
+
const r = o.length;
|
|
86
|
+
if (r === 0) return null;
|
|
87
|
+
const m = n ? o.findIndex((y) => y.id === n) : -1;
|
|
88
|
+
return o[(m + 1 + r) % r].id;
|
|
89
|
+
});
|
|
90
|
+
}, [o]), v = s(() => {
|
|
91
|
+
p((n) => {
|
|
92
|
+
const r = o.length;
|
|
93
|
+
if (r === 0) return null;
|
|
94
|
+
const m = n ? o.findIndex((y) => y.id === n) : 0;
|
|
95
|
+
return o[(m - 1 + r) % r].id;
|
|
96
|
+
});
|
|
97
|
+
}, [o]), A = s(() => {
|
|
98
|
+
p((n) => {
|
|
99
|
+
const r = o.length;
|
|
100
|
+
if (r === 0) return n;
|
|
101
|
+
const m = n ? o.findIndex((y) => y.id === n) : -1;
|
|
102
|
+
for (let y = 1; y <= r; y += 1) {
|
|
103
|
+
const b = o[(m + y) % r];
|
|
104
|
+
if (!b.signed) return b.id;
|
|
105
|
+
}
|
|
106
|
+
return n;
|
|
107
|
+
});
|
|
108
|
+
}, [o]);
|
|
109
|
+
return E(
|
|
110
|
+
() => ({
|
|
111
|
+
fields: o,
|
|
112
|
+
signedCount: f,
|
|
113
|
+
total: i,
|
|
114
|
+
isComplete: h,
|
|
115
|
+
activeFieldId: d,
|
|
116
|
+
openField: g,
|
|
117
|
+
closeField: t,
|
|
118
|
+
markSigned: w,
|
|
119
|
+
isFieldSigned: T,
|
|
120
|
+
reset: S,
|
|
121
|
+
cursorFieldId: a,
|
|
122
|
+
goToNextField: C,
|
|
123
|
+
goToPreviousField: v,
|
|
124
|
+
goToNextUnsigned: A
|
|
125
|
+
}),
|
|
126
|
+
[
|
|
127
|
+
o,
|
|
128
|
+
f,
|
|
129
|
+
i,
|
|
130
|
+
h,
|
|
131
|
+
d,
|
|
132
|
+
g,
|
|
133
|
+
t,
|
|
134
|
+
w,
|
|
135
|
+
T,
|
|
136
|
+
S,
|
|
137
|
+
a,
|
|
138
|
+
C,
|
|
139
|
+
v,
|
|
140
|
+
A
|
|
141
|
+
]
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
const q = "ds-zoom-drilldown", L = () => {
|
|
145
|
+
if (typeof document > "u") return null;
|
|
146
|
+
const e = document.querySelector("main");
|
|
147
|
+
return e ? e.querySelector("[data-radix-scroll-area-viewport]") ?? e.closest("[data-radix-scroll-area-viewport]") ?? e : null;
|
|
148
|
+
}, N = (e) => typeof e.startViewTransition == "function" && typeof CSS < "u" && typeof CSS.supports == "function" && CSS.supports("view-transition-class", q);
|
|
149
|
+
function P(e = {}) {
|
|
150
|
+
const [l, c] = F(null), d = I(
|
|
151
|
+
null
|
|
152
|
+
), u = I(e.getScrollContainer);
|
|
153
|
+
u.current = e.getScrollContainer;
|
|
154
|
+
const a = s(
|
|
155
|
+
() => (u.current ?? L)(),
|
|
156
|
+
[]
|
|
157
|
+
), p = s(() => {
|
|
158
|
+
const t = a();
|
|
159
|
+
return {
|
|
160
|
+
window: typeof window < "u" ? window.scrollY : 0,
|
|
161
|
+
container: t ? t.scrollTop : 0
|
|
162
|
+
};
|
|
163
|
+
}, [a]), o = s(() => {
|
|
164
|
+
const t = d.current;
|
|
165
|
+
if (!t) return;
|
|
166
|
+
d.current = null;
|
|
167
|
+
let w = 0;
|
|
168
|
+
const T = () => {
|
|
169
|
+
const S = a();
|
|
170
|
+
typeof window < "u" && window.scrollTo({ top: t.window }), S && (S.scrollTop = t.container), !((typeof window > "u" || Math.abs(window.scrollY - t.window) < 2) && (!S || Math.abs(S.scrollTop - t.container) < 2)) && w < 20 && (w += 1, requestAnimationFrame(T));
|
|
171
|
+
};
|
|
172
|
+
T();
|
|
173
|
+
}, [a]), f = s(() => {
|
|
174
|
+
const t = a();
|
|
175
|
+
typeof window < "u" && window.scrollTo({ top: 0 }), t && (t.scrollTop = 0);
|
|
176
|
+
}, [a]), i = s(
|
|
177
|
+
(t) => {
|
|
178
|
+
var v;
|
|
179
|
+
const w = document, T = typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches, S = t === null;
|
|
180
|
+
if (T || !N(w) || !w.startViewTransition) {
|
|
181
|
+
R(() => c(t)), S ? o() : f();
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
const C = w.startViewTransition(() => {
|
|
185
|
+
R(() => c(t)), S || f();
|
|
186
|
+
});
|
|
187
|
+
S && ((v = C == null ? void 0 : C.finished) == null || v.then(o, o));
|
|
188
|
+
},
|
|
189
|
+
[o, f]
|
|
190
|
+
), h = s(
|
|
191
|
+
(t) => {
|
|
192
|
+
d.current = p(), i(t);
|
|
193
|
+
},
|
|
194
|
+
[p, i]
|
|
195
|
+
), g = s(() => i(null), [i]);
|
|
196
|
+
return M(() => {
|
|
197
|
+
if (l === null) return;
|
|
198
|
+
const t = (w) => {
|
|
199
|
+
w.key === "Escape" && !w.defaultPrevented && g();
|
|
200
|
+
};
|
|
201
|
+
return window.addEventListener("keydown", t), () => window.removeEventListener("keydown", t);
|
|
202
|
+
}, [l, g]), { selected: l, open: h, close: g };
|
|
203
|
+
}
|
|
204
|
+
export {
|
|
205
|
+
q as Z,
|
|
206
|
+
D as a,
|
|
207
|
+
P as b,
|
|
208
|
+
$ as u
|
|
209
|
+
};
|
|
210
|
+
//# sourceMappingURL=use-zoom-drilldown-qCX34w9I.js.map
|
package/dist/agent-catalog.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"packageVersion": "1.
|
|
3
|
+
"packageVersion": "1.31.0",
|
|
4
4
|
"components": [
|
|
5
5
|
{
|
|
6
6
|
"kind": "component",
|
|
@@ -1592,7 +1592,7 @@
|
|
|
1592
1592
|
},
|
|
1593
1593
|
"item": {
|
|
1594
1594
|
"attr": "data-event-id",
|
|
1595
|
-
"description": "Emitted on every rendered FullCalendar event by the kit event renderer. Used by focusEvent. Cards also carry data-kind=\"task\"|\"draft\"|\"appointment\" and data-status for classification."
|
|
1595
|
+
"description": "Emitted on every rendered FullCalendar event by the kit event renderer. Used by focusEvent. Cards also carry data-kind=\"task\"|\"draft\"|\"pending-details\"|\"appointment\" and data-status for classification."
|
|
1596
1596
|
}
|
|
1597
1597
|
}
|
|
1598
1598
|
},
|
|
@@ -7673,7 +7673,7 @@
|
|
|
7673
7673
|
]
|
|
7674
7674
|
},
|
|
7675
7675
|
"idempotent": false,
|
|
7676
|
-
"description": "Toggle the pinned state of the note with the given id.",
|
|
7676
|
+
"description": "Toggle the pinned state of the note with the given id. Refused for a deleted note or one whose actions.pin is false.",
|
|
7677
7677
|
"descriptionKey": "ui.agent.notesPanel.actions.togglePin"
|
|
7678
7678
|
},
|
|
7679
7679
|
{
|
|
@@ -12858,7 +12858,10 @@
|
|
|
12858
12858
|
]
|
|
12859
12859
|
},
|
|
12860
12860
|
"idempotent": true,
|
|
12861
|
-
"
|
|
12861
|
+
"errors": [
|
|
12862
|
+
"Per-point tooltip titles are hidden after this call — the host point labels describe the previous series, not the one written."
|
|
12863
|
+
],
|
|
12864
|
+
"description": "Replace the sparkline data without remounting. Writes straight into ApexCharts, bypassing React — read the `pointCount` slot back rather than expecting the host tree to reflect it. Host-supplied point labels are not updated, so the tooltip title is hidden after this call.",
|
|
12862
12865
|
"descriptionKey": "ui.agent.sparkline.actions.updateSeries"
|
|
12863
12866
|
},
|
|
12864
12867
|
{
|
|
@@ -16873,6 +16876,14 @@
|
|
|
16873
16876
|
"component": "radio-group",
|
|
16874
16877
|
"as": "deleteScope"
|
|
16875
16878
|
},
|
|
16879
|
+
{
|
|
16880
|
+
"component": "radio-group",
|
|
16881
|
+
"as": "seriesScope"
|
|
16882
|
+
},
|
|
16883
|
+
{
|
|
16884
|
+
"component": "button",
|
|
16885
|
+
"as": "seriesScopeChange"
|
|
16886
|
+
},
|
|
16876
16887
|
{
|
|
16877
16888
|
"component": "dropdown-menu",
|
|
16878
16889
|
"as": "signatureMenu"
|
|
@@ -17023,7 +17034,7 @@
|
|
|
17023
17034
|
{
|
|
17024
17035
|
"name": "dock_tool",
|
|
17025
17036
|
"safety": "read",
|
|
17026
|
-
"description": "Open
|
|
17037
|
+
"description": "Open a workspace rail tool: Appointments, appointment editor / details, waiting list, patient notes, online bookings or free-slot finder. Read the actual strip: hosts may withhold tools, and patient-notes is registered only with patient context. Notes uses the host's note permissions, independently of appointment-edit rights. Clearing its patient context returns to the previous available tool and focuses its rail button. Opening notes from a panel may address a note id and moves focus into Notes. Closing other tools returns to Appointments.",
|
|
17027
17038
|
"descriptionKey": "ui.agent.calendar.workflows.dockTool",
|
|
17028
17039
|
"uiActions": [
|
|
17029
17040
|
"control-room-rail.open",
|
|
@@ -17054,6 +17065,21 @@
|
|
|
17054
17065
|
"appointment.list"
|
|
17055
17066
|
]
|
|
17056
17067
|
},
|
|
17068
|
+
{
|
|
17069
|
+
"name": "read_appointment_details",
|
|
17070
|
+
"safety": "phi",
|
|
17071
|
+
"description": "Read one appointment in the docked details panel. With the host's details read, any card click, including a patient-less block and a chip whose names are still loading, focuses the appointment and docks a read-only panel: appointment, booking, money, contact, treatments, signing and series sections, the patient's latest three notes and a History sub-view. See more or a note opens the separate Notes rail tool when the host offers it. While the read is loading, failed or refused the panel shows that status instead. Edit, withheld from a read-only viewer, opens the editor. Without the host's read a pending chip stays inert and the editor form is the details. Reads patient-identifiable data.",
|
|
17072
|
+
"descriptionKey": "ui.agent.calendar.workflows.readAppointmentDetails",
|
|
17073
|
+
"uiActions": [
|
|
17074
|
+
"calendar.focus_event"
|
|
17075
|
+
],
|
|
17076
|
+
"stateReads": [
|
|
17077
|
+
"control-room-rail.activeToolId"
|
|
17078
|
+
],
|
|
17079
|
+
"apiActions": [
|
|
17080
|
+
"appointment.read"
|
|
17081
|
+
]
|
|
17082
|
+
},
|
|
17057
17083
|
{
|
|
17058
17084
|
"name": "create_appointment",
|
|
17059
17085
|
"safety": "phi",
|
|
@@ -17083,13 +17109,14 @@
|
|
|
17083
17109
|
"control-room-rail.activeToolId"
|
|
17084
17110
|
],
|
|
17085
17111
|
"apiActions": [
|
|
17112
|
+
"patient.search",
|
|
17086
17113
|
"appointment.create"
|
|
17087
17114
|
]
|
|
17088
17115
|
},
|
|
17089
17116
|
{
|
|
17090
17117
|
"name": "edit_appointment",
|
|
17091
17118
|
"safety": "phi",
|
|
17092
|
-
"description": "Amend an existing appointment.
|
|
17119
|
+
"description": "Amend an existing appointment in the docked editor. With the host's details read the editor opens from Edit on the details panel and Cancel or Save returns there; without it the details panel is the form. A remote host first loads canonical data; loading, failure and whole-appointment refusal expose no editable form. When that data carries a series, the editor first asks the scope: this occurrence, this and following, or the whole series. Honour the returned patient, care, description and recurrence capabilities. A refused recurring scope cannot be treated as an ordinary edit. Save waits for host acceptance before closing or announcing success; rejection preserves the entered draft for correction or retry. Writes patient-identifiable data.",
|
|
17093
17120
|
"descriptionKey": "ui.agent.calendar.workflows.editAppointment",
|
|
17094
17121
|
"uiActions": [
|
|
17095
17122
|
"calendar.focus_event",
|
|
@@ -17111,6 +17138,8 @@
|
|
|
17111
17138
|
"calendar.currentDate"
|
|
17112
17139
|
],
|
|
17113
17140
|
"apiActions": [
|
|
17141
|
+
"appointment.read",
|
|
17142
|
+
"patient.search",
|
|
17114
17143
|
"appointment.update",
|
|
17115
17144
|
"appointmentSeries.applyScope"
|
|
17116
17145
|
]
|
|
@@ -17134,7 +17163,7 @@
|
|
|
17134
17163
|
{
|
|
17135
17164
|
"name": "move_appointment",
|
|
17136
17165
|
"safety": "phi",
|
|
17137
|
-
"description": "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
|
|
17166
|
+
"description": "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 and, for a series member, the recurring scope. A host recurring parent always confirms, asks the scope and hides the notify channels, as the platform does. Cancelling reverts the card and commits nothing. Writes patient-identifiable data.",
|
|
17138
17167
|
"descriptionKey": "ui.agent.calendar.workflows.moveAppointment",
|
|
17139
17168
|
"uiActions": [
|
|
17140
17169
|
"calendar.focus_event",
|
|
@@ -17216,7 +17245,7 @@
|
|
|
17216
17245
|
{
|
|
17217
17246
|
"name": "manage_patient_notes",
|
|
17218
17247
|
"safety": "phi",
|
|
17219
|
-
"description": "Read and write the patient's notes from the Notes
|
|
17248
|
+
"description": "Read and write the patient's notes from the conditional Notes rail tool: add a note through the composer, pin one, edit one in a dialog or delete one behind an alert dialog. Every write goes to the host, which stamps the note's id, time and author. The kit attributes nothing to a clinical note. An HTML note edits in a rich text editor and saves as HTML; a clinical or deleted note offers no edit. With no host seam, or when the host's seam is not writable, the tool is a read-only timeline. Explicit note permissions take precedence over appointment-edit permission. Details and the editor have no Notes sub-view. The rows carry ids and pin / flag / clinical markers only; the body and author are never exposed as state. Writes patient-identifiable clinical data.",
|
|
17220
17249
|
"descriptionKey": "ui.agent.calendar.workflows.managePatientNotes",
|
|
17221
17250
|
"uiActions": [
|
|
17222
17251
|
"notes-panel.add_note",
|
|
@@ -17224,7 +17253,8 @@
|
|
|
17224
17253
|
"dialog.open",
|
|
17225
17254
|
"dialog.close",
|
|
17226
17255
|
"dialog.dismiss",
|
|
17227
|
-
"text-area.set_value"
|
|
17256
|
+
"text-area.set_value",
|
|
17257
|
+
"rich-text-editor.set_content"
|
|
17228
17258
|
],
|
|
17229
17259
|
"stateReads": [
|
|
17230
17260
|
"notes-panel.notes",
|
|
@@ -17270,6 +17300,20 @@
|
|
|
17270
17300
|
"signature.request"
|
|
17271
17301
|
]
|
|
17272
17302
|
},
|
|
17303
|
+
{
|
|
17304
|
+
"name": "create_document",
|
|
17305
|
+
"safety": "phi",
|
|
17306
|
+
"description": "Open the appointment details create menu through data-action=\"open-create-document\" and select an offered data-action=\"create-document-<kind>\" item: bill, folder, template, empty, identification or webcam. The host supplies permitted kinds and owns navigation, confirmation and persistence. Appointment read-only mode does not withhold document rights. A selection starts the host workflow; it does not prove that a document or bill was created. May write patient-identifiable data.",
|
|
17307
|
+
"descriptionKey": "ui.agent.calendar.workflows.createDocument",
|
|
17308
|
+
"uiActions": [
|
|
17309
|
+
"dropdown-menu.open",
|
|
17310
|
+
"dropdown-menu.close"
|
|
17311
|
+
],
|
|
17312
|
+
"stateReads": [
|
|
17313
|
+
"dropdown-menu.isOpen"
|
|
17314
|
+
],
|
|
17315
|
+
"apiActions": []
|
|
17316
|
+
},
|
|
17273
17317
|
{
|
|
17274
17318
|
"name": "message_patient_whatsapp",
|
|
17275
17319
|
"safety": "phi",
|
|
@@ -17345,7 +17389,7 @@
|
|
|
17345
17389
|
{
|
|
17346
17390
|
"name": "find_free_slot",
|
|
17347
17391
|
"safety": "read",
|
|
17348
|
-
"description": "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
|
|
17392
|
+
"description": "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; when the viewer may write appointments, 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; read-only viewers see the list and projection only, under a lock note, with no Book. 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). Projected bands open a modal list of original options by click, Enter or Space; only an explicit Book action uses the finder booking path. Read-only viewers can scroll those options without Book. Dismissal restores focus to the band.",
|
|
17349
17393
|
"descriptionKey": "ui.agent.calendar.workflows.findFreeSlot",
|
|
17350
17394
|
"uiActions": [
|
|
17351
17395
|
"collapsible.toggle",
|
|
@@ -17373,7 +17417,7 @@
|
|
|
17373
17417
|
{
|
|
17374
17418
|
"name": "triage_online_booking",
|
|
17375
17419
|
"safety": "phi",
|
|
17376
|
-
"description": "
|
|
17420
|
+
"description": "Review the online-bookings queue independently of the visible dates. The host owns membership and loading/error state. Show a row on the grid; completion is available only when the host enables it and the user can edit. Review-only rows remain in the queue on selection and cannot be dragged, resized or edited. Unknown last-seen data never marks a booking New. Completing writes patient-identifiable data.",
|
|
17377
17421
|
"descriptionKey": "ui.agent.calendar.workflows.triageOnlineBooking",
|
|
17378
17422
|
"uiActions": [
|
|
17379
17423
|
"calendar.focus_event",
|