@alfadocs/ui-kit 0.50.1 → 0.52.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 (152) hide show
  1. package/dist/_chunks/{agenda-card-BaSfVfrL.js → agenda-card-Bl-SBiCh.js} +55 -45
  2. package/dist/_chunks/agenda-tray-DA6qj8BL.js +203 -0
  3. package/dist/_chunks/{ai-consent-banner-F2md5JD3.js → ai-consent-banner-DBKV27je.js} +2 -2
  4. package/dist/_chunks/ai-tools-rail-7tC3GT4h.js +340 -0
  5. package/dist/_chunks/{alert-CUTxnym2.js → alert-_mUKLmwA.js} +54 -44
  6. package/dist/_chunks/{audio-recorder-DVJXV7_k.js → audio-recorder-D6OVfNiZ.js} +2 -2
  7. package/dist/_chunks/{booking-DljH0JkS.js → booking-BUV9fspj.js} +2 -2
  8. package/dist/_chunks/{document-scanner-Cxqvq7GR.js → document-scanner-biBS_f6c.js} +2 -2
  9. package/dist/_chunks/dropdown-menu-DwwPovMZ.js +354 -0
  10. package/dist/_chunks/{editable-currency-cell-renderer-Bh48OHRv.js → editable-currency-cell-renderer-D5C5tCfu.js} +3 -3
  11. package/dist/_chunks/{freemium-paywall-BWaLWje-.js → freemium-paywall-gHGA44dW.js} +2 -2
  12. package/dist/_chunks/{header-settings-Bx0Biimh.js → header-settings-D5Z2B_Yz.js} +3 -3
  13. package/dist/_chunks/{logo-yituK7sE.js → logo-1FuSGx0n.js} +2 -1
  14. package/dist/_chunks/marketplace-app-shell-C4OYAC22.js +513 -0
  15. package/dist/_chunks/maximize-2-Cm9OUQ2m.js +17 -0
  16. package/dist/_chunks/{patient-search-BJOmTmDA.js → patient-search-CArmRKeg.js} +3 -3
  17. package/dist/_chunks/patient-shell-Coarf346.js +162 -0
  18. package/dist/_chunks/{payment-form-xmeCkxas.js → payment-form-DJ9vnzrT.js} +2 -2
  19. package/dist/_chunks/{pdf-viewer-q1D3Uion.js → pdf-viewer-4odMFuFW.js} +2 -2
  20. package/dist/_chunks/{practice-results-Cq1y8JFD.js → practice-results-CtfciF2v.js} +3 -3
  21. package/dist/_chunks/{pregnancy-dating-DT_244bG.js → pregnancy-dating-BA37LSkF.js} +15 -15
  22. package/dist/_chunks/{privacy-lock-BmX_gkvt.js → privacy-lock-BN3L-alb.js} +2 -2
  23. package/dist/_chunks/{public-footer.agent-okt8ZRc5.js → public-footer.agent-CfXuW1x6.js} +2 -2
  24. package/dist/_chunks/{recaptcha-widget-CFYyLSEX.js → recaptcha-widget-BCNHsgqt.js} +2 -2
  25. package/dist/_chunks/{sidebar-h78cTNLh.js → sidebar-DPEHzxLZ.js} +397 -346
  26. package/dist/_chunks/{sign-document-CZkAf28g.js → sign-document-Bzld9jVM.js} +2 -2
  27. package/dist/_chunks/{sign-in-with-alfadocs-button-CuYn_kKP.js → sign-in-with-alfadocs-button-BpAjVmsI.js} +2 -2
  28. package/dist/_chunks/{task-card-CPyQ5AXC.js → task-card-BwY9jaV1.js} +48 -42
  29. package/dist/_chunks/task-tray-Cb_hK4yb.js +234 -0
  30. package/dist/_chunks/{theme-toggle-ClATnY4Q.js → theme-toggle-DAW7uC0B.js} +3 -3
  31. package/dist/_chunks/use-edge-resize-ZnGG7gyO.js +139 -0
  32. package/dist/_chunks/use-theme-CAuo6EYT.js +159 -0
  33. package/dist/_chunks/{warning-stack-CXfoAT-_.js → warning-stack-Cv4fr5zo.js} +2 -2
  34. package/dist/_chunks/{workflow-map-DzX_LI4y.js → workflow-map-BJDUNYlX.js} +3 -3
  35. package/dist/agent-catalog.json +1 -1
  36. package/dist/brand/product-lockup/product-lockup.d.ts +47 -12
  37. package/dist/components/agenda-card/agenda-card.d.ts +19 -2
  38. package/dist/components/agenda-card/index.js +1 -1
  39. package/dist/components/agenda-tray/agenda-tray.d.ts +24 -1
  40. package/dist/components/agenda-tray/index.js +1 -1
  41. package/dist/components/ai-consent-banner/index.js +1 -1
  42. package/dist/components/ai-tools-rail/ai-tools-rail.d.ts +8 -0
  43. package/dist/components/ai-tools-rail/index.js +1 -1
  44. package/dist/components/alert/index.js +1 -1
  45. package/dist/components/audio-recorder/index.js +1 -1
  46. package/dist/components/booking/index.js +1 -1
  47. package/dist/components/button-group/button-group.d.ts +1 -1
  48. package/dist/components/checkbox-group/checkbox-group.d.ts +1 -1
  49. package/dist/components/data-table/index.js +1 -1
  50. package/dist/components/document-scanner/index.js +1 -1
  51. package/dist/components/dropdown-menu/dropdown-menu.d.ts +2 -0
  52. package/dist/components/dropdown-menu/index.js +1 -1
  53. package/dist/components/form-field/form-field.d.ts +1 -1
  54. package/dist/components/freemium-paywall/index.js +1 -1
  55. package/dist/components/header-settings/index.js +1 -1
  56. package/dist/components/icon-button-group/icon-button-group.d.ts +15 -15
  57. package/dist/components/key-value-pair/key-value-pair.d.ts +1 -1
  58. package/dist/components/logo/index.js +1 -1
  59. package/dist/components/patient-search/index.js +1 -1
  60. package/dist/components/payment-form/index.js +1 -1
  61. package/dist/components/pdf-viewer/index.js +1 -1
  62. package/dist/components/practice-results/index.js +1 -1
  63. package/dist/components/pregnancy-dating/index.js +1 -1
  64. package/dist/components/privacy-lock/index.js +1 -1
  65. package/dist/components/public-footer/index.js +1 -1
  66. package/dist/components/radio-group/radio-group.d.ts +1 -1
  67. package/dist/components/recaptcha-widget/index.js +1 -1
  68. package/dist/components/separator/separator.d.ts +1 -1
  69. package/dist/components/sidebar/index.js +1 -1
  70. package/dist/components/sidebar/sidebar.d.ts +8 -0
  71. package/dist/components/sign-document/index.js +1 -1
  72. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  73. package/dist/components/tabs/tabs.d.ts +2 -2
  74. package/dist/components/task-card/index.js +1 -1
  75. package/dist/components/task-card/task-card.d.ts +15 -1
  76. package/dist/components/task-tray/index.js +1 -1
  77. package/dist/components/task-tray/task-tray.d.ts +24 -1
  78. package/dist/components/theme-toggle/index.js +1 -1
  79. package/dist/components/warning-stack/index.js +1 -1
  80. package/dist/components/workflow/index.js +1 -1
  81. package/dist/components/workflow/workflow-map.d.ts +1 -1
  82. package/dist/hooks/index.d.ts +1 -0
  83. package/dist/hooks/index.js +12 -10
  84. package/dist/hooks/use-edge-resize.d.ts +78 -0
  85. package/dist/i18n/locales/ar.d.ts +4 -0
  86. package/dist/i18n/locales/ar.js +7 -3
  87. package/dist/i18n/locales/de.d.ts +4 -0
  88. package/dist/i18n/locales/de.js +7 -3
  89. package/dist/i18n/locales/el.d.ts +4 -0
  90. package/dist/i18n/locales/el.js +7 -3
  91. package/dist/i18n/locales/en.d.ts +4 -0
  92. package/dist/i18n/locales/en.js +7 -3
  93. package/dist/i18n/locales/es.d.ts +4 -0
  94. package/dist/i18n/locales/es.js +7 -3
  95. package/dist/i18n/locales/fr.d.ts +4 -0
  96. package/dist/i18n/locales/fr.js +7 -3
  97. package/dist/i18n/locales/hi.d.ts +4 -0
  98. package/dist/i18n/locales/hi.js +7 -3
  99. package/dist/i18n/locales/it.d.ts +4 -0
  100. package/dist/i18n/locales/it.js +7 -3
  101. package/dist/i18n/locales/ja.d.ts +4 -0
  102. package/dist/i18n/locales/ja.js +7 -3
  103. package/dist/i18n/locales/nl.d.ts +4 -0
  104. package/dist/i18n/locales/nl.js +7 -3
  105. package/dist/i18n/locales/pl.d.ts +4 -0
  106. package/dist/i18n/locales/pl.js +7 -3
  107. package/dist/i18n/locales/pt.d.ts +4 -0
  108. package/dist/i18n/locales/pt.js +7 -3
  109. package/dist/i18n/locales/ro.d.ts +4 -0
  110. package/dist/i18n/locales/ro.js +7 -3
  111. package/dist/i18n/locales/ru.d.ts +4 -0
  112. package/dist/i18n/locales/ru.js +7 -3
  113. package/dist/i18n/locales/sq.d.ts +4 -0
  114. package/dist/i18n/locales/sq.js +7 -3
  115. package/dist/i18n/locales/sv.d.ts +4 -0
  116. package/dist/i18n/locales/sv.js +7 -3
  117. package/dist/i18n/locales/tr.d.ts +4 -0
  118. package/dist/i18n/locales/tr.js +7 -3
  119. package/dist/i18n/locales/zh.d.ts +4 -0
  120. package/dist/i18n/locales/zh.js +7 -3
  121. package/dist/index.js +31 -31
  122. package/dist/locales/ar.json +7 -3
  123. package/dist/locales/de.json +7 -3
  124. package/dist/locales/el.json +7 -3
  125. package/dist/locales/en.json +7 -3
  126. package/dist/locales/es.json +7 -3
  127. package/dist/locales/fr.json +7 -3
  128. package/dist/locales/hi.json +7 -3
  129. package/dist/locales/it.json +7 -3
  130. package/dist/locales/ja.json +7 -3
  131. package/dist/locales/nl.json +7 -3
  132. package/dist/locales/pl.json +7 -3
  133. package/dist/locales/pt.json +7 -3
  134. package/dist/locales/ro.json +7 -3
  135. package/dist/locales/ru.json +7 -3
  136. package/dist/locales/sq.json +7 -3
  137. package/dist/locales/sv.json +7 -3
  138. package/dist/locales/tr.json +7 -3
  139. package/dist/locales/zh.json +7 -3
  140. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  141. package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +8 -6
  142. package/dist/patterns/patient-shell/index.js +1 -1
  143. package/dist/tokens.css +1 -1
  144. package/package.json +1 -1
  145. package/dist/_chunks/agenda-tray-DQayYmQ0.js +0 -165
  146. package/dist/_chunks/ai-tools-rail-CYLWrRmm.js +0 -280
  147. package/dist/_chunks/circle-arrow-up-CC_85SuH.js +0 -16
  148. package/dist/_chunks/dropdown-menu-CUEXqKis.js +0 -299
  149. package/dist/_chunks/marketplace-app-shell-UKSLx9K_.js +0 -428
  150. package/dist/_chunks/patient-shell-DUmhXnFq.js +0 -174
  151. package/dist/_chunks/task-tray-B8jFv5FV.js +0 -196
  152. package/dist/_chunks/use-theme-C2dHKUAN.js +0 -145
