@alfadocs/ui-kit 1.37.0 → 1.38.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 (62) hide show
  1. package/dist/_chunks/{agenda-tray-DYGCTIWB.js → agenda-tray-CG6jUjKc.js} +2 -2
  2. package/dist/_chunks/{anamnesis-summary-card-GYHa7VGp.js → anamnesis-summary-card-CclBbiXg.js} +2 -2
  3. package/dist/_chunks/{appointment-timeline-ByfovxqR.js → appointment-timeline-D-rNwKpS.js} +2 -2
  4. package/dist/_chunks/{appointment-tray-D6UyJHej.js → appointment-tray-CK2CULg_.js} +2 -2
  5. package/dist/_chunks/{balance-badge-cell-B0Z8Dwn8.js → balance-badge-cell-DHs5p0bA.js} +2 -2
  6. package/dist/_chunks/{booking-Dp-9qR6F.js → booking-x3J7sS2G.js} +3 -3
  7. package/dist/_chunks/{calendar-workspace-BqKBj26r.js → calendar-workspace-Cc1LRVWY.js} +1665 -1480
  8. package/dist/_chunks/{data-table-BYGK-gUJ.js → data-table-Dy1lyumT.js} +2 -2
  9. package/dist/_chunks/editable-description-7ptNpJEg.js +142 -0
  10. package/dist/_chunks/{file-manager-DvkFgj7d.js → file-manager-UlcYQv8n.js} +3 -3
  11. package/dist/_chunks/{message-tray-BcLyaO-G.js → message-tray-CXjVsKqp.js} +2 -2
  12. package/dist/_chunks/{note-timeline-CXfSV3yX.js → note-timeline-D2oPuQP6.js} +134 -73
  13. package/dist/_chunks/notes-panel-CkbfDDzj.js +614 -0
  14. package/dist/_chunks/{notification-tray-CJ8jOe-U.js → notification-tray-_NoChRKi.js} +2 -2
  15. package/dist/_chunks/{patient-summary-card-BzmJH9a-.js → patient-summary-card-B131Q7Bp.js} +2 -2
  16. package/dist/_chunks/{practice-results-DOcORTkP.js → practice-results-CBNRJNnY.js} +2 -2
  17. package/dist/_chunks/{product-hub-panel-C0TO69P7.js → product-hub-panel-C3bMjscm.js} +2 -2
  18. package/dist/_chunks/{reviews-panel-BaHZb_ai.js → reviews-panel-Cy969x7q.js} +2 -2
  19. package/dist/_chunks/{signature-request-Dej2g86d.js → signature-request-b-86AGlT.js} +2 -2
  20. package/dist/_chunks/{skeleton-CZbwyJAA.js → skeleton-B1KTdJ4N.js} +46 -33
  21. package/dist/_chunks/{slot-grid-8Ko6thzz.js → slot-grid-Bk3GZL1p.js} +2 -2
  22. package/dist/_chunks/{task-tray-CQ8UAR2j.js → task-tray-5co9Jr2L.js} +2 -2
  23. package/dist/_chunks/{tasks-panel-CBGMtQ_f.js → tasks-panel-BpH-x7U3.js} +2 -2
  24. package/dist/_chunks/treatment-receipt-dUm99mdn.js +160 -0
  25. package/dist/agent-catalog.json +1 -1
  26. package/dist/components/agenda-tray/index.js +1 -1
  27. package/dist/components/anamnesis-summary-card/index.js +1 -1
  28. package/dist/components/appointment-card/index.js +1 -1
  29. package/dist/components/appointment-timeline/index.js +1 -1
  30. package/dist/components/booking/index.js +1 -1
  31. package/dist/components/data-table/index.js +1 -1
  32. package/dist/components/editable-description/editable-description.d.ts +6 -0
  33. package/dist/components/editable-description/index.js +1 -1
  34. package/dist/components/file-manager/index.js +1 -1
  35. package/dist/components/message-tray/index.js +1 -1
  36. package/dist/components/note-timeline/index.js +1 -1
  37. package/dist/components/note-timeline/note-timeline.d.ts +8 -0
  38. package/dist/components/notes-panel/index.js +1 -1
  39. package/dist/components/notification-tray/index.js +1 -1
  40. package/dist/components/patient-summary-card/index.js +1 -1
  41. package/dist/components/patient-table/index.js +1 -1
  42. package/dist/components/practice-results/index.js +1 -1
  43. package/dist/components/product-hub-tray/index.js +1 -1
  44. package/dist/components/reviews-panel/index.js +1 -1
  45. package/dist/components/skeleton/index.d.ts +1 -1
  46. package/dist/components/skeleton/index.js +3 -2
  47. package/dist/components/skeleton/skeleton.d.ts +12 -0
  48. package/dist/components/slot-grid/index.js +1 -1
  49. package/dist/components/task-tray/index.js +1 -1
  50. package/dist/components/tasks-panel/index.js +1 -1
  51. package/dist/components/treatment-receipt/index.js +1 -1
  52. package/dist/components/treatment-receipt/treatment-receipt.d.ts +8 -0
  53. package/dist/index.js +755 -754
  54. package/dist/patterns/calendar/calendar-appointment-details.d.ts +1 -1
  55. package/dist/patterns/calendar/calendar-editor-hydration.d.ts +0 -2
  56. package/dist/patterns/calendar/index.js +1 -1
  57. package/dist/patterns/signature-request/index.js +1 -1
  58. package/dist/tokens.css +1 -1
  59. package/package.json +1 -1
  60. package/dist/_chunks/editable-description-BOfAeY3T.js +0 -112
  61. package/dist/_chunks/notes-panel-4y5JioWN.js +0 -556
  62. package/dist/_chunks/treatment-receipt-D4kOLXOk.js +0 -94
