@alfadocs/ui-kit 0.94.0 → 0.96.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/_chunks/{apexcharts-theme-fAQXLIMW.js → apexcharts-theme-B_AxGC_h.js} +25 -20
  2. package/dist/_chunks/chart-DR68TJD5.js +705 -0
  3. package/dist/_chunks/{date-range-picker-Cfv4Sr63.js → date-range-picker-pEG3Ln3i.js} +314 -297
  4. package/dist/_chunks/{link-cell-renderer-_LDZhY4r.js → link-cell-renderer-flfZh2qY.js} +2 -2
  5. package/dist/_chunks/{patient-table-CFM92QqU.js → patient-table-CvZTIM2R.js} +2 -2
  6. package/dist/_chunks/{radiograph-panel.agent-DDnDGVpN.js → radiograph-panel.agent-AsXJBr1p.js} +2 -2
  7. package/dist/_chunks/signature-request-BzXTV_RH.js +403 -0
  8. package/dist/_chunks/{sparkline-o6JH4O66.js → sparkline-DcXqRZoq.js} +2 -2
  9. package/dist/agent-catalog.json +10 -6
  10. package/dist/agent-i18n/en.json +1 -1
  11. package/dist/components/chart/chart.d.ts +12 -5
  12. package/dist/components/chart/index.js +1 -1
  13. package/dist/components/data-table/index.js +1 -1
  14. package/dist/components/date-range-picker/date-range-picker.d.ts +10 -1
  15. package/dist/components/date-range-picker/index.js +1 -1
  16. package/dist/components/patient-table/index.js +1 -1
  17. package/dist/components/radiograph-panel/index.js +1 -1
  18. package/dist/components/sparkline/index.js +1 -1
  19. package/dist/i18n/locales/ar.d.ts +3 -1
  20. package/dist/i18n/locales/ar.js +3 -1
  21. package/dist/i18n/locales/de.d.ts +3 -1
  22. package/dist/i18n/locales/de.js +3 -1
  23. package/dist/i18n/locales/el.d.ts +3 -1
  24. package/dist/i18n/locales/el.js +3 -1
  25. package/dist/i18n/locales/en.d.ts +3 -1
  26. package/dist/i18n/locales/en.js +3 -1
  27. package/dist/i18n/locales/es.d.ts +3 -1
  28. package/dist/i18n/locales/es.js +3 -1
  29. package/dist/i18n/locales/fr.d.ts +3 -1
  30. package/dist/i18n/locales/fr.js +3 -1
  31. package/dist/i18n/locales/hi.d.ts +3 -1
  32. package/dist/i18n/locales/hi.js +3 -1
  33. package/dist/i18n/locales/it.d.ts +3 -1
  34. package/dist/i18n/locales/it.js +3 -1
  35. package/dist/i18n/locales/ja.d.ts +3 -1
  36. package/dist/i18n/locales/ja.js +3 -1
  37. package/dist/i18n/locales/nl.d.ts +3 -1
  38. package/dist/i18n/locales/nl.js +3 -1
  39. package/dist/i18n/locales/pl.d.ts +3 -1
  40. package/dist/i18n/locales/pl.js +3 -1
  41. package/dist/i18n/locales/pt.d.ts +3 -1
  42. package/dist/i18n/locales/pt.js +3 -1
  43. package/dist/i18n/locales/ro.d.ts +3 -1
  44. package/dist/i18n/locales/ro.js +3 -1
  45. package/dist/i18n/locales/ru.d.ts +3 -1
  46. package/dist/i18n/locales/ru.js +3 -1
  47. package/dist/i18n/locales/sq.d.ts +3 -1
  48. package/dist/i18n/locales/sq.js +3 -1
  49. package/dist/i18n/locales/sv.d.ts +3 -1
  50. package/dist/i18n/locales/sv.js +3 -1
  51. package/dist/i18n/locales/tr.d.ts +3 -1
  52. package/dist/i18n/locales/tr.js +3 -1
  53. package/dist/i18n/locales/zh.d.ts +3 -1
  54. package/dist/i18n/locales/zh.js +3 -1
  55. package/dist/index.js +7 -7
  56. package/dist/locales/ar.json +3 -1
  57. package/dist/locales/de.json +3 -1
  58. package/dist/locales/el.json +3 -1
  59. package/dist/locales/en.json +3 -1
  60. package/dist/locales/es.json +3 -1
  61. package/dist/locales/fr.json +3 -1
  62. package/dist/locales/hi.json +3 -1
  63. package/dist/locales/it.json +3 -1
  64. package/dist/locales/ja.json +3 -1
  65. package/dist/locales/nl.json +3 -1
  66. package/dist/locales/pl.json +3 -1
  67. package/dist/locales/pt.json +3 -1
  68. package/dist/locales/ro.json +3 -1
  69. package/dist/locales/ru.json +3 -1
  70. package/dist/locales/sq.json +3 -1
  71. package/dist/locales/sv.json +3 -1
  72. package/dist/locales/tr.json +3 -1
  73. package/dist/locales/zh.json +3 -1
  74. package/dist/patterns/signature-request/index.d.ts +1 -1
  75. package/dist/patterns/signature-request/index.js +1 -1
  76. package/dist/patterns/signature-request/signature-request.d.ts +30 -3
  77. package/dist/tokens/apexcharts-theme.d.ts +19 -33
  78. package/dist/tokens.css +1 -1
  79. package/package.json +1 -1
  80. package/dist/_chunks/chart-DqxVCm1I.js +0 -664
  81. package/dist/_chunks/signature-request-D_6jgDZd.js +0 -324
