@alfadocs/ui-kit-debug 0.42.0 → 0.44.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/{ar-Cn_NxqkN.js → ar-DEz65ZJW.js} +2 -2
- package/dist/_chunks/{ar-Cn_NxqkN.js.map → ar-DEz65ZJW.js.map} +1 -1
- package/dist/_chunks/bmi-calculator-DFPWL2OJ.js +273 -0
- package/dist/_chunks/bmi-calculator-DFPWL2OJ.js.map +1 -0
- package/dist/_chunks/{booking-4mCw3Mpl.js → booking-CtLwaxkK.js} +4 -4
- package/dist/_chunks/{booking-4mCw3Mpl.js.map → booking-CtLwaxkK.js.map} +1 -1
- package/dist/_chunks/{calculator-dialog-B74fqpFZ.js → calculator-dialog-D-nfvteH.js} +2 -2
- package/dist/_chunks/{calculator-dialog-B74fqpFZ.js.map → calculator-dialog-D-nfvteH.js.map} +1 -1
- package/dist/_chunks/{chart-Cbt0_sKv.js → chart-Cg3e9EH9.js} +101 -99
- package/dist/_chunks/chart-Cg3e9EH9.js.map +1 -0
- package/dist/_chunks/{cycle-calculator-DsZbyzX6.js → cycle-calculator-ChHBcjet.js} +65 -56
- package/dist/_chunks/cycle-calculator-ChHBcjet.js.map +1 -0
- package/dist/_chunks/{date-picker-CvQfs6Xh.js → date-picker-Bq7xhMA-.js} +109 -108
- package/dist/_chunks/{date-picker-CvQfs6Xh.js.map → date-picker-Bq7xhMA-.js.map} +1 -1
- package/dist/_chunks/date-picker-variants-DLi1Va_e.js +3238 -0
- package/dist/_chunks/date-picker-variants-DLi1Va_e.js.map +1 -0
- package/dist/_chunks/{date-range-picker-U9fn1g9d.js → date-range-picker-DcXuI9y7.js} +20 -19
- package/dist/_chunks/date-range-picker-DcXuI9y7.js.map +1 -0
- package/dist/_chunks/{date-time-picker-Cva0ZCWw.js → date-time-picker-RimumeLR.js} +18 -17
- package/dist/_chunks/date-time-picker-RimumeLR.js.map +1 -0
- package/dist/_chunks/{de-BMM2H7Bs.js → de-bTBGdjPS.js} +2 -2
- package/dist/_chunks/{de-BMM2H7Bs.js.map → de-bTBGdjPS.js.map} +1 -1
- package/dist/_chunks/dialog-BTpZV6It.js +223 -0
- package/dist/_chunks/dialog-BTpZV6It.js.map +1 -0
- package/dist/_chunks/{due-date-calculator-s_CBgaFs.js → due-date-calculator-CYXKLoof.js} +65 -45
- package/dist/_chunks/due-date-calculator-CYXKLoof.js.map +1 -0
- package/dist/_chunks/{editable-currency-cell-renderer-BhUkRiPZ.js → editable-currency-cell-renderer-9jqwDv5x.js} +2 -2
- package/dist/_chunks/{editable-currency-cell-renderer-BhUkRiPZ.js.map → editable-currency-cell-renderer-9jqwDv5x.js.map} +1 -1
- package/dist/_chunks/{el-BYPonAaK.js → el-BWG5RXxa.js} +6 -6
- package/dist/_chunks/{el-BYPonAaK.js.map → el-BWG5RXxa.js.map} +1 -1
- package/dist/_chunks/{es-CMkVCQ4F.js → es-DfO_G435.js} +2 -2
- package/dist/_chunks/{es-CMkVCQ4F.js.map → es-DfO_G435.js.map} +1 -1
- package/dist/_chunks/{fr-BcuWxqft.js → fr-BTn24bs8.js} +2 -2
- package/dist/_chunks/{fr-BcuWxqft.js.map → fr-BTn24bs8.js.map} +1 -1
- package/dist/_chunks/{gestation-BXEgDGmP.js → gestation-mWF4AXea.js} +3 -3
- package/dist/_chunks/{gestation-BXEgDGmP.js.map → gestation-mWF4AXea.js.map} +1 -1
- package/dist/_chunks/gestational-age-calculator-sRmoqgVr.js +190 -0
- package/dist/_chunks/gestational-age-calculator-sRmoqgVr.js.map +1 -0
- package/dist/_chunks/{header-CTZWX-tm.js → header-Ce1Br27u.js} +70 -75
- package/dist/_chunks/header-Ce1Br27u.js.map +1 -0
- package/dist/_chunks/{hi-wkq_rQAh.js → hi-Dj3oYd84.js} +2 -2
- package/dist/_chunks/{hi-wkq_rQAh.js.map → hi-Dj3oYd84.js.map} +1 -1
- package/dist/_chunks/insert-result-CoC1oo6R.js +334 -0
- package/dist/_chunks/insert-result-CoC1oo6R.js.map +1 -0
- package/dist/_chunks/{isSameWeek-Bim5ftRd.js → isSameWeek-HfxKk6Lz.js} +2 -2
- package/dist/_chunks/{isSameWeek-Bim5ftRd.js.map → isSameWeek-HfxKk6Lz.js.map} +1 -1
- package/dist/_chunks/{it-GiQrQ9p4.js → it-Y85ofIQQ.js} +7 -7
- package/dist/_chunks/{it-GiQrQ9p4.js.map → it-Y85ofIQQ.js.map} +1 -1
- package/dist/_chunks/{ja-qfYg3Rua.js → ja-CQ7J6YoA.js} +2 -2
- package/dist/_chunks/{ja-qfYg3Rua.js.map → ja-CQ7J6YoA.js.map} +1 -1
- package/dist/_chunks/{marketplace-app-shell-kVAVycz_.js → marketplace-app-shell-Dc5cTIt8.js} +186 -149
- package/dist/_chunks/marketplace-app-shell-Dc5cTIt8.js.map +1 -0
- package/dist/_chunks/{nl-xOogO4sZ.js → nl-D9kHCmp3.js} +2 -2
- package/dist/_chunks/{nl-xOogO4sZ.js.map → nl-D9kHCmp3.js.map} +1 -1
- package/dist/_chunks/{patient-shell-lDX3wwu6.js → patient-shell-CnT4L8gn.js} +2 -2
- package/dist/_chunks/{patient-shell-lDX3wwu6.js.map → patient-shell-CnT4L8gn.js.map} +1 -1
- package/dist/_chunks/{pl-GnOW6eGK.js → pl-B3Smqpkr.js} +3 -3
- package/dist/_chunks/{pl-GnOW6eGK.js.map → pl-B3Smqpkr.js.map} +1 -1
- package/dist/_chunks/{pregnancy-weight-gain-B7kBK-ZR.js → pregnancy-weight-gain-C5YhfYnL.js} +60 -50
- package/dist/_chunks/pregnancy-weight-gain-C5YhfYnL.js.map +1 -0
- package/dist/_chunks/{pt-_bV5b5RW.js → pt-D3J-1c_7.js} +6 -6
- package/dist/_chunks/{pt-_bV5b5RW.js.map → pt-D3J-1c_7.js.map} +1 -1
- package/dist/_chunks/{ro-BEcyh5Nj.js → ro-BKAbbEA3.js} +2 -2
- package/dist/_chunks/{ro-BEcyh5Nj.js.map → ro-BKAbbEA3.js.map} +1 -1
- package/dist/_chunks/{ru-Bi86hqMf.js → ru-BeG8f0Ep.js} +3 -3
- package/dist/_chunks/{ru-Bi86hqMf.js.map → ru-BeG8f0Ep.js.map} +1 -1
- package/dist/_chunks/{sign-document-QHfcNKFj.js → sign-document-B-3k_0LO.js} +165 -137
- package/dist/_chunks/sign-document-B-3k_0LO.js.map +1 -0
- package/dist/_chunks/{sq-BujHSAWu.js → sq-_hRPaeUy.js} +6 -6
- package/dist/_chunks/{sq-BujHSAWu.js.map → sq-_hRPaeUy.js.map} +1 -1
- package/dist/_chunks/subDays-Dv7q9S7u.js +8 -0
- package/dist/_chunks/{subDays-_T9YeKPX.js.map → subDays-Dv7q9S7u.js.map} +1 -1
- package/dist/_chunks/{sv-C8AeDrTA.js → sv-g009fSpe.js} +2 -2
- package/dist/_chunks/{sv-C8AeDrTA.js.map → sv-g009fSpe.js.map} +1 -1
- package/dist/_chunks/{tab-bar-C4II-7ej.js → tab-bar-Xetknddo.js} +53 -34
- package/dist/_chunks/tab-bar-Xetknddo.js.map +1 -0
- package/dist/_chunks/{tr-CMSs_Vgf.js → tr-OKUOuhMW.js} +2 -2
- package/dist/_chunks/{tr-CMSs_Vgf.js.map → tr-OKUOuhMW.js.map} +1 -1
- package/dist/_chunks/{unit-converter-D1UrEUxa.js → unit-converter-Ds9jalbN.js} +78 -67
- package/dist/_chunks/unit-converter-Ds9jalbN.js.map +1 -0
- package/dist/_chunks/{zh-CN-eXB-PFu4.js → zh-CN-De4zwEhx.js} +3 -3
- package/dist/_chunks/{zh-CN-eXB-PFu4.js.map → zh-CN-De4zwEhx.js.map} +1 -1
- package/dist/agent-catalog.json +1 -1
- package/dist/components/_shared/calendar-class-names.d.ts +8 -0
- package/dist/components/_shared/calendar-class-names.d.ts.map +1 -0
- package/dist/components/_shared/index.d.ts +2 -0
- package/dist/components/_shared/index.d.ts.map +1 -1
- package/dist/components/_shared/insert-result.d.ts +149 -4
- package/dist/components/_shared/insert-result.d.ts.map +1 -1
- package/dist/components/badge/badge.d.ts +1 -1
- package/dist/components/bmi-calculator/bmi-calculator.d.ts +6 -0
- 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/calculator-dialog/index.js +1 -1
- package/dist/components/card/card.d.ts +1 -1
- package/dist/components/chart/chart.d.ts +10 -0
- package/dist/components/chart/chart.d.ts.map +1 -1
- package/dist/components/chart/index.js +1 -1
- package/dist/components/cycle-calculator/cycle-calculator.d.ts +6 -0
- 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/date-picker/date-picker.d.ts +0 -1
- package/dist/components/date-picker/date-picker.d.ts.map +1 -1
- package/dist/components/date-picker/index.js +1 -1
- package/dist/components/date-range-picker/date-range-picker.d.ts +0 -1
- package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
- package/dist/components/date-range-picker/index.js +1 -1
- package/dist/components/date-time-picker/date-time-picker.d.ts +0 -1
- package/dist/components/date-time-picker/date-time-picker.d.ts.map +1 -1
- package/dist/components/date-time-picker/index.js +1 -1
- package/dist/components/dialog/dialog.d.ts +1 -0
- package/dist/components/dialog/dialog.d.ts.map +1 -1
- package/dist/components/dialog/index.js +1 -1
- package/dist/components/due-date-calculator/due-date-calculator.d.ts +6 -0
- package/dist/components/due-date-calculator/due-date-calculator.d.ts.map +1 -1
- package/dist/components/due-date-calculator/index.js +2 -2
- package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts +6 -0
- 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/header/header.d.ts +8 -0
- package/dist/components/header/header.d.ts.map +1 -1
- package/dist/components/header/index.js +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/pregnancy-weight-gain/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts +6 -0
- package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts.map +1 -1
- package/dist/components/public-header/public-header.d.ts +1 -1
- package/dist/components/sign-document/index.js +1 -1
- package/dist/components/sign-document/sign-document.d.ts +12 -0
- package/dist/components/sign-document/sign-document.d.ts.map +1 -1
- package/dist/components/stat/stat.d.ts +1 -1
- package/dist/components/tab-bar/index.d.ts +1 -1
- package/dist/components/tab-bar/index.d.ts.map +1 -1
- package/dist/components/tab-bar/index.js +1 -1
- package/dist/components/tab-bar/tab-bar.d.ts +44 -1
- package/dist/components/tab-bar/tab-bar.d.ts.map +1 -1
- package/dist/components/unit-converter/index.js +1 -1
- package/dist/components/unit-converter/unit-converter.d.ts +6 -0
- package/dist/components/unit-converter/unit-converter.d.ts.map +1 -1
- package/dist/index.js +504 -502
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +57 -1
- package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts.map +1 -1
- package/dist/patterns/patient-shell/index.js +1 -1
- package/dist/tokens.css +1411 -2
- package/package.json +1 -1
- package/dist/_chunks/bmi-calculator-D4juUcyF.js +0 -219
- package/dist/_chunks/bmi-calculator-D4juUcyF.js.map +0 -1
- package/dist/_chunks/chart-Cbt0_sKv.js.map +0 -1
- package/dist/_chunks/cycle-calculator-DsZbyzX6.js.map +0 -1
- package/dist/_chunks/date-range-picker-U9fn1g9d.js.map +0 -1
- package/dist/_chunks/date-time-picker-Cva0ZCWw.js.map +0 -1
- package/dist/_chunks/dialog-Cee13rHU.js +0 -215
- package/dist/_chunks/dialog-Cee13rHU.js.map +0 -1
- package/dist/_chunks/due-date-calculator-s_CBgaFs.js.map +0 -1
- package/dist/_chunks/gestational-age-calculator-CWOG3bkI.js +0 -178
- package/dist/_chunks/gestational-age-calculator-CWOG3bkI.js.map +0 -1
- package/dist/_chunks/header-CTZWX-tm.js.map +0 -1
- package/dist/_chunks/insert-result-DtQQeSSf.js +0 -227
- package/dist/_chunks/insert-result-DtQQeSSf.js.map +0 -1
- package/dist/_chunks/marketplace-app-shell-kVAVycz_.js.map +0 -1
- package/dist/_chunks/pregnancy-weight-gain-B7kBK-ZR.js.map +0 -1
- package/dist/_chunks/react-day-picker-CdtIiKjx.js +0 -3174
- package/dist/_chunks/react-day-picker-CdtIiKjx.js.map +0 -1
- package/dist/_chunks/sign-document-QHfcNKFj.js.map +0 -1
- package/dist/_chunks/subDays-_T9YeKPX.js +0 -8
- package/dist/_chunks/tab-bar-C4II-7ej.js.map +0 -1
- package/dist/_chunks/unit-converter-D1UrEUxa.js.map +0 -1
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { jsx as t, jsxs as u } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as j, useEffect as O, useMemo as T, forwardRef as i, useContext as x, createContext as B } from "react";
|
|
3
|
+
import * as s from "@radix-ui/react-dialog";
|
|
4
|
+
import { c as k } from "./index-D2ZczOXr.js";
|
|
5
|
+
import { useTranslation as S } from "react-i18next";
|
|
6
|
+
import { u as w } from "./use-controllable-state-BiY4xTzM.js";
|
|
7
|
+
import { u as A } from "./registry-nPAVE19X.js";
|
|
8
|
+
import { X as E } from "./x-CCcI3eJp.js";
|
|
9
|
+
const H = {
|
|
10
|
+
id: "dialog",
|
|
11
|
+
capabilities: ["open", "close", "dismiss"],
|
|
12
|
+
state: {
|
|
13
|
+
isOpen: {
|
|
14
|
+
type: "boolean",
|
|
15
|
+
description: "True when the dialog is currently open.",
|
|
16
|
+
read: (e) => e.getIsOpen()
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
actions: {
|
|
20
|
+
open: {
|
|
21
|
+
safety: "read",
|
|
22
|
+
description: "Open the dialog.",
|
|
23
|
+
invoke: (e) => {
|
|
24
|
+
e.open();
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
close: {
|
|
28
|
+
safety: "write",
|
|
29
|
+
description: "Close the dialog. Reversible by reopening.",
|
|
30
|
+
invoke: (e) => {
|
|
31
|
+
e.close();
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
dismiss: {
|
|
35
|
+
safety: "destructive",
|
|
36
|
+
description: "Dismiss the dialog. Loses any in-progress input that has not been committed.",
|
|
37
|
+
invoke: (e) => {
|
|
38
|
+
e.close();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
domHooks: {
|
|
43
|
+
root: { attr: "data-component", value: "dialog" },
|
|
44
|
+
instanceId: {
|
|
45
|
+
attr: "data-component-id",
|
|
46
|
+
sourceProp: "id",
|
|
47
|
+
description: "Sourced from the id prop on Dialog.Root."
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}, I = [
|
|
51
|
+
"ds-dialog__backdrop",
|
|
52
|
+
"ds:backdrop-blur-sm",
|
|
53
|
+
"ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in-0",
|
|
54
|
+
"ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0",
|
|
55
|
+
"ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
|
|
56
|
+
].join(" "), z = [
|
|
57
|
+
"ds:focus-visible:outline-none",
|
|
58
|
+
"ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in-0 ds:data-[state=open]:zoom-in-95",
|
|
59
|
+
"ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=closed]:zoom-out-95",
|
|
60
|
+
"ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
|
|
61
|
+
].join(" "), F = k(`ds-dialog ds-dialog__surface ${z}`, {
|
|
62
|
+
variants: {
|
|
63
|
+
size: {
|
|
64
|
+
sm: "ds-dialog__surface--sm",
|
|
65
|
+
md: "",
|
|
66
|
+
lg: "ds-dialog__surface--lg",
|
|
67
|
+
fullscreen: "ds-dialog__surface--fullscreen"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
defaultVariants: { size: "md" }
|
|
71
|
+
}), f = B(void 0), g = ({
|
|
72
|
+
children: e,
|
|
73
|
+
id: o,
|
|
74
|
+
open: a,
|
|
75
|
+
defaultOpen: r,
|
|
76
|
+
onOpenChange: c,
|
|
77
|
+
...m
|
|
78
|
+
}) => {
|
|
79
|
+
const [p, n] = w({
|
|
80
|
+
value: a,
|
|
81
|
+
defaultValue: r ?? !1,
|
|
82
|
+
onChange: c
|
|
83
|
+
}), d = p ?? !1, l = j(d);
|
|
84
|
+
O(() => {
|
|
85
|
+
l.current = d;
|
|
86
|
+
}, [d]);
|
|
87
|
+
const R = T(
|
|
88
|
+
() => ({
|
|
89
|
+
getIsOpen: () => l.current,
|
|
90
|
+
open: () => n(!0),
|
|
91
|
+
close: () => n(!1)
|
|
92
|
+
}),
|
|
93
|
+
[n]
|
|
94
|
+
);
|
|
95
|
+
return A(H, R, o), /* @__PURE__ */ t(f.Provider, { value: o, children: /* @__PURE__ */ t(s.Root, { open: d, onOpenChange: n, ...m, children: e }) });
|
|
96
|
+
};
|
|
97
|
+
g.displayName = "Dialog.Root";
|
|
98
|
+
const D = i(({ children: e, ...o }, a) => /* @__PURE__ */ t(s.Trigger, { ref: a, ...o, children: e }));
|
|
99
|
+
D.displayName = "Dialog.Trigger";
|
|
100
|
+
const y = i(({ children: e, ...o }, a) => /* @__PURE__ */ t(s.Close, { ref: a, ...o, children: e }));
|
|
101
|
+
y.displayName = "Dialog.Close";
|
|
102
|
+
const v = i(
|
|
103
|
+
({
|
|
104
|
+
size: e = "md",
|
|
105
|
+
variant: o = "default",
|
|
106
|
+
hideCloseButton: a = !0,
|
|
107
|
+
className: r,
|
|
108
|
+
children: c,
|
|
109
|
+
...m
|
|
110
|
+
}, p) => {
|
|
111
|
+
const { t: n } = S(), d = x(f), l = o === "alert" ? { role: "alertdialog" } : {};
|
|
112
|
+
return /* @__PURE__ */ u(s.Portal, { children: [
|
|
113
|
+
/* @__PURE__ */ t(
|
|
114
|
+
s.Overlay,
|
|
115
|
+
{
|
|
116
|
+
"data-component": "dialog-overlay",
|
|
117
|
+
className: I
|
|
118
|
+
}
|
|
119
|
+
),
|
|
120
|
+
/* @__PURE__ */ u(
|
|
121
|
+
s.Content,
|
|
122
|
+
{
|
|
123
|
+
ref: p,
|
|
124
|
+
...l,
|
|
125
|
+
"data-component": "dialog",
|
|
126
|
+
"data-component-id": d,
|
|
127
|
+
className: F({ size: e, className: r }),
|
|
128
|
+
...m,
|
|
129
|
+
children: [
|
|
130
|
+
c,
|
|
131
|
+
!a && // The close is a plain button carrying the `ds-dialog__close`
|
|
132
|
+
// contract class — the SAME class a vanilla host renders. The CSS
|
|
133
|
+
// (src/styles.css) owns its position, sizing, glyph size, hover
|
|
134
|
+
// wash, and focus ring from tokens, so the React and non-React
|
|
135
|
+
// close buttons are identical and can't drift.
|
|
136
|
+
/* @__PURE__ */ t(
|
|
137
|
+
s.Close,
|
|
138
|
+
{
|
|
139
|
+
type: "button",
|
|
140
|
+
className: "ds-dialog__close",
|
|
141
|
+
"aria-label": n("common.close", "Close"),
|
|
142
|
+
children: /* @__PURE__ */ t(E, { "aria-hidden": "true" })
|
|
143
|
+
}
|
|
144
|
+
)
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
)
|
|
148
|
+
] });
|
|
149
|
+
}
|
|
150
|
+
);
|
|
151
|
+
v.displayName = "Dialog.Content";
|
|
152
|
+
const C = i(
|
|
153
|
+
({ className: e, ...o }, a) => /* @__PURE__ */ t(
|
|
154
|
+
"div",
|
|
155
|
+
{
|
|
156
|
+
ref: a,
|
|
157
|
+
className: ["ds-dialog__header", e].filter(Boolean).join(" "),
|
|
158
|
+
...o
|
|
159
|
+
}
|
|
160
|
+
)
|
|
161
|
+
);
|
|
162
|
+
C.displayName = "Dialog.Header";
|
|
163
|
+
const _ = i(
|
|
164
|
+
({ className: e, ...o }, a) => /* @__PURE__ */ t(
|
|
165
|
+
"div",
|
|
166
|
+
{
|
|
167
|
+
ref: a,
|
|
168
|
+
className: ["ds-dialog__body", e].filter(Boolean).join(" "),
|
|
169
|
+
...o
|
|
170
|
+
}
|
|
171
|
+
)
|
|
172
|
+
);
|
|
173
|
+
_.displayName = "Dialog.Body";
|
|
174
|
+
const b = i(({ className: e, ...o }, a) => /* @__PURE__ */ t(
|
|
175
|
+
s.Title,
|
|
176
|
+
{
|
|
177
|
+
ref: a,
|
|
178
|
+
className: ["ds-dialog__title type-title-card ds:break-words", e].filter(Boolean).join(" "),
|
|
179
|
+
...o
|
|
180
|
+
}
|
|
181
|
+
));
|
|
182
|
+
b.displayName = "Dialog.Title";
|
|
183
|
+
const h = i(({ className: e, ...o }, a) => /* @__PURE__ */ t(
|
|
184
|
+
s.Description,
|
|
185
|
+
{
|
|
186
|
+
ref: a,
|
|
187
|
+
className: ["type-body-sm ds:text-[var(--muted-foreground)]", e].filter(Boolean).join(" "),
|
|
188
|
+
...o
|
|
189
|
+
}
|
|
190
|
+
));
|
|
191
|
+
h.displayName = "Dialog.Description";
|
|
192
|
+
const N = i(
|
|
193
|
+
({ className: e, divider: o = !1, ...a }, r) => /* @__PURE__ */ t(
|
|
194
|
+
"div",
|
|
195
|
+
{
|
|
196
|
+
ref: r,
|
|
197
|
+
className: [
|
|
198
|
+
"ds:flex ds:items-center ds:justify-end ds:gap-[var(--spacing-sm)]",
|
|
199
|
+
"ds:mt-[var(--spacing-md)]",
|
|
200
|
+
o && "ds:border-t ds:border-[color:var(--border)] ds:pt-[var(--spacing-md)]",
|
|
201
|
+
e
|
|
202
|
+
].filter(Boolean).join(" "),
|
|
203
|
+
...a
|
|
204
|
+
}
|
|
205
|
+
)
|
|
206
|
+
);
|
|
207
|
+
N.displayName = "Dialog.Footer";
|
|
208
|
+
const $ = Object.assign(g, {
|
|
209
|
+
Root: g,
|
|
210
|
+
Trigger: D,
|
|
211
|
+
Content: v,
|
|
212
|
+
Header: C,
|
|
213
|
+
Title: b,
|
|
214
|
+
Description: h,
|
|
215
|
+
Body: _,
|
|
216
|
+
Footer: N,
|
|
217
|
+
Close: y
|
|
218
|
+
});
|
|
219
|
+
export {
|
|
220
|
+
$ as D,
|
|
221
|
+
H as d
|
|
222
|
+
};
|
|
223
|
+
//# sourceMappingURL=dialog-BTpZV6It.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-BTpZV6It.js","sources":["../../src/components/dialog/dialog.agent.ts","../../src/components/dialog/dialog.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { DialogHandle } from './dialog';\n\n/**\n * Dialog wraps Radix Dialog. The curated handle (`DialogHandle`) bridges the\n * Radix controlled-or-uncontrolled `open` state so an agent can observe and\n * drive the dialog without owning the React state itself.\n */\nexport const dialogAgent: AgentAdapter<DialogHandle> = {\n id: 'dialog',\n capabilities: ['open', 'close', 'dismiss'],\n state: {\n isOpen: {\n type: 'boolean',\n description: 'True when the dialog is currently open.',\n read: (handle) => handle.getIsOpen(),\n },\n },\n actions: {\n open: {\n safety: 'read',\n description: 'Open the dialog.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'write',\n description: 'Close the dialog. Reversible by reopening.',\n invoke: (handle) => {\n handle.close();\n },\n },\n dismiss: {\n safety: 'destructive',\n description:\n 'Dismiss the dialog. Loses any in-progress input that has not been committed.',\n invoke: (handle) => {\n handle.close();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'dialog' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop on Dialog.Root.',\n },\n },\n};\n","import {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useMemo,\n useRef,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport * as RadixDialog from '@radix-ui/react-dialog';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { X } from 'lucide-react';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useAgentRegistration } from '../../agent';\nimport { dialogAgent } from './dialog.agent';\n\n// The `ds-dialog__*` class names below are the framework-agnostic contract\n// defined in src/styles.css (@layer ui-kit-components). The React component\n// renders the SAME classes a vanilla (non-React) host hand-authors — the\n// surface (`ds-dialog__surface` + its size modifiers), the close button\n// (`ds-dialog__close`), and the body slot (`ds-dialog__body`) — so there is\n// ONE visual skin (scrim, radius, elevation, bg, padding, centering, sizing,\n// close-button glyph + hover/focus) and the two surfaces can't drift. The few\n// Tailwind utilities that remain are NOT skin: they are the Radix animation\n// hooks (`data-[state=…]:animate-*`) and the surface focus-suppression chrome\n// — neither lives in the vanilla CSS contract. Layer order\n// (`…, utilities, ui-kit-tokens, ui-kit-components`) puts the `ds-dialog__*`\n// rules after Tailwind's utilities, so the contract owns every visual\n// property and the animation utilities only touch `animation` / `outline`.\nconst OVERLAY_CLASSES = [\n 'ds-dialog__backdrop',\n 'ds:backdrop-blur-sm',\n 'ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in-0',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0',\n 'ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n].join(' ');\n\n// Animation + focus chrome only — every visual property (position, centering,\n// bg, radius, elevation, padding, sizing) comes from `.ds-dialog__surface`.\nconst SURFACE_CHROME = [\n 'ds:focus-visible:outline-none',\n 'ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in-0 ds:data-[state=open]:zoom-in-95',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=closed]:zoom-out-95',\n 'ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n].join(' ');\n\n// CVA drives only the contract class names per size. `ds-dialog` is the host\n// marker (cascade-reset boundary); `ds-dialog__surface` carries the panel skin;\n// the `--sm` / `--lg` / `--fullscreen` modifiers shift only `max-inline-size`\n// (or the fullscreen geometry) and are defined alongside the base rule in\n// src/styles.css — so size, like the skin, lives in one place.\nconst contentVariants = cva(`ds-dialog ds-dialog__surface ${SURFACE_CHROME}`, {\n variants: {\n size: {\n sm: 'ds-dialog__surface--sm',\n md: '',\n lg: 'ds-dialog__surface--lg',\n fullscreen: 'ds-dialog__surface--fullscreen',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\n// Curated agent-readiness handle — see dialog.agent.ts.\nexport interface DialogHandle {\n getIsOpen: () => boolean;\n open: () => void;\n close: () => void;\n}\n\nexport interface DialogRootProps extends ComponentPropsWithoutRef<\n typeof RadixDialog.Root\n> {\n /** Opaque instance id — forwarded to Dialog.Content as `data-component-id`. */\n id?: string;\n}\n\nconst DialogIdContext = createContext<string | undefined>(undefined);\n\nconst DialogRoot = ({\n children,\n id,\n open: openProp,\n defaultOpen,\n onOpenChange,\n ...props\n}: DialogRootProps) => {\n const [openRaw, setOpen] = useControllableState<boolean>({\n value: openProp,\n defaultValue: defaultOpen ?? false,\n onChange: onOpenChange,\n });\n const open = openRaw ?? false;\n\n const openRef = useRef(open);\n useEffect(() => {\n openRef.current = open;\n }, [open]);\n\n const handle = useMemo<DialogHandle>(\n () => ({\n getIsOpen: () => openRef.current,\n open: () => setOpen(true),\n close: () => setOpen(false),\n }),\n [setOpen],\n );\n useAgentRegistration(dialogAgent, handle, id);\n\n return (\n <DialogIdContext.Provider value={id}>\n <RadixDialog.Root open={open} onOpenChange={setOpen} {...props}>\n {children}\n </RadixDialog.Root>\n </DialogIdContext.Provider>\n );\n};\nDialogRoot.displayName = 'Dialog.Root';\n\nconst DialogTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Trigger>\n>(({ children, ...props }, ref) => (\n <RadixDialog.Trigger ref={ref} {...props}>\n {children}\n </RadixDialog.Trigger>\n));\nDialogTrigger.displayName = 'Dialog.Trigger';\n\nconst DialogClose = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Close>\n>(({ children, ...props }, ref) => (\n <RadixDialog.Close ref={ref} {...props}>\n {children}\n </RadixDialog.Close>\n));\nDialogClose.displayName = 'Dialog.Close';\n\nexport interface DialogContentProps\n extends\n Omit<ComponentPropsWithoutRef<typeof RadixDialog.Content>, 'role'>,\n VariantProps<typeof contentVariants> {\n size?: 'sm' | 'md' | 'lg' | 'fullscreen';\n variant?: 'default' | 'alert' | 'confirmation';\n hideCloseButton?: boolean;\n className?: string;\n children: ReactNode;\n}\n\nconst DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n (\n {\n size = 'md',\n variant = 'default',\n hideCloseButton = true,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const instanceId = useContext(DialogIdContext);\n // Only forward `role` when we actually need to override Radix's default\n // (`role=\"dialog\"`). Passing `role={undefined}` explicitly wins over\n // Radix's internal assignment and strips the attribute entirely.\n const roleOverride =\n variant === 'alert' ? { role: 'alertdialog' as const } : {};\n\n return (\n <RadixDialog.Portal>\n <RadixDialog.Overlay\n data-component=\"dialog-overlay\"\n className={OVERLAY_CLASSES}\n />\n <RadixDialog.Content\n ref={ref}\n {...roleOverride}\n data-component=\"dialog\"\n data-component-id={instanceId}\n className={contentVariants({ size, className })}\n {...props}\n >\n {children}\n\n {!hideCloseButton && (\n // The close is a plain button carrying the `ds-dialog__close`\n // contract class — the SAME class a vanilla host renders. The CSS\n // (src/styles.css) owns its position, sizing, glyph size, hover\n // wash, and focus ring from tokens, so the React and non-React\n // close buttons are identical and can't drift.\n <RadixDialog.Close\n type=\"button\"\n className=\"ds-dialog__close\"\n aria-label={t('common.close', 'Close')}\n >\n <X aria-hidden=\"true\" />\n </RadixDialog.Close>\n )}\n </RadixDialog.Content>\n </RadixDialog.Portal>\n );\n },\n);\nDialogContent.displayName = 'Dialog.Content';\n\nconst DialogHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={['ds-dialog__header', className].filter(Boolean).join(' ')}\n {...props}\n />\n ),\n);\nDialogHeader.displayName = 'Dialog.Header';\n\n// Optional body slot. Carries the `ds-dialog__body` contract class — the SAME\n// class a vanilla host renders — so content / iframe slots match between the\n// React and non-React surfaces and can't drift. Additive: content placed\n// directly in Dialog.Content (without this wrapper) still works as before.\nconst DialogBody = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={['ds-dialog__body', className].filter(Boolean).join(' ')}\n {...props}\n />\n ),\n);\nDialogBody.displayName = 'Dialog.Body';\n\nconst DialogTitle = forwardRef<\n HTMLHeadingElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Title>\n>(({ className, ...props }, ref) => (\n <RadixDialog.Title\n ref={ref}\n className={['ds-dialog__title type-title-card ds:break-words', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n));\nDialogTitle.displayName = 'Dialog.Title';\n\nconst DialogDescription = forwardRef<\n HTMLParagraphElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Description>\n>(({ className, ...props }, ref) => (\n <RadixDialog.Description\n ref={ref}\n className={['type-body-sm ds:text-[var(--muted-foreground)]', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n));\nDialogDescription.displayName = 'Dialog.Description';\n\ninterface DialogFooterProps extends HTMLAttributes<HTMLDivElement> {\n divider?: boolean;\n}\n\nconst DialogFooter = forwardRef<HTMLDivElement, DialogFooterProps>(\n ({ className, divider = false, ...props }, ref) => (\n <div\n ref={ref}\n className={[\n 'ds:flex ds:items-center ds:justify-end ds:gap-[var(--spacing-sm)]',\n 'ds:mt-[var(--spacing-md)]',\n divider &&\n 'ds:border-t ds:border-[color:var(--border)] ds:pt-[var(--spacing-md)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nDialogFooter.displayName = 'Dialog.Footer';\n\nexport const Dialog = Object.assign(DialogRoot, {\n Root: DialogRoot,\n Trigger: DialogTrigger,\n Content: DialogContent,\n Header: DialogHeader,\n Title: DialogTitle,\n Description: DialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n Close: DialogClose,\n});\n\nexport type { DialogFooterProps };\n"],"names":["dialogAgent","handle","OVERLAY_CLASSES","SURFACE_CHROME","contentVariants","cva","DialogIdContext","createContext","DialogRoot","children","id","openProp","defaultOpen","onOpenChange","props","openRaw","setOpen","useControllableState","open","openRef","useRef","useEffect","useMemo","useAgentRegistration","jsx","RadixDialog","DialogTrigger","forwardRef","ref","DialogClose","DialogContent","size","variant","hideCloseButton","className","t","useTranslation","instanceId","useContext","roleOverride","jsxs","X","DialogHeader","DialogBody","DialogTitle","DialogDescription","DialogFooter","divider","Dialog"],"mappings":"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"}
|
|
@@ -1,67 +1,75 @@
|
|
|
1
1
|
import { jsxs as l, jsx as a } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { c as
|
|
4
|
-
import { useTranslation as
|
|
2
|
+
import { forwardRef as F, useState as c, useMemo as g, useEffect as G } from "react";
|
|
3
|
+
import { c as H } from "./index-D2ZczOXr.js";
|
|
4
|
+
import { useTranslation as R } from "react-i18next";
|
|
5
5
|
import { R as s } from "./radio-TWf9Q-mp.js";
|
|
6
6
|
import { R as h } from "./radio-group-CLjK-SlK.js";
|
|
7
7
|
import { F as v } from "./form-field-BOm9hK35.js";
|
|
8
|
-
import { D as
|
|
9
|
-
import { N as
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
8
|
+
import { D as S } from "./date-picker-Bq7xhMA-.js";
|
|
9
|
+
import { N as M } from "./number-input-Dj5L3pXK.js";
|
|
10
|
+
import { C as b } from "./card-DPmk26CL.js";
|
|
11
|
+
import { B as z } from "./badge-zsf5i5bH.js";
|
|
12
|
+
import { I as V } from "./insert-result-CoC1oo6R.js";
|
|
13
|
+
import { D as C, c as j } from "./gestation-mWF4AXea.js";
|
|
14
|
+
const K = H("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
14
15
|
variants: {
|
|
15
16
|
width: { full: "ds:w-full", auto: "ds:inline-flex" }
|
|
16
17
|
},
|
|
17
18
|
defaultVariants: { width: "full" }
|
|
18
|
-
}),
|
|
19
|
+
}), Y = {
|
|
19
20
|
preconception: "neutral",
|
|
20
21
|
first: "info",
|
|
21
22
|
second: "success",
|
|
22
23
|
third: "warning",
|
|
23
24
|
postterm: "error"
|
|
24
|
-
},
|
|
25
|
+
}, O = {
|
|
26
|
+
preconception: "--muted",
|
|
27
|
+
first: "--info",
|
|
28
|
+
second: "--success",
|
|
29
|
+
third: "--warning",
|
|
30
|
+
postterm: "--destructive"
|
|
31
|
+
}, P = {
|
|
25
32
|
lmp: "dueDateCalculator.lmpDate",
|
|
26
33
|
conception: "dueDateCalculator.conceptionDate",
|
|
27
34
|
ivf: "dueDateCalculator.transferDate"
|
|
28
|
-
},
|
|
35
|
+
}, U = F(
|
|
29
36
|
({
|
|
30
|
-
defaultMethod:
|
|
37
|
+
defaultMethod: y = "lmp",
|
|
31
38
|
onResultChange: d,
|
|
32
39
|
onInsert: p,
|
|
33
40
|
insertVariant: D = "insert",
|
|
34
|
-
onCopy:
|
|
35
|
-
onError:
|
|
36
|
-
|
|
37
|
-
|
|
41
|
+
onCopy: x,
|
|
42
|
+
onError: N,
|
|
43
|
+
insertBrand: L,
|
|
44
|
+
id: E,
|
|
45
|
+
width: w,
|
|
38
46
|
className: A
|
|
39
|
-
},
|
|
40
|
-
const { t: e, i18n: f } =
|
|
41
|
-
|
|
42
|
-
), [n,
|
|
47
|
+
}, T) => {
|
|
48
|
+
const { t: e, i18n: f } = R(), [r, I] = c(y), [o, _] = c(void 0), [u, $] = c(
|
|
49
|
+
C
|
|
50
|
+
), [n, k] = c(5), t = g(() => o ? j(
|
|
43
51
|
{
|
|
44
52
|
method: r,
|
|
45
53
|
date: o,
|
|
46
|
-
cycleLength: u ??
|
|
54
|
+
cycleLength: u ?? C,
|
|
47
55
|
embryoAge: n
|
|
48
56
|
},
|
|
49
57
|
/* @__PURE__ */ new Date()
|
|
50
|
-
) : null, [r, o, u, n]),
|
|
58
|
+
) : null, [r, o, u, n]), i = g(
|
|
51
59
|
() => new Intl.DateTimeFormat(f.language, { dateStyle: "long" }),
|
|
52
60
|
[f.language]
|
|
53
61
|
);
|
|
54
|
-
|
|
62
|
+
G(() => {
|
|
55
63
|
d == null || d(t);
|
|
56
64
|
}, [t, d]);
|
|
57
|
-
const
|
|
65
|
+
const B = g(() => /* @__PURE__ */ new Date(), []);
|
|
58
66
|
return /* @__PURE__ */ l(
|
|
59
67
|
"div",
|
|
60
68
|
{
|
|
61
|
-
ref:
|
|
69
|
+
ref: T,
|
|
62
70
|
"data-component": "due-date-calculator",
|
|
63
|
-
"data-component-id":
|
|
64
|
-
className:
|
|
71
|
+
"data-component-id": E,
|
|
72
|
+
className: K({ width: w, className: A }),
|
|
65
73
|
children: [
|
|
66
74
|
/* @__PURE__ */ l(
|
|
67
75
|
h,
|
|
@@ -69,7 +77,7 @@ const j = I("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
69
77
|
label: e("dueDateCalculator.method.label"),
|
|
70
78
|
variant: "horizontal",
|
|
71
79
|
value: r,
|
|
72
|
-
onValueChange: (m) =>
|
|
80
|
+
onValueChange: (m) => I(m),
|
|
73
81
|
children: [
|
|
74
82
|
/* @__PURE__ */ a(s, { label: e("dueDateCalculator.method.lmp"), value: "lmp" }),
|
|
75
83
|
/* @__PURE__ */ a(
|
|
@@ -84,14 +92,14 @@ const j = I("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
84
92
|
}
|
|
85
93
|
),
|
|
86
94
|
/* @__PURE__ */ l("div", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
|
|
87
|
-
/* @__PURE__ */ a(v, { label: e(
|
|
95
|
+
/* @__PURE__ */ a(v, { label: e(P[r]), children: /* @__PURE__ */ a(S, { value: o, onChange: _, maxDate: B }) }),
|
|
88
96
|
r === "lmp" && /* @__PURE__ */ a(
|
|
89
97
|
v,
|
|
90
98
|
{
|
|
91
99
|
label: e("dueDateCalculator.cycleLength"),
|
|
92
100
|
description: e("dueDateCalculator.cycleLengthHint"),
|
|
93
101
|
children: /* @__PURE__ */ a(
|
|
94
|
-
|
|
102
|
+
M,
|
|
95
103
|
{
|
|
96
104
|
mode: "integer",
|
|
97
105
|
min: 20,
|
|
@@ -108,7 +116,7 @@ const j = I("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
108
116
|
label: e("dueDateCalculator.embryoAge"),
|
|
109
117
|
variant: "horizontal",
|
|
110
118
|
value: String(n),
|
|
111
|
-
onValueChange: (m) =>
|
|
119
|
+
onValueChange: (m) => k(Number(m)),
|
|
112
120
|
children: [
|
|
113
121
|
/* @__PURE__ */ a(s, { label: e("dueDateCalculator.day3"), value: "3" }),
|
|
114
122
|
/* @__PURE__ */ a(s, { label: e("dueDateCalculator.day5"), value: "5" })
|
|
@@ -116,16 +124,23 @@ const j = I("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
116
124
|
}
|
|
117
125
|
)
|
|
118
126
|
] }),
|
|
119
|
-
/* @__PURE__ */ a("p", { className: "ds:sr-only", role: "status", "aria-live": "polite", children: t ? `${e("dueDateCalculator.result.dueDateLabel")}: ${
|
|
127
|
+
/* @__PURE__ */ a("p", { className: "ds:sr-only", role: "status", "aria-live": "polite", children: t ? `${e("dueDateCalculator.result.dueDateLabel")}: ${i.format(
|
|
120
128
|
t.dueDate
|
|
121
129
|
)}. ${e("dueDateCalculator.result.trimesterLabel")}: ${e(
|
|
122
130
|
`dueDateCalculator.trimester.${t.trimester}`
|
|
123
131
|
)}.` : "" }),
|
|
124
|
-
t ? /* @__PURE__ */
|
|
132
|
+
t ? /* @__PURE__ */ a(b, { variant: "elevated", children: /* @__PURE__ */ l(b.Body, { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
|
|
125
133
|
/* @__PURE__ */ l("dl", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3", children: [
|
|
126
134
|
/* @__PURE__ */ l("div", { className: "ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]", children: [
|
|
127
135
|
/* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("dueDateCalculator.result.trimesterLabel") }),
|
|
128
|
-
/* @__PURE__ */ a("dd", { children: /* @__PURE__ */ a(
|
|
136
|
+
/* @__PURE__ */ a("dd", { children: /* @__PURE__ */ a(
|
|
137
|
+
z,
|
|
138
|
+
{
|
|
139
|
+
variant: Y[t.trimester],
|
|
140
|
+
size: "lg",
|
|
141
|
+
children: e(`dueDateCalculator.trimester.${t.trimester}`)
|
|
142
|
+
}
|
|
143
|
+
) })
|
|
129
144
|
] }),
|
|
130
145
|
/* @__PURE__ */ l("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
|
|
131
146
|
/* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("dueDateCalculator.result.gestationLabel") }),
|
|
@@ -136,23 +151,28 @@ const j = I("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
136
151
|
] }),
|
|
137
152
|
/* @__PURE__ */ l("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
|
|
138
153
|
/* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("dueDateCalculator.result.dueDateLabel") }),
|
|
139
|
-
/* @__PURE__ */ a("dd", { className: "type-metric ds:text-foreground", children:
|
|
154
|
+
/* @__PURE__ */ a("dd", { className: "type-metric ds:text-foreground", children: i.format(t.dueDate) })
|
|
140
155
|
] })
|
|
141
156
|
] }),
|
|
142
157
|
D === "copy" || p ? /* @__PURE__ */ a(
|
|
143
|
-
|
|
158
|
+
V,
|
|
144
159
|
{
|
|
145
160
|
variant: D,
|
|
146
161
|
onInsert: p,
|
|
147
|
-
onCopy:
|
|
148
|
-
onError:
|
|
162
|
+
onCopy: x,
|
|
163
|
+
onError: N,
|
|
149
164
|
card: {
|
|
150
165
|
title: e("insert.title.dueDate"),
|
|
151
|
-
highlight:
|
|
166
|
+
highlight: i.format(t.dueDate),
|
|
167
|
+
// Chip tinted with the trimester's semantic token so the
|
|
168
|
+
// inserted PNG carries the same clinical-stage colour as
|
|
169
|
+
// the on-screen trimester badge.
|
|
170
|
+
highlightToken: O[t.trimester],
|
|
171
|
+
brand: L,
|
|
152
172
|
fields: [
|
|
153
173
|
{
|
|
154
174
|
label: e("dueDateCalculator.result.dueDateLabel"),
|
|
155
|
-
value:
|
|
175
|
+
value: i.format(t.dueDate)
|
|
156
176
|
},
|
|
157
177
|
{
|
|
158
178
|
label: e("dueDateCalculator.result.gestationLabel"),
|
|
@@ -171,14 +191,14 @@ const j = I("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
|
171
191
|
}
|
|
172
192
|
}
|
|
173
193
|
) : null
|
|
174
|
-
] }) : /* @__PURE__ */ a("p", { className: "type-body ds:text-muted-foreground", children: e("dueDateCalculator.empty") })
|
|
194
|
+
] }) }) : /* @__PURE__ */ a("p", { className: "type-body ds:text-muted-foreground", children: e("dueDateCalculator.empty") })
|
|
175
195
|
]
|
|
176
196
|
}
|
|
177
197
|
);
|
|
178
198
|
}
|
|
179
199
|
);
|
|
180
|
-
|
|
200
|
+
U.displayName = "DueDateCalculator";
|
|
181
201
|
export {
|
|
182
|
-
|
|
202
|
+
U as D
|
|
183
203
|
};
|
|
184
|
-
//# sourceMappingURL=due-date-calculator-
|
|
204
|
+
//# sourceMappingURL=due-date-calculator-CYXKLoof.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"due-date-calculator-CYXKLoof.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',\n postterm: '--destructive',\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 → the default `'AlfaDocs'` wordmark; a string overrides it;\n * `false` removes the brand line.\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 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.\n highlightToken: TRIMESTER_HIGHLIGHT_TOKEN[result.trimester],\n brand: insertBrand,\n fields: [\n {\n label: t('dueDateCalculator.result.dueDateLabel'),\n value: dateFormatter.format(result.dueDate),\n },\n {\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 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","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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"}
|
|
@@ -26,7 +26,7 @@ import { S as Ie } from "./select-hsCaJSX3.js";
|
|
|
26
26
|
import { u as zt } from "./use-prefers-reduced-motion-BMwIQRjB.js";
|
|
27
27
|
import { u as At } from "./use-theme-C2dHKUAN.js";
|
|
28
28
|
import { u as Pt } from "./registry-nPAVE19X.js";
|
|
29
|
-
import { D as ze } from "./date-range-picker-
|
|
29
|
+
import { D as ze } from "./date-range-picker-DcXuI9y7.js";
|
|
30
30
|
import { M as Ot } from "./multi-select-DOLO3K_z.js";
|
|
31
31
|
import { A as Ae } from "./autocomplete-DIgdhCGJ.js";
|
|
32
32
|
import { N as ee } from "./number-input-Dj5L3pXK.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-9jqwDv5x.js.map
|