@alfadocs/ui-kit 0.75.0 → 0.78.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 (91) hide show
  1. package/dist/_chunks/{address-fields-COyjgqxA.js → address-fields-7k59FnJ6.js} +2 -2
  2. package/dist/_chunks/{booking-B1Qkcl3c.js → booking-CLmeXtGv.js} +2 -2
  3. package/dist/_chunks/{country-select-DYHDLEjG.js → country-select-BN9nedAp.js} +2 -2
  4. package/dist/_chunks/document-preview-nwfulDEs.js +290 -0
  5. package/dist/_chunks/{file-manager-UF8dkQF1.js → file-manager-DfTG7bxx.js} +394 -399
  6. package/dist/_chunks/flag-Cnmivlrl.js +641 -0
  7. package/dist/_chunks/{header-settings-4cwQzeFc.js → header-settings-DMfdx0Vq.js} +2 -2
  8. package/dist/_chunks/{locale-picker-GNF3lo8K.js → locale-picker-EyvPrwDc.js} +2 -2
  9. package/dist/_chunks/{marketplace-app-shell-D_1tF4La.js → marketplace-app-shell-Bxq1PYAj.js} +2 -2
  10. package/dist/_chunks/{patient-details-DP4wKyq4.js → patient-details-zy76MRh7.js} +3 -3
  11. package/dist/_chunks/periodontal-chart-CYBhr9vc.js +1305 -0
  12. package/dist/_chunks/{phone-input-dtnrvnZf.js → phone-input-D00ZBAm-.js} +2 -2
  13. package/dist/agent-catalog.json +149 -1
  14. package/dist/agent-i18n/en.json +2 -0
  15. package/dist/components/address-fields/index.js +1 -1
  16. package/dist/components/booking/index.js +1 -1
  17. package/dist/components/country-select/index.js +1 -1
  18. package/dist/components/document-preview/document-preview.d.ts +35 -2
  19. package/dist/components/document-preview/index.d.ts +1 -1
  20. package/dist/components/document-preview/index.js +1 -1
  21. package/dist/components/file-manager/index.js +1 -1
  22. package/dist/components/flag/index.js +1 -1
  23. package/dist/components/header-settings/index.js +1 -1
  24. package/dist/components/locale-picker/index.js +1 -1
  25. package/dist/components/patient-details/index.js +1 -1
  26. package/dist/components/periodontal-chart/index.d.ts +2 -2
  27. package/dist/components/periodontal-chart/index.js +8 -7
  28. package/dist/components/periodontal-chart/periodontal-chart-data.d.ts +45 -0
  29. package/dist/components/periodontal-chart/periodontal-chart.d.ts +3 -1
  30. package/dist/components/phone-input/index.js +1 -1
  31. package/dist/i18n/locales/ar.d.ts +8 -1
  32. package/dist/i18n/locales/ar.js +8 -1
  33. package/dist/i18n/locales/de.d.ts +8 -1
  34. package/dist/i18n/locales/de.js +8 -1
  35. package/dist/i18n/locales/el.d.ts +8 -1
  36. package/dist/i18n/locales/el.js +8 -1
  37. package/dist/i18n/locales/en.d.ts +8 -1
  38. package/dist/i18n/locales/en.js +8 -1
  39. package/dist/i18n/locales/es.d.ts +8 -1
  40. package/dist/i18n/locales/es.js +8 -1
  41. package/dist/i18n/locales/fr.d.ts +8 -1
  42. package/dist/i18n/locales/fr.js +8 -1
  43. package/dist/i18n/locales/hi.d.ts +8 -1
  44. package/dist/i18n/locales/hi.js +8 -1
  45. package/dist/i18n/locales/it.d.ts +8 -1
  46. package/dist/i18n/locales/it.js +8 -1
  47. package/dist/i18n/locales/ja.d.ts +8 -1
  48. package/dist/i18n/locales/ja.js +8 -1
  49. package/dist/i18n/locales/nl.d.ts +8 -1
  50. package/dist/i18n/locales/nl.js +8 -1
  51. package/dist/i18n/locales/pl.d.ts +8 -1
  52. package/dist/i18n/locales/pl.js +8 -1
  53. package/dist/i18n/locales/pt.d.ts +8 -1
  54. package/dist/i18n/locales/pt.js +8 -1
  55. package/dist/i18n/locales/ro.d.ts +8 -1
  56. package/dist/i18n/locales/ro.js +8 -1
  57. package/dist/i18n/locales/ru.d.ts +8 -1
  58. package/dist/i18n/locales/ru.js +8 -1
  59. package/dist/i18n/locales/sq.d.ts +8 -1
  60. package/dist/i18n/locales/sq.js +8 -1
  61. package/dist/i18n/locales/sv.d.ts +8 -1
  62. package/dist/i18n/locales/sv.js +8 -1
  63. package/dist/i18n/locales/tr.d.ts +8 -1
  64. package/dist/i18n/locales/tr.js +8 -1
  65. package/dist/i18n/locales/zh.d.ts +8 -1
  66. package/dist/i18n/locales/zh.js +8 -1
  67. package/dist/index.js +217 -216
  68. package/dist/locales/ar.json +8 -1
  69. package/dist/locales/de.json +8 -1
  70. package/dist/locales/el.json +8 -1
  71. package/dist/locales/en.json +8 -1
  72. package/dist/locales/es.json +8 -1
  73. package/dist/locales/fr.json +8 -1
  74. package/dist/locales/hi.json +8 -1
  75. package/dist/locales/it.json +8 -1
  76. package/dist/locales/ja.json +8 -1
  77. package/dist/locales/nl.json +8 -1
  78. package/dist/locales/pl.json +8 -1
  79. package/dist/locales/pt.json +8 -1
  80. package/dist/locales/ro.json +8 -1
  81. package/dist/locales/ru.json +8 -1
  82. package/dist/locales/sq.json +8 -1
  83. package/dist/locales/sv.json +8 -1
  84. package/dist/locales/tr.json +8 -1
  85. package/dist/locales/zh.json +8 -1
  86. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  87. package/dist/tokens.css +2 -1
  88. package/package.json +1 -1
  89. package/dist/_chunks/document-preview-CGSM_au9.js +0 -181
  90. package/dist/_chunks/flag-DZ6V7-hU.js +0 -637
  91. package/dist/_chunks/periodontal-chart-D8hOFmde.js +0 -1173