@@ -0,0 +1,159 @@
1
+ import { useSyncExternalStore as D, useEffect as k, useCallback as M } from "react";
2
+ const y = "alfadocs-ui.theme", b = "alfadocs-ui.accessibility", n = {
3
+ light: "theme-light",
4
+ dark: "theme-dark",
5
+ accessible: "theme-accessible"
6
+ }, _ = "(prefers-color-scheme: dark)", O = "(prefers-contrast: more)";
7
+ function m(e) {
8
+ if (typeof window > "u") return null;
9
+ try {
10
+ return window.localStorage.getItem(e);
11
+ } catch {
12
+ return null;
13
+ }
14
+ }
15
+ function L(e, t) {
16
+ if (!(typeof window > "u"))
17
+ try {
18
+ t === null ? window.localStorage.removeItem(e) : window.localStorage.setItem(e, t);
19
+ } catch {
20
+ }
21
+ }
22
+ function E(e) {
23
+ return e === "light" || e === "dark" || e === "system";
24
+ }
25
+ function S(e) {
26
+ return e === "default" || e === "accessible" || e === "system";
27
+ }
28
+ function I() {
29
+ const e = m(y), t = m(b), r = typeof window < "u" && typeof window.matchMedia == "function", s = typeof document < "u" ? document.documentElement.classList : null, w = s ? s.contains(n.dark) ? "dark" : s.contains(n.light) ? "light" : null : null, v = s != null && s.contains(n.accessible) ? "accessible" : null;
30
+ return {
31
+ theme: E(e) ? e : w ?? "system",
32
+ accessibility: S(t) ? t : v ?? "system",
33
+ prefersDark: r ? window.matchMedia(_).matches : !1,
34
+ prefersMoreContrast: r ? window.matchMedia(O).matches : !1
35
+ };
36
+ }
37
+ let i = I();
38
+ const g = /* @__PURE__ */ new Set();
39
+ function c(e) {
40
+ e.theme === i.theme && e.accessibility === i.accessibility && e.prefersDark === i.prefersDark && e.prefersMoreContrast === i.prefersMoreContrast || (i = e, g.forEach((t) => t()));
41
+ }
42
+ function R(e) {
43
+ return g.add(e), () => {
44
+ g.delete(e);
45
+ };
46
+ }
47
+ function H() {
48
+ return i;
49
+ }
50
+ function V() {
51
+ return {
52
+ theme: "system",
53
+ accessibility: "system",
54
+ prefersDark: !1,
55
+ prefersMoreContrast: !1
56
+ };
57
+ }
58
+ let h = 0, d = null, f = null, u = null;
59
+ function Y(e) {
60
+ c({ ...i, prefersDark: e.matches });
61
+ }
62
+ function F(e) {
63
+ c({ ...i, prefersMoreContrast: e.matches });
64
+ }
65
+ function G(e) {
66
+ if (e.key === y) {
67
+ const t = E(e.newValue) ? e.newValue : "system";
68
+ c({ ...i, theme: t });
69
+ } else if (e.key === b) {
70
+ const t = S(e.newValue) ? e.newValue : "system";
71
+ c({ ...i, accessibility: t });
72
+ }
73
+ }
74
+ function T() {
75
+ if (typeof document > "u") return;
76
+ const e = document.documentElement.classList, t = m(y), r = m(b), s = e.contains(n.dark) ? "dark" : e.contains(n.light) ? "light" : null, w = e.contains(
77
+ n.accessible
78
+ ) ? "accessible" : null;
79
+ c({
80
+ ...i,
81
+ theme: E(t) ? t : s ?? "system",
82
+ accessibility: S(r) ? r : w ?? "system"
83
+ });
84
+ }
85
+ function C(e, t) {
86
+ return typeof e.addEventListener == "function" ? (e.addEventListener("change", t), () => e.removeEventListener("change", t)) : (e.addListener(t), () => e.removeListener(t));
87
+ }
88
+ function K() {
89
+ return h += 1, h > 1 || typeof window > "u" || (typeof window.matchMedia == "function" && (d = window.matchMedia(_), f = window.matchMedia(O), c({
90
+ ...i,
91
+ prefersDark: d.matches,
92
+ prefersMoreContrast: f.matches
93
+ }), a = C(d, Y), l = C(f, F)), u = G, window.addEventListener("storage", u), typeof document < "u" && typeof MutationObserver < "u" && (T(), o = new MutationObserver(T), o.observe(document.documentElement, {
94
+ attributes: !0,
95
+ attributeFilter: ["class"]
96
+ }))), p;
97
+ }
98
+ let a = null, l = null, o = null;
99
+ function p() {
100
+ h -= 1, !(h > 0) && (a == null || a(), l == null || l(), a = null, l = null, d = null, f = null, u && typeof window < "u" && window.removeEventListener("storage", u), u = null, o == null || o.disconnect(), o = null);
101
+ }
102
+ function A(e) {
103
+ const t = e.theme === "system" ? e.prefersDark ? "dark" : "light" : e.theme, r = e.accessibility === "system" ? e.prefersMoreContrast : e.accessibility === "accessible";
104
+ return t === "dark" && r ? "dark-accessible" : t === "dark" ? "dark" : r ? "light-accessible" : "light";
105
+ }
106
+ function Q(e) {
107
+ switch (e) {
108
+ case "light":
109
+ return [n.light];
110
+ case "dark":
111
+ return [n.dark];
112
+ case "light-accessible":
113
+ return [n.light, n.accessible];
114
+ case "dark-accessible":
115
+ return [n.dark, n.accessible];
116
+ }
117
+ }
118
+ const U = [
119
+ n.light,
120
+ n.dark,
121
+ n.accessible
122
+ ];
123
+ function B(e) {
124
+ if (typeof document > "u") return;
125
+ const t = document.documentElement, r = new Set(Q(e));
126
+ U.forEach((s) => {
127
+ r.has(s) ? t.classList.add(s) : t.classList.remove(s);
128
+ });
129
+ }
130
+ function W() {
131
+ const e = D(R, H, V);
132
+ k(() => K(), []), k(() => {
133
+ B(A(e));
134
+ }, [e]);
135
+ const t = M((s) => {
136
+ L(y, s === "system" ? null : s), c({ ...i, theme: s });
137
+ }, []), r = M((s) => {
138
+ L(
139
+ b,
140
+ s === "system" ? null : s
141
+ ), c({ ...i, accessibility: s });
142
+ }, []);
143
+ return {
144
+ theme: e.theme,
145
+ accessibility: e.accessibility,
146
+ resolvedTheme: A(e),
147
+ setTheme: t,
148
+ setAccessibility: r
149
+ };
150
+ }
151
+ export {
152
+ b as A,
153
+ n as T,
154
+ y as a,
155
+ A as r,
156
+ Q as t,
157
+ W as u
158
+ };
159
+ //# sourceMappingURL=use-theme-CAuo6EYT.js.map
@@ -2,7 +2,7 @@ import { jsxs as d, jsx as e } from "react/jsx-runtime";
2
2
  import { forwardRef as U, useId as M, useState as T, useEffect as b, useMemo as G, useRef as p, useCallback as S } from "react";