@@ -1,7 +1,7 @@
1
1
  import { jsx as u, jsxs as k } from "react/jsx-runtime";
2
2
  import { useState as w, useEffect as R, useMemo as z } from "react";
3
3
  import { useGridFilter as q } from "ag-grid-react";
4
- import { D as H } from "./date-range-picker-Cfv4Sr63.js";
4
+ import { D as H } from "./date-range-picker-pEG3Ln3i.js";
5
5
  import { useTranslation as O } from "react-i18next";
6
6
  import { C as Z } from "./checkbox-BuZ1u__2.js";
7
7
  import { B as D } from "./button-CPGiR_bH.js";
@@ -725,4 +725,4 @@ export {
725
725
  Oe as f,
726
726
  Pe as g
727
727
  };
728
- //# sourceMappingURL=link-cell-renderer-_LDZhY4r.js.map
728
+ //# sourceMappingURL=link-cell-renderer-flfZh2qY.js.map
@@ -4,7 +4,7 @@ import { useTranslation as $ } from "react-i18next";
4
4
  import { a as p, T as b, A as be, d as ne, D as P, e as ge } from "./actions-cell-renderer-DaL80uqL.js";
5
5
  import { S as Ce } from "./select-BW5ecXlX.js";
6
6
  import { u as ve } from "./registry-DvAUVLHh.js";
7
- import { I as Ne, L as we, b as L, a as _, c as U, N as H, d as F, S as R, T as ie, D as K, C as Te, g as Fe, f as Re, U as Ie, e as ye } from "./link-cell-renderer-_LDZhY4r.js";
7
+ import { I as Ne, L as we, b as L, a as _, c as U, N as H, d as F, S as R, T as ie, D as K, C as Te, g as Fe, f as Re, U as Ie, e as ye } from "./link-cell-renderer-flfZh2qY.js";
8
8
  import { B as ae } from "./badge-DCOqV9mI.js";
9
9
  import { c as Pe } from "./index-D2ZczOXr.js";
10
10
  import { T as We } from "./timestamp-BV2lC-wV.js";
@@ -1097,4 +1097,4 @@ export {
1097
1097
  q as g,
1098
1098
  tt as u
1099
1099
  };
1100
- //# sourceMappingURL=patient-table-CFM92QqU.js.map
1100
+ //# sourceMappingURL=patient-table-CvZTIM2R.js.map
@@ -9,7 +9,7 @@ import { F as V } from "./form-field-M5UpX65Z.js";
9
9
  import { T as oe } from "./text-area-Bt3p7Pt0.js";
10
10
  import { F as de } from "./file-upload-CwxdqkMK.js";
11
11
  import { D as te } from "./date-picker-BP_W6VtE.js";
12
- import { D as le } from "./date-range-picker-Cfv4Sr63.js";
12
+ import { D as le } from "./date-range-picker-pEG3Ln3i.js";
13
13
  import { E } from "./empty-state-CrLsi0XI.js";
14
14
  import { P as ne } from "./panel-header-D313n_9-.js";
15
15
  import { c as $ } from "./createLucideIcon-DhHxpK9K.js";
@@ -533,4 +533,4 @@ export {
533
533
  qe as R,
534
534
  Ae as r
535
535
  };
