@alfadocs/ui-kit-debug 1.129.0 → 1.130.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 (150) hide show
  1. package/dist/_chunks/calendar-appointment-editor-dialog-CXch4Pmu.js +13663 -0
  2. package/dist/_chunks/calendar-appointment-editor-dialog-CXch4Pmu.js.map +1 -0
  3. package/dist/_chunks/contact-round-DiSvB3LP.js +18 -0
  4. package/dist/_chunks/contact-round-DiSvB3LP.js.map +1 -0
  5. package/dist/_chunks/{entity-summary-Dzk54yom.js → entity-summary-KHM0PnSI.js} +55 -67
  6. package/dist/_chunks/entity-summary-KHM0PnSI.js.map +1 -0
  7. package/dist/_chunks/{header-settings-DsvheAOt.js → header-settings-ZGvYAuKF.js} +101 -97
  8. package/dist/_chunks/header-settings-ZGvYAuKF.js.map +1 -0
  9. package/dist/_chunks/{marketplace-app-shell-BOBWmzoT.js → marketplace-app-shell-D_HA8CKx.js} +2 -2
  10. package/dist/_chunks/{marketplace-app-shell-BOBWmzoT.js.map → marketplace-app-shell-D_HA8CKx.js.map} +1 -1
  11. package/dist/_chunks/{patient-search-D_S7joff.js → patient-search-OAwFgOW3.js} +2 -2
  12. package/dist/_chunks/{patient-search-D_S7joff.js.map → patient-search-OAwFgOW3.js.map} +1 -1
  13. package/dist/_chunks/{toast-BNoN8Qjh.js → toast-DQ1Zu1kk.js} +264 -251
  14. package/dist/_chunks/{toast-BNoN8Qjh.js.map → toast-DQ1Zu1kk.js.map} +1 -1
  15. package/dist/_chunks/use-appointment-details-read-BrykoTOR.js +2475 -0
  16. package/dist/_chunks/use-appointment-details-read-BrykoTOR.js.map +1 -0
  17. package/dist/agent-catalog.json +1 -1
  18. package/dist/browser-support.js +1 -1
  19. package/dist/components/appointment-details-panel/appointment-details-panel.d.ts +7 -0
  20. package/dist/components/appointment-details-panel/appointment-details-panel.d.ts.map +1 -1
  21. package/dist/components/appointment-details-panel/appointment-details-panel.links.d.ts +2 -0
  22. package/dist/components/appointment-details-panel/appointment-details-panel.links.d.ts.map +1 -1
  23. package/dist/components/appointment-details-panel/appointment-details-panel.sections.d.ts +5 -1
  24. package/dist/components/appointment-details-panel/appointment-details-panel.sections.d.ts.map +1 -1
  25. package/dist/components/appointment-details-panel/index.js +1 -1
  26. package/dist/components/entity-summary/index.js +1 -1
  27. package/dist/components/header-settings/header-settings.d.ts.map +1 -1
  28. package/dist/components/header-settings/index.js +1 -1
  29. package/dist/components/patient-search/index.js +1 -1
  30. package/dist/components/toast/index.js +1 -1
  31. package/dist/components/toast/toast.d.ts.map +1 -1
  32. package/dist/core.css +1 -1
  33. package/dist/i18n/locales/ar.d.ts +12 -4
  34. package/dist/i18n/locales/ar.d.ts.map +1 -1
  35. package/dist/i18n/locales/ar.js +15 -7
  36. package/dist/i18n/locales/ar.js.map +1 -1
  37. package/dist/i18n/locales/de.d.ts +12 -4
  38. package/dist/i18n/locales/de.d.ts.map +1 -1
  39. package/dist/i18n/locales/de.js +15 -7
  40. package/dist/i18n/locales/de.js.map +1 -1
  41. package/dist/i18n/locales/el.d.ts +12 -4
  42. package/dist/i18n/locales/el.d.ts.map +1 -1
  43. package/dist/i18n/locales/el.js +15 -7
  44. package/dist/i18n/locales/el.js.map +1 -1
  45. package/dist/i18n/locales/en.d.ts +12 -4
  46. package/dist/i18n/locales/en.d.ts.map +1 -1
  47. package/dist/i18n/locales/en.js +12 -4
  48. package/dist/i18n/locales/en.js.map +1 -1
  49. package/dist/i18n/locales/es.d.ts +12 -4
  50. package/dist/i18n/locales/es.d.ts.map +1 -1
  51. package/dist/i18n/locales/es.js +15 -7
  52. package/dist/i18n/locales/es.js.map +1 -1
  53. package/dist/i18n/locales/fr.d.ts +12 -4
  54. package/dist/i18n/locales/fr.d.ts.map +1 -1
  55. package/dist/i18n/locales/fr.js +15 -7
  56. package/dist/i18n/locales/fr.js.map +1 -1
  57. package/dist/i18n/locales/hi.d.ts +12 -4
  58. package/dist/i18n/locales/hi.d.ts.map +1 -1
  59. package/dist/i18n/locales/hi.js +15 -7
  60. package/dist/i18n/locales/hi.js.map +1 -1
  61. package/dist/i18n/locales/it.d.ts +12 -4
  62. package/dist/i18n/locales/it.d.ts.map +1 -1
  63. package/dist/i18n/locales/it.js +15 -7
  64. package/dist/i18n/locales/it.js.map +1 -1
  65. package/dist/i18n/locales/ja.d.ts +12 -4
  66. package/dist/i18n/locales/ja.d.ts.map +1 -1
  67. package/dist/i18n/locales/ja.js +15 -7
  68. package/dist/i18n/locales/ja.js.map +1 -1
  69. package/dist/i18n/locales/nl.d.ts +12 -4
  70. package/dist/i18n/locales/nl.d.ts.map +1 -1
  71. package/dist/i18n/locales/nl.js +15 -7
  72. package/dist/i18n/locales/nl.js.map +1 -1
  73. package/dist/i18n/locales/pl.d.ts +12 -4
  74. package/dist/i18n/locales/pl.d.ts.map +1 -1
  75. package/dist/i18n/locales/pl.js +15 -7
  76. package/dist/i18n/locales/pl.js.map +1 -1
  77. package/dist/i18n/locales/pt.d.ts +12 -4
  78. package/dist/i18n/locales/pt.d.ts.map +1 -1
  79. package/dist/i18n/locales/pt.js +15 -7
  80. package/dist/i18n/locales/pt.js.map +1 -1
  81. package/dist/i18n/locales/ro.d.ts +12 -4
  82. package/dist/i18n/locales/ro.d.ts.map +1 -1
  83. package/dist/i18n/locales/ro.js +15 -7
  84. package/dist/i18n/locales/ro.js.map +1 -1
  85. package/dist/i18n/locales/ru.d.ts +12 -4
  86. package/dist/i18n/locales/ru.d.ts.map +1 -1
  87. package/dist/i18n/locales/ru.js +15 -7
  88. package/dist/i18n/locales/ru.js.map +1 -1
  89. package/dist/i18n/locales/sq.d.ts +12 -4
  90. package/dist/i18n/locales/sq.d.ts.map +1 -1
  91. package/dist/i18n/locales/sq.js +15 -7
  92. package/dist/i18n/locales/sq.js.map +1 -1
  93. package/dist/i18n/locales/sv.d.ts +12 -4
  94. package/dist/i18n/locales/sv.d.ts.map +1 -1
  95. package/dist/i18n/locales/sv.js +15 -7
  96. package/dist/i18n/locales/sv.js.map +1 -1
  97. package/dist/i18n/locales/tr.d.ts +12 -4
  98. package/dist/i18n/locales/tr.d.ts.map +1 -1
  99. package/dist/i18n/locales/tr.js +15 -7
  100. package/dist/i18n/locales/tr.js.map +1 -1
  101. package/dist/i18n/locales/zh.d.ts +12 -4
  102. package/dist/i18n/locales/zh.d.ts.map +1 -1
  103. package/dist/i18n/locales/zh.js +15 -7
  104. package/dist/i18n/locales/zh.js.map +1 -1
  105. package/dist/index.js +6 -6
  106. package/dist/locales/ar.json +15 -7
  107. package/dist/locales/de.json +15 -7
  108. package/dist/locales/el.json +15 -7
  109. package/dist/locales/en.json +12 -4
  110. package/dist/locales/es.json +15 -7
  111. package/dist/locales/fr.json +15 -7
  112. package/dist/locales/hi.json +15 -7
  113. package/dist/locales/it.json +15 -7
  114. package/dist/locales/ja.json +15 -7
  115. package/dist/locales/nl.json +15 -7
  116. package/dist/locales/pl.json +15 -7
  117. package/dist/locales/pt.json +15 -7
  118. package/dist/locales/ro.json +15 -7
  119. package/dist/locales/ru.json +15 -7
  120. package/dist/locales/sq.json +15 -7
  121. package/dist/locales/sv.json +15 -7
  122. package/dist/locales/tr.json +15 -7
  123. package/dist/locales/zh.json +15 -7
  124. package/dist/patterns/calendar/calendar-appointment-details.d.ts +10 -1
  125. package/dist/patterns/calendar/calendar-appointment-details.d.ts.map +1 -1
  126. package/dist/patterns/calendar/calendar-appointment-editor-dialog.d.ts.map +1 -1
  127. package/dist/patterns/calendar/calendar-load-error.d.ts.map +1 -1
  128. package/dist/patterns/calendar/calendar-settings-practice.d.ts.map +1 -1
  129. package/dist/patterns/calendar/calendar-waiting-list-panel.d.ts.map +1 -1
  130. package/dist/patterns/calendar/calendar-workspace.d.ts +27 -0
  131. package/dist/patterns/calendar/calendar-workspace.d.ts.map +1 -1
  132. package/dist/patterns/calendar/calendar-workspace.model.d.ts +5 -6
  133. package/dist/patterns/calendar/calendar-workspace.model.d.ts.map +1 -1
  134. package/dist/patterns/calendar/calendar.model.d.ts +57 -8
  135. package/dist/patterns/calendar/calendar.model.d.ts.map +1 -1
  136. package/dist/patterns/calendar/calendar.sheets.d.ts +46 -3
  137. package/dist/patterns/calendar/calendar.sheets.d.ts.map +1 -1
  138. package/dist/patterns/calendar/calendar.surface.d.ts.map +1 -1
  139. package/dist/patterns/calendar/calendar.types.d.ts +13 -5
  140. package/dist/patterns/calendar/calendar.types.d.ts.map +1 -1
  141. package/dist/patterns/calendar/index.js +1 -1
  142. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  143. package/dist/tokens.css +1 -1
  144. package/package.json +1 -1
  145. package/dist/_chunks/calendar-appointment-editor-dialog-DnPADcj9.js +0 -13438
  146. package/dist/_chunks/calendar-appointment-editor-dialog-DnPADcj9.js.map +0 -1
  147. package/dist/_chunks/entity-summary-Dzk54yom.js.map +0 -1
  148. package/dist/_chunks/header-settings-DsvheAOt.js.map +0 -1
  149. package/dist/_chunks/use-appointment-details-read-n7kycxrm.js +0 -2439
  150. package/dist/_chunks/use-appointment-details-read-n7kycxrm.js.map +0 -1
