@alfadocs/ui-kit 0.48.0 → 0.50.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 (180) hide show
  1. package/dist/_chunks/{address-autocomplete-CSjMrBvu.js → address-autocomplete-CT-9AOli.js} +2 -2
  2. package/dist/_chunks/{ai-consent-banner-DO5ingMq.js → ai-consent-banner-F2md5JD3.js} +2 -2
  3. package/dist/_chunks/{ai-tools-rail-CxYG04cw.js → ai-tools-rail-CYLWrRmm.js} +6 -6
  4. package/dist/_chunks/{alert-ywPR59NE.js → alert-CUTxnym2.js} +56 -35
  5. package/dist/_chunks/antenatal-schedule-timeline-CdiqkF05.js +413 -0
  6. package/dist/_chunks/{ar-DEz65ZJW.js → ar-C68WKG5a.js} +2 -2
  7. package/dist/_chunks/{audio-recorder-DC-v9YFW.js → audio-recorder-DVJXV7_k.js} +2 -2
  8. package/dist/_chunks/bishop-score-2MzAz8NE.js +185 -0
  9. package/dist/_chunks/{booking-WV2GSru5.js → booking-DljH0JkS.js} +5 -5
  10. package/dist/_chunks/circle-arrow-up-CC_85SuH.js +16 -0
  11. package/dist/_chunks/cycle-calculator-oOkj5wlB.js +252 -0
  12. package/dist/_chunks/{date-picker-Bq7xhMA-.js → date-picker-BfHblqwA.js} +2 -2
  13. package/dist/_chunks/{date-picker-variants-DLi1Va_e.js → date-picker-variants-CXEAx3O_.js} +22 -22
  14. package/dist/_chunks/{date-range-picker-DcXuI9y7.js → date-range-picker-hcAMs1wO.js} +3 -3
  15. package/dist/_chunks/{date-time-picker-RimumeLR.js → date-time-picker-H-3Pwqlb.js} +9 -9
  16. package/dist/_chunks/{de-bTBGdjPS.js → de-DK4A9_a8.js} +2 -2
  17. package/dist/_chunks/{document-scanner-BqLsGs4Y.js → document-scanner-Cxqvq7GR.js} +2 -2
  18. package/dist/_chunks/due-date-calculator-DykajWzh.js +256 -0
  19. package/dist/_chunks/{editable-currency-cell-renderer-CLil9B29.js → editable-currency-cell-renderer-Bh48OHRv.js} +2 -2
  20. package/dist/_chunks/{el-BWG5RXxa.js → el-B29HXhG5.js} +2 -2
  21. package/dist/_chunks/{es-DfO_G435.js → es-BOwPVwWn.js} +2 -2
  22. package/dist/_chunks/fetal-weight-Da-B4P4k.js +122 -0
  23. package/dist/_chunks/{fr-BTn24bs8.js → fr-DoDBtn0T.js} +2 -2
  24. package/dist/_chunks/{freemium-paywall-DzpD63WY.js → freemium-paywall-BWaLWje-.js} +2 -2
  25. package/dist/_chunks/gestational-age-calculator-Bc55hq6t.js +311 -0
  26. package/dist/_chunks/hcg-doubling-DAnpbale.js +170 -0
  27. package/dist/_chunks/{hi-Dj3oYd84.js → hi-DGByrKby.js} +2 -2
  28. package/dist/_chunks/{isSameWeek-HfxKk6Lz.js → isSameWeek-B1odL2vR.js} +2 -2
  29. package/dist/_chunks/{it-Y85ofIQQ.js → it-B16rEecm.js} +3 -3
  30. package/dist/_chunks/{ja-CQ7J6YoA.js → ja-B0viOgft.js} +2 -2
  31. package/dist/_chunks/{marketplace-app-shell-Gfsf78ge.js → marketplace-app-shell-UKSLx9K_.js} +3 -3
  32. package/dist/_chunks/{nl-D9kHCmp3.js → nl-cBxEX2QU.js} +2 -2
  33. package/dist/_chunks/{patient-search-CocVcGJ3.js → patient-search-BJOmTmDA.js} +2 -2
  34. package/dist/_chunks/{patient-shell-CnT4L8gn.js → patient-shell-DUmhXnFq.js} +2 -2
  35. package/dist/_chunks/{payment-form-BNTx4876.js → payment-form-xmeCkxas.js} +2 -2
  36. package/dist/_chunks/{pdf-viewer-G8SU6Azw.js → pdf-viewer-q1D3Uion.js} +2 -2
  37. package/dist/_chunks/{pl-B3Smqpkr.js → pl-DtS08ioY.js} +3 -3
  38. package/dist/_chunks/{practice-results-BFL_mcDW.js → practice-results-Cq1y8JFD.js} +2 -2
  39. package/dist/_chunks/pregnancy-dating-48Gfvod1.js +421 -0
  40. package/dist/_chunks/pregnancy-weight-gain-CCGrvarh.js +322 -0
  41. package/dist/_chunks/product-hub-panel-CkfZBA3t.js +620 -0
  42. package/dist/_chunks/{pt-D3J-1c_7.js → pt-yFXs1VvH.js} +2 -2
  43. package/dist/_chunks/{ro-BKAbbEA3.js → ro-DsCzSrzR.js} +2 -2
  44. package/dist/_chunks/{ru-BeG8f0Ep.js → ru-DgDxL0pc.js} +3 -3
  45. package/dist/_chunks/{sidebar-_vJXI9rB.js → sidebar-h78cTNLh.js} +440 -338
  46. package/dist/_chunks/{sign-document-DPI2pY9V.js → sign-document-CZkAf28g.js} +2 -2
  47. package/dist/_chunks/{sq-_hRPaeUy.js → sq-DHlCYN67.js} +2 -2
  48. package/dist/_chunks/subDays-Bs00akhK.js +8 -0
  49. package/dist/_chunks/{sv-g009fSpe.js → sv-O0QaQs_s.js} +2 -2
  50. package/dist/_chunks/{tr-OKUOuhMW.js → tr-BmNDRuio.js} +2 -2
  51. package/dist/_chunks/warning-stack-CXfoAT-_.js +220 -0
  52. package/dist/_chunks/{workflow-map-ZXw-zsZ8.js → workflow-map-DzX_LI4y.js} +2 -2
  53. package/dist/_chunks/{zh-CN-De4zwEhx.js → zh-CN-CgVJZEzz.js} +3 -3
  54. package/dist/agent-catalog.json +44 -1
  55. package/dist/components/_shared/antenatal-schedule-timeline.d.ts +18 -0
  56. package/dist/components/_shared/antenatal-schedule.d.ts +68 -0
  57. package/dist/components/_shared/index.d.ts +3 -0
  58. package/dist/components/_shared/obstetrics.d.ts +138 -0
  59. package/dist/components/address-autocomplete/index.js +1 -1
  60. package/dist/components/ai-consent-banner/index.js +1 -1
  61. package/dist/components/ai-tools-rail/index.js +1 -1
  62. package/dist/components/alert/alert.d.ts +2 -2
  63. package/dist/components/alert/index.js +1 -1
  64. package/dist/components/audio-recorder/index.js +1 -1
  65. package/dist/components/bishop-score/bishop-score.d.ts +27 -0
  66. package/dist/components/bishop-score/bishop.d.ts +30 -0
  67. package/dist/components/bishop-score/index.d.ts +4 -0
  68. package/dist/components/bishop-score/index.js +10 -0
  69. package/dist/components/booking/index.js +1 -1
  70. package/dist/components/cycle-calculator/cycle.d.ts +5 -0
  71. package/dist/components/cycle-calculator/index.js +1 -1
  72. package/dist/components/data-table/index.js +1 -1
  73. package/dist/components/date-picker/index.js +1 -1
  74. package/dist/components/date-range-picker/index.js +1 -1
  75. package/dist/components/date-time-picker/index.js +1 -1
  76. package/dist/components/document-scanner/index.js +1 -1
  77. package/dist/components/due-date-calculator/due-date-calculator.d.ts +19 -1
  78. package/dist/components/due-date-calculator/gestation.d.ts +1 -59
  79. package/dist/components/due-date-calculator/index.d.ts +1 -1
  80. package/dist/components/due-date-calculator/index.js +16 -10
  81. package/dist/components/fetal-weight/efw.d.ts +25 -0
  82. package/dist/components/fetal-weight/fetal-weight.d.ts +27 -0
  83. package/dist/components/fetal-weight/index.d.ts +4 -0
  84. package/dist/components/fetal-weight/index.js +6 -0
  85. package/dist/components/freemium-paywall/index.js +1 -1
  86. package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts +32 -1
  87. package/dist/components/gestational-age-calculator/index.js +1 -1
  88. package/dist/components/hcg-doubling/hcg-doubling.d.ts +31 -0
  89. package/dist/components/hcg-doubling/hcg.d.ts +33 -0
  90. package/dist/components/hcg-doubling/index.d.ts +4 -0
  91. package/dist/components/hcg-doubling/index.js +7 -0
  92. package/dist/components/index.d.ts +5 -0
  93. package/dist/components/patient-search/index.js +1 -1
  94. package/dist/components/payment-form/index.js +1 -1
  95. package/dist/components/pdf-viewer/index.js +1 -1
  96. package/dist/components/practice-results/index.js +1 -1
  97. package/dist/components/pregnancy-dating/index.d.ts +3 -0
  98. package/dist/components/pregnancy-dating/index.js +5 -0
  99. package/dist/components/pregnancy-dating/pregnancy-dating.d.ts +60 -0
  100. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  101. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts +7 -0
  102. package/dist/components/pregnancy-weight-gain/weight-gain.d.ts +33 -8
  103. package/dist/components/product-hub-tray/index.d.ts +8 -0
  104. package/dist/components/product-hub-tray/index.js +10 -0
  105. package/dist/components/product-hub-tray/product-hub-panel.agent.d.ts +4 -0
  106. package/dist/components/product-hub-tray/product-hub-panel.d.ts +54 -0
  107. package/dist/components/product-hub-tray/product-hub-tray.agent.d.ts +4 -0
  108. package/dist/components/product-hub-tray/product-hub-tray.d.ts +115 -0
  109. package/dist/components/sidebar/index.d.ts +2 -2
  110. package/dist/components/sidebar/index.js +12 -11
  111. package/dist/components/sidebar/sidebar.d.ts +14 -1
  112. package/dist/components/sign-document/index.js +1 -1
  113. package/dist/components/warning-stack/index.js +1 -1
  114. package/dist/components/workflow/index.js +1 -1
  115. package/dist/i18n/locales/ar.d.ts +262 -1
  116. package/dist/i18n/locales/ar.js +261 -2
  117. package/dist/i18n/locales/de.d.ts +262 -1
  118. package/dist/i18n/locales/de.js +261 -2
  119. package/dist/i18n/locales/el.d.ts +262 -1
  120. package/dist/i18n/locales/el.js +261 -2
  121. package/dist/i18n/locales/en.d.ts +262 -1
  122. package/dist/i18n/locales/en.js +261 -2
  123. package/dist/i18n/locales/es.d.ts +262 -1
  124. package/dist/i18n/locales/es.js +261 -2
  125. package/dist/i18n/locales/fr.d.ts +262 -1
  126. package/dist/i18n/locales/fr.js +261 -2
  127. package/dist/i18n/locales/hi.d.ts +262 -1
  128. package/dist/i18n/locales/hi.js +261 -2
  129. package/dist/i18n/locales/it.d.ts +262 -1
  130. package/dist/i18n/locales/it.js +261 -2
  131. package/dist/i18n/locales/ja.d.ts +262 -1
  132. package/dist/i18n/locales/ja.js +261 -2
  133. package/dist/i18n/locales/nl.d.ts +262 -1
  134. package/dist/i18n/locales/nl.js +261 -2
  135. package/dist/i18n/locales/pl.d.ts +262 -1
  136. package/dist/i18n/locales/pl.js +261 -2
  137. package/dist/i18n/locales/pt.d.ts +262 -1
  138. package/dist/i18n/locales/pt.js +261 -2
  139. package/dist/i18n/locales/ro.d.ts +262 -1
  140. package/dist/i18n/locales/ro.js +261 -2
  141. package/dist/i18n/locales/ru.d.ts +262 -1
  142. package/dist/i18n/locales/ru.js +261 -2
  143. package/dist/i18n/locales/sq.d.ts +262 -1
  144. package/dist/i18n/locales/sq.js +261 -2
  145. package/dist/i18n/locales/sv.d.ts +262 -1
  146. package/dist/i18n/locales/sv.js +261 -2
  147. package/dist/i18n/locales/tr.d.ts +262 -1
  148. package/dist/i18n/locales/tr.js +261 -2
  149. package/dist/i18n/locales/zh.d.ts +262 -1
  150. package/dist/i18n/locales/zh.js +261 -2
  151. package/dist/index.js +661 -632
  152. package/dist/locales/ar.json +263 -2
  153. package/dist/locales/de.json +263 -2
  154. package/dist/locales/el.json +263 -2
  155. package/dist/locales/en.json +263 -2
  156. package/dist/locales/es.json +263 -2
  157. package/dist/locales/fr.json +263 -2
  158. package/dist/locales/hi.json +263 -2
  159. package/dist/locales/it.json +263 -2
  160. package/dist/locales/ja.json +263 -2
  161. package/dist/locales/nl.json +263 -2
  162. package/dist/locales/pl.json +263 -2
  163. package/dist/locales/pt.json +263 -2
  164. package/dist/locales/ro.json +263 -2
  165. package/dist/locales/ru.json +263 -2
  166. package/dist/locales/sq.json +263 -2
  167. package/dist/locales/sv.json +263 -2
  168. package/dist/locales/tr.json +263 -2
  169. package/dist/locales/zh.json +263 -2
  170. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  171. package/dist/patterns/patient-shell/index.js +1 -1
  172. package/dist/tokens.css +1 -1
  173. package/package.json +21 -1
  174. package/dist/_chunks/cycle-calculator-DYvGm_m1.js +0 -211
  175. package/dist/_chunks/due-date-calculator-BXd3ANj7.js +0 -216
  176. package/dist/_chunks/gestation-mWF4AXea.js +0 -50
  177. package/dist/_chunks/gestational-age-calculator-Crj6FgZw.js +0 -203
  178. package/dist/_chunks/pregnancy-weight-gain-C7dK89jE.js +0 -246
  179. package/dist/_chunks/subDays-Dv7q9S7u.js +0 -8
  180. package/dist/_chunks/warning-stack-DNR3-IbP.js +0 -180