536
- //# sourceMappingURL=radiograph-panel.agent-DDnDGVpN.js.map
536
+ //# sourceMappingURL=radiograph-panel.agent-AsXJBr1p.js.map
@@ -0,0 +1,403 @@
1
+ import { jsx as a, jsxs as r } from "react/jsx-runtime";
2
+ import { forwardRef as pe, useRef as A, useState as S, useEffect as J } from "react";
3
+ import { useTranslation as ve } from "react-i18next";
4
+ import { D as m } from "./dialog-UbKJCi1X.js";
5
+ import { B as k } from "./button-CPGiR_bH.js";
6
+ import { I as ge } from "./icon-button-C_kbcd7I.js";
7
+ import { C as K } from "./checkbox-BuZ1u__2.js";
8
+ import { a as fe } from "./whatsapp-button-BIy6NaJK.js";
9
+ import { S as Q } from "./select-BW5ecXlX.js";
10
+ import { S as xe } from "./switch-OILsBLWo.js";
11
+ import { A as y } from "./alert-Cxaqd-QO.js";
12
+ import { I as Re } from "./info-tip-Bxk3w6UM.js";
13
+ import { S as be } from "./separator-CYU_bGFn.js";
14
+ import { A as Y } from "./avatar-BNQNhoyL.js";
15
+ import { c as ae } from "./createLucideIcon-DhHxpK9K.js";
16
+ import { P as qe } from "./plus-DzMQ_c6b.js";
17
+ import { X as Ne } from "./x-B5YnXwCz.js";
18
+ import { P as we } from "./pen-line-D0De5zdl.js";
19
+ import { M as Ce } from "./mail-BqXVF2zH.js";
20
+ import { M as Ie } from "./message-square-Bye4ATvx.js";
21
+ /**
22
+ * @license lucide-react v1.22.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ */
27
+ const Se = [
28
+ ["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", ry: "2", key: "76otgf" }],
29
+ ["line", { x1: "12", x2: "12.01", y1: "18", y2: "18", key: "1dp563" }]
30
+ ], ke = ae("tablet", Se);
31
+ /**
32
+ * @license lucide-react v1.22.0 - ISC
33
+ *
34
+ * This source code is licensed under the ISC license.
35
+ * See the LICENSE file in the root directory of this source tree.
36
+ */
37
+ const ye = [
38
+ ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
39
+ ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }],
40
+ ["line", { x1: "19", x2: "19", y1: "8", y2: "14", key: "1bvyxn" }],
41
+ ["line", { x1: "22", x2: "16", y1: "11", y2: "11", key: "1shjgl" }]
42
+ ], ze = ae("user-plus", ye), v = "__assign-later__", Z = [
43
+ "sms",
44
+ "email",
45
+ "whatsapp",
46
+ "on-device"
47
+ ];
48
+ function ee(h, z) {
49
+ var c;
50
+ return ((c = h.find((o) => o.value === z)) == null ? void 0 : c.label) ?? "";
51
+ }
52
+ const Oe = pe(
53
+ ({
54
+ open: h,
55
+ onOpenChange: z,
56
+ operators: c,
57
+ signerOptions: o,
58
+ currentOperatorId: O,
59
+ allowAssignLater: _ = !0,
60
+ initialOperatorId: B,
61
+ initialOperatorChannel: L,
62
+ initialSigners: D,
63
+ maxSigners: se = 2,
64
+ busy: i = !1,
65
+ error: j,
66
+ title: ne,
67
+ description: te,
68
+ onRequestSignature: le,
69
+ contentProps: re
70
+ }, ie) => {
71
+ const { t: n } = ve(), E = A(0), F = A(null), H = (e) => {
72
+ var l;
73
+ const s = (l = o.find(
74
+ (d) => d.value === e
75
+ )) == null ? void 0 : l.availableChannels;
76
+ return s && s.length > 0 ? Z.filter((d) => s.includes(d)) : Z;
77
+ }, M = (e, s) => {
78
+ const l = H(e);
79
+ return l.includes(s) ? s : l[0];
80
+ }, U = () => {
81
+ var e, s;
82
+ return B === null ? _ ? v : ((e = c[0]) == null ? void 0 : e.value) ?? v : B ?? ((s = c[0]) == null ? void 0 : s.value) ?? (_ ? v : "");
83
+ }, V = () => (D && D.length > 0 ? D : o.length > 0 ? [
84
+ {
85
+ signerId: o[0].value,
86
+ channel: M(o[0].value, "on-device")
87
+ }
88
+ ] : []).map((s) => ({ ...s, rowId: E.current++ })), g = (e) => {
89
+ var s;
90
+ return ((s = c.find((l) => l.value === e)) == null ? void 0 : s.defaultChannel) ?? "email";
91
+ }, W = (e, s) => L === "on-device" ? s.some((l) => l.channel === "on-device") ? "on-device" : g(e) : L ?? g(e), [p, T] = S(U), [u, b] = S(V), [q, f] = S(
92
+ () => W(p, u)
93
+ ), [G, x] = S(null), X = A(h);
94
+ J(() => {
95
+ if (h && !X.current) {
96
+ const e = U(), s = V();
97
+ T(e), b(s), f(W(e, s)), x(null);
98
+ }
99
+ X.current = h;
100
+ }, [h]);
101
+ const N = u.some(
102
+ (e) => e.channel === "on-device"
103
+ );
104
+ J(() => {
105
+ if (q === "on-device" && !N) {
106
+ const e = g(p);
107
+ f(e), x(e);
108
+ }
109
+ }, [q, N, p]);
110
+ const de = _ ? [
111
+ ...c,
112
+ { value: v, label: n("signatureRequest.assignLater") }
113
+ ] : c, w = p === v, R = {
114
+ sms: {
115
+ label: n("signatureRequest.viaSms"),
116
+ icon: /* @__PURE__ */ a(Ie, { className: "ds:size-4", "aria-hidden": !0 })
117
+ },
118
+ email: {
119
+ label: n("signatureRequest.viaEmail"),
120
+ icon: /* @__PURE__ */ a(Ce, { className: "ds:size-4", "aria-hidden": !0 })
121
+ },
122
+ whatsapp: {
123
+ label: n("signatureRequest.viaWhatsapp"),
124
+ icon: /* @__PURE__ */ a(fe, { className: "ds:size-4", "aria-hidden": !0 })
125
+ },
126
+ "on-device": {
127
+ label: n("signatureRequest.onThisDevice"),
128
+ icon: /* @__PURE__ */ a(ke, { className: "ds:size-4", "aria-hidden": !0 })
129
+ }
130
+ }, ce = [
131
+ { value: "sms", ...R.sms },
132
+ { value: "email", ...R.email },
133
+ {
134
+ value: "on-device",
135
+ ...R["on-device"],
136
+ disabled: !N,
137
+ hint: N ? void 0 : n("signatureRequest.onDeviceUnavailableHint")
138
+ }
139
+ ], $ = u.map((e) => e.signerId), C = o.find(
140
+ (e) => !$.includes(e.value)
141
+ ), oe = !i && u.length < se && C !== void 0, P = (e, s) => {
142
+ b(
143
+ (l) => l.map(
144
+ (d) => d.rowId === e ? { ...d, ...s } : d
145
+ )
146
+ );
147
+ }, ue = () => {
148
+ C && b((e) => [
149
+ ...e,
150
+ {
151
+ signerId: C.value,
152
+ channel: M(C.value, "sms"),
153
+ rowId: E.current++
154
+ }
155
+ ]);
156
+ }, me = (e) => {
157
+ var s;
158
+ (s = F.current) == null || s.focus(), b(
159
+ (l) => l.filter((d) => d.rowId !== e)
160
+ );
161
+ }, he = () => {
162
+ le({
163
+ operatorId: w ? null : p,
164
+ operatorChannel: w ? null : q,
165
+ signers: u.map(({ rowId: e, ...s }) => s)
166
+ });
167
+ };
168
+ return /* @__PURE__ */ a("div", { ref: ie, className: "ds:contents", "data-component": "signature-request", children: /* @__PURE__ */ a(m, { open: h, onOpenChange: z, children: /* @__PURE__ */ r(m.Content, { size: "lg", hideCloseButton: !0, ...re, children: [
169
+ /* @__PURE__ */ r(m.Header, { children: [
170
+ /* @__PURE__ */ a(m.Title, { children: ne ?? n("signatureRequest.title") }),
171
+ /* @__PURE__ */ a(m.Description, { children: te ?? n("signatureRequest.noSignedVersions") })
172
+ ] }),
173
+ /* @__PURE__ */ r(m.Body, { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
174
+ /* @__PURE__ */ r("section", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]", children: [
175
+ /* @__PURE__ */ r("div", { className: "ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]", children: [
176
+ /* @__PURE__ */ a("p", { className: "type-eyebrow ds:text-start ds:text-[color:var(--muted-foreground)]", children: n("signatureRequest.operatorSection") }),
177
+ O !== void 0 ? /* @__PURE__ */ a(
178
+ k,
179
+ {
180
+ intent: "primary",
181
+ size: "sm",
182
+ startIcon: /* @__PURE__ */ a(ze, {}),
183
+ disabled: i,
184
+ onClick: () => {
185
+ T(O), f(
186
+ g(O)
187
+ ), x(null);
188
+ },
189
+ children: n("signatureRequest.assignToMe")
190
+ }
191
+ ) : null
192
+ ] }),
193
+ /* @__PURE__ */ r("div", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
194
+ /* @__PURE__ */ a(
195
+ Y,
196
+ {
197
+ "aria-hidden": "true",
198
+ name: w ? void 0 : ee(c, p),
199
+ size: "sm"
200
+ }
201
+ ),
202
+ /* @__PURE__ */ a("div", { className: "ds:min-w-0 ds:flex-1 ds:text-start", children: /* @__PURE__ */ a(
203
+ Q,
204
+ {
205
+ options: de,
206
+ value: p,
207
+ onValueChange: (e) => {
208
+ e && (T(e), f(
209
+ e === v ? "email" : g(e)
210
+ ), x(null));
211
+ },
212
+ required: !0,
213
+ disabled: i,
214
+ placeholder: n("signatureRequest.operatorPlaceholder"),
215
+ "aria-label": n("signatureRequest.operatorSection")
216
+ }
217
+ ) })
218
+ ] }),
219
+ w ? null : /* @__PURE__ */ a(
220
+ "div",
221
+ {
222
+ role: "group",
223
+ "aria-label": n("signatureRequest.operatorChannelLabel"),
224
+ className: "ds:flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-lg)] ds:gap-y-[var(--spacing-sm)] ds:ps-[var(--spacing-xl)]",
225
+ children: ce.map((e) => /* @__PURE__ */ r(
226
+ "span",
227
+ {
228
+ className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]",
229
+ children: [
230
+ /* @__PURE__ */ a(
231
+ K,
232
+ {
233
+ checked: q === e.value,
234
+ disabled: i || e.disabled,
235
+ onCheckedChange: (s) => {
236
+ s === !0 && (f(e.value), x(null));
237
+ },
238
+ label: /* @__PURE__ */ r("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]", children: [
239
+ /* @__PURE__ */ a(
240
+ "span",
241
+ {
242
+ "aria-hidden": "true",
243
+ className: "ds:text-[var(--accent)]",
244
+ children: e.icon
245
+ }
246
+ ),
247
+ e.label
248
+ ] })
249
+ }
250
+ ),
251
+ e.hint ? /* @__PURE__ */ a(Re, { size: "sm", content: e.hint }) : null
252
+ ]
253
+ },
254
+ e.value
255
+ ))
256
+ }
257
+ ),
258
+ /* @__PURE__ */ a("span", { role: "status", className: "ds:sr-only", children: G ? n("signatureRequest.operatorChannelReverted", {
259
+ channel: R[G].label
260
+ }) : null })
261
+ ] }),
262
+ /* @__PURE__ */ a(be, { decorative: !0 }),
263
+ /* @__PURE__ */ r("section", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:text-start", children: [
264
+ /* @__PURE__ */ r("div", { className: "ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]", children: [
265
+ /* @__PURE__ */ a("p", { className: "type-eyebrow ds:text-[color:var(--muted-foreground)]", children: n("signatureRequest.signersSection") }),
266
+ /* @__PURE__ */ a(
267
+ k,
268
+ {
269
+ ref: F,
270
+ intent: "primary",
271
+ size: "sm",
272
+ startIcon: /* @__PURE__ */ a(qe, {}),
273
+ disabled: !oe,
274
+ onClick: ue,
275
+ children: n("signatureRequest.addSigner")
276
+ }
277
+ )
278
+ ] }),
279
+ u.map((e) => {
280
+ const s = o.filter(
281
+ (t) => t.value === e.signerId || !$.includes(t.value)
282
+ ), l = ee(o, e.signerId), d = H(e.signerId).map(
283
+ (t) => ({ value: t, ...R[t] })
284
+ );
285
+ return /* @__PURE__ */ r(
286
+ "div",
287
+ {
288
+ role: "group",
289
+ "aria-label": l,
290
+ className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]",
291
+ children: [
292
+ /* @__PURE__ */ r("div", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
293
+ /* @__PURE__ */ a(Y, { "aria-hidden": "true", name: l, size: "sm" }),
294
+ /* @__PURE__ */ a("div", { className: "ds:min-w-0 ds:flex-1", children: /* @__PURE__ */ a(
295
+ Q,
296
+ {
297
+ options: s,
298
+ value: e.signerId,
299
+ onValueChange: (t) => {
300
+ if (!t) return;
301
+ const I = M(
302
+ t,
303
+ e.channel
304
+ );
305
+ P(e.rowId, {
306
+ signerId: t,
307
+ channel: I,
308
+ skipOtp: I === "on-device" ? e.skipOtp : void 0
309
+ });
310
+ },
311
+ required: !0,
312
+ disabled: i,
313
+ placeholder: n(
314
+ "signatureRequest.signerPlaceholder"
315
+ ),
316
+ "aria-label": n("signatureRequest.signerPlaceholder")
317
+ }
318
+ ) }),
319
+ u.length > 1 ? /* @__PURE__ */ a(
320
+ ge,
321
+ {
322
+ intent: "ghost",
323
+ size: "sm",
324
+ icon: /* @__PURE__ */ a(Ne, {}),
325
+ disabled: i,
326
+ "aria-label": n("signatureRequest.removeSigner"),
327
+ onClick: () => me(e.rowId)
328
+ }
329
+ ) : null
330
+ ] }),
331
+ /* @__PURE__ */ a(
332
+ "div",
333
+ {
334
+ role: "group",
335
+ "aria-label": n("signatureRequest.channelLabel"),
336
+ className: "ds:flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-lg)] ds:gap-y-[var(--spacing-sm)] ds:ps-[var(--spacing-xl)]",
337
+ children: d.map((t) => /* @__PURE__ */ a(
338
+ K,
339
+ {
340
+ checked: e.channel === t.value,
341
+ disabled: i,
342
+ onCheckedChange: (I) => I === !0 && P(e.rowId, {
343
+ channel: t.value,
344
+ skipOtp: void 0
345
+ }),
346
+ label: /* @__PURE__ */ r("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]", children: [
347
+ /* @__PURE__ */ a(
348
+ "span",
349
+ {
350
+ "aria-hidden": "true",
351
+ className: "ds:text-[var(--accent)]",
352
+ children: t.icon
353
+ }
354
+ ),
355
+ t.label
356
+ ] })
357
+ },
358
+ t.value
359
+ ))
360
+ }
361
+ ),
362
+ e.channel === "on-device" ? /* @__PURE__ */ a("div", { className: "ds:ps-[var(--spacing-xl)]", children: /* @__PURE__ */ a(
363
+ xe,
364
+ {
365
+ label: n("signatureRequest.noOtp"),
366
+ checked: e.skipOtp === !0,
367
+ disabled: i,
368
+ onCheckedChange: (t) => P(e.rowId, { skipOtp: t })
369
+ }
370
+ ) }) : null
371
+ ]
372
+ },
373
+ e.rowId
374
+ );
375
+ })
376
+ ] }),
377
+ u.some(
378
+ (e) => e.channel === "on-device" && e.skipOtp === !0
379
+ ) ? /* @__PURE__ */ a(y, { variant: "warning", children: /* @__PURE__ */ a(y.Description, { children: n("signatureRequest.noOtpWarning") }) }) : null,
380
+ j ? /* @__PURE__ */ a(y, { variant: "error", children: /* @__PURE__ */ a(y.Description, { children: j }) }) : null
381
+ ] }),
382
+ /* @__PURE__ */ r(m.Footer, { children: [
383
+ /* @__PURE__ */ a(
384
+ k,
385
+ {
386
+ intent: "primary",
387
+ startIcon: /* @__PURE__ */ a(we, {}),
388
+ onClick: he,
389
+ disabled: i || u.length === 0,
390
+ loading: i,
391
+ children: n("signatureRequest.requestSignature")
392
+ }
393
+ ),
394
+ /* @__PURE__ */ a(m.Close, { asChild: !0, children: /* @__PURE__ */ a(k, { intent: "outline", disabled: i, children: n("signatureRequest.close") }) })
395
+ ] })
396
+ ] }) }) });
397
+ }
398
+ );
399
+ Oe.displayName = "SignatureRequestModal";
400
+ export {
401
+ Oe as S
402
+ };
403
+ //# sourceMappingURL=signature-request-BzXTV_RH.js.map
@@ -4,7 +4,7 @@ import { c as Z } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as $ } from "react-i18next";
5
5
  import q from "react-apexcharts";