@@ -8,7 +8,7 @@ import { C as A } from "./card-DPmk26CL.js";
8
8
  import { C as Y, b as Z, a as ee } from "./collapsible-CTjxzGuF.js";
9
9
  import { D as l } from "./description-list-C1RXMDZ_.js";
10
10
  import { E as te } from "./empty-state-X0sVPfVo.js";
11
- import { S as T } from "./skeleton-CZbwyJAA.js";
11
+ import { S as T } from "./skeleton-B1KTdJ4N.js";
12
12
  import { B as se } from "./button-nJaPh_HC.js";
13
13
  import { P as re } from "./panel-header-D_mTdhUp.js";
14
14
  import { S as ae } from "./star-Bf9L2Uot.js";
@@ -556,4 +556,4 @@ export {
556
556
  me as R,
557
557
  ie as r
558
558
  };
559
- //# sourceMappingURL=reviews-panel-BaHZb_ai.js.map
559
+ //# sourceMappingURL=reviews-panel-Cy969x7q.js.map
@@ -16,7 +16,7 @@ import { a as kt } from "./whatsapp-button-Ai4YAVkl.js";
16
16
  import { c as vn } from "./createLucideIcon-DhHxpK9K.js";
17
17
  import { M as Ot } from "./mail-BqXVF2zH.js";
18
18
  import { M as xa } from "./message-square-Bye4ATvx.js";
19
- import { S as Pe } from "./skeleton-CZbwyJAA.js";
19
+ import { S as Pe } from "./skeleton-B1KTdJ4N.js";
20
20
  import { D as tn } from "./dropdown-menu-DU-Hrf33.js";
21
21
  import { S as Ra } from "./signature-status-chip-D4NsrdeI.js";
22
22
  import { C as Na } from "./chevron-down-DWE7GSq9.js";
@@ -2229,4 +2229,4 @@ ai.displayName = "SignatureRequestModal";
2229
2229
  export {
2230
2230
  ai as S
2231
2231
  };