@@ -58,7 +58,7 @@ const $e = O(
58
58
  ].join(" ")
59
59
  ), Le = O(
60
60
  [
61
- "ds:flex ds:flex-col ds:gap-[var(--spacing-3xs)]",
61
+ "ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]",
62
62
  "ds:ps-3 ds:pe-3 ds:py-2 ds:rounded-[var(--radius-sm)]",
63
63
  "ds:cursor-pointer ds:select-none ds:text-foreground",
64
64
  "ds:text-start",
@@ -355,4 +355,4 @@ export {
355
355
  ze as A,
356
356
  oe as p
357
357
  };
358
- //# sourceMappingURL=address-autocomplete-CSjMrBvu.js.map
358
+ //# sourceMappingURL=address-autocomplete-CT-9AOli.js.map
@@ -2,7 +2,7 @@ import { jsxs as r, jsx as n } from "react/jsx-runtime";
2
2
  import { forwardRef as N, useState as k, useRef as q, useMemo as I } from "react";
3
3
  import { c as L } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as R } from "react-i18next";
5
- import { A as d } from "./alert-ywPR59NE.js";
5
+ import { A as d } from "./alert-CUTxnym2.js";
6
6
  import { B as w } from "./badge-zsf5i5bH.js";
7
7
  import { B as T } from "./button-DD_0Xdmr.js";
8
8
  import { C as V } from "./checkbox-DRcOdmXv.js";
@@ -166,4 +166,4 @@ export {
166
166
  P as A,
167
167
  K as a
168
168
  };
169
- //# sourceMappingURL=ai-consent-banner-DO5ingMq.js.map
169
+ //# sourceMappingURL=ai-consent-banner-F2md5JD3.js.map
@@ -63,7 +63,7 @@ const te = {
63
63
  description: "Stable tool id emitted on each strip IconButton. The active icon also carries data-active set to its id."
64
64
  }
65
65
  }