6
6
  import R from "apexcharts";
7
- import { g as U, u as J } from "./apexcharts-theme-fAQXLIMW.js";
7
+ import { g as U, u as J } from "./apexcharts-theme-B_AxGC_h.js";
8
8
  import { u as Q } from "./registry-DvAUVLHh.js";
9
9
  function X(n) {
10
10
  if (n.length < 2)
@@ -280,4 +280,4 @@ export {
280
280
  Y as s,
281
281
  X as u
282
282
  };
283
- //# sourceMappingURL=sparkline-o6JH4O66.js.map
283
+ //# sourceMappingURL=sparkline-DcXqRZoq.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "packageVersion": "0.94.0",
3
+ "packageVersion": "0.96.0",
4
4
  "components": [
5
5
  {
6
6
  "kind": "component",
@@ -16501,6 +16501,14 @@
16501
16501
  "component": "select",
16502
16502
  "as": "operatorSigner"
16503
16503
  },
16504
+ {
16505
+ "component": "checkbox",
16506
+ "as": "operatorChannel"
16507
+ },
16508
+ {
16509
+ "component": "info-tip",
16510
+ "as": "operatorChannelHint"
16511
+ },
16504
16512
  {
16505
16513
  "component": "select",
16506
16514
  "as": "signerPerson",
@@ -16516,10 +16524,6 @@
16516
16524
  "as": "otpWaiver",
16517
16525
  "entity": "signer"
16518
16526
  },
16519
- {
16520
- "component": "alert",
16521
- "as": "operatorHint"
16522
- },
16523
16527
  {
16524
16528
  "component": "alert",
16525
16529
  "as": "otpWarning",
@@ -16581,7 +16585,7 @@
16581
16585
  {
16582
16586
  "name": "choose_delivery_channel",
16583
16587
  "safety": "write",
16584
- "description": "Choose how each signer's request is delivered via the per-row channel checkboxes (mutually exclusive — checking one channel unchecks the others): SMS, e-mail, WhatsApp, or signing on this device. On-device signers sign sequentially in roster order.",
16588
+ "description": "Choose how each signer's request is delivered via the per-row channel checkboxes (mutually exclusive — checking one channel unchecks the others): SMS, e-mail, WhatsApp, or signing on this device. On-device signers sign sequentially in roster order. The assigned operator has the same mutually exclusive checkboxes with SMS, e-mail, or on this device — the operator's own system-defined channel arrives pre-checked, and the on-device option is enabled only while a patient signer also signs on this device (an info tip explains the greyed-out state; an automatic fallback to the operator's default is announced via a live region when the last on-device patient row leaves).",
16585
16589
  "descriptionKey": "ui.agent.signatureRequest.workflows.chooseDeliveryChannel",
16586
16590
  "uiActions": [
16587
16591
  "checkbox.set_checked"
@@ -1608,7 +1608,7 @@
1608
1608
  "workflows": {
1609
1609
  "assignOperator": "Pick the operator who must counter-sign (or \"Assign later\" to leave the request unassigned). \"Assign to me\" claims it for the signed-in operator.",
1610
1610
  "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.",
1611
- "chooseDeliveryChannel": "Choose how each signer's request is delivered via the per-row channel checkboxes (mutually exclusive — checking one channel unchecks the others): SMS, e-mail, WhatsApp, or signing on this device. On-device signers sign sequentially in roster order.",
1611
+ "chooseDeliveryChannel": "Choose how each signer's request is delivered via the per-row channel checkboxes (mutually exclusive — checking one channel unchecks the others): SMS, e-mail, WhatsApp, or signing on this device. On-device signers sign sequentially in roster order. The assigned operator has the same mutually exclusive checkboxes with SMS, e-mail, or on this device — the operator's own system-defined channel arrives pre-checked, and the on-device option is enabled only while a patient signer also signs on this device (an info tip explains the greyed-out state; an automatic fallback to the operator's default is announced via a live region when the last on-device patient row leaves).",
1612
1612
  "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.",
1613
1613
  "requestSignature": "Send the signature request. Notifies every roster signer over their selected channel and hands the submission to the host.",
1614
1614
  "dismiss": "Close the modal without sending a signature request. Discards the in-progress operator, roster, channel, and OTP choices."
@@ -10,11 +10,18 @@ export interface ChartSeries {
10
10
  * Marks this series as a secondary "compare" overlay — e.g. the previous
11
11
  * period in a current-vs-previous financial view. Rendered visually
12
12
  * subordinate and colour-blind-safe, distinguished from primary series by
13
- * BOTH a non-colour cue AND a muted hue (never colour alone):
14
- * - line / area: DASHED stroke in a resolved neutral grey (the chart echo
15
- * of the calendar compare band's dashed block-end rule).
16
- * - bar: HATCHED (slantedLines) grey fill bars have a zero-width stroke
17
- * and cannot dash, so the non-colour cue lives in the fill texture.
13
+ * BOTH a non-colour cue AND a lighter shade of the SAME hue (never colour
14
+ * alone). The compare series inherits its PAIRED primary's colour (k-th
15
+ * compare pairs with the k-th primary, by order), then:
16
+ * - line / area: a round-DOTTED stroke in the paired-primary colour (the
17
+ * dotted-vs-solid pattern is the non-colour cue); area also gets a tinted
18
+ * fill at `--chart-compare-fill-opacity`.
19
+ * - bar: a tinted fill (paired-primary hue at `--chart-compare-fill-opacity`)
20
+ * under a full-strength DOTTED outline that is OPEN at the baseline — so a
21
+ * compare bar reads as an outlined "ghost" of its solid primary.
22
+ * The legend swatch shows the lighter tint (via `legend.markers.fillColors`),
23
+ * and the series name (e.g. "Revenue (previous period)") remains the primary
24
+ * signal in the legend and the screen-reader table.
18
25
  * Only meaningful on axis types (line / area / bar); it is structurally
19
26
  * impossible on pie / donut / radialBar (their `series` is `number[]`, which
20
27
  * cannot carry this field), so the axis-only invariant is enforced by the
@@ -1,4 +1,4 @@
1
- import { C as t, c as s, a as c } from "../../_chunks/chart-DqxVCm1I.js";
1
+ import { C as t, c as s, a as c } from "../../_chunks/chart-DR68TJD5.js";
2
2
  export {
3
3
  t as Chart,
4
4
  s as chartAgent,
@@ -1,6 +1,6 @@
1
1
  import { A as r, D as l, T as t, a as s, b as n, c as o, d, e as i, f as C } from "../../_chunks/actions-cell-renderer-DaL80uqL.js";
2
2
  import { B as T, C as F, E as g, a as b, R as u, T as c, b as m, r as f, u as x } from "../../_chunks/editable-currency-cell-renderer-Dus_sBvX.js";
3
- import { C as p, D as h, a as y, b as E, I as S, L as A, N as L, c as N, S as B, d as I, e as P, T as U, f as W, g as k, U as v } from "../../_chunks/link-cell-renderer-_LDZhY4r.js";
3
+ import { C as p, D as h, a as y, b as E, I as S, L as A, N as L, c as N, S as B, d as I, e as P, T as U, f as W, g as k, U as v } from "../../_chunks/link-cell-renderer-flfZh2qY.js";
4
4
  export {
5
5
  r as ActionsCellRenderer,
6
6
  T as BalanceCellRenderer,
@@ -117,7 +117,16 @@ export interface DateRangePickerProps extends Pick<VariantProps<typeof triggerVa
117
117
  * `onCompareChange`.
118
118
  */
119
119
  compare?: boolean;
120
- /** Start with compare enabled (only meaningful when `compare` is set). */
120
+ /**
121
+ * Controlled checked state of the compare toggle — the APPLIED compare
122
+ * on/off value. Pair with `onCompareChange` and drive it from the consumer
123
+ * so a reopened picker reflects the applied state. When omitted the toggle
124
+ * is uncontrolled and seeded from `defaultCompare`. This is distinct from
125
+ * `compare`, which only decides whether the control renders. Only
126
+ * meaningful when `compare` is set.
127
+ */
128
+ compareEnabled?: boolean;
129
+ /** Start with compare enabled — uncontrolled initial checked state (only meaningful when `compare` is set). */
121
130
  defaultCompare?: boolean;
122
131
  defaultCompareMode?: DateRangeCompareMode;
123
132
  onCompareChange?: (enabled: boolean, compareRange?: DateRangeValue) => void;
@@ -1,4 +1,4 @@
1
- import { D as r, d as t } from "../../_chunks/date-range-picker-Cfv4Sr63.js";
1
+ import { D as r, d as t } from "../../_chunks/date-range-picker-pEG3Ln3i.js";
2
2
  export {
3
3
  r as DateRangePicker,
4
4
  t as dateRangePickerAgent
@@ -1,4 +1,4 @@
1
- import { B as s, C as l, N as t, P as n, a as C, b as i, g as o, u } from "../../_chunks/patient-table-CFM92QqU.js";
1
+ import { B as s, C as l, N as t, P as n, a as C, b as i, g as o, u } from "../../_chunks/patient-table-CvZTIM2R.js";
2
2
  export {
3
3
  s as BalanceBadgeCell,
4
4
  l as CarePlanStatusCell,
@@ -1,4 +1,4 @@
1
- import { R as o, I as e, r as n } from "../../_chunks/radiograph-panel.agent-DDnDGVpN.js";
1
+ import { R as o, I as e, r as n } from "../../_chunks/radiograph-panel.agent-AsXJBr1p.js";
2
2
  export {
3
3
  o as RadiographPanel,
4
4
  e as RadiographPanelIcon,
@@ -1,4 +1,4 @@
1
- import { S as r, s, u as n } from "../../_chunks/sparkline-o6JH4O66.js";
1
+ import { S as r, s, u as n } from "../../_chunks/sparkline-DcXqRZoq.js";
2
2
  export {
3
3
  r as Sparkline,
4
4
  s as sparklineAgent,
@@ -3030,7 +3030,9 @@ export declare const arUi: {
3030
3030
  readonly assignToMe: "إسناد إليّ";
3031
3031
  readonly operatorPlaceholder: "اختر مشغّلاً";
3032
3032
  readonly assignLater: "الإسناد لاحقاً";
3033
- readonly operatorHint: "سيتم إرسال طلب التوقيع إلى المشغّل عبر البريد الإلكتروني أو الرسائل النصية حسب إعداداته.";
3033
+ readonly operatorChannelLabel: "قناة توقيع المشغّل";
3034
+ readonly onDeviceUnavailableHint: "متاح عندما يوقّع واحد على الأقل من موقّعي المريض على هذا الجهاز.";
3035
+ readonly operatorChannelReverted: "تمت إعادة تعيين قناة توقيع المشغّل إلى {{channel}} — لا يوقّع أي من موقّعي المريض على هذا الجهاز.";
3034
3036
  readonly signersSection: "موقّعو المريض";
3035
3037
  readonly signerPlaceholder: "اختر موقّعاً";
3036
3038
  readonly channelLabel: "قناة التوقيع";
@@ -3004,7 +3004,9 @@ const e = {
3004
3004
  assignToMe: "إسناد إليّ",
3005
3005
  operatorPlaceholder: "اختر مشغّلاً",
3006
3006
  assignLater: "الإسناد لاحقاً",
3007
- operatorHint: "سيتم إرسال طلب التوقيع إلى المشغّل عبر البريد الإلكتروني أو الرسائل النصية حسب إعداداته.",
3007
+ operatorChannelLabel: "قناة توقيع المشغّل",
3008
+ onDeviceUnavailableHint: "متاح عندما يوقّع واحد على الأقل من موقّعي المريض على هذا الجهاز.",
3009
+ operatorChannelReverted: "تمت إعادة تعيين قناة توقيع المشغّل إلى {{channel}} — لا يوقّع أي من موقّعي المريض على هذا الجهاز.",
3008
3010
  signersSection: "موقّعو المريض",
3009
3011
  signerPlaceholder: "اختر موقّعاً",
3010
3012
  channelLabel: "قناة التوقيع",
@@ -3030,7 +3030,9 @@ export declare const deUi: {
3030
3030
  readonly assignToMe: "Mir zuweisen";
3031
3031
  readonly operatorPlaceholder: "Operator auswählen";
3032
3032
  readonly assignLater: "Später zuweisen";
3033
- readonly operatorHint: "Die Signaturanfrage wird dem Operator je nach Einstellung per E-Mail oder SMS gesendet.";
3033
+ readonly operatorChannelLabel: "Signaturkanal des Operators";
3034
+ readonly onDeviceUnavailableHint: "Verfügbar, wenn mindestens ein Patienten-Unterzeichner auf diesem Gerät signiert.";
3035
+ readonly operatorChannelReverted: "Der Signaturkanal des Operators wurde auf {{channel}} zurückgesetzt — kein Patienten-Unterzeichner signiert auf diesem Gerät.";
3034
3036
  readonly signersSection: "Unterzeichner (Patientenseite)";
3035
3037
  readonly signerPlaceholder: "Unterzeichner auswählen";
3036
3038
  readonly channelLabel: "Signaturkanal";