@@ -0,0 +1,18 @@
1
+ import { c } from "./createLucideIcon-DhHxpK9K.js";
2
+ /**
3
+ * @license lucide-react v1.22.0 - ISC
4
+ *
5
+ * This source code is licensed under the ISC license.
6
+ * See the LICENSE file in the root directory of this source tree.
7
+ */
8
+ const e = [
9
+ ["path", { d: "M16 2v2", key: "scm5qe" }],
10
+ ["path", { d: "M17.915 22a6 6 0 0 0-12 0", key: "suqz9p" }],
11
+ ["path", { d: "M8 2v2", key: "pbkmx" }],
12
+ ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }],
13
+ ["rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", key: "12vinp" }]
14
+ ], o = c("contact-round", e);
15
+ export {
16
+ o as C
17
+ };
18
+ //# sourceMappingURL=contact-round-DiSvB3LP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-round-DiSvB3LP.js","sources":["../../node_modules/lucide-react/dist/esm/icons/contact-round.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.22.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M16 2v2\", key: \"scm5qe\" }],\n [\"path\", { d: \"M17.915 22a6 6 0 0 0-12 0\", key: \"suqz9p\" }],\n [\"path\", { d: \"M8 2v2\", key: \"pbkmx\" }],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"rect\", { x: \"3\", y: \"4\", width: \"18\", height: \"18\", rx: \"2\", key: \"12vinp\" }]\n];\nconst ContactRound = createLucideIcon(\"contact-round\", __iconNode);\n\nexport { __iconNode, ContactRound as default };\n//# sourceMappingURL=contact-round.mjs.map\n"],"names":["__iconNode","ContactRound","createLucideIcon"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa;AAAA,EACjB,CAAC,QAAQ,EAAE,GAAG,WAAW,KAAK,SAAQ,CAAE;AAAA,EACxC,CAAC,QAAQ,EAAE,GAAG,6BAA6B,KAAK,SAAQ,CAAE;AAAA,EAC1D,CAAC,QAAQ,EAAE,GAAG,UAAU,KAAK,QAAO,CAAE;AAAA,EACtC,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,KAAK,KAAK,UAAU;AAAA,EACxD,CAAC,QAAQ,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,MAAM,QAAQ,MAAM,IAAI,KAAK,KAAK,SAAQ,CAAE;AAChF,GACMC,IAAeC,EAAiB,iBAAiBF,CAAU;","x_google_ignoreList":[0]}
@@ -1,9 +1,9 @@
1
- import { jsxs as a, jsx as e, Fragment as _ } from "react/jsx-runtime";
2
- import { forwardRef as q, useId as w, useRef as f, useImperativeHandle as K, useMemo as P } from "react";
3
- import { useTranslation as D } from "react-i18next";
1
+ import { jsxs as a, jsx as e, Fragment as M } from "react/jsx-runtime";
2
+ import { forwardRef as P, useId as w, useRef as f, useImperativeHandle as D, useMemo as H } from "react";
3
+ import { useTranslation as _ } from "react-i18next";
4
4
  import { A as I } from "./alert-C4WKViaS.js";