66
- }, se = "ds:[inline-size:3rem]", ne = "ds:[inline-size:22rem]", ie = b(
66
+ }, se = "ds:[inline-size:3rem]", ne = "ds:[inline-size:var(--ai-tools-rail-panel-inline-size,22rem)]", ie = b(
67
67
  ["ds:flex ds:shrink-0 ds:h-full", "ds:bg-[var(--background)]"].join(" "),
68
68
  {
69
69
  variants: {
@@ -115,8 +115,8 @@ const ce = M(
115
115
  defaultActiveToolId: L = null,
116
116
  onActiveToolChange: B,
117
117
  side: R = "end",
118
- railLabel: H,
119
- className: z
118
+ railLabel: z,
119
+ className: H
120
120
  }, _) => {
121
121
  var E;
122
122
  const { t: m } = Q(), [F, l] = $({
@@ -196,7 +196,7 @@ const ce = M(
196
196
  "data-component": "ai-tools-rail",
197
197
  "data-component-id": n,
198
198
  "data-side": R,
199
- className: [ie({ side: R }), z].filter(Boolean).join(" "),
199
+ className: [ie({ side: R }), H].filter(Boolean).join(" "),
200
200
  children: [
201
201
  p ? /* @__PURE__ */ f(
202
202
  "aside",
@@ -220,7 +220,7 @@ const ce = M(
220
220
  {
221
221
  role: "toolbar",
222
222
  "aria-orientation": "vertical",
223
- "aria-label": H ?? m("aiToolsRail.railLabel", { defaultValue: "AI tools" }),
223
+ "aria-label": z ?? m("aiToolsRail.railLabel", { defaultValue: "AI tools" }),
224
224
  className: oe(),
225
225
  onKeyDown: W,
226
226
  children: a.map((e, t) => {
@@ -277,4 +277,4 @@ export {
277
277
  ce as A,
278
278
  te as a
279
279
  };
280
- //# sourceMappingURL=ai-tools-rail-CxYG04cw.js.map
280
+ //# sourceMappingURL=ai-tools-rail-CYLWrRmm.js.map
@@ -2,13 +2,14 @@ import { jsxs as E, jsx as t } from "react/jsx-runtime";
2
2
  import { forwardRef as a, useState as R, useRef as V, useCallback as z, Children as B, isValidElement as D } from "react";
3
3
  import { c as F } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as L } from "react-i18next";
5
- import { u as W } from "./use-controllable-state-BiY4xTzM.js";
6
- import { X } from "./x-CCcI3eJp.js";
5
+ import { u as U } from "./use-controllable-state-BiY4xTzM.js";
6
+ import { X as W } from "./x-CCcI3eJp.js";
7
+ import { C as X } from "./circle-arrow-up-CC_85SuH.js";
7
8
  import { C as G } from "./circle-x-Du2CmjaU.js";
8
9
  import { T as H } from "./triangle-alert-CBPUIzQo.js";
9
10
  import { C as M } from "./circle-check-9AeSgJD_.js";
10
11
  import { I as P } from "./info-B9XNKn05.js";
11
- const U = F(
12
+ const $ = F(
12
13
  [
13
14
  // Default `items-center` keeps the icon + dismiss optically aligned
14
15
  // with a single-line description. The `data-[has-title=true]`
@@ -58,6 +59,19 @@ const U = F(
58
59
  "ds:text-[var(--error-foreground)]",
59
60
  "ds:[&_[data-intent=tonal]]:bg-[color:var(--error-foreground)]",
60
61
  "ds:[&_[data-intent=tonal]]:text-[color:var(--background)]"
62
+ ].join(" "),
63
+ // Sales / marketing upsell — accent magenta via the --promo
64
+ // semantic pair so marketing pushes (product hub → warning
65
+ // stack) read as offers, not operational warnings. Surface is
66
+ // the same subtle accent gradient as SidebarUpgradeChip (it
67
+ // flattens in the accessible themes and follows Canvas in
68
+ // forced-colors), keeping the two upsell affordances kin.
69
+ promo: [
70
+ "ds:border-[color:var(--promo)]",
71
+ "ds:bg-[image:var(--gradient-surface-subtle-accent)]",
72
+ "ds:text-[var(--promo-foreground)]",
73
+ "ds:[&_[data-intent=tonal]]:bg-[color:var(--promo-foreground)]",
74
+ "ds:[&_[data-intent=tonal]]:text-[color:var(--background)]"
61
75
  ].join(" ")
62
76
  }
63
77
  },
@@ -65,7 +79,7 @@ const U = F(
65
79
  variant: "info"
66
80
  }
67
81
  }
68
- ), h = "ds:shrink-0 ds:size-5", $ = `${h} ds:mt-0.5`, q = [
82
+ ), h = "ds:shrink-0 ds:size-5", q = `${h} ds:mt-0.5`, J = [
69
83
  // Default (no title): the alert root uses `items-center` and the
70
84
  // button centres in the cross-axis. A centred 16×16 glyph inside a
71
85
  // 44×44 button aligns optically with a single-line description.
@@ -89,7 +103,7 @@ const U = F(
89
103
  "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
90
104
  "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
91
105
  "ds:forced-colors:focus-visible:outline-[CanvasText]"
92
- ].join(" "), J = {
106
+ ].join(" "), K = {
93
107
  info: { icon: /* @__PURE__ */ t(P, { "aria-hidden": "true" }), role: "status", live: "polite" },
94
108
  success: {
95
109
  icon: /* @__PURE__ */ t(M, { "aria-hidden": "true" }),
@@ -105,70 +119,76 @@ const U = F(
105
119
  icon: /* @__PURE__ */ t(G, { "aria-hidden": "true" }),
106
120
  role: "alert",
107
121
  live: "assertive"
122
+ },
123
+ // Promotions never interrupt — same polite semantics as info.
124
+ promo: {
125
+ icon: /* @__PURE__ */ t(X, { "aria-hidden": "true" }),
126
+ role: "status",
127
+ live: "polite"
108
128
  }
109
129
  }, c = a(
110
- ({ as: e = "h5", className: s, ...o }, n) => /* @__PURE__ */ t(
130
+ ({ as: e = "h5", className: o, ...r }, n) => /* @__PURE__ */ t(
111
131
  e,
112
132
  {
113
133
  ref: n,
114
- className: ["type-title-item", s].filter(Boolean).join(" "),
115
- ...o
134
+ className: ["type-title-item", o].filter(Boolean).join(" "),
135
+ ...r
116
136
  }
117
137
  )
118
138
  );
119
139
  c.displayName = "Alert.Title";
120
- const x = a(({ className: e, ...s }, o) => /* @__PURE__ */ t(
140
+ const x = a(({ className: e, ...o }, r) => /* @__PURE__ */ t(
121
141
  "p",
122
142
  {
123
- ref: o,
143
+ ref: r,
124
144
  className: [
125
145
  "ds:[[data-has-title=true]_&]:mt-[var(--spacing-xs)] type-body-sm",
126
146
  e
127
147
  ].filter(Boolean).join(" "),
128
- ...s
148
+ ...o
129
149
  }
130
150
  ));
131
151
  x.displayName = "Alert.Description";
132
152
  const _ = a(
133
- ({ className: e, ...s }, o) => /* @__PURE__ */ t(
153
+ ({ className: e, ...o }, r) => /* @__PURE__ */ t(
134
154
  "div",
135
155
  {
136
- ref: o,
156
+ ref: r,
137
157
  className: [
138
158
  "ds:mt-[var(--spacing-sm)] ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]",
139
159
  e
140
160
  ].filter(Boolean).join(" "),
141
- ...s
161
+ ...o
142
162
  }
143
163
  )
144
164
  );
145
165
  _.displayName = "Alert.Action";
146
- const w = a(
166
+ const C = a(
147
167
  ({
148
168
  variant: e = "info",
149
- dismissible: s = !1,
150
- open: o,
169
+ dismissible: o = !1,
170
+ open: r,
151
171
  onOpenChange: n,
152
172
  icon: m,
153
- live: C,
173
+ live: w,
154
174
  className: A,
155
175
  children: u,
156
176
  ...N
157
177
  }, y) => {
158
- const { t: T } = L(), [j, k] = W({
159
- value: o,
178
+ const { t: T } = L(), [j, k] = U({
179
+ value: r,
160
180
  defaultValue: !0,
161
181
  onChange: n
162
182
  }), I = j ?? !0, [f, g] = R(!1), i = V(null), O = z(() => {
163
183
  if (typeof window > "u") return 200;
164
- const r = window.getComputedStyle(document.documentElement).getPropertyValue("--animation-duration");
165
- if (!r) return 200;
166
- const b = r.trim(), l = parseFloat(b);
184
+ const s = window.getComputedStyle(document.documentElement).getPropertyValue("--animation-duration");
185
+ if (!s) return 200;
186
+ const b = s.trim(), l = parseFloat(b);
167
187
  return Number.isFinite(l) ? b.endsWith("ms") ? l : l * 1e3 : 200;
168
188
  }, []);
169
189
  if (!I) return null;
170
- const d = J[e], v = m !== void 0 ? m : d.icon, p = B.toArray(u).some(
171
- (r) => D(r) && r.type === c
190
+ const d = K[e], v = m !== void 0 ? m : d.icon, p = B.toArray(u).some(
191
+ (s) => D(s) && s.type === c
172
192
  ), S = () => {
173
193
  f || (g(!0), i.current && clearTimeout(i.current), i.current = setTimeout(() => {
174
194
  g(!1), k(!1);
@@ -179,12 +199,12 @@ const w = a(
179
199
  {
180
200
  ref: y,
181
201
  role: d.role,
182
- "aria-live": C ?? d.live,
202
+ "aria-live": w ?? d.live,
183
203
  "data-component": "alert",
184
204
  "data-has-title": p ? "true" : "false",
185
205
  "data-state": f ? "closing" : "open",
186
206
  className: [
187
- U({ variant: e, className: A }),
207
+ $({ variant: e, className: A }),
188
208
  // Entry: fade + slide-down on mount. Exit: fade + slide-up + slight
189
209
  // scale when dismissed. Driven by `tw-animate-css`. Respects
190
210
  // `prefers-reduced-motion` via `motion-safe:` and zeroes under the
@@ -200,16 +220,17 @@ const w = a(
200
220
  ].join(" "),
201
221
  ...N,
202
222
  children: [
203
- v ? /* @__PURE__ */ t("span", { className: p ? $ : h, children: v }) : null,
223
+ v ? /* @__PURE__ */ t("span", { className: p ? q : h, children: v }) : null,
204
224
  /* @__PURE__ */ t("div", { className: "ds:flex-1 ds:min-w-0", children: u }),
205
- s ? /* @__PURE__ */ t(
225
+ o ? /* @__PURE__ */ t(
206
226
  "button",
207
227
  {
208
228
  type: "button",
209
229
  "aria-label": T("common.close", "Close"),
210
230
  onClick: S,
211
- className: q,
212
- children: /* @__PURE__ */ t(X, { "aria-hidden": "true", className: "ds:size-4" })
231
+ "data-alert-dismiss": "",
232
+ className: J,
233
+ children: /* @__PURE__ */ t(W, { "aria-hidden": "true", className: "ds:size-4" })
213
234
  }
214
235
  ) : null
215
236
  ]
@@ -217,13 +238,13 @@ const w = a(
217
238
  );
218
239
  }
219
240
  );
220
- w.displayName = "Alert";
221
- const nt = Object.assign(w, {
241
+ C.displayName = "Alert";
242
+ const dt = Object.assign(C, {
222
243
  Title: c,
223
244
  Description: x,
224
245
  Action: _
225
246
  });
226
247
  export {
227
- nt as A
248
+ dt as A
228
249
  };
229
- //# sourceMappingURL=alert-ywPR59NE.js.map
250
+ //# sourceMappingURL=alert-CUTxnym2.js.map
@@ -0,0 +1,413 @@
1
+ import { a as y, j as N } from "./date-picker-variants-CXEAx3O_.js";
2
+ import { s as p } from "./subDays-Bs00akhK.js";
3
+ import { jsx as u, jsxs as f } from "react/jsx-runtime";
4
+ import { useMemo as M } from "react";
5
+ import { useTranslation as T } from "react-i18next";
6
+ import { C as I } from "./card-DPmk26CL.js";
7
+ import { B as x } from "./badge-zsf5i5bH.js";
8
+ const _ = 280, S = 14, b = 266, C = 28;
9
+ function w(t) {
10
+ if (t < 0) return "preconception";
11
+ const a = Math.floor(t / 7);
12
+ return a < 14 ? "first" : a < 28 ? "second" : a < 42 ? "third" : "postterm";
13
+ }
14
+ function mt(t, a) {
15
+ const { method: s, date: r } = t;
16
+ let o, c;
17
+ if (s === "lmp") {
18
+ const m = t.cycleLength ?? C;
19
+ o = r, c = y(r, _ + (m - C));
20
+ } else if (s === "conception")
21
+ o = p(r, S), c = y(r, b);
22
+ else {
23
+ const m = t.embryoAge ?? 5, h = p(r, m);
24
+ o = p(h, S), c = y(h, b);
25
+ }
26
+ const e = N(a, o), l = e < 0 ? null : {
27
+ weeks: Math.floor(e / 7),
28
+ days: e % 7,
29
+ totalDays: e
30
+ };
31
+ return {
32
+ dueDate: c,
33
+ gestationalStart: o,
34
+ gestationalAge: l,
35
+ trimester: w(e)
36
+ };
37
+ }
38
+ const R = [12, 24, 28, 37, 40];
39
+ function gt(t) {
40
+ return R.map((a) => ({
41
+ key: `w${a}`,
42
+ week: a,
43
+ date: y(t, a * 7)
44
+ }));
45
+ }
46
+ const Dt = {
47
+ preconception: "neutral",
48
+ first: "info",
49
+ second: "success",
50
+ third: "warning",
51
+ postterm: "error"
52
+ }, $ = {
53
+ preconception: "--muted",
54
+ first: "--info",
55
+ second: "--success",
56
+ third: "--warning-readable",
57
+ postterm: "--destructive"
58
+ };
59
+ function ft(t) {
60
+ return $[t];
61
+ }
62
+ const i = (t, a = 0) => t * 7 + a;
63
+ function F(t, a = "unknown", s = "nice") {
64
+ if (t === "singleton") return null;
65
+ if (t === "triplet")
66
+ return { startDay: i(35, 0), endDay: i(35, 6), source: "NICE-NG137" };
67
+ const r = a === "unknown" ? "monochorionic-diamniotic" : a;
68
+ if (s === "acog")
69
+ switch (r) {
70
+ case "dichorionic-diamniotic":
71
+ return {
72
+ startDay: i(38, 0),
73
+ endDay: i(38, 6),
74
+ source: "ACOG-PB231"
75
+ };
76
+ case "monochorionic-diamniotic":
77
+ return {
78
+ startDay: i(36, 0),
79
+ endDay: i(37, 6),
80
+ source: "ACOG-PB231"
81
+ };
82
+ case "monochorionic-monoamniotic":
83
+ return {
84
+ startDay: i(32, 0),
85
+ endDay: i(34, 0),
86
+ source: "ACOG-PB231"
87
+ };
88
+ }
89
+ switch (r) {
90
+ case "dichorionic-diamniotic":
91
+ return { startDay: i(37, 0), endDay: i(37, 6), source: "NICE-NG137" };
92
+ case "monochorionic-diamniotic":
93
+ return { startDay: i(36, 0), endDay: i(36, 6), source: "NICE-NG137" };
94
+ case "monochorionic-monoamniotic":
95
+ return { startDay: i(32, 0), endDay: i(33, 6), source: "NICE-NG137" };
96
+ }
97
+ }
98
+ const L = 45, B = 84;
99
+ function H(t) {
100
+ return 8.052 * Math.sqrt(t * 1.037) + 23.73;
101
+ }
102
+ function U(t) {
103
+ return t <= i(8, 6) ? 5 : t <= i(15, 6) ? 7 : t <= i(21, 6) ? 10 : t <= i(27, 6) ? 14 : 21;
104
+ }
105
+ function ht(t) {
106
+ const a = N(t.scanDate, t.lmp), s = Math.round(H(t.crlMm)), r = Math.abs(a - s), o = U(a), c = r > o;
107
+ return {
108
+ gestationalStart: c ? p(t.scanDate, s) : t.lmp,
109
+ redated: c,
110
+ discrepancyDays: r,
111
+ thresholdDays: o,
112
+ ecoDiffDays: s - a,
113
+ crlInRange: t.crlMm >= L && t.crlMm <= B
114
+ };
115
+ }
116
+ const n = (t, a = 0) => t * 7 + a, j = (t) => t === "uk" ? {
117
+ key: "dating-nt",
118
+ category: "screening",
119
+ startDay: n(11, 2),
120
+ endDay: n(14, 1),
121
+ source: "NICE-NG201"
122
+ } : {
123
+ key: "dating-nt",
124
+ category: "screening",
125
+ startDay: n(11, 0),
126
+ endDay: n(13, 6),
127
+ source: "SIEOG-2021"
128
+ }, P = {
129
+ key: "nipt",
130
+ category: "screening",
131
+ startDay: n(10, 0),
132
+ endDay: n(13, 6),
133
+ condition: "on-indication",
134
+ source: "ACOG-CO700"
135
+ }, W = {
136
+ key: "cvs",
137
+ category: "diagnostic",
138
+ startDay: n(11, 0),
139
+ endDay: n(13, 6),
140
+ condition: "on-indication",
141
+ source: "ISS"
142
+ }, Y = {
143
+ key: "amnio",
144
+ category: "diagnostic",
145
+ startDay: n(15, 0),
146
+ endDay: n(18, 0),
147
+ condition: "on-indication",
148
+ source: "ISS"
149
+ }, K = (t) => t === "uk" ? {
150
+ key: "morphology",
151
+ category: "scan",
152
+ startDay: n(18, 0),
153
+ endDay: n(20, 6),
154
+ source: "NICE-NG201"
155
+ } : t === "international" ? {
156
+ key: "morphology",
157
+ category: "scan",
158
+ startDay: n(18, 0),
159
+ endDay: n(22, 0),
160
+ source: "ACOG-CO700"
161
+ } : {
162
+ key: "morphology",
163
+ category: "scan",
164
+ startDay: n(19, 0),
165
+ endDay: n(21, 6),
166
+ source: "SIEOG-2021"
167
+ }, V = {
168
+ key: "growth",
169
+ category: "scan",
170
+ startDay: n(30, 0),
171
+ endDay: n(33, 6),
172
+ condition: "on-indication",
173
+ source: "SIEOG-2021"
174
+ }, q = {
175
+ key: "ogtt-high",
176
+ category: "lab",
177
+ startDay: n(16, 0),
178
+ endDay: n(18, 6),
179
+ condition: "gdm-high",
180
+ source: "SID-AMD"
181
+ }, X = {
182
+ key: "ogtt-medium",
183
+ category: "lab",
184
+ startDay: n(24, 0),
185
+ endDay: n(28, 6),
186
+ condition: "gdm-medium",
187
+ source: "SID-AMD"
188
+ }, v = (t) => t === "it" ? {
189
+ key: "gbs",
190
+ category: "lab",
191
+ startDay: n(36, 0),
192
+ endDay: n(37, 6),
193
+ source: "ISS"
194
+ } : {
195
+ // CDC / legacy international protocols open a week earlier.
196
+ key: "gbs",
197
+ category: "lab",
198
+ startDay: n(35, 0),
199
+ endDay: n(37, 6),
200
+ source: "NICE-NG201"
201
+ }, z = {
202
+ key: "anti-d",
203
+ category: "prophylaxis",
204
+ startDay: n(28, 0),
205
+ endDay: n(28, 0),
206
+ condition: "rh-negative",
207
+ source: "ISS"
208
+ }, J = {
209
+ key: "term",
210
+ category: "milestone",
211
+ startDay: n(37, 0),
212
+ endDay: n(37, 0),
213
+ plurality: ["singleton"],
214
+ source: "ACOG-CO700"
215
+ }, Q = {
216
+ key: "edd",
217
+ category: "milestone",
218
+ startDay: n(40, 0),
219
+ endDay: n(40, 0),
220
+ plurality: ["singleton"],
221
+ source: "ACOG-CO700"
222
+ }, Z = {
223
+ key: "chorionicity",
224
+ category: "scan",
225
+ startDay: n(11, 2),
226
+ endDay: n(14, 1),
227
+ plurality: ["twin", "triplet"],
228
+ source: "ISUOG-2025"
229
+ };
230
+ function tt(t) {
231
+ return [
232
+ j(t),
233
+ P,
234
+ W,
235
+ Z,
236
+ Y,
237
+ K(t),
238
+ q,
239
+ V,
240
+ X,
241
+ J,
242
+ v(t),
243
+ z,
244
+ Q
245
+ ];
246
+ }
247
+ function at(t, a, s) {
248
+ if (t === "singleton") return [];
249
+ const r = a === "dichorionic-diamniotic", o = r ? 4 : 2, c = r ? 20 : 16, e = F(t, a, s), l = [
250
+ {
251
+ key: "surveillance",
252
+ category: "scan",
253
+ startDay: n(c, 0),
254
+ // Runs until the planned-birth window opens (fallback 36w if none).
255
+ endDay: e ? e.startDay : n(36, 0),
256
+ source: r ? "NICE-NG137" : "ISUOG-2025",
257
+ meta: { everyWeeks: o, fromWeek: c }
258
+ }
259
+ ];
260
+ return e && l.push({
261
+ key: "birth",
262
+ category: "milestone",
263
+ startDay: e.startDay,
264
+ endDay: e.endDay,
265
+ source: e.source
266
+ }), l;
267
+ }
268
+ function et(t, a) {
269
+ if (t.plurality && !t.plurality.includes(a.plurality) || t.chorionicity && !t.chorionicity.includes(a.chorionicity))
270
+ return !1;
271
+ switch (t.condition) {
272
+ case "rh-negative":
273
+ return a.rhNegative;
274
+ case "gdm-high":
275
+ return a.gdmRisk === "high";
276
+ case "gdm-medium":
277
+ return a.gdmRisk === "medium";
278
+ case "on-indication":
279
+ return a.includeOnIndication;
280
+ default:
281
+ return !0;
282
+ }
283
+ }
284
+ function nt(t, a, s, r) {
285
+ const o = N(t, s);
286
+ return N(a, s) < 0 ? { status: "past", near: !1 } : o <= 0 ? { status: "current", near: !0 } : { status: "upcoming", near: o <= r };
287
+ }
288
+ function pt(t, a = {}) {
289
+ const {
290
+ today: s = /* @__PURE__ */ new Date(),
291
+ schedule: r = "it",
292
+ plurality: o = "singleton",
293
+ chorionicity: c = "unknown",
294
+ rhNegative: e = !1,
295
+ gdmRisk: l,
296
+ includeOnIndication: m = !1,
297
+ birthGuideline: h = "nice",
298
+ nearDays: G = 14
299
+ } = a;
300
+ return [
301
+ ...tt(r),
302
+ ...at(o, c, h)
303
+ ].filter(
304
+ (d) => et(d, {
305
+ plurality: o,
306
+ chorionicity: c,
307
+ rhNegative: e,
308
+ gdmRisk: l,
309
+ includeOnIndication: m
310
+ })
311
+ ).map((d) => {
312
+ const g = y(t, d.startDay), D = y(t, d.endDay), { status: O, near: A } = nt(g, D, s, G);
313
+ return {
314
+ ...d,
315
+ start: g,
316
+ end: D,
317
+ single: d.startDay === d.endDay,
318
+ status: O,
319
+ near: A
320
+ };
321
+ }).sort((d, g) => {
322
+ const D = d.startDay - g.startDay;
323
+ return D !== 0 ? D : d.endDay - g.endDay;
324
+ });
325
+ }
326
+ function rt(t, a) {
327
+ return t === "past" ? "neutral" : t === "current" || a ? "warning" : "info";
328
+ }
329
+ function k(t) {
330
+ return `${Math.floor(t / 7)}+${t % 7}`;
331
+ }
332
+ const st = {
333
+ scan: "activity",
334
+ screening: "activity",
335
+ diagnostic: "activity",
336
+ lab: "droplets",
337
+ prophylaxis: "heart",
338
+ milestone: "calendar"
339
+ };
340
+ function E(t, a) {
341
+ return a(`antenatalSchedule.event.${t.key}`, t.meta ?? {});
342
+ }
343
+ function Nt(t, a, s) {
344
+ return t.map((r) => ({
345
+ icon: st[r.category],
346
+ label: E(r, a),
347
+ value: r.single ? s(r.start) : `${s(r.start)} – ${s(r.end)}`
348
+ }));
349
+ }
350
+ function It({
351
+ events: t
352
+ }) {
353
+ const { t: a, i18n: s } = T(), r = M(
354
+ () => new Intl.DateTimeFormat(s.language, { dateStyle: "medium" }),
355
+ [s.language]
356
+ ), o = (e) => E(e, a), c = (e) => e.single ? r.format(e.start) : `${r.format(e.start)} – ${r.format(
357
+ e.end
358
+ )}`;
359
+ return /* @__PURE__ */ u(I, { variant: "elevated", children: /* @__PURE__ */ f(I.Body, { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
360
+ /* @__PURE__ */ u("span", { className: "type-label ds:text-muted-foreground", children: a("antenatalSchedule.scheduleLabel") }),
361
+ /* @__PURE__ */ u("ul", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]", children: t.map((e) => /* @__PURE__ */ f(
362
+ "li",
363
+ {
364
+ "data-status": e.status,
365
+ className: "ds:flex ds:flex-wrap ds:items-start ds:justify-between ds:gap-x-[var(--spacing-md)] ds:gap-y-[var(--spacing-xs)] ds:border-b ds:border-border ds:pb-[var(--spacing-sm)] ds:last:border-b-0 ds:last:pb-0",
366
+ children: [
367
+ /* @__PURE__ */ f("span", { className: "ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-2xs)]", children: [
368
+ /* @__PURE__ */ u("span", { className: "type-body ds:text-foreground", children: o(e) }),
369
+ /* @__PURE__ */ f("span", { className: "type-meta ds:text-muted-foreground", children: [
370
+ a(`antenatalSchedule.category.${e.category}`),
371
+ " ·",
372
+ " ",
373
+ k(e.startDay),
374
+ e.single ? "" : ` – ${k(e.endDay)}`,
375
+ " ·",
376
+ " ",
377
+ a(`antenatalSchedule.source.${e.source}`),
378
+ e.condition === "on-indication" ? ` · ${a("antenatalSchedule.onIndication")}` : ""
379
+ ] })
380
+ ] }),
381
+ /* @__PURE__ */ f("span", { className: "ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-2xs)] ds:text-end", children: [
382
+ /* @__PURE__ */ u("span", { className: "type-body ds:text-foreground", children: c(e) }),
383
+ /* @__PURE__ */ u(x, { variant: rt(e.status, e.near), children: e.status === "upcoming" && e.near ? a("antenatalSchedule.near") : a(`antenatalSchedule.status.${e.status}`) })
384
+ ] })
385
+ ]
386
+ },
387
+ e.key
388
+ )) }),
389
+ /* @__PURE__ */ u("p", { className: "type-meta ds:text-muted-foreground", children: a("antenatalSchedule.disclaimer") })
390
+ ] }) });
391
+ }
392
+ export {
393
+ It as A,
394
+ B as C,
395
+ C as D,
396
+ _ as G,
397
+ R as M,
398
+ b as T,
399
+ L as a,
400
+ H as b,
401
+ mt as c,
402
+ U as d,
403
+ pt as e,
404
+ Dt as f,
405
+ gt as g,
406
+ Nt as h,
407
+ ft as i,
408
+ S as j,
409
+ F as p,
410
+ ht as r,
411
+ w as t
412
+ };
413
+ //# sourceMappingURL=antenatal-schedule-timeline-CdiqkF05.js.map