3
3
  import { c as V } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as X } from "react-i18next";
5
- import { A as v } from "./alert-CUTxnym2.js";
5
+ import { A as v } from "./alert-_mUKLmwA.js";
6
6
  import { B as Y } from "./button-DD_0Xdmr.js";
7
7
  import { C as Z } from "./chevron-down-BX_NP2Yh.js";
8
8
  const O = V(
@@ -217,4 +217,4 @@ nn.displayName = "WarningStack";
217
217
  export {
218
218
  nn as W
219
219
  };
220
- //# sourceMappingURL=warning-stack-CXfoAT-_.js.map
220
+ //# sourceMappingURL=warning-stack-Cv4fr5zo.js.map
@@ -11,9 +11,9 @@ import { P as U } from "./pencil-CfQX-0Qc.js";
11
11
  import { c as z } from "./createLucideIcon-CrFbzy84.js";
12
12
  import { C as Ne } from "./circle-BkqTgYmt.js";
13
13
  import { u as Ce } from "./registry-nPAVE19X.js";
14
- import { A as V } from "./alert-CUTxnym2.js";
14
+ import { A as V } from "./alert-_mUKLmwA.js";
15
15
  import { B as _e } from "./button-DD_0Xdmr.js";
16
- import { D as N } from "./dropdown-menu-CUEXqKis.js";
16
+ import { D as N } from "./dropdown-menu-DwwPovMZ.js";
17
17
  import { E } from "./empty-state-BLy7tigq.js";
18
18
  import { P as ae } from "./plus-CYKNmfuA.js";
19
19
  import { G as ne } from "./globe-BkEFMNSg.js";
@@ -1366,4 +1366,4 @@ export {
1366
1366
  ee as r,
1367
1367
  L as w
1368
1368
  };
1369
- //# sourceMappingURL=workflow-map-DzX_LI4y.js.map
1369
+ //# sourceMappingURL=workflow-map-BJDUNYlX.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "packageVersion": "0.50.1",
3
+ "packageVersion": "0.52.0",
4
4
  "components": [
5
5
  {
6
6
  "kind": "component",
@@ -7,11 +7,26 @@ declare const productName: (props?: ({
7
7
  type LockupSize = NonNullable<VariantProps<typeof productName>['size']>;
8
8
  export type ProductLockupProps = {
9
9
  /**
10
- * The product name paired with the Alfadocs wordmark e.g. `"Builders"`
11
- * renders as "Alfadocs Builders". Passed verbatim (product names are not
12
- * translated); the lockup's accessible name becomes `Alfadocs <name>`.
10
+ * The product name. Passed verbatim (product names are not translated).
11
+ *
12
+ * - `variant="standard"` (default): renders as "Alfadocs <name>" with the
13
+ * wordmark; accessible name is `Alfadocs <name>`.
14
+ * - `variant="maker"`: renders as "[mark] <name> by Alfadocs"; accessible
15
+ * name is `<name> by Alfadocs`.
13
16
  */
14
17
  name: string;
18
+ /**
19
+ * Which lockup composition to use.
20
+ *
21
+ * - `'standard'` (default) — Alfadocs wordmark + product name ("Alfadocs
22
+ * Builders"). Use for **internal** Alfadocs products (Alfadocs Builders,
23
+ * Alfadocs API) where the product is part of the Alfadocs family.
24
+ * - `'maker'` — "<name> by Alfadocs" with the four-pillar mark and the name
25
+ * as the prominent element. Use for **external** marketplace extensions
26
+ * ("Scribe by Alfadocs") where the extension's own name leads and
27
+ * "by Alfadocs" is the maker attribution.
28
+ */
29
+ variant?: 'standard' | 'maker';
15
30
  /**
16
31
  * Render the name as a solid `--foreground` ink, upright (no gradient, no
17
32
  * italic), and pair it with the monochrome wordmark. Use for print,
@@ -32,21 +47,41 @@ export type ProductLockupProps = {
32
47
  className?: string;
33
48
  } & Omit<ComponentPropsWithoutRef<'span'>, 'role' | 'aria-label' | 'aria-hidden' | 'children' | 'className'>;
34
49
  /**
35
- * The standard lockup pairing the Alfadocs wordmark with a product name
36
- * ("Alfadocs Builders", "Alfadocs MyApp"). Every marketplace app should use
37
- * this rather than hand-rolling a wordmark + typed span.
50
+ * Pairs a product name with the Alfadocs brand. Two compositions:
51
+ *
52
+ * - `variant="standard"` (default) the Alfadocs wordmark + product name
53
+ * ("Alfadocs Builders"). For internal Alfadocs products. Exposed to
54
+ * assistive tech as a single `img` named `Alfadocs <name>`.
55
+ * - `variant="maker"` — "[mark] <name> by Alfadocs". For external marketplace
56
+ * extensions where the extension's name leads. Exposed as a single `img`
57
+ * named `<name> by Alfadocs`.
38
58
  *
39
- * The whole lockup is exposed to assistive tech as a single `img` named
40
- * `Alfadocs <name>`; the inner wordmark and the visible name are both
41
- * decorative so the brand isn't announced twice.
59
+ * In both cases the inner wordmark/mark and the visible name are decorative so
60
+ * the brand isn't announced twice. Every marketplace app should use this
61
+ * rather than hand-rolling a wordmark + typed span.
42
62
  */
43
63
  export declare const ProductLockup: import("react").ForwardRefExoticComponent<{
44
64
  /**
45
- * The product name paired with the Alfadocs wordmark e.g. `"Builders"`
46
- * renders as "Alfadocs Builders". Passed verbatim (product names are not
47
- * translated); the lockup's accessible name becomes `Alfadocs <name>`.
65
+ * The product name. Passed verbatim (product names are not translated).
66
+ *
67
+ * - `variant="standard"` (default): renders as "Alfadocs <name>" with the
68
+ * wordmark; accessible name is `Alfadocs <name>`.
69
+ * - `variant="maker"`: renders as "[mark] <name> by Alfadocs"; accessible
70
+ * name is `<name> by Alfadocs`.
48
71
  */
49
72
  name: string;
73
+ /**
74
+ * Which lockup composition to use.
75
+ *
76
+ * - `'standard'` (default) — Alfadocs wordmark + product name ("Alfadocs
77
+ * Builders"). Use for **internal** Alfadocs products (Alfadocs Builders,
78
+ * Alfadocs API) where the product is part of the Alfadocs family.
79
+ * - `'maker'` — "<name> by Alfadocs" with the four-pillar mark and the name
80
+ * as the prominent element. Use for **external** marketplace extensions
81
+ * ("Scribe by Alfadocs") where the extension's own name leads and
82
+ * "by Alfadocs" is the maker attribution.
83
+ */
84
+ variant?: "standard" | "maker";
50
85
  /**
51
86
  * Render the name as a solid `--foreground` ink, upright (no gradient, no
52
87
  * italic), and pair it with the monochrome wordmark. Use for print,
@@ -1,12 +1,17 @@
1
- import { type HTMLAttributes } from 'react';
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
2
  import { type VariantProps } from 'class-variance-authority';
3
3
  export { isSafeEntityUrl as isSafeAgendaUrl } from '../_shared/is-safe-url';
4
- export type AppointmentStatus = 'confirmed' | 'pending' | 'cancelled';
4
+ export type AppointmentStatus = 'confirmed' | 'pending' | 'cancelled' | 'absent';
5
5
  export interface AgendaItem {
6
6
  /** Unique identifier for the appointment. */
7
7
  id: string;
8
8
  /** Display time string (e.g. "09:00"). Localised by the consumer. */
9
9
  time: string;
10
+ /**
11
+ * Localised date eyebrow (e.g. "Thu 12 Jun") rendered under the time —
12
+ * for agendas spanning more than today (upcoming-appointments queues).
13
+ */
14
+ dateLabel?: string;
10
15
  /** Patient identity — drives the avatar's initials + accessible name. */
11
16
  patient: {
12
17
  name: string;
@@ -14,6 +19,13 @@ export interface AgendaItem {
14
19
  };
15
20
  /** Treatment / appointment type — short localised label. */
16
21
  treatment?: string;
22
+ /**
23
+ * Context line under the treatment (e.g. "Dr. Bianchi · Chair 2").
24
+ * Localised and pre-joined by the consumer.
25
+ */
26
+ meta?: string;
27
+ /** Free-text booking note — muted body line, clamped. */
28
+ note?: string;
17
29
  /** Lifecycle state — drives a trailing status chip. */
18
30
  status?: AppointmentStatus;
19
31
  /** Optional deep link — when present the row is an anchor. */
@@ -26,6 +38,11 @@ export interface AgendaCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'o
26
38
  size?: 'sm' | 'md';
27
39
  /** Fires when the row is activated. */
28
40
  onActivate?: (item: AgendaItem) => void;
41
+ /**
42
+ * Trailing per-row action toolbar. Rendered above the stretched-link
43
+ * overlay so the controls stay clickable inside an interactive row.
44
+ */
45
+ actions?: ReactNode;
29
46
  }
30
47
  declare const agendaCardVariants: (props?: ({
31
48
  size?: "sm" | "md" | null | undefined;
@@ -1,4 +1,4 @@
1
- import { A as e } from "../../_chunks/agenda-card-BaSfVfrL.js";
1
+ import { A as e } from "../../_chunks/agenda-card-Bl-SBiCh.js";
2
2
  import { a as d } from "../../_chunks/agenda-card.agent-B_R47-c9.js";
3
3
  import { i as g } from "../../_chunks/is-safe-url-DkETxeHz.js";
4
4
  export {
@@ -1,4 +1,4 @@
1
- import { type HTMLAttributes } from 'react';
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
2
  import { type VariantProps } from 'class-variance-authority';
3
3
  import { type AgendaItem } from '../agenda-card';
4
4
  declare const agendaTrayVariants: (props?: ({
@@ -35,6 +35,29 @@ export interface AgendaTrayProps extends Omit<HTMLAttributes<HTMLElement>, 'onCl
35
35
  loading?: boolean;
36
36
  emptyTitle?: string;
37
37
  emptyDescription?: string;
38
+ /** Optional CTA wired into the empty state (EmptyState primaryAction). */
39
+ emptyAction?: {
40
+ label: string;
41
+ onClick: () => void;
42
+ };
43
+ /**
44
+ * Pinned footer link (e.g. "All upcoming appointments"). Localised by
45
+ * the consumer; rendered after the list, before the section closes.
46
+ */
47
+ viewAllLabel?: string;
48
+ /** Fires when the footer link is activated. Required to render it. */
49
+ onViewAll?: () => void;
50
+ /**
51
+ * Per-row trailing action toolbar, forwarded to each AgendaCard's
52
+ * `actions` slot.
53
+ */
54
+ renderItemActions?: (item: AgendaItem) => ReactNode;
55
+ /**
56
+ * Constrain the list to the tray's own height and scroll inside it —
57
+ * pair with a height/max-height on `className`. The scroll region is
58
+ * keyboard-focusable so it stays operable without a pointer.
59
+ */
60
+ scrollable?: boolean;
38
61
  }
39
62
  export declare const AgendaTray: import("react").ForwardRefExoticComponent<AgendaTrayProps & import("react").RefAttributes<HTMLElement>>;
40
63
  export {};
@@ -1,4 +1,4 @@
1
- import { A as r, a as g } from "../../_chunks/agenda-tray-DQayYmQ0.js";
1
+ import { A as r, a as g } from "../../_chunks/agenda-tray-DA6qj8BL.js";
2
2
  export {
3
3
  r as AgendaTray,
4
4
  g as agendaTrayAgent
@@ -1,4 +1,4 @@
1
- import { A as e, a as o } from "../../_chunks/ai-consent-banner-F2md5JD3.js";
1
+ import { A as e, a as o } from "../../_chunks/ai-consent-banner-DBKV27je.js";
2
2
  export {
3
3
  e as AiConsentBanner,
4
4
  o as aiConsentBannerAgent
@@ -53,6 +53,14 @@ export interface AiToolsRailProps extends VariantProps<typeof railVariants> {
53
53
  side?: 'start' | 'end';
54
54
  /** Accessible label for the toolbar strip. */
55
55
  railLabel?: string;
56
+ /**
57
+ * Opt-in resize affordance for the open tool panel. Renders a
58
+ * `role="separator"` drag handle on the panel's inner edge (the edge
59
+ * facing the main content). The committed width is written to
60
+ * `--ai-tools-rail-panel-inline-size` on the panel element (288–640px);
61
+ * Enter / double-click resets to the token-driven default. Default `false`.
62
+ */
63
+ resizablePanel?: boolean;
56
64
  className?: string;
57
65
  }
58
66
  export declare const AiToolsRail: import("react").ForwardRefExoticComponent<AiToolsRailProps & import("react").RefAttributes<AiToolsRailHandle>>;
@@ -1,4 +1,4 @@
1
- import { A as i, a as l } from "../../_chunks/ai-tools-rail-CYLWrRmm.js";
1
+ import { A as i, a as l } from "../../_chunks/ai-tools-rail-7tC3GT4h.js";
2
2
  export {
3
3
  i as AiToolsRail,
4
4
  l as aiToolsRailAgent
@@ -1,4 +1,4 @@
1
- import { A as o } from "../../_chunks/alert-CUTxnym2.js";
1
+ import { A as o } from "../../_chunks/alert-_mUKLmwA.js";
2
2
  export {
3
3
  o as Alert
4
4
  };
@@ -1,4 +1,4 @@
1
- import { A as r, a } from "../../_chunks/audio-recorder-DVJXV7_k.js";
1
+ import { A as r, a } from "../../_chunks/audio-recorder-D6OVfNiZ.js";
2
2
  export {
3
3
  r as AudioRecorder,
4
4
  a as audioRecorderAgent
@@ -1,4 +1,4 @@
1
- import { B as A, C as R, O as a, b as s } from "../../_chunks/booking-DljH0JkS.js";
1
+ import { B as A, C as R, O as a, b as s } from "../../_chunks/booking-BUV9fspj.js";
2
2
  export {
3
3
  A as Booking,
4
4
  R as CONFIRMATION_CHANNEL_ORDER,
@@ -3,7 +3,7 @@ import { type VariantProps } from 'class-variance-authority';
3
3
  import type { ButtonProps } from '../button/button';
4
4
  type ButtonIntent = NonNullable<ButtonProps['intent']>;
5
5
  declare const buttonGroupVariants: (props?: ({
6
- orientation?: "horizontal" | "vertical" | null | undefined;
6
+ orientation?: "vertical" | "horizontal" | null | undefined;
7
7
  separator?: boolean | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
9
  export interface ButtonGroupProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof buttonGroupVariants> {
@@ -7,7 +7,7 @@ export interface CheckboxGroupHandle {
7
7
  clearSelection: () => void;
8
8
  }
9
9
  declare const checkboxGroupVariants: (props?: ({
10
- orientation?: "horizontal" | "vertical" | null | undefined;
10
+ orientation?: "vertical" | "horizontal" | null | undefined;
11
11
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
12
  export interface CheckboxGroupOption {
13
13
  value: string;
@@ -1,4 +1,4 @@
1
- import { A as l, B as r, C as t, a as s, D as n, b as d, c as i, d as o, E as C, e as R, I as F, L as g, N as T, f as b, S as u, g as c, h as D, T as m, i as p, j as x, k as f, l as y, m as E, n as S, o as h, U as A, p as L, q as N, u as k } from "../../_chunks/editable-currency-cell-renderer-Bh48OHRv.js";
1
+ import { A as l, B as r, C as t, a as s, D as n, b as d, c as i, d as o, E as C, e as R, I as F, L as g, N as T, f as b, S as u, g as c, h as D, T as m, i as p, j as x, k as f, l as y, m as E, n as S, o as h, U as A, p as L, q as N, u as k } from "../../_chunks/editable-currency-cell-renderer-D5C5tCfu.js";
2
2
  export {
3
3
  l as ActionsCellRenderer,
4
4
  r as BalanceCellRenderer,
@@ -1,4 +1,4 @@
1
- import { D as a, d as c } from "../../_chunks/document-scanner-Cxqvq7GR.js";
1
+ import { D as a, d as c } from "../../_chunks/document-scanner-biBS_f6c.js";
2
2
  export {
3
3
  a as DocumentScanner,
4
4
  c as documentScannerAgent
@@ -22,6 +22,7 @@ export interface DropdownMenuItemProps extends ComponentPropsWithoutRef<typeof R
22
22
  shortcut?: Array<KbdNamedKey | string>;
23
23
  }
24
24
  export type DropdownMenuCheckboxItemProps = ComponentPropsWithoutRef<typeof RadixDropdownMenu.CheckboxItem>;
25
+ export type DropdownMenuSwitchItemProps = ComponentPropsWithoutRef<typeof RadixDropdownMenu.CheckboxItem>;
25
26
  export type DropdownMenuRadioItemProps = ComponentPropsWithoutRef<typeof RadixDropdownMenu.RadioItem>;
26
27
  export type DropdownMenuLabelProps = ComponentPropsWithoutRef<typeof RadixDropdownMenu.Label>;
27
28
  export type DropdownMenuSeparatorProps = ComponentPropsWithoutRef<typeof RadixDropdownMenu.Separator>;
@@ -44,6 +45,7 @@ export declare const DropdownMenu: {
44
45
  Group: import("react").ForwardRefExoticComponent<RadixDropdownMenu.DropdownMenuGroupProps & import("react").RefAttributes<HTMLDivElement>>;
45
46
  Item: import("react").ForwardRefExoticComponent<DropdownMenuItemProps & import("react").RefAttributes<HTMLDivElement>>;
46
47
  CheckboxItem: import("react").ForwardRefExoticComponent<Omit<RadixDropdownMenu.DropdownMenuCheckboxItemProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
48
+ SwitchItem: import("react").ForwardRefExoticComponent<Omit<RadixDropdownMenu.DropdownMenuCheckboxItemProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
47
49
  RadioGroup: import("react").ForwardRefExoticComponent<RadixDropdownMenu.DropdownMenuRadioGroupProps & import("react").RefAttributes<HTMLDivElement>>;
48
50
  RadioItem: import("react").ForwardRefExoticComponent<Omit<RadixDropdownMenu.DropdownMenuRadioItemProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
49
51
  Label: import("react").ForwardRefExoticComponent<Omit<RadixDropdownMenu.DropdownMenuLabelProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,4 @@
1
- import { D as d, d as e } from "../../_chunks/dropdown-menu-CUEXqKis.js";
1
+ import { D as d, d as e } from "../../_chunks/dropdown-menu-DwwPovMZ.js";
2
2
  export {
3
3
  d as DropdownMenu,
4
4
  e as dropdownMenuAgent
@@ -1,7 +1,7 @@
1
1
  import { type HTMLAttributes } from 'react';
2
2
  import { type VariantProps } from 'class-variance-authority';
3
3
  declare const fieldVariants: (props?: ({
4
- orientation?: "horizontal" | "vertical" | null | undefined;
4
+ orientation?: "vertical" | "horizontal" | null | undefined;
5
5
  disabled?: boolean | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  type RequiredIndicator = {
@@ -1,4 +1,4 @@
1
- import { F as m, f as l } from "../../_chunks/freemium-paywall-BWaLWje-.js";
1
+ import { F as m, f as l } from "../../_chunks/freemium-paywall-gHGA44dW.js";
2
2
  export {
3
3
  m as FreemiumPaywall,
4
4
  l as freemiumPaywallAgent
@@ -1,4 +1,4 @@
1
- import { H as t } from "../../_chunks/header-settings-Bx0Biimh.js";
1
+ import { H as t } from "../../_chunks/header-settings-D5Z2B_Yz.js";
2
2
  export {
3
3
  t as HeaderSettings
4
4
  };