@@ -2,7 +2,7 @@ import { jsx as s } from "react/jsx-runtime";
2
2
  import { forwardRef as _, useRef as j, useEffect as k, useCallback as E, useMemo as x } from "react";
3
3
  import { c as L } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as N } from "react-i18next";
5
- import { C as O } from "./country-select-DYHDLEjG.js";
5
+ import { C as O } from "./country-select-BN9nedAp.js";
6
6
  import { P as B } from "./province-select-BDywtmL-.js";
7
7
  import { P as q } from "./postal-code-input-BznBxVxf.js";
8
8
  import { C as H } from "./city-input-towzBenY.js";
@@ -243,4 +243,4 @@ export {
243
243
  Z as A,
244
244
  Y as a
245
245
  };
246
- //# sourceMappingURL=address-fields-COyjgqxA.js.map
246
+ //# sourceMappingURL=address-fields-7k59FnJ6.js.map
@@ -10,7 +10,7 @@ import { C as Bt } from "./checkbox-group-CfqMv57d.js";
10
10
  import { D as Et } from "./date-picker-DzQS8mvt.js";
11
11
  import { E as Rt } from "./email-input-Dpe63k0K.js";
12
12
  import { F as Z } from "./form-field-M5UpX65Z.js";
13
- import { P as Vt } from "./phone-input-dtnrvnZf.js";
13
+ import { P as Vt } from "./phone-input-D00ZBAm-.js";
14
14
  import { T as Lt } from "./text-area-Bt3p7Pt0.js";
