@alfadocs/ui-kit 0.51.0 → 0.53.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 (97) hide show
  1. package/dist/_chunks/{logo-yituK7sE.js → logo-1FuSGx0n.js} +2 -1
  2. package/dist/_chunks/marketplace-app-shell-C4OYAC22.js +513 -0
  3. package/dist/_chunks/maximize-2-Cm9OUQ2m.js +17 -0
  4. package/dist/_chunks/{otp-input-CMphfBxZ.js → otp-input-Chb9r5vf.js} +89 -87
  5. package/dist/_chunks/patient-shell-Coarf346.js +162 -0
  6. package/dist/_chunks/{privacy-lock-BmX_gkvt.js → privacy-lock-BN3L-alb.js} +2 -2
  7. package/dist/_chunks/{public-footer.agent-okt8ZRc5.js → public-footer.agent-CfXuW1x6.js} +2 -2
  8. package/dist/_chunks/{public-header.agent-BY6FH71R.js → public-header.agent-DyVpPwmv.js} +72 -62
  9. package/dist/_chunks/{sign-document-Bzld9jVM.js → sign-document-BzHTjMVC.js} +2 -2
  10. package/dist/_chunks/{sign-in-with-alfadocs-button-CuYn_kKP.js → sign-in-with-alfadocs-button-BpAjVmsI.js} +2 -2
  11. package/dist/_chunks/{signature-capture-CpMBhqQ9.js → signature-capture-CHbrKoA_.js} +163 -152
  12. package/dist/_chunks/signature-field-DhscKdgk.js +152 -0
  13. package/dist/_chunks/use-signing-session-C5evzYmo.js +108 -0
  14. package/dist/agent-catalog.json +1 -1
  15. package/dist/brand/product-lockup/product-lockup.d.ts +47 -12
  16. package/dist/components/index.d.ts +3 -2
  17. package/dist/components/logo/index.js +1 -1
  18. package/dist/components/otp-input/index.js +1 -1
  19. package/dist/components/otp-input/otp-input.d.ts +6 -0
  20. package/dist/components/pdf-viewer/index.d.ts +1 -1
  21. package/dist/components/privacy-lock/index.js +1 -1
  22. package/dist/components/public-footer/index.js +1 -1
  23. package/dist/components/public-header/index.js +1 -1
  24. package/dist/components/public-header/public-header.d.ts +1 -1
  25. package/dist/components/sign-document/index.js +1 -1
  26. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  27. package/dist/components/signature-capture/index.js +1 -1
  28. package/dist/components/signature-capture/signature-capture.d.ts +7 -0
  29. package/dist/components/signature-field/index.d.ts +3 -0
  30. package/dist/components/signature-field/index.js +6 -0
  31. package/dist/components/signature-field/signature-field.d.ts +35 -0
  32. package/dist/hooks/index.d.ts +1 -0
  33. package/dist/hooks/index.js +42 -41
  34. package/dist/hooks/use-signing-session.d.ts +36 -0
  35. package/dist/i18n/locales/ar.d.ts +8 -0
  36. package/dist/i18n/locales/ar.js +8 -0
  37. package/dist/i18n/locales/de.d.ts +8 -0
  38. package/dist/i18n/locales/de.js +8 -0
  39. package/dist/i18n/locales/el.d.ts +8 -0
  40. package/dist/i18n/locales/el.js +8 -0
  41. package/dist/i18n/locales/en.d.ts +8 -0
  42. package/dist/i18n/locales/en.js +8 -0
  43. package/dist/i18n/locales/es.d.ts +8 -0
  44. package/dist/i18n/locales/es.js +8 -0
  45. package/dist/i18n/locales/fr.d.ts +8 -0
  46. package/dist/i18n/locales/fr.js +8 -0
  47. package/dist/i18n/locales/hi.d.ts +8 -0
  48. package/dist/i18n/locales/hi.js +8 -0
  49. package/dist/i18n/locales/it.d.ts +8 -0
  50. package/dist/i18n/locales/it.js +8 -0
  51. package/dist/i18n/locales/ja.d.ts +8 -0
  52. package/dist/i18n/locales/ja.js +8 -0
  53. package/dist/i18n/locales/nl.d.ts +8 -0
  54. package/dist/i18n/locales/nl.js +8 -0
  55. package/dist/i18n/locales/pl.d.ts +8 -0
  56. package/dist/i18n/locales/pl.js +8 -0
  57. package/dist/i18n/locales/pt.d.ts +8 -0
  58. package/dist/i18n/locales/pt.js +8 -0
  59. package/dist/i18n/locales/ro.d.ts +8 -0
  60. package/dist/i18n/locales/ro.js +8 -0
  61. package/dist/i18n/locales/ru.d.ts +8 -0
  62. package/dist/i18n/locales/ru.js +8 -0
  63. package/dist/i18n/locales/sq.d.ts +8 -0
  64. package/dist/i18n/locales/sq.js +8 -0
  65. package/dist/i18n/locales/sv.d.ts +8 -0
  66. package/dist/i18n/locales/sv.js +8 -0
  67. package/dist/i18n/locales/tr.d.ts +8 -0
  68. package/dist/i18n/locales/tr.js +8 -0
  69. package/dist/i18n/locales/zh.d.ts +8 -0
  70. package/dist/i18n/locales/zh.js +8 -0
  71. package/dist/index.js +701 -697
  72. package/dist/locales/ar.json +8 -0
  73. package/dist/locales/de.json +8 -0
  74. package/dist/locales/el.json +8 -0
  75. package/dist/locales/en.json +8 -0
  76. package/dist/locales/es.json +8 -0
  77. package/dist/locales/fr.json +8 -0
  78. package/dist/locales/hi.json +8 -0
  79. package/dist/locales/it.json +8 -0
  80. package/dist/locales/ja.json +8 -0
  81. package/dist/locales/nl.json +8 -0
  82. package/dist/locales/pl.json +8 -0
  83. package/dist/locales/pt.json +8 -0
  84. package/dist/locales/ro.json +8 -0
  85. package/dist/locales/ru.json +8 -0
  86. package/dist/locales/sq.json +8 -0
  87. package/dist/locales/sv.json +8 -0
  88. package/dist/locales/tr.json +8 -0
  89. package/dist/locales/zh.json +8 -0
  90. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  91. package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +8 -6
  92. package/dist/patterns/patient-shell/index.js +1 -1
  93. package/dist/tokens.css +1 -1
  94. package/package.json +5 -1
  95. package/dist/_chunks/marketplace-app-shell-Dmo1S9av.js +0 -428
  96. package/dist/_chunks/patient-shell-c2YixkQw.js +0 -174
  97. package/dist/_chunks/use-scroll-to-first-error-4Za-u5Nw.js +0 -43
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfadocs/ui-kit",
3
- "version": "0.51.0",
3
+ "version": "0.53.0",
4
4
  "type": "module",