5
- import { A as H } from "./avatar-Dp5apm1d.js";
6
- import { B as $ } from "./button-DohK_Ak_.js";
5
+ import { A as $ } from "./avatar-Dp5apm1d.js";
6
+ import { B as q } from "./button-DohK_Ak_.js";
7
7
  import { I as O } from "./icon-button-S8_weU3g.js";
8
8
  import { C } from "./card-n6W6LW-N.js";
9
9
  import { L as F } from "./link-CeV7FoI6.js";
@@ -13,20 +13,8 @@ import { u as X } from "./registry-DvAUVLHh.js";
13
13
  import { C as J } from "./clock-Drd4Wtis.js";
14
14
  import { R as Q } from "./refresh-cw-DnI0cLFC.js";
15
15
  import { X as U } from "./x-B5YnXwCz.js";
16
- import { c as Y } from "./createLucideIcon-DhHxpK9K.js";
17
- /**
18
- * @license lucide-react v1.22.0 - ISC
19
- *
20
- * This source code is licensed under the ISC license.
21
- * See the LICENSE file in the root directory of this source tree.
22
- */
23
- const Z = [
24
- ["path", { d: "M16 2v2", key: "scm5qe" }],
25
- ["path", { d: "M17.915 22a6 6 0 0 0-12 0", key: "suqz9p" }],
26
- ["path", { d: "M8 2v2", key: "pbkmx" }],
27
- ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }],
28
- ["rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", key: "12vinp" }]
29
- ], ee = Y("contact-round", Z), te = {
16
+ import { C as Y } from "./contact-round-DiSvB3LP.js";
17
+ const Z = {
30
18
  id: "entity-summary",
31
19
  // 'close' backs close; regenerate is a host-driven refresh with no
32
20
  // dedicated capability in the closed vocabulary.
@@ -79,36 +67,36 @@ const Z = [
79
67
  description: "Sourced from the id prop. Required to address a specific summary panel from the agent."
80
68
  }
81
69
  }
82
- }, re = "ds:flex ds:size-7 ds:shrink-0 ds:items-center ds:justify-center ds:rounded-[var(--radius-md)] ds:[&_svg]:size-4 ds:bg-primary/10 ds:text-[color:var(--primary)]", A = "ds:m-0 ds:flex ds:list-disc ds:flex-col ds:gap-[var(--spacing-2xs)] ds:ps-[var(--spacing-md)] type-body-sm", be = q(
70
+ }, ee = "ds:flex ds:size-7 ds:shrink-0 ds:items-center ds:justify-center ds:rounded-[var(--radius-md)] ds:[&_svg]:size-4 ds:bg-primary/10 ds:text-[color:var(--primary)]", k = "ds:m-0 ds:flex ds:list-disc ds:flex-col ds:gap-[var(--spacing-2xs)] ds:ps-[var(--spacing-md)] type-body-sm", ve = P(
83
71
  function({
84
72
  id: n,
85
73
  title: i,
86
74
  entityName: s,
87
75
  entityHref: y,
88
- entityAvatarSrc: z,
76
+ entityAvatarSrc: E,
89
77
  generatedAtIso: d,
90
78
  stats: o,
91
- sections: h,
92
- onRegenerate: c,
93
- regenerateLabel: E,
94
- onClose: l,
95
- disclaimer: M,
96
- locale: R,
97
- className: j,
98
- "aria-label": g,
99
- ...B
79
+ sections: g,
80
+ onRegenerate: l,
81
+ regenerateLabel: z,
82
+ onClose: c,
83
+ disclaimer: R,
84
+ locale: j,
85
+ className: B,
86
+ "aria-label": h,
87
+ ...T
100
88
  }, L) {
101
- const { t: m } = D("ui"), v = w(), T = i ?? m("entitySummary.title", { defaultValue: "AI summary" }), x = f(h);
102
- x.current = h;
89
+ const { t: m } = _("ui"), v = w(), V = i ?? m("entitySummary.title", { defaultValue: "AI summary" }), x = f(g);
90
+ x.current = g;
103
91
  const b = f(d);
104
92
  b.current = d;
105
- const u = f(c);
106
- u.current = c;
107
- const p = f(l);
108
- p.current = l;
93
+ const u = f(l);
94
+ u.current = l;
95
+ const p = f(c);
96
+ p.current = c;
109
97
  const S = f(null);
110
- K(L, () => S.current, []);
111
- const V = P(
98
+ D(L, () => S.current, []);
99
+ const K = H(
112
100
  () => ({
113
101
  // Structural only — section headings are fixed category labels, never
114
102
  // the entity name or the bullet items (both PHI).
@@ -134,11 +122,11 @@ const Z = [
134
122
  }),
135
123
  []
136
124
  );
137
- X(te, V, n);
125
+ X(Z, K, n);
138
126
  const N = d ? /* @__PURE__ */ a("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)] type-meta ds:text-[color:var(--muted-foreground)]", children: [
139
127
  /* @__PURE__ */ e(J, { "aria-hidden": "true", className: "ds:size-3.5 ds:shrink-0" }),
140
128
  /* @__PURE__ */ e("span", { children: m("entitySummary.generatedAt", { defaultValue: "Generated" }) }),
141
- /* @__PURE__ */ e(W, { value: d, format: "absolute", locale: R })
129
+ /* @__PURE__ */ e(W, { value: d, format: "absolute", locale: j })
142
130
  ] }) : null;
143
131
  return /* @__PURE__ */ a(
144
132
  "section",
@@ -146,41 +134,41 @@ const Z = [
146
134
  ref: S,
147
135
  "data-component": "entity-summary",
148
136
  "data-component-id": n,
149
- "aria-labelledby": g ? void 0 : v,
150
- "aria-label": g,
151
- className: ["ds:flex ds:flex-col", j].filter(Boolean).join(" "),
152
- ...B,
137
+ "aria-labelledby": h ? void 0 : v,
138
+ "aria-label": h,
139
+ className: ["ds:flex ds:flex-col", B].filter(Boolean).join(" "),
140
+ ...T,
153
141
  children: [
154
142
  /* @__PURE__ */ e(
155
143
  G,
156
144
  {
157
- title: T,
158
- icon: /* @__PURE__ */ e(ee, { "aria-hidden": "true" }),
159
- headingId: g ? void 0 : v,
145
+ title: V,
146
+ icon: /* @__PURE__ */ e(Y, { "aria-hidden": "true" }),
147
+ headingId: h ? void 0 : v,
160
148
  sticky: !0,
161
149
  divider: !0,
162
- actions: c || l ? /* @__PURE__ */ a(_, { children: [
163
- c ? /* @__PURE__ */ e(
164
- $,
150
+ actions: l || c ? /* @__PURE__ */ a(M, { children: [
151
+ l ? /* @__PURE__ */ e(
152
+ q,
165
153
  {
166
154
  type: "button",
167
155
  size: "sm",
168
156
  intent: "ghost",
169
157
  startIcon: /* @__PURE__ */ e(Q, { "aria-hidden": "true" }),
170
- onClick: c,
171
- children: E ?? m("entitySummary.regenerate", {
158
+ onClick: l,
159
+ children: z ?? m("entitySummary.regenerate", {
172
160
  defaultValue: "Regenerate"
173
161
  })
174
162
  }
175
163
  ) : null,
176
- l ? /* @__PURE__ */ e(
164
+ c ? /* @__PURE__ */ e(
177
165
  O,
178
166
  {
179
167
  icon: /* @__PURE__ */ e(U, { "aria-hidden": "true" }),
180
168
  size: "sm",
181
169
  intent: "ghost",
182
170
  "aria-label": m("common.close", { defaultValue: "Close" }),
183
- onClick: l
171
+ onClick: c
184
172
  }
185
173
  ) : null
186
174
  ] }) : void 0
@@ -190,10 +178,10 @@ const Z = [
190
178
  s || d || o && o.length > 0 ? /* @__PURE__ */ a("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
191
179
  s ? /* @__PURE__ */ a("div", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
192
180
  /* @__PURE__ */ e(
193
- H,
181
+ $,
194
182
  {
195
183
  name: s,
196
- src: z,
184
+ src: E,
197
185
  size: "sm",
198
186
  className: "ds:shrink-0"
199
187
  }
@@ -215,25 +203,25 @@ const Z = [
215
203
  {
216
204
  role: "list",
217
205
  className: "ds:m-0 ds:flex ds:list-none ds:items-stretch",
218
- children: o.map((r, k) => /* @__PURE__ */ a(
206
+ children: o.map((r, A) => /* @__PURE__ */ a(
219
207
  "li",
220
208
  {
221
209
  className: [
222
210
  "ds:flex ds:flex-1 ds:flex-col ds:items-center ds:gap-[var(--spacing-2xs)] ds:p-[var(--spacing-sm)] ds:text-center",
223
- k > 0 ? "ds:border-s ds:border-[color:var(--card-border)]" : ""
211
+ A > 0 ? "ds:border-s ds:border-[color:var(--card-border)]" : ""
224
212
  ].filter(Boolean).join(" "),
225
213
  children: [
226
214
  /* @__PURE__ */ e("span", { className: "type-metric ds:[--type-metric-size:var(--font-size-lg)] ds:text-[color:var(--foreground)]", children: r.value }),
227
215
  /* @__PURE__ */ e("span", { className: "type-meta ds:text-[color:var(--muted-foreground)]", children: r.label })
228
216
  ]
229
217
  },
230
- `${r.label}-${k}`
218
+ `${r.label}-${A}`
231
219
  ))
232
220
  }
233
221
  ) }) : null
234
222
  ] }) : null,
235
- h.map((r) => /* @__PURE__ */ e(ae, { section: r }, r.id)),
236
- /* @__PURE__ */ e("p", { className: "ds:m-0 type-meta ds:text-[color:var(--muted-foreground)]", children: M ?? m("entitySummary.disclaimer", {
223
+ g.map((r) => /* @__PURE__ */ e(te, { section: r }, r.id)),
224
+ /* @__PURE__ */ e("p", { className: "ds:m-0 type-meta ds:text-[color:var(--muted-foreground)]", children: R ?? m("entitySummary.disclaimer", {
237
225
  defaultValue: "Does not replace clinical judgement · verify accuracy before clinical use · BETA"
238
226
  }) })
239
227
  ] })
@@ -242,7 +230,7 @@ const Z = [
242
230
  );
243
231
  }
244
232
  );
245
- function ae({ section: t }) {
233
+ function te({ section: t }) {
246
234
  const n = w();
247
235
  return t.tone === "attention" ? /* @__PURE__ */ a(
248
236
  I,
@@ -253,12 +241,12 @@ function ae({ section: t }) {
253
241
  className: "ds:shadow-[var(--shadow-card)]",
254
242
  children: [
255
243
  /* @__PURE__ */ e(I.Title, { as: "h3", children: t.heading }),
256
- /* @__PURE__ */ e("ul", { className: A, children: t.items.map((i, s) => /* @__PURE__ */ e("li", { children: i }, s)) })
244
+ /* @__PURE__ */ e("ul", { className: k, children: t.items.map((i, s) => /* @__PURE__ */ e("li", { children: i }, s)) })
257
245
  ]
258
246
  }
259
247
  ) : /* @__PURE__ */ e(C, { variant: "elevated", "aria-labelledby": n, children: /* @__PURE__ */ a("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-md)]", children: [
260
248
  /* @__PURE__ */ a("div", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-xs)]", children: [
261
- t.icon ? /* @__PURE__ */ e("span", { "aria-hidden": "true", className: re, children: t.icon }) : null,
249
+ t.icon ? /* @__PURE__ */ e("span", { "aria-hidden": "true", className: ee, children: t.icon }) : null,
262
250
  /* @__PURE__ */ e(
263
251
  "h3",
264
252
  {
@@ -268,10 +256,10 @@ function ae({ section: t }) {
268
256
  }
269
257
  )
270
258
  ] }),
271
- /* @__PURE__ */ e("ul", { className: `${A} ds:text-[color:var(--foreground)]`, children: t.items.map((i, s) => /* @__PURE__ */ e("li", { children: i }, s)) })
259
+ /* @__PURE__ */ e("ul", { className: `${k} ds:text-[color:var(--foreground)]`, children: t.items.map((i, s) => /* @__PURE__ */ e("li", { children: i }, s)) })
272
260
  ] }) });
273
261
  }
274
262
  export {
275
- be as E
263
+ ve as E
276
264
  };
277
- //# sourceMappingURL=entity-summary-Dzk54yom.js.map
265
+ //# sourceMappingURL=entity-summary-KHM0PnSI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-summary-KHM0PnSI.js","sources":["../../src/components/entity-summary/entity-summary.agent.ts","../../src/components/entity-summary/entity-summary.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — EntitySummary. */\n/* */\n/* The AI narrative brief (\"Sintesi IA\") for an entity. The agent can */\n/* read the brief's STRUCTURE (generated-at + section ids / headings / */\n/* tone / item counts — fixed category labels, never the entity name or */\n/* the bullet items, both PHI) and drive the two affordances: regenerate */\n/* the brief and dismiss the panel. Generation itself is gated upstream */\n/* by AiConsentBanner; this adapter only re-requests an already-consented */\n/* brief. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { EntitySummaryHandle } from './entity-summary';\n\nexport const entitySummaryAgent: AgentAdapter<EntitySummaryHandle> = {\n id: 'entity-summary',\n // 'close' backs close; regenerate is a host-driven refresh with no\n // dedicated capability in the closed vocabulary.\n capabilities: ['close'],\n state: {\n sections: {\n type: 'Array<{ id: string; heading: string; tone: \"default\" | \"attention\"; itemCount: number }>',\n descriptionKey: 'ui.agent.entitySummary.state.sections',\n description:\n 'Structural section list — ids, fixed category headings, tone and item counts. Never the entity name or the bullet items (both PHI).',\n read: (handle) => handle.getState().sections,\n },\n generatedAtIso: {\n type: 'string | undefined',\n descriptionKey: 'ui.agent.entitySummary.state.generatedAtIso',\n description: 'ISO-8601 instant the brief was generated, when known.',\n read: (handle) => handle.getState().generatedAtIso,\n },\n },\n actions: {\n regenerate: {\n // Re-requests a fresh brief from the model — reaches an external system.\n safety: 'write',\n openWorld: true,\n descriptionKey: 'ui.agent.entitySummary.actions.regenerate',\n description:\n 'Request the host to regenerate the AI brief. No-op when the regenerate affordance is not available.',\n invoke: (handle) => {\n if (handle.canRegenerate()) handle.regenerate();\n },\n },\n close: {\n // Ephemeral panel-visibility change — read.\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.entitySummary.actions.close',\n description:\n 'Dismiss the summary panel. No-op when the close affordance is not available (e.g. docked in the rail).',\n invoke: (handle) => {\n if (handle.canClose()) handle.close();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'entity-summary',\n description: 'Marks the EntitySummary panel region.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the id prop. Required to address a specific summary panel from the agent.',\n },\n },\n};\n","import {\n forwardRef,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ContactRound, Clock, RefreshCw, X } from 'lucide-react';\nimport { Alert } from '../alert';\nimport { Avatar } from '../avatar';\nimport { Button } from '../button';\nimport { Card } from '../card';\nimport { IconButton } from '../button/icon-button';\nimport { Link } from '../link';\nimport { PanelHeader } from '../panel-header';\nimport { Timestamp } from '../timestamp';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { entitySummaryAgent } from './entity-summary.agent';\n\n/* ------------------------------------------------------------------ */\n/* EntitySummary — the AI narrative brief for an entity. */\n/* */\n/* The kit form of platform's \"Sintesi IA\": a generated, sectioned */\n/* brief of a patient / care plan — header (entity · generated-at · */\n/* regenerate · corpus stats), N labelled sections of bullet items */\n/* (with inline entity links), and a BETA disclaimer. The `attention` */\n/* section tone carries the clinically valuable risk flags. */\n/* */\n/* The kit owns the layout, i18n and theming; the consumer passes */\n/* structured `sections` (data-in) so the brief re-themes and */\n/* localises rather than rendering a model HTML blob. Gate generation */\n/* behind `AiConsentBanner` upstream. */\n/* ------------------------------------------------------------------ */\n\n/** A corpus stat shown in the header (e.g. `{ value: 5, label: 'care plans' }`). */\nexport interface EntitySummaryStat {\n value: string | number;\n label: string;\n}\n\n/** One narrative section — a heading over a list of bullet items. */\nexport interface EntitySummarySection {\n id: string;\n heading: string;\n /**\n * Leading glyph for the section. On default sections it's the scannability\n * anchor shown in a `--primary`-tinted medallion beside the heading (e.g. a\n * calendar for \"Scheduled\", a wallet for \"Financial\"); omit it to render no\n * medallion. On `attention` sections it overrides the warning Alert's icon\n * (which defaults to an alert triangle).\n */\n icon?: ReactNode;\n /**\n * `attention` renders the section as the kit's warning `Alert` — the\n * standard risk-flag treatment (border, warning surface, alert glyph,\n * `--warning-foreground` text) — for clinically important callouts.\n */\n tone?: 'default' | 'attention';\n /** Bullet items — `ReactNode` so consumers compose inline entity links. */\n items: ReactNode[];\n}\n\n/**\n * Curated agent handle for EntitySummary. Exposes structural state only —\n * never the entity name or the section items (both PHI). See\n * `entity-summary.agent.ts`.\n */\nexport interface EntitySummaryHandle {\n /** Structural snapshot — generated-at + section ids/headings/tone/count. No PHI. */\n getState: () => {\n generatedAtIso?: string;\n sections: Array<{\n id: string;\n heading: string;\n tone: 'default' | 'attention';\n itemCount: number;\n }>;\n };\n /** Whether the regenerate affordance is available. */\n canRegenerate: () => boolean;\n /** Request the host to regenerate the brief (mirrors onRegenerate). */\n regenerate: () => void;\n /** Whether the close affordance is available. */\n canClose: () => boolean;\n /** Dismiss the panel (mirrors onClose). */\n close: () => void;\n}\n\nexport interface EntitySummaryProps extends Omit<\n HTMLAttributes<HTMLElement>,\n 'title' | 'children'\n> {\n /**\n * Stable instance id. Surfaced on the root as `data-component-id` so an\n * agent / MCP UI bridge can address this specific summary panel.\n */\n id?: string;\n /** Panel title. Defaults to the localised \"AI summary\". */\n title?: string;\n /** Entity name shown beside its avatar in the header (links when `entityHref` is set). */\n entityName?: string;\n /** Entity href for the name link. */\n entityHref?: string;\n /** Avatar image URL for the entity. Falls back to initials derived from `entityName`. */\n entityAvatarSrc?: string;\n /** ISO-8601 instant the brief was generated. */\n generatedAtIso?: string;\n /** Corpus the brief was built from, shown as a compact KPI card. */\n stats?: EntitySummaryStat[];\n /** The narrative sections, in order. */\n sections: EntitySummarySection[];\n /** Regenerate the brief. Omit to hide the affordance. */\n onRegenerate?: () => void;\n /** Regenerate-button label. */\n regenerateLabel?: string;\n /**\n * Dismiss the panel. Renders a close button in the panel header for\n * STANDALONE use (outside the rail). When docked in `ControlRoomRail`, omit\n * this — the rail injects its own close via `PanelHeaderActionsProvider`\n * (passing it while docked would render a duplicate close control).\n */\n onClose?: () => void;\n /** Footer disclaimer. Defaults to the BETA clinical-judgement note. */\n disclaimer?: ReactNode;\n /** BCP-47 locale for the generated-at timestamp. */\n locale?: string;\n /** Accessible name for the panel region (defaults to `title`). */\n 'aria-label'?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Section presentation. The `attention` tone renders a different */\n/* element tree (the kit's warning Alert) rather than a class variant, */\n/* so the branch lives in `Section`; these constants carry the shared */\n/* class sets for the default (prose) sections. */\n/* ------------------------------------------------------------------ */\n\n// The default section's leading icon chip — a --primary-tinted medallion\n// that anchors the heading. No tone variants: the attention tone is owned\n// by the Alert primitive, so this stays a plain class set.\nconst MEDALLION_CLASSES =\n 'ds:flex ds:size-7 ds:shrink-0 ds:items-center ds:justify-center ds:rounded-[var(--radius-md)] ds:[&_svg]:size-4 ds:bg-primary/10 ds:text-[color:var(--primary)]';\n\n// The bullet list shared by every section — indented disc items.\nconst ITEMS_CLASSES =\n 'ds:m-0 ds:flex ds:list-disc ds:flex-col ds:gap-[var(--spacing-2xs)] ds:ps-[var(--spacing-md)] type-body-sm';\n\nexport const EntitySummary = forwardRef<HTMLElement, EntitySummaryProps>(\n function EntitySummary(\n {\n id,\n title,\n entityName,\n entityHref,\n entityAvatarSrc,\n generatedAtIso,\n stats,\n sections,\n onRegenerate,\n regenerateLabel,\n onClose,\n disclaimer,\n locale,\n className,\n 'aria-label': ariaLabel,\n ...rest\n },\n ref,\n ) {\n const { t } = useTranslation('ui');\n const headingId = useId();\n const heading =\n title ?? t('entitySummary.title', { defaultValue: 'AI summary' });\n\n /* ----- Agent handle (structural state + regenerate / close) ----- */\n const sectionsRef = useRef(sections);\n sectionsRef.current = sections;\n const generatedAtRef = useRef(generatedAtIso);\n generatedAtRef.current = generatedAtIso;\n const onRegenerateRef = useRef(onRegenerate);\n onRegenerateRef.current = onRegenerate;\n const onCloseRef = useRef(onClose);\n onCloseRef.current = onClose;\n\n const rootRef = useRef<HTMLElement>(null);\n useImperativeHandle(ref, () => rootRef.current as HTMLElement, []);\n\n const handle = useMemo<EntitySummaryHandle>(\n () => ({\n // Structural only — section headings are fixed category labels, never\n // the entity name or the bullet items (both PHI).\n getState: () => ({\n generatedAtIso: generatedAtRef.current,\n sections: sectionsRef.current.map((s) => ({\n id: s.id,\n heading: s.heading,\n tone: s.tone ?? 'default',\n itemCount: s.items.length,\n })),\n }),\n canRegenerate: () => !!onRegenerateRef.current,\n regenerate: () => onRegenerateRef.current?.(),\n canClose: () => !!onCloseRef.current,\n close: () => onCloseRef.current?.(),\n }),\n [],\n );\n useAgentRegistration(entitySummaryAgent, handle, id);\n\n // The generated-at line — the brief's \"subtitle\" under the entity name,\n // or a standalone line when there's no entity. A clock glyph leads it.\n const generatedLine = generatedAtIso ? (\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)] type-meta ds:text-[color:var(--muted-foreground)]\">\n <Clock aria-hidden=\"true\" className=\"ds:size-3.5 ds:shrink-0\" />\n <span>\n {t('entitySummary.generatedAt', { defaultValue: 'Generated' })}\n </span>\n <Timestamp value={generatedAtIso} format=\"absolute\" locale={locale} />\n </span>\n ) : null;\n\n return (\n <section\n ref={rootRef}\n data-component=\"entity-summary\"\n data-component-id={id}\n aria-labelledby={ariaLabel ? undefined : headingId}\n aria-label={ariaLabel}\n className={['ds:flex ds:flex-col', className].filter(Boolean).join(' ')}\n {...rest}\n >\n {/* Header — the shared rail-panel pattern. Title + Regenerate;\n the close affordance is injected by the rail, not the panel. */}\n <PanelHeader\n title={heading}\n icon={<ContactRound aria-hidden=\"true\" />}\n headingId={ariaLabel ? undefined : headingId}\n sticky\n divider\n actions={\n onRegenerate || onClose ? (\n <>\n {onRegenerate ? (\n <Button\n type=\"button\"\n size=\"sm\"\n intent=\"ghost\"\n startIcon={<RefreshCw aria-hidden=\"true\" />}\n onClick={onRegenerate}\n >\n {regenerateLabel ??\n t('entitySummary.regenerate', {\n defaultValue: 'Regenerate',\n })}\n </Button>\n ) : null}\n {onClose ? (\n <IconButton\n icon={<X aria-hidden=\"true\" />}\n size=\"sm\"\n intent=\"ghost\"\n aria-label={t('common.close', { defaultValue: 'Close' })}\n onClick={onClose}\n />\n ) : null}\n </>\n ) : undefined\n }\n />\n\n {/* Body */}\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)] ds:p-[var(--spacing-md)]\">\n {entityName || generatedAtIso || (stats && stats.length > 0) ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n {/* Identity — the entity's avatar + name, generated-at as the\n subtitle beneath. Without a name, the generated line stands\n alone. */}\n {entityName ? (\n <div className=\"ds:flex ds:items-center ds:gap-[var(--spacing-sm)]\">\n <Avatar\n name={entityName}\n src={entityAvatarSrc}\n size=\"sm\"\n className=\"ds:shrink-0\"\n />\n <div className=\"ds:flex ds:min-w-0 ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n {entityHref ? (\n <Link\n href={entityHref}\n className=\"type-body-sm ds:font-semibold\"\n >\n {entityName}\n </Link>\n ) : (\n <span className=\"type-body-sm ds:font-semibold ds:text-[color:var(--foreground)]\">\n {entityName}\n </span>\n )}\n {generatedLine}\n </div>\n </div>\n ) : (\n generatedLine\n )}\n\n {/* Corpus stats — a compact KPI card: value over label, with a\n hairline divider between cells. */}\n {stats && stats.length > 0 ? (\n <Card variant=\"elevated\">\n {/* eslint-disable-next-line jsx-a11y/no-redundant-roles -- role=\"list\" restores list semantics that ds:list-none strips in Safari/VoiceOver */}\n <ul\n role=\"list\"\n className=\"ds:m-0 ds:flex ds:list-none ds:items-stretch\"\n >\n {stats.map((stat, index) => (\n <li\n key={`${stat.label}-${index}`}\n className={[\n 'ds:flex ds:flex-1 ds:flex-col ds:items-center ds:gap-[var(--spacing-2xs)] ds:p-[var(--spacing-sm)] ds:text-center',\n index > 0\n ? 'ds:border-s ds:border-[color:var(--card-border)]'\n : '',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <span className=\"type-metric ds:[--type-metric-size:var(--font-size-lg)] ds:text-[color:var(--foreground)]\">\n {stat.value}\n </span>\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)]\">\n {stat.label}\n </span>\n </li>\n ))}\n </ul>\n </Card>\n ) : null}\n </div>\n ) : null}\n\n {/* Sections */}\n {sections.map((section) => (\n <Section key={section.id} section={section} />\n ))}\n\n {/* Disclaimer */}\n <p className=\"ds:m-0 type-meta ds:text-[color:var(--muted-foreground)]\">\n {disclaimer ??\n t('entitySummary.disclaimer', {\n defaultValue:\n 'Does not replace clinical judgement · verify accuracy before clinical use · BETA',\n })}\n </p>\n </div>\n </section>\n );\n },\n);\n\nfunction Section({ section }: { section: EntitySummarySection }): ReactNode {\n const headingId = useId();\n\n // The risk-flag section composes the kit's warning `Alert` primitive rather\n // than re-painting the warning tokens by hand — same border, surface, alert\n // glyph, and `--warning-foreground` treatment as every other warning in the\n // app. `live=\"off\"`: the brief is static content, not a just-occurred event,\n // so the items read in normal flow instead of being announced assertively.\n // A per-section `icon` overrides Alert's default alert triangle.\n if (section.tone === 'attention') {\n // The shared `--shadow-card` lifts the warning callout to the same\n // elevation as the surrounding section cards, so the stack reads as one\n // set of raised panels rather than a flat warning band among cards.\n return (\n <Alert\n variant=\"warning\"\n live=\"off\"\n icon={section.icon}\n className=\"ds:shadow-[var(--shadow-card)]\"\n >\n <Alert.Title as=\"h3\">{section.heading}</Alert.Title>\n <ul className={ITEMS_CLASSES}>\n {section.items.map((item, index) => (\n <li key={index}>{item}</li>\n ))}\n </ul>\n </Alert>\n );\n }\n\n // Default sections are raised cards — the scannable \"panel per topic\" stack,\n // matching platform's Sintesi IA. The card owns its own padding (so we drive\n // it from a single content div rather than Card.Header/Body) and is named by\n // its heading for assistive tech.\n return (\n <Card variant=\"elevated\" aria-labelledby={headingId}>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-md)]\">\n <div className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n {section.icon ? (\n <span aria-hidden=\"true\" className={MEDALLION_CLASSES}>\n {section.icon}\n </span>\n ) : null}\n <h3\n id={headingId}\n className=\"ds:m-0 type-eyebrow ds:text-[color:var(--foreground)]\"\n >\n {section.heading}\n </h3>\n </div>\n <ul className={`${ITEMS_CLASSES} ds:text-[color:var(--foreground)]`}>\n {section.items.map((item, index) => (\n <li key={index}>{item}</li>\n ))}\n </ul>\n </div>\n </Card>\n );\n}\n"],"names":["entitySummaryAgent","handle","MEDALLION_CLASSES","ITEMS_CLASSES","EntitySummary","forwardRef","id","title","entityName","entityHref","entityAvatarSrc","generatedAtIso","stats","sections","onRegenerate","regenerateLabel","onClose","disclaimer","locale","className","ariaLabel","rest","ref","t","useTranslation","headingId","useId","heading","sectionsRef","useRef","generatedAtRef","onRegenerateRef","onCloseRef","rootRef","useImperativeHandle","useMemo","s","_a","useAgentRegistration","generatedLine","jsxs","jsx","Clock","Timestamp","PanelHeader","ContactRound","Fragment","Button","RefreshCw","IconButton","X","Avatar","Link","Card","stat","index","section","Section","Alert","item"],"mappings":"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"}