15
15
  import { T as Ce } from "./text-input-CUvCb6ST.js";
16
16
  import { S as Ft } from "./spinner-hbwuKwMf.js";
@@ -2692,4 +2692,4 @@ export {
2692
2692
  X as O,
2693
2693
  Cs as b
2694
2694
  };
2695
- //# sourceMappingURL=booking-B1Qkcl3c.js.map
2695
+ //# sourceMappingURL=booking-CLmeXtGv.js.map
@@ -2,7 +2,7 @@ import { jsx as O } from "react/jsx-runtime";
2
2
  import { forwardRef as P, useMemo as n, useCallback as x, useRef as aa, useEffect as ea } from "react";
3
3
  import { useTranslation as ra } from "react-i18next";
4
4
  import { C as ia } from "./combobox-DiMLItyu.js";
5
- import { h as ca, a as sa } from "./flag-DZ6V7-hU.js";
5
+ import { h as ca, a as sa } from "./flag-Cnmivlrl.js";
6
6
  import { u as ta } from "./use-controllable-state-BiY4xTzM.js";
7
7
  import { u as oa } from "./registry-DvAUVLHh.js";
8
8
  const N = {
@@ -706,4 +706,4 @@ export {
706
706
  ua as c,
707
707
  Aa as r
708
708
  };
709
- //# sourceMappingURL=country-select-DYHDLEjG.js.map
709
+ //# sourceMappingURL=country-select-BN9nedAp.js.map
@@ -0,0 +1,290 @@
1
+ import { jsxs as m, Fragment as W, jsx as i } from "react/jsx-runtime";
2
+ import { forwardRef as j, useMemo as I, useState as q, useImperativeHandle as E, Fragment as H } from "react";
3
+ import { c as $ } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as U } from "react-i18next";
5
+ import { B as b } from "./badge-DCOqV9mI.js";
6
+ import { C as B } from "./card-DPmk26CL.js";
7
+ import { E as G } from "./empty-state-CrLsi0XI.js";
8
+ import { P as Y } from "./panel-header-D313n_9-.js";
9
+ import { P as J } from "./pdf-viewer-DF3VMaPo.js";
10
+ import { T as O, b as Q, c as X, a as Z } from "./tabs-CVTukWRD.js";
11
+ import { u as ee } from "./registry-DvAUVLHh.js";
12
+ import { F as ie, a as te } from "./file-Cwe9VC1A.js";
13
+ import { F as se } from "./file-text-5yv6r2ls.js";
14
+ import { c as ne } from "./createLucideIcon-DhHxpK9K.js";
15
+ /**
16
+ * @license lucide-react v1.22.0 - ISC
17
+ *
18
+ * This source code is licensed under the ISC license.
19
+ * See the LICENSE file in the root directory of this source tree.
20
+ */
21
+ const ae = [
22
+ ["path", { d: "M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8", key: "14sh0y" }],
23
+ [
24
+ "path",
25
+ {
26
+ d: "M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z",
27
+ key: "1970lx"
28
+ }
29
+ ],
30
+ ["path", { d: "M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1", key: "l4dndm" }]
31
+ ], re = ne("files", ae), de = {
32
+ id: "document-preview",
33
+ capabilities: [],
34
+ state: {
35
+ kind: {
36
+ type: "'pdf' | 'image' | 'metadata' | 'empty'",
37
+ descriptionKey: "ui.agent.documentPreview.state.kind",
38
+ description: "Which render branch is active: pdf, image, metadata (no inline preview), or empty (no document). Structural — never the document name.",
39
+ read: (a) => a.getKind()
40
+ }
41
+ },
42
+ actions: {
43
+ get_name: {
44
+ // phi (not read): resolves the document display name, which can identify
45
+ // patients. PRS §26 — phi outranks read so the host gates it behind
46
+ // stricter confirm + audit. The always-on kind slot stays name-free.
47
+ safety: "phi",
48
+ returns: "string | undefined",
49
+ returnsSchema: { type: ["string", "null"] },
50
+ idempotent: !0,
51
+ descriptionKey: "ui.agent.documentPreview.actions.getName",
52
+ description: "Read the display name of the previewed document. May identify a patient (PHI).",
53
+ invoke: (a) => a.getName()
54
+ }
55
+ },
56
+ domHooks: {
57
+ root: {
58
+ attr: "data-component",
59
+ value: "document-preview",
60
+ description: "Marks the DocumentPreview region."
61
+ },
62
+ instanceId: {
63
+ attr: "data-component-id",
64
+ sourceProp: "id",
65
+ description: "Sourced from the id prop."
66
+ }
67
+ }
68
+ }, le = $(
69
+ [
70
+ "ds:flex ds:h-full ds:min-h-0 ds:min-w-0 ds:flex-col ds:overflow-auto",
71
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)]",
72
+ "ds:focus-visible:outline-solid",
73
+ "ds:focus-visible:outline-ring"
74
+ ].join(" ")
75
+ ), oe = {
76
+ signed: "success",
77
+ pending: "warning"
78
+ };
79
+ function z(a, r, u) {
80
+ if (!a) return "empty";
81
+ const l = r ?? "";
82
+ return l === "application/pdf" && u ? "pdf" : l.startsWith("image/") && u ? "image" : "metadata";
83
+ }
84
+ function N(a) {
85
+ const r = a ?? "";
86
+ return r.startsWith("image/") ? ie : r === "application/pdf" || r.startsWith("text/") || r.includes("word") ? se : te;
87
+ }
88
+ const ce = [
89
+ "documentPreview.units.bytes",
90
+ "documentPreview.units.kilobytes",
91
+ "documentPreview.units.megabytes",
92
+ "documentPreview.units.gigabytes"
93
+ ], S = ["B", "KB", "MB", "GB"];
94
+ function me(a, r, u) {
95
+ let l = a, o = 0;
96
+ for (; l >= 1024 && o < S.length - 1; )
97
+ l /= 1024, o++;
98
+ return `${new Intl.NumberFormat(r, {
99
+ maximumFractionDigits: o === 0 ? 0 : 1
100
+ }).format(l)} ${u(ce[o], S[o])}`;
101
+ }
102
+ const ue = j(({ id: a, name: r, mimeType: u, src: l, metadata: o, documents: h, className: F }, M) => {
103
+ const { t: s, i18n: T } = U(), c = I(() => h && h.length > 0 ? h : r ? [{ id: a ?? r, name: r, mimeType: u, src: l, metadata: o }] : [], [h, a, r, u, l, o]), P = c.length > 1, [R, C] = q(void 0), n = c.find((t) => t.id === R) ?? c[0], x = I(
104
+ () => ({
105
+ getKind: () => n ? z(n.name, n.mimeType, n.src) : "empty",
106
+ getName: () => n == null ? void 0 : n.name
107
+ }),
108
+ [n]
109
+ );
110
+ E(M, () => x, [x]), ee(de, x, a);
111
+ const A = (t) => {
112
+ const w = z(t.name, t.mimeType, t.src), e = t.metadata, _ = N(t.mimeType);
113
+ let y;
114
+ w === "pdf" && t.src ? y = /* @__PURE__ */ i(
115
+ J,
116
+ {
117
+ src: t.src,
118
+ toolbarVariant: "minimal",
119
+ ariaLabel: t.name,
120
+ className: "ds:h-full ds:w-full"
121
+ }
122
+ ) : w === "image" && t.src ? y = /* @__PURE__ */ i(
123
+ "img",
124
+ {
125
+ src: t.src,
126
+ alt: s("documentPreview.imageAlt", "Preview of {{name}}", {
127
+ name: t.name
128
+ }),
129
+ className: "ds:max-h-full ds:max-w-full ds:object-contain"
130
+ }
131
+ ) : y = /* @__PURE__ */ m("span", { className: "ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-sm)] ds:text-muted-foreground", children: [
132
+ /* @__PURE__ */ i(_, { "aria-hidden": "true", className: "ds:size-10" }),
133
+ /* @__PURE__ */ i("span", { className: "type-body-sm", children: s("documentPreview.noPreview", "No preview available.") })
134
+ ] });
135
+ const p = e == null ? void 0 : e.signatureStatus, k = !!(e != null && e.documentType) || !!(e != null && e.clinical) || p !== void 0 && p !== "none", f = (v) => new Intl.DateTimeFormat(T.language, { dateStyle: "medium" }).format(
136
+ new Date(v)
137
+ ), d = [];
138
+ e != null && e.createdBy && d.push({
139
+ key: "createdBy",
140
+ label: s("documentPreview.fields.createdBy", "Created by"),
141
+ value: e.createdBy
142
+ }), e != null && e.createdAt && d.push({
143
+ key: "created",
144
+ label: s("documentPreview.fields.created", "Created"),
145
+ value: f(e.createdAt)
146
+ }), e != null && e.updatedAt && d.push({
147
+ key: "modified",
148
+ label: s("documentPreview.fields.modified", "Modified"),
149
+ value: f(e.updatedAt)
150
+ }), e != null && e.signatureRequestedAt && d.push({
151
+ key: "signatureRequested",
152
+ label: s(
153
+ "documentPreview.fields.signatureRequested",
154
+ "Signature requested"
155
+ ),
156
+ value: f(e.signatureRequestedAt)
157
+ }), e != null && e.signedAt && d.push({
158
+ key: "signed",
159
+ label: s("documentPreview.fields.signed", "Signed"),
160
+ value: f(e.signedAt)
161
+ }), e != null && e.sharedAt && d.push({
162
+ key: "sharedWithPatient",
163
+ label: s(
164
+ "documentPreview.fields.sharedWithPatient",
165
+ "Shared with patient"
166
+ ),
167
+ value: f(e.sharedAt)
168
+ }), (e == null ? void 0 : e.size) !== void 0 && d.push({
169
+ key: "size",
170
+ label: s("documentPreview.fields.size", "Size"),
171
+ value: me(e.size, T.language, s)
172
+ }), e != null && e.expiresAt && d.push({
173
+ key: "expires",
174
+ label: s("documentPreview.fields.expires", "Expires"),
175
+ value: f(e.expiresAt)
176
+ });
177
+ const V = k || d.length > 0;
178
+ return /* @__PURE__ */ i("div", { className: "ds:p-[var(--spacing-md)]", children: /* @__PURE__ */ m(
179
+ B,
180
+ {
181
+ variant: "elevated",
182
+ className: "ds:flex ds:flex-col ds:overflow-hidden",
183
+ children: [
184
+ /* @__PURE__ */ i("div", { className: "ds:flex ds:aspect-[4/3] ds:min-h-0 ds:items-center ds:justify-center ds:overflow-hidden ds:border-b ds:border-[color:var(--card-border)] ds:bg-muted", children: y }),
185
+ V && /* @__PURE__ */ m(B.Body, { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]", children: [
186
+ /* @__PURE__ */ i("h3", { className: "type-eyebrow ds:m-0 ds:text-muted-foreground", children: s("documentPreview.detailsTitle", "Details") }),
187
+ k && /* @__PURE__ */ m("span", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]", children: [
188
+ (e == null ? void 0 : e.documentType) && /* @__PURE__ */ i(b, { variant: "neutral", size: "sm", children: e.documentType }),
189
+ (e == null ? void 0 : e.clinical) && /* @__PURE__ */ i(b, { variant: "info", size: "sm", children: s("documentPreview.clinical", "Clinical") }),
190
+ p && p !== "none" && /* @__PURE__ */ i(
191
+ b,
192
+ {
193
+ variant: oe[p],
194
+ size: "sm",
195
+ withDot: !0,
196
+ children: s(`documentPreview.signature.${p}`, p)
197
+ }
198
+ )
199
+ ] }),
200
+ d.length > 0 && /* @__PURE__ */ i("dl", { className: "ds:grid ds:grid-cols-[auto_1fr] ds:gap-x-[var(--spacing-md)] ds:gap-y-[var(--spacing-xs)] type-body-sm", children: d.map((v) => /* @__PURE__ */ m(H, { children: [
201
+ /* @__PURE__ */ i("dt", { className: "ds:text-muted-foreground", children: v.label }),
202
+ /* @__PURE__ */ i("dd", { className: "ds:m-0", children: v.value })
203
+ ] }, v.key)) })
204
+ ] })
205
+ ]
206
+ }
207
+ ) });
208
+ }, D = N(n == null ? void 0 : n.mimeType), K = P ? /* @__PURE__ */ i(re, { "aria-hidden": "true" }) : /* @__PURE__ */ i(D, { "aria-hidden": "true" }), L = P ? /* @__PURE__ */ m(W, { children: [
209
+ s("documentPreview.multiTitle", "Documents"),
210
+ /* @__PURE__ */ i(b, { variant: "neutral", size: "sm", children: c.length })
211
+ ] }) : n == null ? void 0 : n.name;
212
+ let g;
213
+ return c.length === 0 ? g = /* @__PURE__ */ i(
214
+ G,
215
+ {
216
+ variant: "first-use",
217
+ size: "sm",
218
+ title: s("documentPreview.emptyTitle", "No document selected"),
219
+ description: s(
220
+ "documentPreview.emptyDescription",
221
+ "Select a document to preview it here."
222
+ )
223
+ }
224
+ ) : P ? g = /* @__PURE__ */ m(
225
+ O,
226
+ {
227
+ value: (n == null ? void 0 : n.id) ?? "",
228
+ onValueChange: C,
229
+ variant: "underlined",
230
+ size: "sm",
231
+ className: "ds:min-h-0 ds:flex-1 ds:pt-[var(--spacing-sm)]",
232
+ children: [
233
+ /* @__PURE__ */ i(
234
+ Q,
235
+ {
236
+ "aria-label": s("documentPreview.tabsLabel", "Selected documents"),
237
+ className: "ds:gap-[var(--spacing-sm)]",
238
+ children: c.map((t) => {
239
+ const w = N(t.mimeType);
240
+ return /* @__PURE__ */ i(
241
+ X,
242
+ {
243
+ value: t.id,
244
+ icon: /* @__PURE__ */ i(
245
+ w,
246
+ {
247
+ "aria-hidden": "true",
248
+ className: "ds:size-4 ds:text-[color:var(--accent)]"
249
+ }
250
+ ),
251
+ className: "ds:[min-inline-size:0]",
252
+ children: /* @__PURE__ */ i("span", { className: "ds:block ds:truncate ds:[min-inline-size:0]", children: t.name })
253
+ },
254
+ t.id
255
+ );
256
+ })
257
+ }
258
+ ),
259
+ c.map((t) => /* @__PURE__ */ i(
260
+ Z,
261
+ {
262
+ value: t.id,
263
+ className: "ds:min-h-0 ds:flex-1",
264
+ children: A(t)
265
+ },
266
+ t.id
267
+ ))
268
+ ]
269
+ }
270
+ ) : g = A(n), /* @__PURE__ */ m(
271
+ "section",
272
+ {
273
+ "data-component": "document-preview",
274
+ "data-component-id": a,
275
+ tabIndex: 0,
276
+ "aria-label": s("documentPreview.regionLabel", "Document preview"),
277
+ className: le({ className: F }),
278
+ children: [
279
+ c.length > 0 && /* @__PURE__ */ i(Y, { sticky: !0, icon: K, title: L }),
280
+ g
281
+ ]
282
+ }
283
+ );
284
+ });
285
+ ue.displayName = "DocumentPreview";
286
+ export {
287
+ ue as D,
288
+ de as d
289
+ };
290
+ //# sourceMappingURL=document-preview-nwfulDEs.js.map