@alfadocs/ui-kit-debug 0.44.0 → 0.46.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.
- package/dist/_chunks/{alia-sidebar-BpX4z_af.js → alia-sidebar-Be8FhKYd.js} +332 -237
- package/dist/_chunks/alia-sidebar-Be8FhKYd.js.map +1 -0
- package/dist/_chunks/{autocomplete-DIgdhCGJ.js → autocomplete-CDqxB68B.js} +2 -2
- package/dist/_chunks/{autocomplete-DIgdhCGJ.js.map → autocomplete-CDqxB68B.js.map} +1 -1
- package/dist/_chunks/bmi-calculator-CQqXTVNL.js +258 -0
- package/dist/_chunks/bmi-calculator-CQqXTVNL.js.map +1 -0
- package/dist/_chunks/{booking-CtLwaxkK.js → booking-DlDVuWMd.js} +2 -2
- package/dist/_chunks/{booking-CtLwaxkK.js.map → booking-DlDVuWMd.js.map} +1 -1
- package/dist/_chunks/{cycle-calculator-ChHBcjet.js → cycle-calculator-KxA8dqDf.js} +31 -20
- package/dist/_chunks/cycle-calculator-KxA8dqDf.js.map +1 -0
- package/dist/_chunks/{due-date-calculator-CYXKLoof.js → due-date-calculator-mFxpHLml.js} +51 -39
- package/dist/_chunks/due-date-calculator-mFxpHLml.js.map +1 -0
- package/dist/_chunks/{editable-currency-cell-renderer-9jqwDv5x.js → editable-currency-cell-renderer-BEBUQl9P.js} +2 -2
- package/dist/_chunks/{editable-currency-cell-renderer-9jqwDv5x.js.map → editable-currency-cell-renderer-BEBUQl9P.js.map} +1 -1
- package/dist/_chunks/{freemium-paywall-BLXESpH4.js → freemium-paywall-DzpD63WY.js} +2 -2
- package/dist/_chunks/{freemium-paywall-BLXESpH4.js.map → freemium-paywall-DzpD63WY.js.map} +1 -1
- package/dist/_chunks/{gestational-age-calculator-sRmoqgVr.js → gestational-age-calculator-gWI_uRA1.js} +52 -39
- package/dist/_chunks/gestational-age-calculator-gWI_uRA1.js.map +1 -0
- package/dist/_chunks/insert-result-C5ABnzDl.js +711 -0
- package/dist/_chunks/insert-result-C5ABnzDl.js.map +1 -0
- package/dist/_chunks/{marketplace-app-shell-Dc5cTIt8.js → marketplace-app-shell-Gfsf78ge.js} +2 -2
- package/dist/_chunks/{marketplace-app-shell-Dc5cTIt8.js.map → marketplace-app-shell-Gfsf78ge.js.map} +1 -1
- package/dist/_chunks/{patient-search-DPe2ZYEL.js → patient-search-CocVcGJ3.js} +2 -2
- package/dist/_chunks/{patient-search-DPe2ZYEL.js.map → patient-search-CocVcGJ3.js.map} +1 -1
- package/dist/_chunks/payment-form-BNTx4876.js +671 -0
- package/dist/_chunks/payment-form-BNTx4876.js.map +1 -0
- package/dist/_chunks/{pdf-viewer-B6MC6VTx.js → pdf-viewer-CWEXTlwq.js} +2 -2
- package/dist/_chunks/{pdf-viewer-B6MC6VTx.js.map → pdf-viewer-CWEXTlwq.js.map} +1 -1
- package/dist/_chunks/{practice-results-CrLpEiiW.js → practice-results-DDi-kvaD.js} +2 -2
- package/dist/_chunks/{practice-results-CrLpEiiW.js.map → practice-results-DDi-kvaD.js.map} +1 -1
- package/dist/_chunks/{pregnancy-weight-gain-C5YhfYnL.js → pregnancy-weight-gain-BtEHaSqy.js} +26 -13
- package/dist/_chunks/pregnancy-weight-gain-BtEHaSqy.js.map +1 -0
- package/dist/_chunks/{search-bar-CP6wUJFY.js → search-bar-CvN_S0jW.js} +2 -2
- package/dist/_chunks/{search-bar-CP6wUJFY.js.map → search-bar-CvN_S0jW.js.map} +1 -1
- package/dist/_chunks/{search-input-C1C3jQpD.js → search-input-D3aMvi4l.js} +2 -2
- package/dist/_chunks/{search-input-C1C3jQpD.js.map → search-input-D3aMvi4l.js.map} +1 -1
- package/dist/_chunks/{sign-document-B-3k_0LO.js → sign-document-BCyLpFHJ.js} +2 -2
- package/dist/_chunks/{sign-document-B-3k_0LO.js.map → sign-document-BCyLpFHJ.js.map} +1 -1
- package/dist/_chunks/{sign-in-with-alfadocs-button-DeHBFRNS.js → sign-in-with-alfadocs-button-CuYn_kKP.js} +2 -2
- package/dist/_chunks/{sign-in-with-alfadocs-button-DeHBFRNS.js.map → sign-in-with-alfadocs-button-CuYn_kKP.js.map} +1 -1
- package/dist/_chunks/{social-sign-in-button-X54ySJr1.js → social-sign-in-button-uJYLM366.js} +2 -2
- package/dist/_chunks/{social-sign-in-button-X54ySJr1.js.map → social-sign-in-button-uJYLM366.js.map} +1 -1
- package/dist/_chunks/{spinner-CCByyvcb.js → spinner-OjQNn8oN.js} +7 -3
- package/dist/_chunks/spinner-OjQNn8oN.js.map +1 -0
- package/dist/_chunks/{transcript-panel-CR7VY1uw.js → transcript-panel-B4HiC7ed.js} +2 -2
- package/dist/_chunks/{transcript-panel-CR7VY1uw.js.map → transcript-panel-B4HiC7ed.js.map} +1 -1
- package/dist/_chunks/{unit-converter-Ds9jalbN.js → unit-converter-u3CwNDpP.js} +63 -52
- package/dist/_chunks/unit-converter-u3CwNDpP.js.map +1 -0
- package/dist/_chunks/{wallet-pay-button-DK4ESYge.js → wallet-pay-button-DuDPBlCO.js} +2 -2
- package/dist/_chunks/{wallet-pay-button-DK4ESYge.js.map → wallet-pay-button-DuDPBlCO.js.map} +1 -1
- package/dist/agent-catalog.json +1 -1
- package/dist/components/_shared/banded-gauge.d.ts +193 -0
- package/dist/components/_shared/banded-gauge.d.ts.map +1 -0
- package/dist/components/_shared/insert-result.d.ts +81 -8
- package/dist/components/_shared/insert-result.d.ts.map +1 -1
- package/dist/components/autocomplete/index.js +1 -1
- package/dist/components/bmi-calculator/bmi-calculator.d.ts +2 -2
- package/dist/components/bmi-calculator/bmi-calculator.d.ts.map +1 -1
- package/dist/components/bmi-calculator/index.js +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/cycle-calculator/cycle-calculator.d.ts +2 -2
- package/dist/components/cycle-calculator/cycle-calculator.d.ts.map +1 -1
- package/dist/components/cycle-calculator/index.js +1 -1
- package/dist/components/data-table/index.js +1 -1
- package/dist/components/due-date-calculator/due-date-calculator.d.ts +2 -2
- package/dist/components/due-date-calculator/due-date-calculator.d.ts.map +1 -1
- package/dist/components/due-date-calculator/index.js +1 -1
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts +2 -2
- package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts.map +1 -1
- package/dist/components/gestational-age-calculator/index.js +1 -1
- package/dist/components/patient-search/index.js +1 -1
- package/dist/components/payment-form/index.js +1 -1
- package/dist/components/payment-form/payment-form.d.ts +30 -2
- package/dist/components/payment-form/payment-form.d.ts.map +1 -1
- package/dist/components/pdf-viewer/index.js +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts +2 -2
- package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts.map +1 -1
- package/dist/components/search-bar/index.js +1 -1
- package/dist/components/search-input/index.js +1 -1
- package/dist/components/sign-document/index.js +1 -1
- package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
- package/dist/components/social-sign-in-button/index.js +1 -1
- package/dist/components/spinner/index.js +1 -1
- package/dist/components/spinner/spinner.d.ts +2 -2
- package/dist/components/spinner/spinner.d.ts.map +1 -1
- package/dist/components/transcript-panel/index.js +1 -1
- package/dist/components/unit-converter/index.js +1 -1
- package/dist/components/unit-converter/unit-converter.d.ts +2 -2
- package/dist/components/unit-converter/unit-converter.d.ts.map +1 -1
- package/dist/components/wallet-pay-button/index.js +1 -1
- package/dist/i18n/locales/ar.d.ts +1 -1
- package/dist/i18n/locales/ar.js +1 -1
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +1 -1
- package/dist/i18n/locales/de.js +1 -1
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +1 -1
- package/dist/i18n/locales/el.js +1 -1
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +1 -1
- package/dist/i18n/locales/en.js +1 -1
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +1 -1
- package/dist/i18n/locales/es.js +1 -1
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +1 -1
- package/dist/i18n/locales/fr.js +1 -1
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +1 -1
- package/dist/i18n/locales/hi.js +1 -1
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +1 -1
- package/dist/i18n/locales/it.js +1 -1
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +1 -1
- package/dist/i18n/locales/ja.js +1 -1
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +1 -1
- package/dist/i18n/locales/nl.js +1 -1
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +1 -1
- package/dist/i18n/locales/pl.js +1 -1
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +1 -1
- package/dist/i18n/locales/pt.js +1 -1
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +1 -1
- package/dist/i18n/locales/ro.js +1 -1
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +1 -1
- package/dist/i18n/locales/ru.js +1 -1
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +1 -1
- package/dist/i18n/locales/sq.js +1 -1
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +1 -1
- package/dist/i18n/locales/sv.js +1 -1
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +1 -1
- package/dist/i18n/locales/tr.js +1 -1
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +1 -1
- package/dist/i18n/locales/zh.js +1 -1
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +25 -25
- package/dist/locales/ar.json +1 -1
- package/dist/locales/de.json +1 -1
- package/dist/locales/el.json +1 -1
- package/dist/locales/en.json +1 -1
- package/dist/locales/es.json +1 -1
- package/dist/locales/fr.json +1 -1
- package/dist/locales/hi.json +1 -1
- package/dist/locales/it.json +1 -1
- package/dist/locales/ja.json +1 -1
- package/dist/locales/nl.json +1 -1
- package/dist/locales/pl.json +1 -1
- package/dist/locales/pt.json +1 -1
- package/dist/locales/ro.json +1 -1
- package/dist/locales/ru.json +1 -1
- package/dist/locales/sq.json +1 -1
- package/dist/locales/sv.json +1 -1
- package/dist/locales/tr.json +1 -1
- package/dist/locales/zh.json +1 -1
- package/dist/patterns/alia-assistant/alia-chat-surface.d.ts.map +1 -1
- package/dist/patterns/alia-assistant/alia-types.d.ts +20 -0
- package/dist/patterns/alia-assistant/alia-types.d.ts.map +1 -1
- package/dist/patterns/alia-assistant/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/tokens/themes/bridges/stripe-appearance.d.ts.map +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +1 -1
- package/dist/_chunks/alia-sidebar-BpX4z_af.js.map +0 -1
- package/dist/_chunks/bmi-calculator-DFPWL2OJ.js +0 -273
- package/dist/_chunks/bmi-calculator-DFPWL2OJ.js.map +0 -1
- package/dist/_chunks/cycle-calculator-ChHBcjet.js.map +0 -1
- package/dist/_chunks/due-date-calculator-CYXKLoof.js.map +0 -1
- package/dist/_chunks/gestational-age-calculator-sRmoqgVr.js.map +0 -1
- package/dist/_chunks/insert-result-CoC1oo6R.js +0 -334
- package/dist/_chunks/insert-result-CoC1oo6R.js.map +0 -1
- package/dist/_chunks/payment-form-BzVsG6Ks.js +0 -590
- package/dist/_chunks/payment-form-BzVsG6Ks.js.map +0 -1
- package/dist/_chunks/pregnancy-weight-gain-C5YhfYnL.js.map +0 -1
- package/dist/_chunks/spinner-CCByyvcb.js.map +0 -1
- package/dist/_chunks/unit-converter-Ds9jalbN.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs as r, jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as F, useState as L, useMemo as
|
|
2
|
+
import { forwardRef as F, useState as L, useMemo as y, useEffect as H } from "react";
|
|
3
3
|
import { c as $ } from "./index-D2ZczOXr.js";
|
|
4
4
|
import { useTranslation as A } from "react-i18next";
|
|
5
5
|
import { F as w } from "./form-field-BOm9hK35.js";
|
|
@@ -7,7 +7,7 @@ import { D as I } from "./date-picker-Bq7xhMA-.js";
|
|
|
7
7
|
import { N as S } from "./number-input-Dj5L3pXK.js";
|
|
8
8
|
import { C as P } from "./card-DPmk26CL.js";
|
|
9
9
|
import { B as v } from "./badge-zsf5i5bH.js";
|
|
10
|
-
import { I as k } from "./insert-result-
|
|
10
|
+
import { I as k } from "./insert-result-C5ABnzDl.js";
|
|
11
11
|
import { a as s } from "./date-picker-variants-DLi1Va_e.js";
|
|
12
12
|
import { C as z } from "./check-DPdL_Sm7.js";
|
|
13
13
|
import { H as B } from "./heart-C0faivFf.js";
|
|
@@ -28,14 +28,14 @@ const Y = [
|
|
|
28
28
|
]
|
|
29
29
|
], j = G("droplet", Y), x = 28, M = 14, U = 1;
|
|
30
30
|
function K(n, c = 3) {
|
|
31
|
-
const d = n.cycleLength ?? x, { lastPeriodStart:
|
|
32
|
-
start: s(
|
|
33
|
-
end: s(
|
|
34
|
-
}, f = s(
|
|
31
|
+
const d = n.cycleLength ?? x, { lastPeriodStart: o } = n, i = s(o, d - M), u = {
|
|
32
|
+
start: s(i, -5),
|
|
33
|
+
end: s(i, U)
|
|
34
|
+
}, f = s(o, d), p = Array.from(
|
|
35
35
|
{ length: c },
|
|
36
|
-
(C, g) => s(
|
|
36
|
+
(C, g) => s(o, d * (g + 1))
|
|
37
37
|
);
|
|
38
|
-
return { nextPeriod: f, ovulation:
|
|
38
|
+
return { nextPeriod: f, ovulation: i, fertileWindow: u, upcomingPeriods: p };
|
|
39
39
|
}
|
|
40
40
|
const O = $("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
41
41
|
variants: {
|
|
@@ -47,27 +47,27 @@ const O = $("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
47
47
|
defaultCycleLength: n = x,
|
|
48
48
|
onResultChange: c,
|
|
49
49
|
onInsert: d,
|
|
50
|
-
insertVariant:
|
|
51
|
-
onCopy:
|
|
50
|
+
insertVariant: o = "insert",
|
|
51
|
+
onCopy: i,
|
|
52
52
|
onError: u,
|
|
53
53
|
insertBrand: f,
|
|
54
54
|
id: p,
|
|
55
55
|
width: C,
|
|
56
56
|
className: g
|
|
57
57
|
}, b) => {
|
|
58
|
-
const { t: a, i18n: N } = A(), [m, D] = L(void 0), [
|
|
58
|
+
const { t: a, i18n: N } = A(), [m, D] = L(void 0), [h, E] = L(
|
|
59
59
|
n
|
|
60
|
-
), t =
|
|
60
|
+
), t = y(() => m ? K({
|
|
61
61
|
lastPeriodStart: m,
|
|
62
|
-
cycleLength:
|
|
63
|
-
}) : null, [m,
|
|
62
|
+
cycleLength: h ?? x
|
|
63
|
+
}) : null, [m, h]), T = y(
|
|
64
64
|
() => new Intl.DateTimeFormat(N.language, { dateStyle: "medium" }),
|
|
65
65
|
[N.language]
|
|
66
66
|
);
|
|
67
67
|
H(() => {
|
|
68
68
|
c == null || c(t);
|
|
69
69
|
}, [t, c]);
|
|
70
|
-
const _ =
|
|
70
|
+
const _ = y(() => /* @__PURE__ */ new Date(), []), l = (W) => T.format(W);
|
|
71
71
|
return /* @__PURE__ */ r(
|
|
72
72
|
"div",
|
|
73
73
|
{
|
|
@@ -96,7 +96,7 @@ const O = $("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
96
96
|
mode: "integer",
|
|
97
97
|
min: 20,
|
|
98
98
|
max: 45,
|
|
99
|
-
value:
|
|
99
|
+
value: h,
|
|
100
100
|
onChange: E
|
|
101
101
|
}
|
|
102
102
|
)
|
|
@@ -150,15 +150,16 @@ const O = $("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
150
150
|
) })
|
|
151
151
|
] })
|
|
152
152
|
] }),
|
|
153
|
-
|
|
153
|
+
o === "copy" || d ? /* @__PURE__ */ e(
|
|
154
154
|
k,
|
|
155
155
|
{
|
|
156
156
|
onInsert: d,
|
|
157
|
-
variant:
|
|
158
|
-
onCopy:
|
|
157
|
+
variant: o,
|
|
158
|
+
onCopy: i,
|
|
159
159
|
onError: u,
|
|
160
160
|
card: {
|
|
161
161
|
title: a("insert.title.cycle"),
|
|
162
|
+
icon: "heart",
|
|
162
163
|
highlight: `${l(t.fertileWindow.start)} – ${l(
|
|
163
164
|
t.fertileWindow.end
|
|
164
165
|
)}`,
|
|
@@ -168,16 +169,26 @@ const O = $("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
168
169
|
brand: f,
|
|
169
170
|
fields: [
|
|
170
171
|
{
|
|
172
|
+
// Ovulation is a predicted date → calendar glyph (the
|
|
173
|
+
// on-screen badge uses a Check tick, which ICON_GEOMETRY
|
|
174
|
+
// does not carry, so the calendar reads the date meaning).
|
|
175
|
+
icon: "calendar",
|
|
171
176
|
label: a("cycleCalculator.ovulation"),
|
|
172
177
|
value: l(t.ovulation)
|
|
173
178
|
},
|
|
174
179
|
{
|
|
180
|
+
// Fertile window → heart glyph, matching the on-screen
|
|
181
|
+
// fertile-window badge's Heart icon.
|
|
182
|
+
icon: "heart",
|
|
175
183
|
label: a("cycleCalculator.fertileWindow"),
|
|
176
184
|
value: `${l(t.fertileWindow.start)} – ${l(
|
|
177
185
|
t.fertileWindow.end
|
|
178
186
|
)}`
|
|
179
187
|
},
|
|
180
188
|
{
|
|
189
|
+
// Next period → droplets glyph, matching the on-screen
|
|
190
|
+
// next-period badge's Droplet icon.
|
|
191
|
+
icon: "droplets",
|
|
181
192
|
label: a("cycleCalculator.nextPeriod"),
|
|
182
193
|
value: l(t.nextPeriod)
|
|
183
194
|
}
|
|
@@ -197,4 +208,4 @@ export {
|
|
|
197
208
|
M as L,
|
|
198
209
|
K as p
|
|
199
210
|
};
|
|
200
|
-
//# sourceMappingURL=cycle-calculator-
|
|
211
|
+
//# sourceMappingURL=cycle-calculator-KxA8dqDf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cycle-calculator-KxA8dqDf.js","sources":["../../node_modules/lucide-react/dist/esm/icons/droplet.js","../../src/components/cycle-calculator/cycle.ts","../../src/components/cycle-calculator/cycle-calculator.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.8.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.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z\",\n key: \"c7niix\"\n }\n ]\n];\nconst Droplet = createLucideIcon(\"droplet\", __iconNode);\n\nexport { __iconNode, Droplet as default };\n//# sourceMappingURL=droplet.js.map\n","/* ------------------------------------------------------------------ */\n/* Menstrual-cycle prediction — pure, framework-free, unit-testable. */\n/* */\n/* Uses the standard fixed-luteal-phase model: ovulation falls ~14 days */\n/* before the next period, so on a cycle of length L ovulation is day */\n/* (L − 14). The fertile window spans the 5 days before ovulation */\n/* (sperm survival) through 1 day after (oocyte viability). */\n/* ------------------------------------------------------------------ */\n\nimport { addDays } from 'date-fns';\n\n/** Standard menstrual-cycle length. */\nexport const DEFAULT_CYCLE_LENGTH = 28;\n/** Luteal phase is biologically near-constant at ~14 days. */\nexport const LUTEAL_PHASE_DAYS = 14;\n/** Sperm survive up to ~5 days before ovulation. */\nexport const FERTILE_DAYS_BEFORE = 5;\n/** The oocyte is viable ~1 day after ovulation. */\nexport const FERTILE_DAYS_AFTER = 1;\n\nexport interface CycleInput {\n /** First day of the most recent period. */\n lastPeriodStart: Date;\n /** Average cycle length in days. Defaults to 28. */\n cycleLength?: number;\n /** Period (bleed) length in days. Optional — used for the period range. */\n periodLength?: number;\n}\n\nexport interface DateRange {\n start: Date;\n end: Date;\n}\n\nexport interface CyclePrediction {\n /** Start date of the next period. */\n nextPeriod: Date;\n /** Estimated ovulation date. */\n ovulation: Date;\n /** Fertile window (5 days before ovulation → 1 day after). */\n fertileWindow: DateRange;\n /** Start dates of the next few periods (length = `occurrences`). */\n upcomingPeriods: Date[];\n}\n\n/**\n * Predict ovulation, the fertile window and upcoming periods from the last\n * period's start date. `occurrences` controls how many future periods to\n * list (default 3).\n */\nexport function predictCycle(\n input: CycleInput,\n occurrences = 3,\n): CyclePrediction {\n const cycle = input.cycleLength ?? DEFAULT_CYCLE_LENGTH;\n const { lastPeriodStart } = input;\n\n const ovulation = addDays(lastPeriodStart, cycle - LUTEAL_PHASE_DAYS);\n const fertileWindow: DateRange = {\n start: addDays(ovulation, -FERTILE_DAYS_BEFORE),\n end: addDays(ovulation, FERTILE_DAYS_AFTER),\n };\n const nextPeriod = addDays(lastPeriodStart, cycle);\n const upcomingPeriods = Array.from({ length: occurrences }, (_, i) =>\n addDays(lastPeriodStart, cycle * (i + 1)),\n );\n\n return { nextPeriod, ovulation, fertileWindow, upcomingPeriods };\n}\n","/* ------------------------------------------------------------------ */\n/* CycleCalculator — predict ovulation, fertile window and upcoming */\n/* periods from the last period's start date. */\n/* */\n/* Maths lives in `./cycle` (pure, separately tested). */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Heart, Check, Droplet } from 'lucide-react';\nimport { FormField } from '../form-field';\nimport { DatePicker } from '../date-picker';\nimport { NumberInput } from '../number-input';\nimport { Card } from '../card';\nimport { Badge } from '../badge';\nimport {\n InsertButton,\n type InsertPayload,\n type InsertVariant,\n type InsertMode,\n} from '../_shared/insert-result';\nimport {\n type CyclePrediction,\n predictCycle,\n DEFAULT_CYCLE_LENGTH,\n} from './cycle';\n\nconst rootVariants = cva('ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]', {\n variants: {\n width: { full: 'ds:w-full', auto: 'ds:inline-flex' },\n },\n defaultVariants: { width: 'full' },\n});\n\n/**\n * DS token NAME backing the result-card chip — the fertile window is the\n * headline fertility datum, shown on screen with the `accent` Badge variant\n * (which fills `--accent`). The card chip reuses that token so the inserted\n * PNG chip matches the on-screen fertile-window badge.\n */\nconst HIGHLIGHT_TOKEN = '--accent';\n\nexport interface CycleCalculatorProps extends VariantProps<\n typeof rootVariants\n> {\n /** Initial cycle length in days. Defaults to 28. */\n defaultCycleLength?: number;\n /** Fires whenever a prediction can be computed (and `null` when it can't). */\n onResultChange?: (result: CyclePrediction | null) => void;\n /** When provided, shows the result-action buttons that emit / copy the result. */\n onInsert?: (payload: InsertPayload) => void;\n /**\n * Which verb the result button performs. Defaults to `'insert'`.\n * Use `'copy'` in an app-shell surface (no editor to insert into) — the\n * button writes the result to the clipboard as a multi-format `ClipboardItem`.\n */\n insertVariant?: InsertVariant;\n /** `copy` variant only — fired after a successful clipboard write. */\n onCopy?: (mode: InsertMode) => void;\n /** `copy` variant only — fired if the clipboard write can't proceed. */\n onError?: (error: unknown) => void;\n /**\n * Brand wordmark printed in the inserted/copied result-card footer.\n * Omitted → no brand line (and no footer hairline); a string → that custom\n * brand; `false` → no brand line. Brand is opt-in.\n */\n insertBrand?: string | false;\n /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport const CycleCalculator = forwardRef<HTMLDivElement, CycleCalculatorProps>(\n (\n {\n defaultCycleLength = DEFAULT_CYCLE_LENGTH,\n onResultChange,\n onInsert,\n insertVariant = 'insert',\n onCopy,\n onError,\n insertBrand,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [lastPeriod, setLastPeriod] = useState<Date | undefined>(undefined);\n const [cycleLength, setCycleLength] = useState<number | null>(\n defaultCycleLength,\n );\n\n const result = useMemo<CyclePrediction | null>(() => {\n if (!lastPeriod) return null;\n return predictCycle({\n lastPeriodStart: lastPeriod,\n cycleLength: cycleLength ?? DEFAULT_CYCLE_LENGTH,\n });\n }, [lastPeriod, cycleLength]);\n\n const dateFormatter = useMemo(\n () => new Intl.DateTimeFormat(i18n.language, { dateStyle: 'medium' }),\n [i18n.language],\n );\n\n useEffect(() => {\n onResultChange?.(result);\n }, [result, onResultChange]);\n\n const today = useMemo(() => new Date(), []);\n\n const fmt = (d: Date): string => dateFormatter.format(d);\n\n return (\n <div\n ref={ref}\n data-component=\"cycle-calculator\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <FormField label={t('cycleCalculator.lastPeriod')}>\n <DatePicker\n value={lastPeriod}\n onChange={setLastPeriod}\n maxDate={today}\n />\n </FormField>\n <FormField\n label={t('cycleCalculator.cycleLength')}\n description={t('cycleCalculator.cycleLengthHint')}\n >\n <NumberInput\n mode=\"integer\"\n min={20}\n max={45}\n value={cycleLength}\n onChange={setCycleLength}\n />\n </FormField>\n </div>\n\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {result\n ? `${t('cycleCalculator.ovulation')}: ${fmt(result.ovulation)}. ${t(\n 'cycleCalculator.nextPeriod',\n )}: ${fmt(result.nextPeriod)}.`\n : ''}\n </p>\n\n {result ? (\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <dl className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3\">\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-xs)] ds:text-center\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('cycleCalculator.ovulation')}\n </dt>\n <dd>\n <Badge\n variant=\"success\"\n size=\"lg\"\n leading={<Check aria-hidden />}\n >\n {fmt(result.ovulation)}\n </Badge>\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-xs)] ds:text-center\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('cycleCalculator.fertileWindow')}\n </dt>\n <dd>\n <Badge\n variant=\"accent\"\n size=\"lg\"\n leading={<Heart aria-hidden />}\n >\n {fmt(result.fertileWindow.start)} –{' '}\n {fmt(result.fertileWindow.end)}\n </Badge>\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-xs)] ds:text-center\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('cycleCalculator.nextPeriod')}\n </dt>\n <dd>\n <Badge\n variant=\"error\"\n size=\"lg\"\n leading={<Droplet aria-hidden />}\n >\n {fmt(result.nextPeriod)}\n </Badge>\n </dd>\n </div>\n </dl>\n {insertVariant === 'copy' || onInsert ? (\n <InsertButton\n onInsert={onInsert}\n variant={insertVariant}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.cycle'),\n icon: 'heart',\n highlight: `${fmt(result.fertileWindow.start)} – ${fmt(\n result.fertileWindow.end,\n )}`,\n // Chip reuses the on-screen fertile-window badge's accent\n // token so the inserted PNG chip matches the screen.\n highlightToken: HIGHLIGHT_TOKEN,\n brand: insertBrand,\n fields: [\n {\n // Ovulation is a predicted date → calendar glyph (the\n // on-screen badge uses a Check tick, which ICON_GEOMETRY\n // does not carry, so the calendar reads the date meaning).\n icon: 'calendar',\n label: t('cycleCalculator.ovulation'),\n value: fmt(result.ovulation),\n },\n {\n // Fertile window → heart glyph, matching the on-screen\n // fertile-window badge's Heart icon.\n icon: 'heart',\n label: t('cycleCalculator.fertileWindow'),\n value: `${fmt(result.fertileWindow.start)} – ${fmt(\n result.fertileWindow.end,\n )}`,\n },\n {\n // Next period → droplets glyph, matching the on-screen\n // next-period badge's Droplet icon.\n icon: 'droplets',\n label: t('cycleCalculator.nextPeriod'),\n value: fmt(result.nextPeriod),\n },\n ],\n }}\n />\n ) : null}\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('cycleCalculator.empty')}\n </p>\n )}\n </div>\n );\n },\n);\n\nCycleCalculator.displayName = 'CycleCalculator';\n"],"names":["__iconNode","Droplet","createLucideIcon","DEFAULT_CYCLE_LENGTH","LUTEAL_PHASE_DAYS","FERTILE_DAYS_AFTER","predictCycle","input","occurrences","cycle","lastPeriodStart","ovulation","addDays","fertileWindow","nextPeriod","upcomingPeriods","_","i","rootVariants","cva","HIGHLIGHT_TOKEN","CycleCalculator","forwardRef","defaultCycleLength","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","id","width","className","ref","t","i18n","useTranslation","lastPeriod","setLastPeriod","useState","cycleLength","setCycleLength","result","useMemo","dateFormatter","useEffect","today","fmt","d","jsxs","jsx","FormField","DatePicker","NumberInput","Card","Badge","Check","Heart","InsertButton"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { jsxs as l, jsx as a } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as F, useState as c, useMemo as
|
|
3
|
-
import { c as
|
|
2
|
+
import { forwardRef as F, useState as c, useMemo as p, useEffect as H } from "react";
|
|
3
|
+
import { c as G } from "./index-D2ZczOXr.js";
|
|
4
4
|
import { useTranslation as R } from "react-i18next";
|
|
5
5
|
import { R as s } from "./radio-TWf9Q-mp.js";
|
|
6
|
-
import { R as
|
|
7
|
-
import { F as
|
|
6
|
+
import { R as v } from "./radio-group-CLjK-SlK.js";
|
|
7
|
+
import { F as b } from "./form-field-BOm9hK35.js";
|
|
8
8
|
import { D as S } from "./date-picker-Bq7xhMA-.js";
|
|
9
9
|
import { N as M } from "./number-input-Dj5L3pXK.js";
|
|
10
|
-
import { C
|
|
10
|
+
import { C } from "./card-DPmk26CL.js";
|
|
11
11
|
import { B as z } from "./badge-zsf5i5bH.js";
|
|
12
|
-
import { I as V } from "./insert-result-
|
|
13
|
-
import { D as
|
|
14
|
-
const K =
|
|
12
|
+
import { I as V } from "./insert-result-C5ABnzDl.js";
|
|
13
|
+
import { D as y, c as j } from "./gestation-mWF4AXea.js";
|
|
14
|
+
const K = G("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
15
15
|
variants: {
|
|
16
16
|
width: { full: "ds:w-full", auto: "ds:inline-flex" }
|
|
17
17
|
},
|
|
@@ -26,17 +26,21 @@ const K = H("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
26
26
|
preconception: "--muted",
|
|
27
27
|
first: "--info",
|
|
28
28
|
second: "--success",
|
|
29
|
-
third: "--warning",
|
|
29
|
+
third: "--warning-readable",
|
|
30
30
|
postterm: "--destructive"
|
|
31
|
-
}
|
|
31
|
+
};
|
|
32
|
+
function P(n) {
|
|
33
|
+
return O[n];
|
|
34
|
+
}
|
|
35
|
+
const U = {
|
|
32
36
|
lmp: "dueDateCalculator.lmpDate",
|
|
33
37
|
conception: "dueDateCalculator.conceptionDate",
|
|
34
38
|
ivf: "dueDateCalculator.transferDate"
|
|
35
|
-
},
|
|
39
|
+
}, q = F(
|
|
36
40
|
({
|
|
37
|
-
defaultMethod:
|
|
41
|
+
defaultMethod: n = "lmp",
|
|
38
42
|
onResultChange: d,
|
|
39
|
-
onInsert:
|
|
43
|
+
onInsert: f,
|
|
40
44
|
insertVariant: D = "insert",
|
|
41
45
|
onCopy: x,
|
|
42
46
|
onError: N,
|
|
@@ -45,24 +49,24 @@ const K = H("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
45
49
|
width: w,
|
|
46
50
|
className: A
|
|
47
51
|
}, T) => {
|
|
48
|
-
const { t: e, i18n:
|
|
49
|
-
|
|
50
|
-
), [
|
|
52
|
+
const { t: e, i18n: h } = R(), [r, k] = c(n), [o, I] = c(void 0), [u, _] = c(
|
|
53
|
+
y
|
|
54
|
+
), [m, $] = c(5), t = p(() => o ? j(
|
|
51
55
|
{
|
|
52
56
|
method: r,
|
|
53
57
|
date: o,
|
|
54
|
-
cycleLength: u ??
|
|
55
|
-
embryoAge:
|
|
58
|
+
cycleLength: u ?? y,
|
|
59
|
+
embryoAge: m
|
|
56
60
|
},
|
|
57
61
|
/* @__PURE__ */ new Date()
|
|
58
|
-
) : null, [r, o, u,
|
|
59
|
-
() => new Intl.DateTimeFormat(
|
|
60
|
-
[
|
|
62
|
+
) : null, [r, o, u, m]), i = p(
|
|
63
|
+
() => new Intl.DateTimeFormat(h.language, { dateStyle: "long" }),
|
|
64
|
+
[h.language]
|
|
61
65
|
);
|
|
62
|
-
|
|
66
|
+
H(() => {
|
|
63
67
|
d == null || d(t);
|
|
64
68
|
}, [t, d]);
|
|
65
|
-
const B =
|
|
69
|
+
const B = p(() => /* @__PURE__ */ new Date(), []);
|
|
66
70
|
return /* @__PURE__ */ l(
|
|
67
71
|
"div",
|
|
68
72
|
{
|
|
@@ -72,12 +76,12 @@ const K = H("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
72
76
|
className: K({ width: w, className: A }),
|
|
73
77
|
children: [
|
|
74
78
|
/* @__PURE__ */ l(
|
|
75
|
-
|
|
79
|
+
v,
|
|
76
80
|
{
|
|
77
81
|
label: e("dueDateCalculator.method.label"),
|
|
78
82
|
variant: "horizontal",
|
|
79
83
|
value: r,
|
|
80
|
-
onValueChange: (
|
|
84
|
+
onValueChange: (g) => k(g),
|
|
81
85
|
children: [
|
|
82
86
|
/* @__PURE__ */ a(s, { label: e("dueDateCalculator.method.lmp"), value: "lmp" }),
|
|
83
87
|
/* @__PURE__ */ a(
|
|
@@ -92,9 +96,9 @@ const K = H("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
92
96
|
}
|
|
93
97
|
),
|
|
94
98
|
/* @__PURE__ */ l("div", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
|
|
95
|
-
/* @__PURE__ */ a(
|
|
99
|
+
/* @__PURE__ */ a(b, { label: e(U[r]), children: /* @__PURE__ */ a(S, { value: o, onChange: I, maxDate: B }) }),
|
|
96
100
|
r === "lmp" && /* @__PURE__ */ a(
|
|
97
|
-
|
|
101
|
+
b,
|
|
98
102
|
{
|
|
99
103
|
label: e("dueDateCalculator.cycleLength"),
|
|
100
104
|
description: e("dueDateCalculator.cycleLengthHint"),
|
|
@@ -105,18 +109,18 @@ const K = H("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
105
109
|
min: 20,
|
|
106
110
|
max: 45,
|
|
107
111
|
value: u,
|
|
108
|
-
onChange:
|
|
112
|
+
onChange: _
|
|
109
113
|
}
|
|
110
114
|
)
|
|
111
115
|
}
|
|
112
116
|
),
|
|
113
117
|
r === "ivf" && /* @__PURE__ */ l(
|
|
114
|
-
|
|
118
|
+
v,
|
|
115
119
|
{
|
|
116
120
|
label: e("dueDateCalculator.embryoAge"),
|
|
117
121
|
variant: "horizontal",
|
|
118
|
-
value: String(
|
|
119
|
-
onValueChange: (
|
|
122
|
+
value: String(m),
|
|
123
|
+
onValueChange: (g) => $(Number(g)),
|
|
120
124
|
children: [
|
|
121
125
|
/* @__PURE__ */ a(s, { label: e("dueDateCalculator.day3"), value: "3" }),
|
|
122
126
|
/* @__PURE__ */ a(s, { label: e("dueDateCalculator.day5"), value: "5" })
|
|
@@ -129,7 +133,7 @@ const K = H("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
129
133
|
)}. ${e("dueDateCalculator.result.trimesterLabel")}: ${e(
|
|
130
134
|
`dueDateCalculator.trimester.${t.trimester}`
|
|
131
135
|
)}.` : "" }),
|
|
132
|
-
t ? /* @__PURE__ */ a(
|
|
136
|
+
t ? /* @__PURE__ */ a(C, { variant: "elevated", children: /* @__PURE__ */ l(C.Body, { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
|
|
133
137
|
/* @__PURE__ */ l("dl", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3", children: [
|
|
134
138
|
/* @__PURE__ */ l("div", { className: "ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]", children: [
|
|
135
139
|
/* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("dueDateCalculator.result.trimesterLabel") }),
|
|
@@ -154,27 +158,33 @@ const K = H("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
154
158
|
/* @__PURE__ */ a("dd", { className: "type-metric ds:text-foreground", children: i.format(t.dueDate) })
|
|
155
159
|
] })
|
|
156
160
|
] }),
|
|
157
|
-
D === "copy" ||
|
|
161
|
+
D === "copy" || f ? /* @__PURE__ */ a(
|
|
158
162
|
V,
|
|
159
163
|
{
|
|
160
164
|
variant: D,
|
|
161
|
-
onInsert:
|
|
165
|
+
onInsert: f,
|
|
162
166
|
onCopy: x,
|
|
163
167
|
onError: N,
|
|
164
168
|
card: {
|
|
165
169
|
title: e("insert.title.dueDate"),
|
|
170
|
+
icon: "calendar-heart",
|
|
166
171
|
highlight: i.format(t.dueDate),
|
|
167
172
|
// Chip tinted with the trimester's semantic token so the
|
|
168
173
|
// inserted PNG carries the same clinical-stage colour as
|
|
169
|
-
// the on-screen trimester badge
|
|
170
|
-
|
|
174
|
+
// the on-screen trimester badge — with the contrast-safe
|
|
175
|
+
// orange override for the `--warning` third trimester.
|
|
176
|
+
highlightToken: P(t.trimester),
|
|
171
177
|
brand: L,
|
|
172
178
|
fields: [
|
|
173
179
|
{
|
|
180
|
+
// The estimated date of delivery → calendar glyph.
|
|
181
|
+
icon: "calendar",
|
|
174
182
|
label: e("dueDateCalculator.result.dueDateLabel"),
|
|
175
183
|
value: i.format(t.dueDate)
|
|
176
184
|
},
|
|
177
185
|
{
|
|
186
|
+
// Gestational age is an elapsed duration → clock glyph.
|
|
187
|
+
icon: "clock",
|
|
178
188
|
label: e("dueDateCalculator.result.gestationLabel"),
|
|
179
189
|
value: t.gestationalAge ? e("dueDateCalculator.result.gestation", {
|
|
180
190
|
weeks: t.gestationalAge.weeks,
|
|
@@ -182,6 +192,8 @@ const K = H("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
182
192
|
}) : "—"
|
|
183
193
|
},
|
|
184
194
|
{
|
|
195
|
+
// Trimester is a clinical-stage classification → tag.
|
|
196
|
+
icon: "tag",
|
|
185
197
|
label: e("dueDateCalculator.result.trimesterLabel"),
|
|
186
198
|
value: e(
|
|
187
199
|
`dueDateCalculator.trimester.${t.trimester}`
|
|
@@ -197,8 +209,8 @@ const K = H("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
197
209
|
);
|
|
198
210
|
}
|
|
199
211
|
);
|
|
200
|
-
|
|
212
|
+
q.displayName = "DueDateCalculator";
|
|
201
213
|
export {
|
|
202
|
-
|
|
214
|
+
q as D
|
|
203
215
|
};
|
|
204
|
-
//# sourceMappingURL=due-date-calculator-
|
|
216
|
+
//# sourceMappingURL=due-date-calculator-mFxpHLml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"due-date-calculator-mFxpHLml.js","sources":["../../src/components/due-date-calculator/due-date-calculator.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* DueDateCalculator — estimate the date of delivery from one of three */\n/* dating methods, with current gestational age + trimester. */\n/* */\n/* - Maths lives in `./gestation` (pure, separately tested). */\n/* - Three methods: LMP (Naegele, cycle-length adjustable), conception, */\n/* and IVF transfer (Day-3 vs Day-5 embryo). */\n/* - The reference date can't be in the future, so the DatePicker caps */\n/* at today. */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { RadioGroup, Radio } from '../radio-group';\nimport { FormField } from '../form-field';\nimport { DatePicker } from '../date-picker';\nimport { NumberInput } from '../number-input';\nimport { Card } from '../card';\nimport { Badge } from '../badge';\nimport {\n InsertButton,\n type InsertPayload,\n type InsertVariant,\n type InsertMode,\n} from '../_shared/insert-result';\nimport {\n type DueDateMethod,\n type EmbryoAge,\n type Trimester,\n type DueDateResult,\n computeDueDate,\n DEFAULT_CYCLE_LENGTH,\n} from './gestation';\n\nconst rootVariants = cva('ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]', {\n variants: {\n width: { full: 'ds:w-full', auto: 'ds:inline-flex' },\n },\n defaultVariants: { width: 'full' },\n});\n\nconst TRIMESTER_BADGE: Record<\n Trimester,\n 'neutral' | 'info' | 'success' | 'warning' | 'error'\n> = {\n preconception: 'neutral',\n first: 'info',\n second: 'success',\n third: 'warning',\n postterm: 'error',\n};\n\n/**\n * DS token NAME backing each trimester's result-card chip — the solid-fill\n * companion of the on-screen `TRIMESTER_BADGE` variant (Badge `error` fills\n * `--destructive`; `neutral` fills `--muted`). Passed as the card's\n * `highlightToken` so the inserted PNG chip matches the on-screen trimester\n * badge; `InsertButton` resolves the name to a concrete colour at raster time.\n */\nconst TRIMESTER_HIGHLIGHT_TOKEN: Record<Trimester, string> = {\n preconception: '--muted',\n first: '--info',\n second: '--success',\n third: '--warning-readable',\n postterm: '--destructive',\n};\n\n/**\n * Theme-aware trimester chip token. `third` resolves to `--warning-readable`,\n * which the result card's colour probe resolves in the live themed DOM: orange-600\n * in light, non-accessible mode (where bare `--warning` yellow only reaches\n * ~3.2:1 on the white card) and `--warning` elsewhere, whose deepened ramp already\n * clears contrast. Resolving the token NAME at the card means the choice tracks\n * the live theme regardless of where the theme class lives. Other trimesters are\n * unchanged.\n */\nfunction trimesterHighlightToken(trimester: Trimester): string {\n return TRIMESTER_HIGHLIGHT_TOKEN[trimester];\n}\n\n/** Reference-date i18n key per method. */\nconst DATE_LABEL_KEY: Record<DueDateMethod, string> = {\n lmp: 'dueDateCalculator.lmpDate',\n conception: 'dueDateCalculator.conceptionDate',\n ivf: 'dueDateCalculator.transferDate',\n};\n\nexport interface DueDateCalculatorProps extends VariantProps<\n typeof rootVariants\n> {\n /** Initial dating method. Defaults to `'lmp'`. */\n defaultMethod?: DueDateMethod;\n /** Fires whenever a due date can be computed (and with `null` when it can't). */\n onResultChange?: (result: DueDateResult | null) => void;\n /** When provided, shows an \"Insert\" button that emits the result for an editor. */\n onInsert?: (payload: InsertPayload) => void;\n /**\n * Which verb the result button performs. Defaults to `'insert'`.\n * Use `'copy'` in an app-shell surface (no editor to insert into) — the\n * button writes the result to the clipboard as a multi-format `ClipboardItem`.\n */\n insertVariant?: InsertVariant;\n /** `copy` variant only — fired after a successful clipboard write. */\n onCopy?: (mode: InsertMode) => void;\n /** `copy` variant only — fired if the clipboard write can't proceed. */\n onError?: (error: unknown) => void;\n /**\n * Brand wordmark printed in the inserted/copied result-card footer.\n * Omitted → no brand line (and no footer hairline); a string → that custom\n * brand; `false` → no brand line. Brand is opt-in.\n */\n insertBrand?: string | false;\n /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport const DueDateCalculator = forwardRef<\n HTMLDivElement,\n DueDateCalculatorProps\n>(\n (\n {\n defaultMethod = 'lmp',\n onResultChange,\n onInsert,\n insertVariant = 'insert',\n onCopy,\n onError,\n insertBrand,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [method, setMethod] = useState<DueDateMethod>(defaultMethod);\n const [refDate, setRefDate] = useState<Date | undefined>(undefined);\n const [cycleLength, setCycleLength] = useState<number | null>(\n DEFAULT_CYCLE_LENGTH,\n );\n const [embryoAge, setEmbryoAge] = useState<EmbryoAge>(5);\n\n // `today` is captured once per render; the result re-derives from it.\n const result = useMemo<DueDateResult | null>(() => {\n if (!refDate) return null;\n return computeDueDate(\n {\n method,\n date: refDate,\n cycleLength: cycleLength ?? DEFAULT_CYCLE_LENGTH,\n embryoAge,\n },\n new Date(),\n );\n }, [method, refDate, cycleLength, embryoAge]);\n\n const dateFormatter = useMemo(\n () => new Intl.DateTimeFormat(i18n.language, { dateStyle: 'long' }),\n [i18n.language],\n );\n\n useEffect(() => {\n onResultChange?.(result);\n }, [result, onResultChange]);\n\n const today = useMemo(() => new Date(), []);\n\n return (\n <div\n ref={ref}\n data-component=\"due-date-calculator\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <RadioGroup\n label={t('dueDateCalculator.method.label')}\n variant=\"horizontal\"\n value={method}\n onValueChange={(next) => setMethod(next as DueDateMethod)}\n >\n <Radio label={t('dueDateCalculator.method.lmp')} value=\"lmp\" />\n <Radio\n label={t('dueDateCalculator.method.conception')}\n value=\"conception\"\n />\n <Radio label={t('dueDateCalculator.method.ivf')} value=\"ivf\" />\n </RadioGroup>\n\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <FormField label={t(DATE_LABEL_KEY[method])}>\n <DatePicker value={refDate} onChange={setRefDate} maxDate={today} />\n </FormField>\n\n {method === 'lmp' && (\n <FormField\n label={t('dueDateCalculator.cycleLength')}\n description={t('dueDateCalculator.cycleLengthHint')}\n >\n <NumberInput\n mode=\"integer\"\n min={20}\n max={45}\n value={cycleLength}\n onChange={setCycleLength}\n />\n </FormField>\n )}\n\n {method === 'ivf' && (\n <RadioGroup\n label={t('dueDateCalculator.embryoAge')}\n variant=\"horizontal\"\n value={String(embryoAge)}\n onValueChange={(next) => setEmbryoAge(Number(next) as EmbryoAge)}\n >\n <Radio label={t('dueDateCalculator.day3')} value=\"3\" />\n <Radio label={t('dueDateCalculator.day5')} value=\"5\" />\n </RadioGroup>\n )}\n </div>\n\n {/* Concise polite announcement when a due date resolves. */}\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {result\n ? `${t('dueDateCalculator.result.dueDateLabel')}: ${dateFormatter.format(\n result.dueDate,\n )}. ${t('dueDateCalculator.result.trimesterLabel')}: ${t(\n `dueDateCalculator.trimester.${result.trimester}`,\n )}.`\n : ''}\n </p>\n\n {result ? (\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <dl className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3\">\n <div className=\"ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.trimesterLabel')}\n </dt>\n <dd>\n <Badge\n variant={TRIMESTER_BADGE[result.trimester]}\n size=\"lg\"\n >\n {t(`dueDateCalculator.trimester.${result.trimester}`)}\n </Badge>\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.gestationLabel')}\n </dt>\n <dd className=\"type-body ds:text-foreground\">\n {result.gestationalAge\n ? t('dueDateCalculator.result.gestation', {\n weeks: result.gestationalAge.weeks,\n days: result.gestationalAge.days,\n })\n : '—'}\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.dueDateLabel')}\n </dt>\n <dd className=\"type-metric ds:text-foreground\">\n {dateFormatter.format(result.dueDate)}\n </dd>\n </div>\n </dl>\n {insertVariant === 'copy' || onInsert ? (\n <InsertButton\n variant={insertVariant}\n onInsert={onInsert}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.dueDate'),\n icon: 'calendar-heart',\n highlight: dateFormatter.format(result.dueDate),\n // Chip tinted with the trimester's semantic token so the\n // inserted PNG carries the same clinical-stage colour as\n // the on-screen trimester badge — with the contrast-safe\n // orange override for the `--warning` third trimester.\n highlightToken: trimesterHighlightToken(result.trimester),\n brand: insertBrand,\n fields: [\n {\n // The estimated date of delivery → calendar glyph.\n icon: 'calendar',\n label: t('dueDateCalculator.result.dueDateLabel'),\n value: dateFormatter.format(result.dueDate),\n },\n {\n // Gestational age is an elapsed duration → clock glyph.\n icon: 'clock',\n label: t('dueDateCalculator.result.gestationLabel'),\n value: result.gestationalAge\n ? t('dueDateCalculator.result.gestation', {\n weeks: result.gestationalAge.weeks,\n days: result.gestationalAge.days,\n })\n : '—',\n },\n {\n // Trimester is a clinical-stage classification → tag.\n icon: 'tag',\n label: t('dueDateCalculator.result.trimesterLabel'),\n value: t(\n `dueDateCalculator.trimester.${result.trimester}`,\n ),\n },\n ],\n }}\n />\n ) : null}\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('dueDateCalculator.empty')}\n </p>\n )}\n </div>\n );\n },\n);\n\nDueDateCalculator.displayName = 'DueDateCalculator';\n"],"names":["rootVariants","cva","TRIMESTER_BADGE","TRIMESTER_HIGHLIGHT_TOKEN","trimesterHighlightToken","trimester","DATE_LABEL_KEY","DueDateCalculator","forwardRef","defaultMethod","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","id","width","className","ref","t","i18n","useTranslation","method","setMethod","useState","refDate","setRefDate","cycleLength","setCycleLength","DEFAULT_CYCLE_LENGTH","embryoAge","setEmbryoAge","result","useMemo","computeDueDate","dateFormatter","useEffect","today","jsxs","RadioGroup","next","jsx","Radio","FormField","DatePicker","NumberInput","Card","Badge","InsertButton"],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ import { u as At } from "./use-theme-C2dHKUAN.js";
|
|
|
28
28
|
import { u as Pt } from "./registry-nPAVE19X.js";
|
|
29
29
|
import { D as ze } from "./date-range-picker-DcXuI9y7.js";
|
|
30
30
|
import { M as Ot } from "./multi-select-DOLO3K_z.js";
|
|
31
|
-
import { A as Ae } from "./autocomplete-
|
|
31
|
+
import { A as Ae } from "./autocomplete-CDqxB68B.js";
|
|
32
32
|
import { N as ee } from "./number-input-Dj5L3pXK.js";
|
|
33
33
|
import { B as Mt } from "./badge-zsf5i5bH.js";
|
|
34
34
|
import { A as Pe } from "./avatar-BNQNhoyL.js";
|
|
@@ -2332,4 +2332,4 @@ export {
|
|
|
2332
2332
|
Be as q,
|
|
2333
2333
|
xn as u
|
|
2334
2334
|
};
|
|
2335
|
-
//# sourceMappingURL=editable-currency-cell-renderer-
|
|
2335
|
+
//# sourceMappingURL=editable-currency-cell-renderer-BEBUQl9P.js.map
|