2232
- //# sourceMappingURL=signature-request-Dej2g86d.js.map
2232
+ //# sourceMappingURL=signature-request-b-86AGlT.js.map
@@ -1,7 +1,7 @@
1
- import { jsx as r } from "react/jsx-runtime";
2
- import { forwardRef as v } from "react";
3
- import { c as f } from "./index-D2ZczOXr.js";
4
- const z = f(
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { forwardRef as z } from "react";
3
+ import { c as x } from "./index-D2ZczOXr.js";
4
+ const S = x(
5
5
  [
6
6
  "ds:bg-[var(--muted)]",
7
7
  "ds:motion-reduce:animate-none",
@@ -44,60 +44,73 @@ const z = f(
44
44
  size: "md"
45
45
  }
46
46
  }
47
- ), x = "ds:animate-[skeleton-pulse_calc(var(--animation-duration)*8)_ease-in-out_infinite]", g = v(
47
+ ), g = "ds:animate-[skeleton-pulse_calc(var(--animation-duration)*8)_ease-in-out_infinite]", v = [
48
+ "",
49
+ "ds:[animation-delay:calc(var(--animation-duration)*0.6)]",
50
+ "ds:[animation-delay:calc(var(--animation-duration)*1.2)]",
51
+ "ds:[animation-delay:calc(var(--animation-duration)*1.8)]",
52
+ "ds:[animation-delay:calc(var(--animation-duration)*2.4)]",
53
+ "ds:[animation-delay:calc(var(--animation-duration)*3)]"
54
+ ], f = (a) => a === void 0 ? "" : v[Math.abs(Math.trunc(a)) % v.length] ?? "", N = "ds:animate-[content-enter_var(--animation-duration)_var(--ease-out)] ds:motion-reduce:animate-none", y = z(
48
55
  ({
49
- variant: c = "text",
50
- size: u = "md",
56
+ variant: a = "text",
57
+ size: h = "md",
51
58
  lines: s,
52
- width: a,
59
+ width: n,
53
60
  height: e,
54
- animate: m = !0,
55
- className: d,
56
- ...n
57
- }, o) => {
58
- const t = a !== void 0 || e !== void 0 ? {
59
- ...a !== void 0 && { width: a },
61
+ animate: d = !0,
62
+ stagger: i,
63
+ className: r,
64
+ ...l
65
+ }, c) => {
66
+ const u = n !== void 0 || e !== void 0 ? {
67
+ ...n !== void 0 && { width: n },
60
68
  ...e !== void 0 && { height: e }
61
- } : void 0, i = [
62
- z({ variant: c, size: u }),
63
- m && x
69
+ } : void 0, m = [
70
+ S({ variant: a, size: h }),
71
+ d && g
64
72
  ].filter(Boolean).join(" ");
65
- return s !== void 0 && s > 1 ? /* @__PURE__ */ r(
73
+ return s !== void 0 && s > 1 ? /* @__PURE__ */ t(
66
74
  "div",
67
75
  {
68
- ref: o,
76
+ ref: c,
69
77
  "aria-hidden": "true",
70
78
  "data-component": "skeleton",
71
79
  className: [
72
80
  "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]",
73
- d
81
+ r
74
82
  ].filter(Boolean).join(" "),
75
- style: t,
76
- ...n,
77
- children: Array.from({ length: s }, (h, l) => /* @__PURE__ */ r(
83
+ style: u,
84
+ ...l,
85
+ children: Array.from({ length: s }, (_, o) => /* @__PURE__ */ t(
78
86
  "div",
79
87
  {
80
88
  "aria-hidden": "true",
81
- className: [i, l === s - 1 && "ds:w-3/5"].filter(Boolean).join(" ")
89
+ className: [
90
+ m,
91
+ d && i !== void 0 && f(i + o),
92
+ o === s - 1 && "ds:w-3/5"
93
+ ].filter(Boolean).join(" ")
82
94
  },
83
- `skeleton-line-${l}`
95
+ `skeleton-line-${o}`
84
96
  ))
85
97
  }
86
- ) : /* @__PURE__ */ r(
98
+ ) : /* @__PURE__ */ t(
87
99
  "div",
88
100
  {
89
- ref: o,
101
+ ref: c,
90
102
  "aria-hidden": "true",
91
103
  "data-component": "skeleton",
92
- className: [i, d].filter(Boolean).join(" "),
93
- style: t,
94
- ...n
104
+ className: [m, d && f(i), r].filter(Boolean).join(" "),
105
+ style: u,
106
+ ...l
95
107
  }
96
108
  );
97
109
  }
98
110
  );
99
- g.displayName = "Skeleton";
111
+ y.displayName = "Skeleton";
100
112
  export {
101
- g as S
113
+ N as C,
114
+ y as S
102
115
  };
103
- //# sourceMappingURL=skeleton-CZbwyJAA.js.map
116
+ //# sourceMappingURL=skeleton-B1KTdJ4N.js.map
@@ -5,7 +5,7 @@ import { useTranslation as we } from "react-i18next";
5
5
  import { B as F } from "./button-nJaPh_HC.js";
6
6
  import { I as q } from "./icon-button-8xqRnkdG.js";
7
7
  import { E as xe } from "./empty-state-X0sVPfVo.js";
8
- import { S as W } from "./skeleton-CZbwyJAA.js";
8
+ import { S as W } from "./skeleton-B1KTdJ4N.js";
9
9
  import { u as Se } from "./registry-DvAUVLHh.js";
10
10
  import { b as ke, f as De } from "./format-4HNwNGrN.js";
11
11
  import { p as Ie } from "./parseISO-fOGpHKXm.js";
@@ -637,4 +637,4 @@ export {
637
637
  Qe as i,
638
638
  Ge as s
639
639
  };
640
- //# sourceMappingURL=slot-grid-8Ko6thzz.js.map
640
+ //# sourceMappingURL=slot-grid-Bk3GZL1p.js.map
@@ -3,7 +3,7 @@ import { forwardRef as B, useRef as N, useMemo as E, useImperativeHandle as P }
3
3
  import { c as H } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as M } from "react-i18next";
5
5
  import { I as A } from "./icon-button-8xqRnkdG.js";
6
- import { S as V } from "./skeleton-CZbwyJAA.js";
6
+ import { S as V } from "./skeleton-B1KTdJ4N.js";
7
7
  import { E as F } from "./empty-state-X0sVPfVo.js";
8
8
  import { T as G } from "./task-card-qTKD1fIT.js";
9
9
  import { u as J } from "./registry-DvAUVLHh.js";
@@ -236,4 +236,4 @@ export {
236
236
  X as T,
237
237
  U as t
238
238
  };
239
- //# sourceMappingURL=task-tray-CQ8UAR2j.js.map
239
+ //# sourceMappingURL=task-tray-5co9Jr2L.js.map
@@ -9,7 +9,7 @@ import { B as xe } from "./button-group-QmN1VdUW.js";
9
9
  import { P as Rt } from "./panel-header-D_mTdhUp.js";
10
10
  import { S as Ne } from "./select-CLSUnKjF.js";
11
11
  import { S as Tt } from "./switch-OILsBLWo.js";
12
- import { S as St } from "./skeleton-CZbwyJAA.js";
12
+ import { S as St } from "./skeleton-B1KTdJ4N.js";
13
13
  import { E as re } from "./empty-state-X0sVPfVo.js";
14
14
  import { T as zt } from "./task-card-qTKD1fIT.js";
15
15
  import { u as Et } from "./use-check-animation--I3cS00X.js";
@@ -841,4 +841,4 @@ export {
841
841
  ns as T,
842
842
  Gt as t
843
843
  };
844
- //# sourceMappingURL=tasks-panel-CBGMtQ_f.js.map
844
+ //# sourceMappingURL=tasks-panel-BpH-x7U3.js.map
@@ -0,0 +1,160 @@
1
+ import { jsx as s, jsxs as t } from "react/jsx-runtime";
2
+ import { forwardRef as R, useRef as j } from "react";
3
+ import { c as g } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as L } from "react-i18next";
5
+ import { B as f } from "./badge-BudgzTe_.js";
6
+ import { M as u } from "./money-BY-HmKhZ.js";
7
+ import { C as z, S as h } from "./skeleton-B1KTdJ4N.js";
8
+ import { T as S } from "./tag-Ci3xJPcH.js";
9
+ const v = "type-label ds:text-[color:var(--muted-foreground)]", x = g(
10
+ [
11
+ "ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]",
12
+ "ds:py-[var(--spacing-xs)]",
13
+ // Dashed between lines, like a printed receipt; the last line hands the
14
+ // solid rule over to the total below it.
15
+ "ds:border-b ds:border-dashed ds:border-[color:var(--border)]",
16
+ "ds:last:border-b-0"
17
+ ].join(" ")
18
+ ), B = g(
19
+ [
20
+ "ds:mt-[var(--spacing-xs)] ds:flex ds:items-baseline ds:justify-between",
21
+ "ds:gap-[var(--spacing-sm)] ds:pt-[var(--spacing-xs)]",
22
+ "ds:border-t ds:border-[color:var(--border)]"
23
+ ].join(" ")
24
+ ), E = R(
25
+ ({
26
+ lines: r,
27
+ locale: n,
28
+ currency: i,
29
+ totalLabel: b,
30
+ loading: l = !1,
31
+ loadingLines: N = 2,
32
+ className: o,
33
+ ...c
34
+ }, m) => {
35
+ const { t: d } = L(), p = j(!1);
36
+ l && (p.current = !0);
37
+ const y = p.current ? z : "", T = r.length > 0 && r.every((e) => e.priceCents !== void 0), w = r.reduce(
38
+ (e, a) => e + (a.priceCents ?? 0),
39
+ 0
40
+ );
41
+ return l && r.length === 0 ? /* @__PURE__ */ s(
42
+ "div",
43
+ {
44
+ ...c,
45
+ ref: m,
46
+ "data-component": "treatment-receipt",
47
+ "data-loading": "",
48
+ "aria-busy": "true",
49
+ className: ["ds:flex ds:flex-col", o].filter(Boolean).join(" "),
50
+ children: /* @__PURE__ */ s(
51
+ "ul",
52
+ {
53
+ "aria-hidden": "true",
54
+ className: "ds:m-0 ds:flex ds:list-none ds:flex-col ds:p-0",
55
+ children: Array.from({ length: Math.max(1, N) }, (e, a) => /* @__PURE__ */ s("li", { className: x(), children: /* @__PURE__ */ t("div", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
56
+ /* @__PURE__ */ s(
57
+ h,
58
+ {
59
+ variant: "text",
60
+ size: "sm",
61
+ stagger: a * 2,
62
+ width: a % 2 === 0 ? "60%" : "40%"
63
+ }
64
+ ),
65
+ /* @__PURE__ */ s(
66
+ h,
67
+ {
68
+ variant: "text",
69
+ size: "sm",
70
+ stagger: a * 2 + 1,
71
+ width: "var(--spacing-2xl)",
72
+ className: "ds:ms-auto ds:shrink-0"
73
+ }
74
+ )
75
+ ] }) }, a))
76
+ }
77
+ )
78
+ }
79
+ ) : /* @__PURE__ */ t(
80
+ "div",
81
+ {
82
+ ref: m,
83
+ "data-component": "treatment-receipt",
84
+ "aria-busy": l || void 0,
85
+ className: ["ds:flex ds:flex-col", o].filter(Boolean).join(" "),
86
+ ...c,
87
+ children: [
88
+ /* @__PURE__ */ s(
89
+ "ul",
90
+ {
91
+ className: `ds:m-0 ds:flex ds:list-none ds:flex-col ds:p-0 ${y}`.trim(),
92
+ children: r.map((e) => {
93
+ const a = e.phases ?? [], C = a.length > 0 || e.done || e.billed;
94
+ return /* @__PURE__ */ t(
95
+ "li",
96
+ {
97
+ "data-treatment-receipt-line": "",
98
+ className: x(),
99
+ children: [
100
+ /* @__PURE__ */ t("div", { className: "ds:flex ds:items-baseline ds:gap-[var(--spacing-sm)]", children: [
101
+ /* @__PURE__ */ t("span", { className: "ds:flex ds:min-w-0 ds:flex-1 ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)] type-body-sm", children: [
102
+ e.name,
103
+ e.code ? /* @__PURE__ */ s("span", { className: `${v} ds:tabular-nums`, children: e.code }) : null,
104
+ e.elementsLabel ? /* @__PURE__ */ s(
105
+ S,
106
+ {
107
+ size: "sm",
108
+ variant: "info",
109
+ label: e.elementsLabel
110
+ }
111
+ ) : null
112
+ ] }),
113
+ e.priceCents !== void 0 ? /* @__PURE__ */ s(
114
+ u,
115
+ {
116
+ value: e.priceCents,
117
+ locale: n,
118
+ currency: i,
119
+ decimals: "muted",
120
+ className: "ds:shrink-0"
121
+ }
122
+ ) : null
123
+ ] }),
124
+ C ? /* @__PURE__ */ t("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
125
+ a.length > 0 ? /* @__PURE__ */ s("span", { className: v, children: d("treatmentReceipt.phases", {
126
+ phases: a.join(", ")
127
+ }) }) : null,
128
+ e.done ? /* @__PURE__ */ s(f, { variant: "success", size: "sm", withDot: !0, children: d("treatmentReceipt.done") }) : null,
129
+ e.billed ? /* @__PURE__ */ s(f, { variant: "neutral", size: "sm", children: d("treatmentReceipt.billed") }) : null
130
+ ] }) : null
131
+ ]
132
+ },
133
+ e.id
134
+ );
135
+ })
136
+ }
137
+ ),
138
+ T ? /* @__PURE__ */ t("div", { "data-treatment-receipt-total": "", className: B(), children: [
139
+ /* @__PURE__ */ s("span", { className: "type-body-sm ds:font-medium", children: b ?? d("treatmentReceipt.total") }),
140
+ /* @__PURE__ */ s(
141
+ u,
142
+ {
143
+ value: w,
144
+ locale: n,
145
+ currency: i,
146
+ decimals: "muted",
147
+ className: "ds:font-semibold"
148
+ }
149
+ )
150
+ ] }) : null
151
+ ]
152
+ }
153
+ );
154
+ }
155
+ );
156
+ E.displayName = "TreatmentReceipt";
157
+ export {
158
+ E as T
159
+ };
160
+ //# sourceMappingURL=treatment-receipt-dUm99mdn.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "packageVersion": "1.37.0",
3
+ "packageVersion": "1.38.0",
4
4
  "components": [
5
5
  {
6
6
  "kind": "component",
@@ -1,4 +1,4 @@
1
- import { A as r, a as g } from "../../_chunks/agenda-tray-DYGCTIWB.js";
1
+ import { A as r, a as g } from "../../_chunks/agenda-tray-CG6jUjKc.js";
2
2
  export {
3
3
  r as AgendaTray,
4
4
  g as agendaTrayAgent
@@ -1,4 +1,4 @@
1
- import { A as r, a as s } from "../../_chunks/anamnesis-summary-card-GYHa7VGp.js";
1
+ import { A as r, a as s } from "../../_chunks/anamnesis-summary-card-CclBbiXg.js";
2
2
  export {
3
3
  r as AnamnesisSummaryCard,
4
4
  s as anamnesisSummaryCardAgent
@@ -1,5 +1,5 @@
1
1
  import { A as p } from "../../_chunks/appointment-card-WsDGBBut.js";
2
- import { A as e, a as o, b as r } from "../../_chunks/appointment-tray-D6UyJHej.js";
2
+ import { A as e, a as o, b as r } from "../../_chunks/appointment-tray-CK2CULg_.js";
3
3
  import { i } from "../../_chunks/is-safe-url-DkETxeHz.js";
4
4
  export {
5
5
  p as AppointmentCard,
@@ -1,4 +1,4 @@
1
- import { A as i, a as t } from "../../_chunks/appointment-timeline-ByfovxqR.js";
1
+ import { A as i, a as t } from "../../_chunks/appointment-timeline-D-rNwKpS.js";
2
2
  export {
3
3
  i as AppointmentTimeline,
4
4
  t as appointmentTimelineAgent
@@ -1,4 +1,4 @@
1
- import { B as A, C as R, O as a, b as s } from "../../_chunks/booking-Dp-9qR6F.js";
1
+ import { B as A, C as R, O as a, b as s } from "../../_chunks/booking-x3J7sS2G.js";
2
2
  export {
3
3
  A as Booking,
4
4
  R as CONFIRMATION_CHANNEL_ORDER,
@@ -1,4 +1,4 @@
1
- import { D as r, E as l, T as t, a as s, b as d, c as o, d as n, e as i, f as R, i as C, g as T } from "../../_chunks/data-table-BYGK-gUJ.js";
1
+ import { D as r, E as l, T as t, a as s, b as d, c as o, d as n, e as i, f as R, i as C, g as T } from "../../_chunks/data-table-Dy1lyumT.js";
2
2
  import { B as g, C as D, a as b, E as x, b as c, R as p, T as u, c as m, r as E, u as f } from "../../_chunks/editable-currency-cell-renderer-D7blbDFY.js";
3
3
  import { D as h, a as A, b as w, I as y, L as I, N as L, c as N, S as P, d as W, e as B, T as U, f as _, g as k, U as v } from "../../_chunks/link-cell-renderer-BNa8x6oJ.js";
4
4
  import { A as X, a as j } from "../../_chunks/actions-cell-renderer-CUn1pqEq.js";
@@ -4,6 +4,12 @@ export interface EditableDescriptionProps extends Omit<HTMLAttributes<HTMLDivEle
4
4
  value?: string | null;
5
5
  /** Lines shown before the rest go behind "See more". Default `3`. */
6
6
  maxLines?: number;
7
+ /**
8
+ * The description is being read. With nothing to show yet, it renders
9
+ * bulleted placeholder lines and no pencil. With a `value` already on screen
10
+ * (a refresh) it keeps the text and only sets `aria-busy`.
11
+ */
12
+ loading?: boolean;
7
13
  /** Fires from the pencil. Omit for a read-only description. */
8
14
  onEdit?: () => void;
9
15
  /** Receives the pencil button, so a host can return focus to it. */
@@ -1,4 +1,4 @@
1
- import { E as i } from "../../_chunks/editable-description-BOfAeY3T.js";
1
+ import { E as i } from "../../_chunks/editable-description-7ptNpJEg.js";
2
2
  import { e as r } from "../../_chunks/editable-description.agent-Bm_LBV2j.js";
3
3
  export {
4
4
  i as EditableDescription,
@@ -1,4 +1,4 @@
1
- import { F as r, f } from "../../_chunks/file-manager-DvkFgj7d.js";
1
+ import { F as r, f } from "../../_chunks/file-manager-UlcYQv8n.js";
2
2
  export {
3
3
  r as FileManager,
4
4
  f as fileManagerAgent
@@ -1,4 +1,4 @@
1
- import { M as s, m as r } from "../../_chunks/message-tray-BcLyaO-G.js";
1
+ import { M as s, m as r } from "../../_chunks/message-tray-CXjVsKqp.js";
2
2
  export {
3
3
  s as MessageTray,
4
4
  r as messageTrayAgent
@@ -1,4 +1,4 @@
1
- import { N as i, n as o } from "../../_chunks/note-timeline-CXfSV3yX.js";
1
+ import { N as i, n as o } from "../../_chunks/note-timeline-D2oPuQP6.js";
2
2
  export {
3
3
  i as NoteTimeline,
4
4
  o as noteTimelineAgent
@@ -67,6 +67,14 @@ export interface NoteTimelineProps extends Omit<HTMLAttributes<HTMLDivElement>,
67
67
  lines?: 1 | 2 | 3 | 4 | 5;
68
68
  /** Locale for the date gutter. Defaults to the active i18n language. */
69
69
  locale?: string;
70
+ /**
71
+ * The notes are being read. With no notes yet it shows placeholder rows in
72
+ * the timeline's own shape, never the empty state. With notes already on
73
+ * screen (a refresh) it keeps them and only sets `aria-busy`.
74
+ */
75
+ loading?: boolean;
76
+ /** Placeholder rows shown while `loading`. Default `2`. */
77
+ loadingRows?: number;
70
78
  /** Rendered in place of the list when `notes` is empty. */
71
79
  emptyState?: ReactNode;
72
80
  /** Accessible name for the list region. Defaults to `ui.noteTimeline.regionLabel`. */
@@ -1,4 +1,4 @@
1
- import { N as a } from "../../_chunks/notes-panel-4y5JioWN.js";
1
+ import { N as a } from "../../_chunks/notes-panel-CkbfDDzj.js";
2
2
  export {
3
3
  a as NotesPanel
4
4
  };
@@ -1,4 +1,4 @@
1
- import { N as o, n as t } from "../../_chunks/notification-tray-CJ8jOe-U.js";
1
+ import { N as o, n as t } from "../../_chunks/notification-tray-_NoChRKi.js";
2
2
  export {
3
3
  o as NotificationTray,
4
4
  t as notificationTrayAgent
@@ -1,4 +1,4 @@
1
- import { P as t, p as m } from "../../_chunks/patient-summary-card-BzmJH9a-.js";
1
+ import { P as t, p as m } from "../../_chunks/patient-summary-card-B131Q7Bp.js";
2
2
  export {
3
3
  t as PatientSummaryCard,
4
4
  m as patientSummaryCardAgent
@@ -1,4 +1,4 @@
1
- import { B as s, C as l, N as n, P as t, a as C, T as i, b as o, g as T, u as p } from "../../_chunks/balance-badge-cell-B0Z8Dwn8.js";
1
+ import { B as s, C as l, N as n, P as t, a as C, T as i, b as o, g as T, u as p } from "../../_chunks/balance-badge-cell-DHs5p0bA.js";
2
2
  export {
3
3
  s as BalanceBadgeCell,
4
4
  l as CarePlanStatusCell,
@@ -1,4 +1,4 @@
1
- import { P as t, p as a } from "../../_chunks/practice-results-DOcORTkP.js";
1
+ import { P as t, p as a } from "../../_chunks/practice-results-CBNRJNnY.js";
2
2
  export {
3
3
  t as PracticeResults,
4
4
  a as practiceResultsAgent
@@ -1,4 +1,4 @@
1
- import { P as u, a as o, p as t, b as e } from "../../_chunks/product-hub-panel-C0TO69P7.js";
1
+ import { P as u, a as o, p as t, b as e } from "../../_chunks/product-hub-panel-C3bMjscm.js";
2
2
  import { i as s } from "../../_chunks/is-safe-url-DkETxeHz.js";
3
3
  export {
4
4
  u as ProductHubPanel,
@@ -1,4 +1,4 @@
1
- import { R as r, r as s } from "../../_chunks/reviews-panel-BaHZb_ai.js";
1
+ import { R as r, r as s } from "../../_chunks/reviews-panel-Cy969x7q.js";
2
2
  export {
3
3
  r as ReviewsPanel,
4
4
  s as reviewsPanelAgent
@@ -1,3 +1,3 @@
1
- export { Skeleton } from './skeleton';
1
+ export { Skeleton, CONTENT_ENTER_CLASS } from './skeleton';
2
2
  export type { SkeletonProps } from './skeleton';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,6 @@
1
- import { S as r } from "../../_chunks/skeleton-CZbwyJAA.js";
1
+ import { C as o, S as C } from "../../_chunks/skeleton-B1KTdJ4N.js";
2
2
  export {
3
- r as Skeleton
3
+ o as CONTENT_ENTER_CLASS,
4
+ C as Skeleton
4
5
  };
5
6
  //# sourceMappingURL=index.js.map
@@ -4,6 +4,12 @@ declare const skeletonVariants: (props?: ({
4
4
  variant?: "text" | "rounded" | "rectangular" | "circular" | null | undefined;
5
5
  size?: "sm" | "md" | "lg" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ /**
8
+ * Put this on the REAL content that replaces a skeleton, so it settles in
9
+ * instead of snapping. Opacity only; none under reduced motion, and none in
10
+ * the accessible theme, whose `--animation-duration` is 0ms.
11
+ */
12
+ export declare const CONTENT_ENTER_CLASS = "ds:animate-[content-enter_var(--animation-duration)_var(--ease-out)] ds:motion-reduce:animate-none";
7
13
  export interface SkeletonProps extends Omit<HTMLAttributes<HTMLDivElement>, 'aria-hidden' | 'style'>, VariantProps<typeof skeletonVariants> {
8
14
  variant?: 'text' | 'circular' | 'rectangular' | 'rounded';
9
15
  size?: 'sm' | 'md' | 'lg';
@@ -23,6 +29,12 @@ export interface SkeletonProps extends Omit<HTMLAttributes<HTMLDivElement>, 'ari
23
29
  height?: string;
24
30
  /** Whether to animate the pulse */
25
31
  animate?: boolean;
32
+ /**
33
+ * Position in a wave. Atoms with rising steps (0, 1, 2…) pulse one after
34
+ * another instead of all at once. With `lines`, each line takes the next
35
+ * step by itself. Omit and nothing is staggered, as before.
36
+ */
37
+ stagger?: number;
26
38
  }
27
39
  export declare const Skeleton: import("react").ForwardRefExoticComponent<SkeletonProps & import("react").RefAttributes<HTMLDivElement>>;
28
40
  export {};
@@ -1,4 +1,4 @@
1
- import { S as i, f as t, i as e, s as r } from "../../_chunks/slot-grid-8Ko6thzz.js";
1
+ import { S as i, f as t, i as e, s as r } from "../../_chunks/slot-grid-Bk3GZL1p.js";
2
2
  export {
3
3
  i as SlotGrid,
4
4
  t as findFirstAvailable,
@@ -1,4 +1,4 @@
1
- import { T as s, t } from "../../_chunks/task-tray-CQ8UAR2j.js";
1
+ import { T as s, t } from "../../_chunks/task-tray-5co9Jr2L.js";
2
2
  export {
3
3
  s as TaskTray,
4
4
  t as taskTrayAgent
@@ -1,4 +1,4 @@
1
- import { T as e, t } from "../../_chunks/tasks-panel-CBGMtQ_f.js";
1
+ import { T as e, t } from "../../_chunks/tasks-panel-BpH-x7U3.js";
2
2
  export {
3
3
  e as TasksPanel,
4
4
  t as tasksPanelAgent
@@ -1,4 +1,4 @@
1
- import { T as r } from "../../_chunks/treatment-receipt-D4kOLXOk.js";
1
+ import { T as r } from "../../_chunks/treatment-receipt-dUm99mdn.js";
2
2
  import { t as m } from "../../_chunks/treatment-receipt.agent-bpFm2RPH.js";
3
3
  export {
4
4
  r as TreatmentReceipt,
@@ -23,6 +23,14 @@ export interface TreatmentReceiptProps extends HTMLAttributes<HTMLDivElement> {
23
23
  locale?: string;
24
24
  /** ISO 4217 code. Defaults to Money's own default. */
25
25
  currency?: string;
26
+ /**
27
+ * The treatments are being read. With no `lines` yet it shows placeholder
28
+ * receipt lines and no total. With lines already on screen (a refresh) it
29
+ * keeps them and only sets `aria-busy`.
30
+ */
31
+ loading?: boolean;
32
+ /** Placeholder lines shown while `loading`. Default `2`. */
33
+ loadingLines?: number;
26
34
  /** Label of the total row. Defaults to the kit's "Total for this appointment". */
27
35
  totalLabel?: string;
28
36
  }