5
5
  "description": "AlfaDocs shared design system — tokens, components, patterns, and translations for platform, booking, and alfascribe.",
6
6
  "license": "BUSL-1.1",
@@ -491,6 +491,10 @@
491
491
  "types": "./dist/components/signature-capture/index.d.ts",
492
492
  "import": "./dist/components/signature-capture/index.js"
493
493
  },
494
+ "./signature-field": {
495
+ "types": "./dist/components/signature-field/index.d.ts",
496
+ "import": "./dist/components/signature-field/index.js"
497
+ },
494
498
  "./skeleton": {
495
499
  "types": "./dist/components/skeleton/index.d.ts",
496
500
  "import": "./dist/components/skeleton/index.js"
@@ -1,428 +0,0 @@
1
- import { jsxs as n, jsx as e, Fragment as T } from "react/jsx-runtime";
2
- import { forwardRef as b, useState as P } from "react";
3
- import { useTranslation as M } from "react-i18next";
4
- import { c as p } from "./index-D2ZczOXr.js";
5
- import { A as E } from "./app-frame-BYx1gcV7.js";
6
- import { A as $ } from "./avatar-BNQNhoyL.js";
7
- import { A as D } from "./alert-_mUKLmwA.js";
8
- import { C } from "./card-DPmk26CL.js";
9
- import { D as i } from "./dropdown-menu-DwwPovMZ.js";
10
- import { T as F } from "./tab-bar-Xetknddo.js";
11
- import { a as S, H as q, g as G, f as w, e as J, c as K, d as Q } from "./header-Ce1Br27u.js";
12
- import { H as U } from "./header-settings-D5Z2B_Yz.js";
13
- import { S as X } from "./sign-in-with-alfadocs-button-CuYn_kKP.js";
14
- import { S as Y, a as Z, j as _, k as ee, i as ae, h as A } from "./sidebar-DPEHzxLZ.js";
15
- import { T as se } from "./theme-root-BOO73p5t.js";
16
- import { a as te } from "./tooltip-DvmfrNvB.js";
17
- import { u as re } from "./use-theme-CAuo6EYT.js";
18
- import { L as ne } from "./logo-yituK7sE.js";
19
- const de = p("ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]"), le = p(
20
- [
21
- "ds:[font-family:var(--font-serif)]",
22
- "ds:font-semibold",
23
- "ds:leading-none",
24
- "ds:tracking-[0.01em]",
25
- "ds:whitespace-nowrap",
26
- // Forced-colors: drop the transparent text-fill and paint the label
27
- // as solid CanvasText so it never disappears under Windows HCM —
28
- // a gradient/transparent fill has no meaning there.
29
- "ds:forced-colors:text-[CanvasText]",
30
- "ds:forced-colors:[-webkit-text-fill-color:CanvasText]"
31
- ],
32
- {
33
- variants: {
34
- size: {
35
- sm: "ds:text-[calc(var(--logo-size-sm)*0.95)]",
36
- md: "ds:text-[calc(var(--logo-size-md)*0.95)]",
37
- lg: "ds:text-[calc(var(--logo-size-lg)*0.95)]",
38
- xl: "ds:text-[calc(var(--logo-size-xl)*0.95)]"
39
- },
40
- tone: {
41
- // Brand gradient filled into the glyphs via background-clip:text.
42
- // `--gradient-wordmark` rides the theme aliases, so it stays
43
- // AA-safe and adapts per theme on its own (and flattens to a solid
44
- // ink in the accessible / forced-colors blocks — see tokens).
45
- gradient: [
46
- "ds:italic",
47
- "ds:bg-[image:var(--gradient-wordmark)]",
48
- "ds:bg-clip-text",
49
- "ds:text-transparent",
50
- "ds:[-webkit-text-fill-color:transparent]"
51
- ],
52
- // Monochrome: solid currentColor ink, upright, no gradient — for
53
- // print, single-colour work, and coloured chrome (e.g. app-shell
54
- // headers) where the lockup must ride the surrounding ink.
55
- solid: "ds:text-current"
56
- }
57
- },
58
- defaultVariants: { size: "md", tone: "gradient" }
59
- }
60
- ), h = b(
61
- ({
62
- name: s,
63
- monochrome: r = !1,
64
- tone: a = "auto",
65
- size: t = "md",
66
- className: d,
67
- ...l
68
- }, o) => /* @__PURE__ */ n(
69
- "span",
70
- {
71
- ref: o,
72
- role: "img",
73
- "aria-label": `Alfadocs ${s}`.trim(),
74
- className: de({ className: d }),
75
- "data-component": "product-lockup",
76
- ...l,
77
- children: [
78
- /* @__PURE__ */ e(
79
- ne,
80
- {
81
- variant: r ? "monochrome" : "wordmark",
82
- tone: a,
83
- size: t,
84
- decorative: !0
85
- }
86
- ),
87
- /* @__PURE__ */ e(
88
- "span",
89
- {
90
- "aria-hidden": !0,
91
- className: le({
92
- size: t,
93
- tone: r ? "solid" : "gradient"
94
- }),
95
- children: s
96
- }
97
- )
98
- ]
99
- }
100
- )
101
- );
102
- h.displayName = "ProductLockup";
103
- function ie(s) {
104
- return s > 99 ? "99+" : String(s);
105
- }
106
- function oe({
107
- user: s,
108
- labels: r,
109
- onSignOut: a,
110
- onToggleFullscreen: t
111
- }) {
112
- const { t: d } = M(), l = r.fullscreen ?? d("patientShell.settings.fullscreen");
113
- return (
114
- // Non-modal: an account menu shouldn't inert/aria-hide the whole shell
115
- // behind it (which leaves the still-focusable chrome inside an
116
- // aria-hidden region — an `aria-hidden-focus` violation).
117
- /* @__PURE__ */ n(i.Root, { modal: !1, children: [
118
- /* @__PURE__ */ e(i.Trigger, { asChild: !0, children: /* @__PURE__ */ n(
119
- "button",
120
- {
121
- type: "button",
122
- "aria-label": r.accountMenu,
123
- "data-testid": "marketplace-account-trigger",
124
- className: "ds:rounded-full ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)] ds:min-h-[var(--min-target-size)] ds:min-w-[var(--min-target-size)] ds:justify-center ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)] ds:forced-colors:focus-visible:outline-[CanvasText]",
125
- children: [
126
- /* @__PURE__ */ e($, { name: s.name, src: s.avatarSrc, size: "md" }),
127
- /* @__PURE__ */ e("span", { className: "ds:hidden ds:sm:inline", children: s.name })
128
- ]
129
- }
130
- ) }),
131
- /* @__PURE__ */ n(i.Content, { align: "end", children: [
132
- /* @__PURE__ */ e(i.Label, { children: /* @__PURE__ */ n("span", { className: "ds:flex ds:flex-col", children: [
133
- /* @__PURE__ */ e("span", { className: "ds:font-medium", children: s.name }),
134
- s.email ? /* @__PURE__ */ e("span", { className: "ds:text-[length:var(--font-size-sm)] ds:text-[color:var(--muted-foreground)]", children: s.email }) : null
135
- ] }) }),
136
- t ? /* @__PURE__ */ n(T, { children: [
137
- /* @__PURE__ */ e(i.Separator, {}),
138
- /* @__PURE__ */ e(
139
- i.Item,
140
- {
141
- onSelect: t,
142
- "data-testid": "marketplace-fullscreen",
143
- children: l
144
- }
145
- )
146
- ] }) : null,
147
- /* @__PURE__ */ e(i.Separator, {}),
148
- /* @__PURE__ */ e(
149
- i.Item,
150
- {
151
- onSelect: a,
152
- "data-testid": "marketplace-sign-out",
153
- children: r.signOut
154
- }
155
- )
156
- ] })
157
- ] })
158
- );
159
- }
160
- function ce({
161
- nav: s,
162
- renderLink: r
163
- }) {
164
- return /* @__PURE__ */ e(Z, { children: s.map((a) => {
165
- const t = typeof a.badgeCount == "number" && a.badgeCount > 0 ? a.badgeCount : void 0, d = /* @__PURE__ */ n(T, { children: [
166
- a.icon ? /* @__PURE__ */ e(_, { children: a.icon }) : null,
167
- /* @__PURE__ */ e(ee, { children: a.label }),
168
- t !== void 0 ? /* @__PURE__ */ e(ae, { children: ie(t) }) : null
169
- ] });
170
- return r ? /* @__PURE__ */ e(A, { asChild: !0, isActive: a.isActive, children: r({
171
- href: a.href,
172
- children: d,
173
- "aria-current": a.isActive ? "page" : void 0
174
- }) }, a.id) : /* @__PURE__ */ e(
175
- A,
176
- {
177
- href: a.href,
178
- "aria-label": a.label,
179
- isActive: a.isActive,
180
- ...a.onClick ? { onClick: a.onClick } : {},
181
- children: d
182
- },
183
- a.id
184
- );
185
- }) });
186
- }
187
- const z = p("ds:bg-[color:var(--app-shell-background)]", {
188
- variants: {
189
- variant: {
190
- standalone: "",
191
- embedded: [
192
- "ds:flex-1",
193
- "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]",
194
- "ds:pt-[var(--spacing-lg)] ds:pb-[var(--spacing-md)]"
195
- ].join(" ")
196
- }
197
- },
198
- defaultVariants: { variant: "standalone" }
199
- });
200
- function me({
201
- nav: s,
202
- ariaLabel: r,
203
- renderLink: a
204
- }) {
205
- const t = a ? ({
206
- href: d,
207
- className: l,
208
- children: o,
209
- "aria-current": m
210
- }) => a({ href: d, className: l, children: o, "aria-current": m }) : void 0;
211
- return /* @__PURE__ */ e(
212
- F,
213
- {
214
- items: s,
215
- ariaLabel: r,
216
- ...t ? { renderLink: t } : {}
217
- }
218
- );
219
- }
220
- const pe = b(
221
- ({
222
- productName: s,
223
- productHref: r = "/",
224
- nav: a,
225
- renderLink: t,
226
- user: d,
227
- labels: l,
228
- onSignOut: o,
229
- onToggleFullscreen: m,
230
- sidebarState: c,
231
- mainAriaLabel: f,
232
- variant: g = "standalone",
233
- children: u
234
- }, x) => {
235
- const { t: v } = M(), B = t ? /* @__PURE__ */ e(S, { asChild: !0, children: t({
236
- href: r,
237
- children: /* @__PURE__ */ e(h, { name: s, size: "md", monochrome: !0 })
238
- }) }) : /* @__PURE__ */ e(
239
- S,
240
- {
241
- href: r,
242
- logo: /* @__PURE__ */ e(h, { name: s, size: "md", monochrome: !0 })
243
- }
244
- ), { theme: H, accessibility: I, resolvedTheme: k } = re(), V = H !== "system" || I !== "system", j = k.startsWith("dark") ? "dark" : "light", L = k.endsWith("-accessible"), [O, N] = P(!1), W = /* @__PURE__ */ e(te, { children: /* @__PURE__ */ e(
245
- E,
246
- {
247
- mainAriaLabel: f,
248
- mainClassName: z({ variant: "standalone" }),
249
- header: /* @__PURE__ */ n(q, { children: [
250
- /* @__PURE__ */ n(G, { children: [
251
- /* @__PURE__ */ e(w, { href: "#main-content" }),
252
- /* @__PURE__ */ e(J, { onMenuOpen: () => N(!0) }),
253
- B
254
- ] }),
255
- /* @__PURE__ */ e(K, {}),
256
- /* @__PURE__ */ n(Q, { children: [
257
- /* @__PURE__ */ e(U, { size: "sm" }),
258
- /* @__PURE__ */ e(
259
- oe,
260
- {
261
- user: d,
262
- labels: l,
263
- onSignOut: o,
264
- onToggleFullscreen: m
265
- }
266
- )
267
- ] })
268
- ] }),
269
- sidebar: /* @__PURE__ */ e(
270
- Y,
271
- {
272
- ...c !== void 0 ? { state: c } : { defaultState: "expanded" },
273
- open: O,
274
- onOpenChange: N,
275
- "aria-label": v("navigation.sidebar.label"),
276
- "data-testid": "marketplace-app-shell-sidebar",
277
- children: /* @__PURE__ */ e(ce, { nav: a, renderLink: t })
278
- }
279
- ),
280
- children: u
281
- }
282
- ) }), R = (
283
- // The shell owns the warm-grey canvas; TabBar's strip is transparent and
284
- // floats its pill on it, and `<main>` continues the same surface.
285
- /* @__PURE__ */ n("div", { className: "ds:flex ds:min-h-dvh ds:flex-col ds:bg-[color:var(--app-shell-background)]", children: [
286
- /* @__PURE__ */ e(w, { href: "#main-content" }),
287
- /* @__PURE__ */ e(
288
- me,
289
- {
290
- nav: a,
291
- ariaLabel: v("navigation.sidebar.label"),
292
- renderLink: t
293
- }
294
- ),
295
- /* @__PURE__ */ e(
296
- "main",
297
- {
298
- id: "main-content",
299
- tabIndex: -1,
300
- "aria-label": f ?? v("navigation.main.label", "Main content"),
301
- className: z({ variant: "embedded" }),
302
- children: u
303
- }
304
- )
305
- ] })
306
- ), y = g === "embedded" ? R : W;
307
- return V ? /* @__PURE__ */ e(
308
- se,
309
- {
310
- ref: x,
311
- theme: j,
312
- accessible: L,
313
- className: "ds:contents",
314
- "data-component": "marketplace-app-shell",
315
- children: y
316
- }
317
- ) : /* @__PURE__ */ e(
318
- "div",
319
- {
320
- ref: x,
321
- className: "ds:contents",
322
- "data-component": "marketplace-app-shell",
323
- children: y
324
- }
325
- );
326
- }
327
- );
328
- pe.displayName = "MarketplaceAppShell";
329
- const fe = p(
330
- "ds:flex ds:min-h-dvh ds:bg-[color:var(--app-shell-background)]",
331
- {
332
- variants: {
333
- layout: {
334
- card: "",
335
- split: "ds:flex-col ds:lg:flex-row"
336
- }
337
- },
338
- defaultVariants: { layout: "card" }
339
- }
340
- ), he = p("ds:w-full", {
341
- variants: {
342
- layout: {
343
- card: "ds:max-w-[400px]",
344
- split: "ds:max-w-[400px] ds:lg:max-w-[480px]"
345
- }
346
- },
347
- defaultVariants: { layout: "card" }
348
- }), ue = p("", {
349
- variants: {
350
- layout: { card: "", split: "ds:lg:hidden" }
351
- },
352
- defaultVariants: { layout: "card" }
353
- }), ge = b(
354
- ({
355
- productName: s,
356
- title: r,
357
- description: a,
358
- connectLabel: t,
359
- status: d = "idle",
360
- error: l,
361
- onConnect: o,
362
- footer: m,
363
- layout: c = "card",
364
- brandPanel: f,
365
- className: g
366
- }, u) => /* @__PURE__ */ n(
367
- "div",
368
- {
369
- ref: u,
370
- "data-component": "connect-with-alfadocs",
371
- className: `${fe({ layout: c })} ${g ?? ""}`,
372
- children: [
373
- c === "split" ? (
374
- // Desktop brand panel (lg+ only): a bold `--primary` surface with the
375
- // monochrome lockup riding the `--primary-foreground` ink, plus an
376
- // optional `brandPanel` slot. Decorative — the card carries the real
377
- // heading + CTA, and shows its own lockup below `lg:`.
378
- /* @__PURE__ */ n("div", { className: "ds:hidden ds:lg:flex ds:lg:w-[55%] ds:flex-col ds:items-center ds:justify-center ds:gap-[var(--spacing-lg)] ds:bg-[color:var(--primary)] ds:text-[color:var(--primary-foreground)] ds:ps-[var(--spacing-2xl)] ds:pe-[var(--spacing-2xl)] ds:pt-[var(--spacing-2xl)] ds:pb-[var(--spacing-2xl)] ds:text-start", children: [
379
- /* @__PURE__ */ e(
380
- h,
381
- {
382
- name: s,
383
- size: "lg",
384
- monochrome: !0,
385
- tone: "inherit"
386
- }
387
- ),
388
- f ? /* @__PURE__ */ e("div", { className: "type-body ds:max-w-[28rem] ds:text-start", children: f }) : null
389
- ] })
390
- ) : null,
391
- /* @__PURE__ */ e("div", { className: "ds:flex ds:flex-1 ds:items-center ds:justify-center ds:p-[var(--spacing-lg)]", children: /* @__PURE__ */ e(C, { className: he({ layout: c }), children: /* @__PURE__ */ n(C.Body, { className: "ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-lg)] ds:text-center", children: [
392
- /* @__PURE__ */ e(
393
- h,
394
- {
395
- name: s,
396
- size: "lg",
397
- className: ue({ layout: c })
398
- }
399
- ),
400
- /* @__PURE__ */ n("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
401
- /* @__PURE__ */ e("h1", { className: "type-title-card", children: r }),
402
- /* @__PURE__ */ e("p", { className: "type-body-sm ds:text-[color:var(--muted-foreground)]", children: a })
403
- ] }),
404
- d === "error" && l ? /* @__PURE__ */ e(D, { variant: "error", className: "ds:w-full ds:text-start", children: l }) : null,
405
- /* @__PURE__ */ e(
406
- X,
407
- {
408
- intent: "primary",
409
- className: "ds:w-full",
410
- loading: d === "connecting",
411
- onClick: o,
412
- label: t,
413
- "data-testid": "connect-with-alfadocs-button"
414
- }
415
- ),
416
- m ? /* @__PURE__ */ e("div", { className: "type-meta ds:text-[color:var(--muted-foreground)]", children: m }) : null
417
- ] }) }) })
418
- ]
419
- }
420
- )
421
- );
422
- ge.displayName = "ConnectWithAlfadocs";
423
- export {
424
- ge as C,
425
- pe as M,
426
- h as P
427
- };
428
- //# sourceMappingURL=marketplace-app-shell-Dmo1S9av.js.map
@@ -1,174 +0,0 @@
1
- import { jsx as e, jsxs as n } from "react/jsx-runtime";
2
- import { forwardRef as k, useState as w } from "react";
3
- import { useTranslation as m } from "react-i18next";
4
- import { A } from "./app-frame-BYx1gcV7.js";
5
- import { I as C } from "./icon-button-CKEOrN37.js";
6
- import { D as i } from "./dropdown-menu-DwwPovMZ.js";
7
- import { H, g as x, f as N, e as B, a as M, c as T, d as O } from "./header-Ce1Br27u.js";
8
- import { L as P } from "./logo-yituK7sE.js";
9
- import { S as W, a as j, h as R, j as _, k as z, i as D } from "./sidebar-DPEHzxLZ.js";
10
- import { T as E } from "./theme-root-BOO73p5t.js";
11
- import { a as q } from "./tooltip-DvmfrNvB.js";
12
- import { u as F } from "./use-theme-CAuo6EYT.js";
13
- import { S as U } from "./settings-ca2Yi9R8.js";
14
- import { c as G } from "./createLucideIcon-CrFbzy84.js";
15
- import { L as J } from "./log-out-616hnn2-.js";
16
- /**
17
- * @license lucide-react v1.8.0 - ISC
18
- *
19
- * This source code is licensed under the ISC license.
20
- * See the LICENSE file in the root directory of this source tree.
21
- */
22
- const K = [
23
- ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
24
- ["path", { d: "m21 3-7 7", key: "1l2asr" }],
25
- ["path", { d: "m3 21 7-7", key: "tjx5ai" }],
26
- ["path", { d: "M9 21H3v-6", key: "wtvkvv" }]
27
- ], Q = G("maximize-2", K);
28
- function V(a) {
29
- return a > 99 ? "99+" : String(a);
30
- }
31
- function X(a) {
32
- if (a.startsWith("/") || a.startsWith("#") || a.startsWith("?"))
33
- return !0;
34
- try {
35
- const t = new URL(a, window.location.origin);
36
- return t.protocol === "http:" || t.protocol === "https:";
37
- } catch {
38
- return !1;
39
- }
40
- }
41
- function Y({
42
- logoutHref: a,
43
- onToggleFullscreen: t
44
- }) {
45
- const { t: r } = m();
46
- return /* @__PURE__ */ n(i.Root, { children: [
47
- /* @__PURE__ */ e(i.Trigger, { asChild: !0, children: /* @__PURE__ */ e(
48
- C,
49
- {
50
- icon: /* @__PURE__ */ e(U, { "aria-hidden": "true" }),
51
- "aria-label": r("patientShell.settings.triggerAria"),
52
- tooltip: r("patientShell.settings.triggerAria"),
53
- "data-testid": "patient-shell-settings-trigger"
54
- }
55
- ) }),
56
- /* @__PURE__ */ n(i.Content, { align: "end", children: [
57
- /* @__PURE__ */ e(
58
- i.Item,
59
- {
60
- startIcon: /* @__PURE__ */ e(Q, { "aria-hidden": "true" }),
61
- onSelect: t,
62
- "data-testid": "patient-shell-fullscreen",
63
- children: r("patientShell.settings.fullscreen")
64
- }
65
- ),
66
- /* @__PURE__ */ e(i.Separator, {}),
67
- /* @__PURE__ */ e(
68
- i.Item,
69
- {
70
- startIcon: /* @__PURE__ */ e(J, { "aria-hidden": "true" }),
71
- onSelect: () => {
72
- typeof window > "u" || X(a) && window.location.assign(a);
73
- },
74
- "data-testid": "patient-shell-logout",
75
- children: r("patientShell.settings.logout")
76
- }
77
- )
78
- ] })
79
- ] });
80
- }
81
- function Z({ menuItems: a }) {
82
- return /* @__PURE__ */ e(j, { children: a.map((t) => {
83
- const r = typeof t.badgeCount == "number" && t.badgeCount > 0 ? t.badgeCount : void 0;
84
- return /* @__PURE__ */ n(
85
- R,
86
- {
87
- href: t.href,
88
- "aria-label": t.label,
89
- isActive: t.isActive,
90
- children: [
91
- t.icon ? /* @__PURE__ */ e(_, { children: t.icon }) : null,
92
- /* @__PURE__ */ e(z, { children: t.label }),
93
- r !== void 0 ? /* @__PURE__ */ e(D, { children: V(r) }) : null
94
- ]
95
- },
96
- t.id
97
- );
98
- }) });
99
- }
100
- const $ = k(
101
- ({
102
- menuItems: a,
103
- logoutHref: t,
104
- onToggleFullscreen: r,
105
- brandLogo: p,
106
- brandHref: u = "/",
107
- mainAriaLabel: f,
108
- sidebarState: o,
109
- children: g,
110
- // `userName` and `userAvatarSrc` are declared on the public API
111
- // for forward-compatibility (future profile-pill work) — they are
112
- // intentionally unused today because the legacy patient chrome
113
- // carries no profile pill.
114
- userName: ee,
115
- userAvatarSrc: te
116
- }, s) => {
117
- const { t: l } = m(), { theme: b, accessibility: S, resolvedTheme: d } = F(), v = b !== "system" || S !== "system", y = d.startsWith("dark") ? "dark" : "light", I = d.endsWith("-accessible"), [L, c] = w(!1), h = /* @__PURE__ */ e(q, { children: /* @__PURE__ */ e(
118
- A,
119
- {
120
- mainAriaLabel: f,
121
- mainClassName: "ds:bg-[color:var(--app-shell-background)]",
122
- header: /* @__PURE__ */ n(H, { children: [
123
- /* @__PURE__ */ n(x, { children: [
124
- /* @__PURE__ */ e(N, { href: "#main-content" }),
125
- /* @__PURE__ */ e(B, { onMenuOpen: () => c(!0) }),
126
- /* @__PURE__ */ e(
127
- M,
128
- {
129
- logo: p ?? /* @__PURE__ */ e(P, { variant: "monochrome", size: "md", decorative: !0 }),
130
- href: u,
131
- "aria-label": l("patientShell.brand.homeAria")
132
- }
133
- )
134
- ] }),
135
- /* @__PURE__ */ e(T, {}),
136
- /* @__PURE__ */ e(O, { children: /* @__PURE__ */ e(
137
- Y,
138
- {
139
- logoutHref: t,
140
- onToggleFullscreen: r
141
- }
142
- ) })
143
- ] }),
144
- sidebar: /* @__PURE__ */ e(
145
- W,
146
- {
147
- ...o !== void 0 ? { state: o } : { defaultState: "expanded" },
148
- open: L,
149
- onOpenChange: c,
150
- "aria-label": l("patientShell.sidebar.panelLabel"),
151
- "data-testid": "patient-shell-sidebar",
152
- children: /* @__PURE__ */ e(Z, { menuItems: a })
153
- }
154
- ),
155
- children: g
156
- }
157
- ) });
158
- return v ? /* @__PURE__ */ e(
159
- E,
160
- {
161
- ref: s,
162
- theme: y,
163
- accessible: I,
164
- className: "ds:contents",
165
- children: h
166
- }
167
- ) : /* @__PURE__ */ e("div", { ref: s, className: "ds:contents", children: h });
168
- }
169
- );
170
- $.displayName = "PatientShell";
171
- export {
172
- $ as P
173
- };
174
- //# sourceMappingURL=patient-shell-c2YixkQw.js.map
@@ -1,43 +0,0 @@
1
- import { useRef as m, useEffect as S } from "react";
2
- function p(e) {
3
- return e != null && e.current ? e.current : typeof document > "u" ? null : document;
4
- }
5
- function w(e, u) {
6
- const n = typeof CSS < "u" && typeof CSS.escape == "function" ? CSS.escape(e) : (
7
- // SSR / jsdom fallback — drop every character that's
8
- // significant in a CSS attribute selector. Conservative but
9
- // robust enough for the test environment.
10
- e.replace(/["'\\[\]]/g, "")
11
- ), c = `[data-error-anchor="${n}"], [name="${n}"], [name$="[${n}]"]`, t = Array.from(u.querySelectorAll(c));
12
- return t.length === 0 ? null : t.find((i) => i.offsetParent !== null) ?? t[0];
13
- }
14
- function y(e, u, n = {}) {
15
- const {
16
- scope: c,
17
- scrollOptions: t = { behavior: "smooth", block: "center" },
18
- focus: s = !0,
19
- skipInitialMount: i = !0
20
- } = n, a = m(!1), o = m(null), r = u.find((l) => !!e[l]) ?? null;
21
- S(() => {
22
- if (i && !a.current) {
23
- a.current = !0, o.current = r;
24
- return;
25
- }
26
- if (!r) {
27
- o.current = null;
28
- return;
29
- }
30
- if (r === o.current || typeof window > "u") return;
31
- const l = window.requestAnimationFrame(() => {
32
- const d = p(c);
33
- if (!d) return;
34
- const f = w(r, d);
35
- f && (f.scrollIntoView(t), s && f.focus({ preventScroll: !0 }), o.current = r);
36
- });
37
- return () => window.cancelAnimationFrame(l);
38
- }, [r]);
39
- }
40
- export {
41
- y as u
42
- };
43
- //# sourceMappingURL=use-scroll-to-first-error-4Za-u5Nw.js.map