@alfadocs/ui-kit-debug 0.43.0 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/_chunks/{alia-sidebar-BpX4z_af.js → alia-sidebar-Be8FhKYd.js} +332 -237
  2. package/dist/_chunks/alia-sidebar-Be8FhKYd.js.map +1 -0
  3. package/dist/_chunks/{autocomplete-DIgdhCGJ.js → autocomplete-CDqxB68B.js} +2 -2
  4. package/dist/_chunks/{autocomplete-DIgdhCGJ.js.map → autocomplete-CDqxB68B.js.map} +1 -1
  5. package/dist/_chunks/bmi-calculator-CQqXTVNL.js +258 -0
  6. package/dist/_chunks/bmi-calculator-CQqXTVNL.js.map +1 -0
  7. package/dist/_chunks/{booking-CtLwaxkK.js → booking-DlDVuWMd.js} +2 -2
  8. package/dist/_chunks/{booking-CtLwaxkK.js.map → booking-DlDVuWMd.js.map} +1 -1
  9. package/dist/_chunks/{calculator-dialog-DdexHrTP.js → calculator-dialog-D-nfvteH.js} +2 -2
  10. package/dist/_chunks/{calculator-dialog-DdexHrTP.js.map → calculator-dialog-D-nfvteH.js.map} +1 -1
  11. package/dist/_chunks/{cycle-calculator-Dln-y1k_.js → cycle-calculator-KxA8dqDf.js} +73 -54
  12. package/dist/_chunks/cycle-calculator-KxA8dqDf.js.map +1 -0
  13. package/dist/_chunks/dialog-BTpZV6It.js +223 -0
  14. package/dist/_chunks/dialog-BTpZV6It.js.map +1 -0
  15. package/dist/_chunks/{due-date-calculator-Cc4dRqTI.js → due-date-calculator-mFxpHLml.js} +73 -49
  16. package/dist/_chunks/due-date-calculator-mFxpHLml.js.map +1 -0
  17. package/dist/_chunks/{editable-currency-cell-renderer-9jqwDv5x.js → editable-currency-cell-renderer-BEBUQl9P.js} +2 -2
  18. package/dist/_chunks/{editable-currency-cell-renderer-9jqwDv5x.js.map → editable-currency-cell-renderer-BEBUQl9P.js.map} +1 -1
  19. package/dist/_chunks/{freemium-paywall-BLXESpH4.js → freemium-paywall-BYist2sJ.js} +2 -2
  20. package/dist/_chunks/{freemium-paywall-BLXESpH4.js.map → freemium-paywall-BYist2sJ.js.map} +1 -1
  21. package/dist/_chunks/gestational-age-calculator-gWI_uRA1.js +203 -0
  22. package/dist/_chunks/gestational-age-calculator-gWI_uRA1.js.map +1 -0
  23. package/dist/_chunks/insert-result-C5ABnzDl.js +711 -0
  24. package/dist/_chunks/insert-result-C5ABnzDl.js.map +1 -0
  25. package/dist/_chunks/{marketplace-app-shell-Dc5cTIt8.js → marketplace-app-shell-Gfsf78ge.js} +2 -2
  26. package/dist/_chunks/{marketplace-app-shell-Dc5cTIt8.js.map → marketplace-app-shell-Gfsf78ge.js.map} +1 -1
  27. package/dist/_chunks/{patient-search-DPe2ZYEL.js → patient-search-CocVcGJ3.js} +2 -2
  28. package/dist/_chunks/{patient-search-DPe2ZYEL.js.map → patient-search-CocVcGJ3.js.map} +1 -1
  29. package/dist/_chunks/{payment-form-BzVsG6Ks.js → payment-form-DqEiEJRO.js} +247 -195
  30. package/dist/_chunks/payment-form-DqEiEJRO.js.map +1 -0
  31. package/dist/_chunks/{pdf-viewer-B6MC6VTx.js → pdf-viewer-CWEXTlwq.js} +2 -2
  32. package/dist/_chunks/{pdf-viewer-B6MC6VTx.js.map → pdf-viewer-CWEXTlwq.js.map} +1 -1
  33. package/dist/_chunks/{practice-results-CrLpEiiW.js → practice-results-DDi-kvaD.js} +2 -2
  34. package/dist/_chunks/{practice-results-CrLpEiiW.js.map → practice-results-DDi-kvaD.js.map} +1 -1
  35. package/dist/_chunks/{pregnancy-weight-gain-zZL5Ir2-.js → pregnancy-weight-gain-BtEHaSqy.js} +78 -56
  36. package/dist/_chunks/pregnancy-weight-gain-BtEHaSqy.js.map +1 -0
  37. package/dist/_chunks/{search-bar-CP6wUJFY.js → search-bar-CvN_S0jW.js} +2 -2
  38. package/dist/_chunks/{search-bar-CP6wUJFY.js.map → search-bar-CvN_S0jW.js.map} +1 -1
  39. package/dist/_chunks/{search-input-C1C3jQpD.js → search-input-D3aMvi4l.js} +2 -2
  40. package/dist/_chunks/{search-input-C1C3jQpD.js.map → search-input-D3aMvi4l.js.map} +1 -1
  41. package/dist/_chunks/{sign-document-B-3k_0LO.js → sign-document-BCyLpFHJ.js} +2 -2
  42. package/dist/_chunks/{sign-document-B-3k_0LO.js.map → sign-document-BCyLpFHJ.js.map} +1 -1
  43. package/dist/_chunks/{sign-in-with-alfadocs-button-DeHBFRNS.js → sign-in-with-alfadocs-button-CuYn_kKP.js} +2 -2
  44. package/dist/_chunks/{sign-in-with-alfadocs-button-DeHBFRNS.js.map → sign-in-with-alfadocs-button-CuYn_kKP.js.map} +1 -1
  45. package/dist/_chunks/{social-sign-in-button-X54ySJr1.js → social-sign-in-button-uJYLM366.js} +2 -2
  46. package/dist/_chunks/{social-sign-in-button-X54ySJr1.js.map → social-sign-in-button-uJYLM366.js.map} +1 -1
  47. package/dist/_chunks/{spinner-CCByyvcb.js → spinner-OjQNn8oN.js} +7 -3
  48. package/dist/_chunks/spinner-OjQNn8oN.js.map +1 -0
  49. package/dist/_chunks/{transcript-panel-CR7VY1uw.js → transcript-panel-B4HiC7ed.js} +2 -2
  50. package/dist/_chunks/{transcript-panel-CR7VY1uw.js.map → transcript-panel-B4HiC7ed.js.map} +1 -1
  51. package/dist/_chunks/{unit-converter-CuXCXJhK.js → unit-converter-u3CwNDpP.js} +96 -74
  52. package/dist/_chunks/unit-converter-u3CwNDpP.js.map +1 -0
  53. package/dist/_chunks/{wallet-pay-button-DK4ESYge.js → wallet-pay-button-DuDPBlCO.js} +2 -2
  54. package/dist/_chunks/{wallet-pay-button-DK4ESYge.js.map → wallet-pay-button-DuDPBlCO.js.map} +1 -1
  55. package/dist/agent-catalog.json +1 -1
  56. package/dist/components/_shared/banded-gauge.d.ts +193 -0
  57. package/dist/components/_shared/banded-gauge.d.ts.map +1 -0
  58. package/dist/components/_shared/index.d.ts +1 -1
  59. package/dist/components/_shared/index.d.ts.map +1 -1
  60. package/dist/components/_shared/insert-result.d.ts +173 -10
  61. package/dist/components/_shared/insert-result.d.ts.map +1 -1
  62. package/dist/components/autocomplete/index.js +1 -1
  63. package/dist/components/bmi-calculator/bmi-calculator.d.ts +6 -0
  64. package/dist/components/bmi-calculator/bmi-calculator.d.ts.map +1 -1
  65. package/dist/components/bmi-calculator/index.js +1 -1
  66. package/dist/components/booking/index.js +1 -1
  67. package/dist/components/calculator-dialog/index.js +1 -1
  68. package/dist/components/cycle-calculator/cycle-calculator.d.ts +6 -0
  69. package/dist/components/cycle-calculator/cycle-calculator.d.ts.map +1 -1
  70. package/dist/components/cycle-calculator/index.js +1 -1
  71. package/dist/components/data-table/index.js +1 -1
  72. package/dist/components/dialog/dialog.d.ts +1 -0
  73. package/dist/components/dialog/dialog.d.ts.map +1 -1
  74. package/dist/components/dialog/index.js +1 -1
  75. package/dist/components/due-date-calculator/due-date-calculator.d.ts +6 -0
  76. package/dist/components/due-date-calculator/due-date-calculator.d.ts.map +1 -1
  77. package/dist/components/due-date-calculator/index.js +1 -1
  78. package/dist/components/freemium-paywall/index.js +1 -1
  79. package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts +6 -0
  80. package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts.map +1 -1
  81. package/dist/components/gestational-age-calculator/index.js +1 -1
  82. package/dist/components/index.d.ts +1 -1
  83. package/dist/components/index.d.ts.map +1 -1
  84. package/dist/components/patient-search/index.js +1 -1
  85. package/dist/components/payment-form/index.js +1 -1
  86. package/dist/components/payment-form/payment-form.d.ts +24 -2
  87. package/dist/components/payment-form/payment-form.d.ts.map +1 -1
  88. package/dist/components/pdf-viewer/index.js +1 -1
  89. package/dist/components/practice-results/index.js +1 -1
  90. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  91. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts +6 -0
  92. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts.map +1 -1
  93. package/dist/components/search-bar/index.js +1 -1
  94. package/dist/components/search-input/index.js +1 -1
  95. package/dist/components/sign-document/index.js +1 -1
  96. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  97. package/dist/components/social-sign-in-button/index.js +1 -1
  98. package/dist/components/spinner/index.js +1 -1
  99. package/dist/components/spinner/spinner.d.ts +2 -2
  100. package/dist/components/spinner/spinner.d.ts.map +1 -1
  101. package/dist/components/transcript-panel/index.js +1 -1
  102. package/dist/components/unit-converter/index.js +1 -1
  103. package/dist/components/unit-converter/unit-converter.d.ts +6 -0
  104. package/dist/components/unit-converter/unit-converter.d.ts.map +1 -1
  105. package/dist/components/wallet-pay-button/index.js +1 -1
  106. package/dist/i18n/locales/ar.d.ts +1 -1
  107. package/dist/i18n/locales/ar.js +1 -1
  108. package/dist/i18n/locales/ar.js.map +1 -1
  109. package/dist/i18n/locales/de.d.ts +1 -1
  110. package/dist/i18n/locales/de.js +1 -1
  111. package/dist/i18n/locales/de.js.map +1 -1
  112. package/dist/i18n/locales/el.d.ts +1 -1
  113. package/dist/i18n/locales/el.js +1 -1
  114. package/dist/i18n/locales/el.js.map +1 -1
  115. package/dist/i18n/locales/en.d.ts +1 -1
  116. package/dist/i18n/locales/en.js +1 -1
  117. package/dist/i18n/locales/en.js.map +1 -1
  118. package/dist/i18n/locales/es.d.ts +1 -1
  119. package/dist/i18n/locales/es.js +1 -1
  120. package/dist/i18n/locales/es.js.map +1 -1
  121. package/dist/i18n/locales/fr.d.ts +1 -1
  122. package/dist/i18n/locales/fr.js +1 -1
  123. package/dist/i18n/locales/fr.js.map +1 -1
  124. package/dist/i18n/locales/hi.d.ts +1 -1
  125. package/dist/i18n/locales/hi.js +1 -1
  126. package/dist/i18n/locales/hi.js.map +1 -1
  127. package/dist/i18n/locales/it.d.ts +1 -1
  128. package/dist/i18n/locales/it.js +1 -1
  129. package/dist/i18n/locales/it.js.map +1 -1
  130. package/dist/i18n/locales/ja.d.ts +1 -1
  131. package/dist/i18n/locales/ja.js +1 -1
  132. package/dist/i18n/locales/ja.js.map +1 -1
  133. package/dist/i18n/locales/nl.d.ts +1 -1
  134. package/dist/i18n/locales/nl.js +1 -1
  135. package/dist/i18n/locales/nl.js.map +1 -1
  136. package/dist/i18n/locales/pl.d.ts +1 -1
  137. package/dist/i18n/locales/pl.js +1 -1
  138. package/dist/i18n/locales/pl.js.map +1 -1
  139. package/dist/i18n/locales/pt.d.ts +1 -1
  140. package/dist/i18n/locales/pt.js +1 -1
  141. package/dist/i18n/locales/pt.js.map +1 -1
  142. package/dist/i18n/locales/ro.d.ts +1 -1
  143. package/dist/i18n/locales/ro.js +1 -1
  144. package/dist/i18n/locales/ro.js.map +1 -1
  145. package/dist/i18n/locales/ru.d.ts +1 -1
  146. package/dist/i18n/locales/ru.js +1 -1
  147. package/dist/i18n/locales/ru.js.map +1 -1
  148. package/dist/i18n/locales/sq.d.ts +1 -1
  149. package/dist/i18n/locales/sq.js +1 -1
  150. package/dist/i18n/locales/sq.js.map +1 -1
  151. package/dist/i18n/locales/sv.d.ts +1 -1
  152. package/dist/i18n/locales/sv.js +1 -1
  153. package/dist/i18n/locales/sv.js.map +1 -1
  154. package/dist/i18n/locales/tr.d.ts +1 -1
  155. package/dist/i18n/locales/tr.js +1 -1
  156. package/dist/i18n/locales/tr.js.map +1 -1
  157. package/dist/i18n/locales/zh.d.ts +1 -1
  158. package/dist/i18n/locales/zh.js +1 -1
  159. package/dist/i18n/locales/zh.js.map +1 -1
  160. package/dist/index.js +497 -496
  161. package/dist/locales/ar.json +1 -1
  162. package/dist/locales/de.json +1 -1
  163. package/dist/locales/el.json +1 -1
  164. package/dist/locales/en.json +1 -1
  165. package/dist/locales/es.json +1 -1
  166. package/dist/locales/fr.json +1 -1
  167. package/dist/locales/hi.json +1 -1
  168. package/dist/locales/it.json +1 -1
  169. package/dist/locales/ja.json +1 -1
  170. package/dist/locales/nl.json +1 -1
  171. package/dist/locales/pl.json +1 -1
  172. package/dist/locales/pt.json +1 -1
  173. package/dist/locales/ro.json +1 -1
  174. package/dist/locales/ru.json +1 -1
  175. package/dist/locales/sq.json +1 -1
  176. package/dist/locales/sv.json +1 -1
  177. package/dist/locales/tr.json +1 -1
  178. package/dist/locales/zh.json +1 -1
  179. package/dist/patterns/alia-assistant/alia-chat-surface.d.ts.map +1 -1
  180. package/dist/patterns/alia-assistant/alia-types.d.ts +20 -0
  181. package/dist/patterns/alia-assistant/alia-types.d.ts.map +1 -1
  182. package/dist/patterns/alia-assistant/index.js +1 -1
  183. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  184. package/dist/tokens.css +1 -1
  185. package/package.json +1 -1
  186. package/dist/_chunks/alia-sidebar-BpX4z_af.js.map +0 -1
  187. package/dist/_chunks/bmi-calculator-DuVSFDuw.js +0 -259
  188. package/dist/_chunks/bmi-calculator-DuVSFDuw.js.map +0 -1
  189. package/dist/_chunks/cycle-calculator-Dln-y1k_.js.map +0 -1
  190. package/dist/_chunks/dialog-DOYgd75U.js +0 -224
  191. package/dist/_chunks/dialog-DOYgd75U.js.map +0 -1
  192. package/dist/_chunks/due-date-calculator-Cc4dRqTI.js.map +0 -1
  193. package/dist/_chunks/gestational-age-calculator-ZMSrzkRW.js +0 -179
  194. package/dist/_chunks/gestational-age-calculator-ZMSrzkRW.js.map +0 -1
  195. package/dist/_chunks/insert-result-DisOY2G-.js +0 -243
  196. package/dist/_chunks/insert-result-DisOY2G-.js.map +0 -1
  197. package/dist/_chunks/payment-form-BzVsG6Ks.js.map +0 -1
  198. package/dist/_chunks/pregnancy-weight-gain-zZL5Ir2-.js.map +0 -1
  199. package/dist/_chunks/spinner-CCByyvcb.js.map +0 -1
  200. package/dist/_chunks/unit-converter-CuXCXJhK.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "packageVersion": "0.43.0",
3
+ "packageVersion": "0.45.0",
4
4
  "components": [
5
5
  {
6
6
  "kind": "component",
@@ -0,0 +1,193 @@
1
+ /** One coloured zone of the track, filled up to (and excluding) `upTo`. */
2
+ export interface BandedGaugeBand {
3
+ /**
4
+ * Upper boundary of the band on the scale (exclusive). The final band's
5
+ * `upTo` is conventionally the scale `max` so it fills to the bar end.
6
+ */
7
+ upTo: number;
8
+ /**
9
+ * DS token NAME for the band fill — e.g. `'--info'`, `'--success'`,
10
+ * `'--warning-readable'`, `'--destructive'`. Resolved by the surface's
11
+ * `resolve` callback (concrete `rgb()` for the card, `var(<token>)` for the
12
+ * widget). Never a hex/rgb literal in source.
13
+ */
14
+ colorToken: string;
15
+ }
16
+ /**
17
+ * A banded-linear gauge. Every visible string (`valueLabel`, `categoryLabel`,
18
+ * `rangeLabel`, `ariaLabel`) arrives ALREADY TRANSLATED — this module is
19
+ * i18n-agnostic; the BMI calculator supplies `t()`-resolved text.
20
+ */
21
+ export interface BandedGaugeModel {
22
+ /** The true value (printed verbatim even when clamped to a bar end). */
23
+ value: number;
24
+ /** Ascending coloured zones; the last `upTo` should equal `max`. */
25
+ bands: BandedGaugeBand[];
26
+ /** Low end of the drawn scale (maps to the bar's inline start). */
27
+ min: number;
28
+ /** High end of the drawn scale (maps to the bar's inline end). */
29
+ max: number;
30
+ /** Big number rendered above the marker (e.g. `'24.6'`). */
31
+ valueLabel: string;
32
+ /** Band name shown beside the value (e.g. `'normal'`). Pre-translated. */
33
+ categoryLabel?: string;
34
+ /** Range string for the band (e.g. `'18.5–24.9'`). Pre-translated. */
35
+ rangeLabel?: string;
36
+ /** Full accessible name, e.g. `'BMI 24.6 — normal (18.5–24.9)'`. */
37
+ ariaLabel: string;
38
+ /** Threshold tick values drawn under the bar (e.g. `[18.5, 25, 30]`). */
39
+ ticks?: number[];
40
+ }
41
+ /** Drawn BMI scale: 15 (deep underweight) → 40 (deep obesity). */
42
+ export declare const BMI_BANDED_MIN = 15;
43
+ export declare const BMI_BANDED_MAX = 40;
44
+ /** WHO adult cut-offs drawn as ticks under the bar. */
45
+ export declare const BMI_BAND_THRESHOLDS: readonly [18.5, 25, 30];
46
+ /**
47
+ * The four WHO zones as `{ upTo, colorToken }`, plus the scale + ticks, so
48
+ * both the on-screen widget and the insert card share ONE definition:
49
+ *
50
+ * underweight < 18.5 → `--info`
51
+ * normal 18.5–24.9 → `--success`
52
+ * overweight 25–29.9 → `--warning-readable` (contrast-safe orange)
53
+ * obese ≥ 30 → `--destructive` (one obese zone)
54
+ *
55
+ * `--warning-readable` is the kit's contrast-safe orange token — it already
56
+ * resolves correctly per theme (orange-600 in light/non-accessible, `--warning`
57
+ * elsewhere), so NO `document.documentElement` JS override is needed here.
58
+ */
59
+ export declare function bmiBands(): {
60
+ bands: BandedGaugeBand[];
61
+ min: number;
62
+ max: number;
63
+ ticks: number[];
64
+ };
65
+ /** One filled zone rect in card/widget coordinates. */
66
+ export interface BandRect {
67
+ /** Inline-start x of the zone. */
68
+ x: number;
69
+ /** Zone width. */
70
+ w: number;
71
+ /** Token NAME to fill it with (resolved by the surface). */
72
+ colorToken: string;
73
+ }
74
+ /** The value marker: its drawn x plus the clamp envelope it lives in. */
75
+ export interface MarkerGeometry {
76
+ /** Drawn x of the marker (clamped into `[clampedStart, clampedEnd]`). */
77
+ x: number;
78
+ /** Inline-start x the marker can reach (bar start). */
79
+ clampedStart: number;
80
+ /** Inline-end x the marker can reach (bar end). */
81
+ clampedEnd: number;
82
+ /**
83
+ * `'start'` when the true value sits below `min` (marker pinned to the bar
84
+ * start), `'end'` when it sits above `max`, `null` when it's in range. Drives
85
+ * the out-of-range caret/chevron.
86
+ */
87
+ overflow: 'start' | 'end' | null;
88
+ }
89
+ /** A threshold tick: its x plus the scale value it marks. */
90
+ export interface TickGeometry {
91
+ x: number;
92
+ value: number;
93
+ }
94
+ /** Everything the two builders need, derived once. */
95
+ export interface BandedGaugeGeometry {
96
+ /** Outer SVG width. */
97
+ width: number;
98
+ /** Outer SVG height. */
99
+ height: number;
100
+ /** Inline-start x of the bar. */
101
+ barStart: number;
102
+ /** Inline-end x of the bar. */
103
+ barEnd: number;
104
+ /** Bar top y. */
105
+ barY: number;
106
+ /** Bar thickness. */
107
+ barH: number;
108
+ /** Bar corner radius. */
109
+ barRadius: number;
110
+ /** Coloured zones, left → right. */
111
+ bands: BandRect[];
112
+ /** The value marker. */
113
+ marker: MarkerGeometry;
114
+ /** Threshold ticks under the bar. */
115
+ ticks: TickGeometry[];
116
+ /** Baseline y for the value label above the bar. */
117
+ valueLabelY: number;
118
+ /** Baseline y for the tick number labels under the bar. */
119
+ tickLabelY: number;
120
+ /** Pre-translated value label (verbatim from the model). */
121
+ valueLabel: string;
122
+ /** Optional `category (range)` summary shown beside the value. */
123
+ summaryLabel: string;
124
+ /** Full accessible name for `<title>` / `aria-label`. */
125
+ ariaLabel: string;
126
+ }
127
+ /** Layout knobs for {@link computeBandedGaugeGeometry}. */
128
+ export interface BandedGaugeLayoutOptions {
129
+ /** Outer SVG width. */
130
+ width: number;
131
+ /** Outer SVG height. */
132
+ height: number;
133
+ }
134
+ export declare const INSET_X = 14;
135
+ /**
136
+ * Pure geometry pass — the ONE place value→x mapping, band widths, marker
137
+ * clamping, and tick positions are computed. Both the SVG-string builder and
138
+ * the JSX component consume this so the two surfaces never drift.
139
+ *
140
+ * The marker x is CLAMPED to `[barStart, barEnd]`, but `valueLabel` always
141
+ * prints the true value; `marker.overflow` flags an out-of-range value so the
142
+ * surface can draw a caret at the clamped end.
143
+ */
144
+ export declare function computeBandedGaugeGeometry(model: BandedGaugeModel, { width, height }: BandedGaugeLayoutOptions): BandedGaugeGeometry;
145
+ /** A token-name → concrete-colour resolver supplied by each surface. */
146
+ export type ColorResolver = (colorToken: string) => string;
147
+ /** Theme colours + font + resolver for {@link buildBandedGaugeSvgString}. */
148
+ export interface BandedGaugeSvgOptions {
149
+ /**
150
+ * Maps a band token NAME to the colour string painted into the markup. The
151
+ * card passes a probe-resolved `rgb(...)` resolver so the baked PNG carries
152
+ * theme-correct colours; never a literal in source.
153
+ */
154
+ resolve: ColorResolver;
155
+ /** Font family for the text (resolved from the theme, e.g. `--font-sans`). */
156
+ font: string;
157
+ /** Foreground colour for the value label + marker (concrete). */
158
+ fg: string;
159
+ /** Muted colour for the tick numbers + summary (concrete). */
160
+ muted: string;
161
+ /** Track / unfilled-rail colour, also used for tick rules (concrete). */
162
+ track: string;
163
+ }
164
+ export declare function buildBandedGaugeSvgString(geometry: BandedGaugeGeometry, options: BandedGaugeSvgOptions): string;
165
+ export declare const DEFAULT_HEIGHT = 64;
166
+ export interface BandedGaugeProps {
167
+ /** The gauge model (value, bands, scale, pre-translated labels). */
168
+ model: BandedGaugeModel;
169
+ /** SVG width. Defaults to {@link DEFAULT_WIDTH}. */
170
+ width?: number;
171
+ /** SVG height. Defaults to {@link DEFAULT_HEIGHT}. */
172
+ height?: number;
173
+ /** Extra class names on the root `<svg>`. */
174
+ className?: string;
175
+ }
176
+ /**
177
+ * Presentational banded-linear gauge for the on-screen widget. Renders the SAME
178
+ * geometry as {@link buildBandedGaugeSvgString} but as JSX, filling each band
179
+ * with `fill="var(<token>)"` so the live theme resolves the colour (and a theme
180
+ * switch repaints with no re-sample). Visually equivalent to the card string.
181
+ *
182
+ * The track + marker are decorative; the accessible name on the root carries
183
+ * the meaning (`role="img"` + `aria-label`, mirrored in `<title>`). All text in
184
+ * the model is pre-translated by the caller.
185
+ *
186
+ * The measurement axis runs low→high left-to-right regardless of document
187
+ * direction — SVG coordinates are inherently LTR (a `<rect x>` is unaffected by
188
+ * `direction`), and `direction="ltr"` is pinned on the root to keep any nested
189
+ * `<text>` directionality explicit. Logical properties govern the surrounding
190
+ * layout, never this axis.
191
+ */
192
+ export declare const BandedGauge: import("react").ForwardRefExoticComponent<BandedGaugeProps & import("react").RefAttributes<SVGSVGElement>>;
193
+ //# sourceMappingURL=banded-gauge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banded-gauge.d.ts","sourceRoot":"","sources":["../../../src/components/_shared/banded-gauge.tsx"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ export { composeRefs } from './compose-refs';
2
2
  export { isSafeImageSrc, safeImageSrc } from './safe-image-src';
3
3
  export { SafeHtml, sanitiseHtml, type SafeHtmlProfile, type SafeHtmlProps, } from './safe-html';
4
4
  export { groupOptions } from './group-options';
5
- export { InsertButton, buildResultText, buildResultHtml, buildResultCardSvg, svgCardToPngDataUri, type InsertButtonProps, type InsertVariant, type InsertPayload, type InsertMode, type InsertCardData, type InsertCardField, type SvgCardToPngOptions, } from './insert-result';
5
+ export { InsertButton, buildResultText, buildResultHtml, buildResultCardSvg, svgCardToPngDataUri, svgCardToPng, type InsertButtonProps, type InsertVariant, type InsertPayload, type InsertPngResult, type InsertMode, type InsertCardData, type InsertCardField, type InsertCardGauge, type SvgCardToPngOptions, } from './insert-result';
6
6
  export { normalizeDiacritics } from './normalize-diacritics';
7
7
  export { useDebouncedCallback } from './use-debounced-callback';
8
8
  export { useFocusTrap, type UseFocusTrapOptions } from './use-focus-trap';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/_shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,KAAK,SAAS,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/_shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,KAAK,SAAS,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC"}
@@ -1,17 +1,139 @@
1
1
  import { type ButtonProps } from '../button';
2
+ import { type BandedGaugeBand } from './banded-gauge';
2
3
  export type InsertMode = 'text' | 'image' | 'text-image';
3
4
  export type InsertVariant = 'insert' | 'copy';
5
+ /**
6
+ * The handful of lucide glyphs the result-card header can carry. Each maps to a
7
+ * static native-SVG geometry string in {@link ICON_GEOMETRY}, hand-transcribed
8
+ * from lucide-react 1.8.0's `__iconNode` arrays (pinned to that version so the
9
+ * paths match the on-screen React glyphs exactly). We do NOT import the lucide
10
+ * React components into the raster path — they can't be serialised into the
11
+ * `<img>` data-URI — so the geometry is inlined as raw `<path>` elements.
12
+ */
13
+ export type IconKey = 'activity' | 'scale' | 'ruler' | 'calendar' | 'calendar-heart' | 'baby' | 'heart' | 'droplets' | 'clock' | 'tag' | 'trending-up' | 'percent';
4
14
  export interface InsertCardField {
5
15
  label: string;
6
16
  value: string;
17
+ /**
18
+ * Optional leading glyph for the row, drawn at {@link FIELD_ICON_SLOT} in
19
+ * place of the default bullet dot. One of the known {@link IconKey} names; an
20
+ * unknown / omitted value falls back to the muted bullet (fully
21
+ * back-compatible — a field without an icon renders exactly as before).
22
+ */
23
+ icon?: IconKey;
7
24
  }
25
+ /**
26
+ * Radial gauge — a hand-rolled native-SVG donut (track `<circle>` + value arc
27
+ * via `stroke-dasharray`) drawn in the card's inline-end corner box. Survives
28
+ * the `<img>` → `<canvas>` → `toBlob` raster. No `<foreignObject>`, no charting
29
+ * lib.
30
+ *
31
+ * This is the original gauge shape; `variant` is optional and defaults to
32
+ * `'radial'`, so a gauge object authored before the banded variant existed
33
+ * renders exactly as before.
34
+ */
35
+ export interface InsertCardRadialGauge {
36
+ /** Discriminant. Optional — omitted means `'radial'` (back-compat). */
37
+ variant?: 'radial';
38
+ /** Big number rendered in the gauge centre (e.g. `'22.4'`). */
39
+ value: string;
40
+ /**
41
+ * Filled fraction of the ring, `0`–`1`. Takes precedence when supplied;
42
+ * otherwise derived from a `value`/`max` numeric parse (falling back to a
43
+ * full ring when neither is numeric).
44
+ */
45
+ fraction?: number;
46
+ /** Denominator used to derive `fraction` when `fraction` is omitted. */
47
+ max?: number;
48
+ /**
49
+ * Number of evenly-spaced segment gaps to notch into the ring (e.g. `4` for
50
+ * a quartered dial). `0`/omitted draws a continuous arc.
51
+ */
52
+ segments?: number;
53
+ /**
54
+ * DS token NAME for the arc colour — e.g. `'--success'`, `'--warning'`,
55
+ * `'--destructive'`, `'--info'`, or the light-orange overweight override.
56
+ * Resolved to a concrete colour from a probe span at raster time; never a
57
+ * hex literal in source.
58
+ */
59
+ colorToken: string;
60
+ /** Small category label under the value inside the ring. */
61
+ label?: string;
62
+ }
63
+ /**
64
+ * Banded gauge — a full-width horizontal track split into coloured zones with a
65
+ * marker at the value's position (the WHO BMI dial, drawn via the shared
66
+ * `banded-gauge` module). It spans the card edge-to-edge below the field rows.
67
+ * Same raster-safety guarantees as the radial donut: pure native SVG, no
68
+ * `<foreignObject>`.
69
+ *
70
+ * Every visible string (`valueLabel`, `categoryLabel`, `rangeLabel`,
71
+ * `ariaLabel`) arrives ALREADY TRANSLATED — the calculator supplies `t()`-
72
+ * resolved text. Every band's `colorToken` is registered for probe sampling so
73
+ * the baked raster carries theme-correct fills.
74
+ */
75
+ export interface InsertCardBandedGauge {
76
+ /** Discriminant for the banded layout. */
77
+ variant: 'banded';
78
+ /** The true value (printed verbatim even when clamped to a bar end). */
79
+ value: number;
80
+ /** Ascending coloured zones; the last `upTo` should equal `max`. */
81
+ bands: BandedGaugeBand[];
82
+ /** Low end of the drawn scale (maps to the bar's inline start). */
83
+ min: number;
84
+ /** High end of the drawn scale (maps to the bar's inline end). */
85
+ max: number;
86
+ /** Big number rendered above the marker (e.g. `'24.6'`). */
87
+ valueLabel: string;
88
+ /** Band name shown beside the value (e.g. `'normal'`). Pre-translated. */
89
+ categoryLabel?: string;
90
+ /** Range string for the band (e.g. `'18.5–24.9'`). Pre-translated. */
91
+ rangeLabel?: string;
92
+ /** Full accessible name, e.g. `'BMI 24.6 — normal (18.5–24.9)'`. */
93
+ ariaLabel: string;
94
+ /** Threshold tick values drawn under the bar (e.g. `[18.5, 25, 30]`). */
95
+ ticks?: number[];
96
+ }
97
+ /**
98
+ * Optional in-card gauge. A discriminated union on `variant`:
99
+ *
100
+ * • `'radial'` (default when `variant` is omitted) — the corner-box donut.
101
+ * • `'banded'` — a full-width horizontal banded bar below the fields.
102
+ */
103
+ export type InsertCardGauge = InsertCardRadialGauge | InsertCardBandedGauge;
8
104
  export interface InsertCardData {
9
105
  /** Card heading. */
10
106
  title: string;
11
107
  /** Key/value rows. */
12
108
  fields: InsertCardField[];
13
- /** Optional highlighted line (e.g. category / status). */
109
+ /**
110
+ * Optional header glyph drawn inline-end of the title, tinted with the card's
111
+ * category colour ({@link InsertCardData.highlightToken}). One of the known
112
+ * {@link IconKey} names; an unknown / omitted value simply skips the glyph
113
+ * (fully back-compatible — a card without an icon renders as before).
114
+ */
115
+ icon?: IconKey;
116
+ /** Optional highlighted line, rendered as a category chip (pill). */
14
117
  highlight?: string;
118
+ /**
119
+ * DS token NAME for the highlight chip fill. Defaults to the accent token
120
+ * (`--primary`). The chip text uses the matching `<token>-foreground` when it
121
+ * resolves, else falls back to the card background for contrast.
122
+ */
123
+ highlightToken?: string;
124
+ /** Optional radial gauge drawn natively in the card. */
125
+ gauge?: InsertCardGauge;
126
+ /**
127
+ * Optional brand wordmark line printed at the foot of the card.
128
+ *
129
+ * - omitted / `false` → no brand line and no footer at all; the card ends
130
+ * after the fields/gauge.
131
+ * - a string → that wordmark, rendered as a single quiet line (no hairline
132
+ * rule above it).
133
+ *
134
+ * A `brand` passed to {@link SvgCardToPngOptions} overrides this per-render.
135
+ */
136
+ brand?: string | false;
15
137
  }
16
138
  export interface InsertPayload {
17
139
  /** Which button the user chose. */
@@ -38,14 +160,30 @@ export interface InsertPayload {
38
160
  */
39
161
  imageDataUri: string;
40
162
  /**
41
- * Async thunk that resolves the result-card to an `image/png` data URI
42
- * the format intended for editor insertion. PNG is a flat raster: it carries
43
- * no script and survives the rich-text sanitiser that strips SVG. Resolves to
44
- * an empty string for mode `'text'` (no image is built). The PNG is rendered
45
- * lazily so the synchronous payload stays cheap; `await payload.pngDataUri()`
46
- * only when you actually need the raster.
163
+ * Async thunk that resolves the result-card raster the format intended for
164
+ * editor insertion. PNG is a flat raster: it carries no script and survives
165
+ * the rich-text sanitiser that strips SVG.
166
+ *
167
+ * Resolves to `{ dataUri, width, height }` where `width`/`height` are the
168
+ * **logical (un-scaled) CSS pixel** dimensions: set them on the inserted
169
+ * `<img width height>` and the supersampled (`>= 2×`) PNG renders crisp with
170
+ * no consumer-side shim. For mode `'text'` resolves to an empty
171
+ * `{ dataUri: '', width: 0, height: 0 }`. Rendered lazily so the synchronous
172
+ * payload stays cheap; `await payload.pngDataUri()` only when you need it.
173
+ *
174
+ * @since 0.43.0 — this return shape changed from a bare `Promise<string>` to
175
+ * `Promise<{ dataUri; width; height }>` (see CHANGELOG).
47
176
  */
48
- pngDataUri: () => Promise<string>;
177
+ pngDataUri: () => Promise<InsertPngResult>;
178
+ }
179
+ /** Resolved PNG raster plus its logical (un-scaled) `<img>` dimensions. */
180
+ export interface InsertPngResult {
181
+ /** `image/png` data URI, or `''` for the text-only mode. */
182
+ dataUri: string;
183
+ /** Logical (CSS px) width to set on the inserted `<img>`. `0` when empty. */
184
+ width: number;
185
+ /** Logical (CSS px) height to set on the inserted `<img>`. `0` when empty. */
186
+ height: number;
49
187
  }
50
188
  export interface InsertButtonProps {
51
189
  /** Structured result used to build every payload representation. */
@@ -84,10 +222,22 @@ interface ThemeColours {
84
222
  border: string;
85
223
  bg: string;
86
224
  font: string;
225
+ /**
226
+ * Concrete colours resolved from arbitrary DS token names, keyed by the token
227
+ * name the caller passed (e.g. `'--success'`). Populated for the gauge arc
228
+ * and the highlight chip; consulted by {@link buildResultCardSvg} via
229
+ * {@link resolveToken}.
230
+ */
231
+ tokens?: Record<string, string>;
87
232
  }
233
+ /**
234
+ * Internal resolved-colour shape, re-exported for tests that construct a card
235
+ * raster without a live DOM probe. Not part of the public component API.
236
+ */
237
+ export type ThemeColoursForTest = ThemeColours;
88
238
  export declare function buildResultText(card: InsertCardData): string;
89
239
  export declare function buildResultHtml(card: InsertCardData): string;
90
- export declare function buildResultCardSvg(card: InsertCardData, c: ThemeColours): string;
240
+ export declare function buildResultCardSvg(card: InsertCardData, c: ThemeColours, brand?: string | false): string;
91
241
  /** Options for {@link svgCardToPngDataUri}. */
92
242
  export interface SvgCardToPngOptions {
93
243
  /**
@@ -98,9 +248,15 @@ export interface SvgCardToPngOptions {
98
248
  colours?: ThemeColours;
99
249
  /**
100
250
  * Device-pixel scale factor for the raster. `2` yields a retina-sharp PNG.
101
- * Defaults to `1`.
251
+ * Defaults to `Math.max(2, devicePixelRatio)` so the inserted image is crisp
252
+ * without a consumer-side supersampling shim.
102
253
  */
103
254
  scale?: number;
255
+ /**
256
+ * Brand wordmark for the footer. Omitted → the card's own `brand` (then the
257
+ * default `'AlfaDocs'`); a string overrides it; `false` removes it.
258
+ */
259
+ brand?: string | false;
104
260
  }
105
261
  /**
106
262
  * Render an {@link InsertCardData} result card to an `image/png` data URI.
@@ -114,6 +270,13 @@ export interface SvgCardToPngOptions {
114
270
  * called in a non-DOM context or if the SVG fails to decode.
115
271
  */
116
272
  export declare function svgCardToPngDataUri(card: InsertCardData, opts?: SvgCardToPngOptions): Promise<string>;
273
+ /**
274
+ * Like {@link svgCardToPngDataUri} but also returns the **logical (un-scaled)**
275
+ * card dimensions so consumers can size the inserted `<img width height>` and
276
+ * drop their own supersampling shim. The PNG itself is rasterised at `scale`
277
+ * (default `Math.max(2, devicePixelRatio)`) for crispness.
278
+ */
279
+ export declare function svgCardToPng(card: InsertCardData, opts?: SvgCardToPngOptions): Promise<InsertPngResult>;
117
280
  export declare const InsertButton: import("react").ForwardRefExoticComponent<InsertButtonProps & import("react").RefAttributes<HTMLDivElement>>;
118
281
  export {};
119
282
  //# sourceMappingURL=insert-result.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert-result.d.ts","sourceRoot":"","sources":["../../../src/components/_shared/insert-result.tsx"],"names":[],"mappings":"AA8BA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAErD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;OAMG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,IAAI,EAAE,cAAc,CAAC;IACrB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,sEAAsE;IACtE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,wEAAwE;IACxE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,wCAAwC;IACxC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;CAChC;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAuCD,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAK5D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAQ5D;AAYD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,CAAC,EAAE,YAAY,GACd,MAAM,CAgCR;AAgDD,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,cAAc,EACpB,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,MAAM,CAAC,CASjB;AAiFD,eAAO,MAAM,YAAY,8GAqGxB,CAAC"}
1
+ {"version":3,"file":"insert-result.d.ts","sourceRoot":"","sources":["../../../src/components/_shared/insert-result.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { A as e, a as o, b as m } from "../../_chunks/autocomplete-DIgdhCGJ.js";
1
+ import { A as e, a as o, b as m } from "../../_chunks/autocomplete-CDqxB68B.js";
2
2
  export {
3
3
  e as Autocomplete,
4
4
  o as autocompleteAgent,
@@ -27,6 +27,12 @@ export interface BmiCalculatorProps extends VariantProps<typeof rootVariants> {
27
27
  onCopy?: (mode: InsertMode) => void;
28
28
  /** `copy` variant only — fired if the clipboard write can't proceed. */
29
29
  onError?: (error: unknown) => void;
30
+ /**
31
+ * Brand wordmark printed in the inserted/copied result-card footer.
32
+ * Omitted → no brand line (and no footer hairline); a string → that custom
33
+ * brand; `false` → no brand line. Brand is opt-in.
34
+ */
35
+ insertBrand?: string | false;
30
36
  /** Opaque instance id, emitted as `data-component-id`. */
31
37
  id?: string;
32
38
  /** Extra class names on the wrapper. */
@@ -1 +1 @@
1
- {"version":3,"file":"bmi-calculator.d.ts","sourceRoot":"","sources":["../../../src/components/bmi-calculator/bmi-calculator.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAQlE,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,WAAW,EAQjB,MAAM,OAAO,CAAC;AAMf,MAAM,WAAW,SAAS;IACxB,oBAAoB;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,QAAQ,EAAE,WAAW,CAAC;CACvB;AAMD,QAAA,MAAM,YAAY;;8EAQhB,CAAC;AA8FH,MAAM,WAAW,kBAAmB,SAAQ,YAAY,CAAC,OAAO,YAAY,CAAC;IAC3E,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,kFAAkF;IAClF,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IACpD,mFAAmF;IACnF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,sEAAsE;IACtE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,wEAAwE;IACxE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,0DAA0D;IAC1D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,eAAO,MAAM,aAAa,+GAsPzB,CAAC"}
1
+ {"version":3,"file":"bmi-calculator.d.ts","sourceRoot":"","sources":["../../../src/components/bmi-calculator/bmi-calculator.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAOlE,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,WAAW,EAOjB,MAAM,OAAO,CAAC;AAMf,MAAM,WAAW,SAAS;IACxB,oBAAoB;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,QAAQ,EAAE,WAAW,CAAC;CACvB;AAMD,QAAA,MAAM,YAAY;;8EAQhB,CAAC;AAmCH,MAAM,WAAW,kBAAmB,SAAQ,YAAY,CAAC,OAAO,YAAY,CAAC;IAC3E,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,kFAAkF;IAClF,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IACpD,mFAAmF;IACnF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,sEAAsE;IACtE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,wEAAwE;IACxE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,0DAA0D;IAC1D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,eAAO,MAAM,aAAa,+GAwRzB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { B as m } from "../../_chunks/bmi-calculator-DuVSFDuw.js";
1
+ import { B as m } from "../../_chunks/bmi-calculator-CQqXTVNL.js";
2
2
  import { b as e, a as t, c as r, d as T, e as c, f as i, i as b, k as n, l as f } from "../../_chunks/bmi-BxD-tFzU.js";
3
3
  export {
4
4
  m as BmiCalculator,
@@ -1,4 +1,4 @@
1
- import { B as A, C as R, O as a, b as s } from "../../_chunks/booking-CtLwaxkK.js";
1
+ import { B as A, C as R, O as a, b as s } from "../../_chunks/booking-DlDVuWMd.js";
2
2
  export {
3
3
  A as Booking,
4
4
  R as CONFIRMATION_CHANNEL_ORDER,
@@ -1,4 +1,4 @@
1
- import { C as l } from "../../_chunks/calculator-dialog-DdexHrTP.js";
1
+ import { C as l } from "../../_chunks/calculator-dialog-D-nfvteH.js";
2
2
  export {
3
3
  l as CalculatorDialog
4
4
  };
@@ -21,6 +21,12 @@ export interface CycleCalculatorProps extends VariantProps<typeof rootVariants>
21
21
  onCopy?: (mode: InsertMode) => void;
22
22
  /** `copy` variant only — fired if the clipboard write can't proceed. */
23
23
  onError?: (error: unknown) => void;
24
+ /**
25
+ * Brand wordmark printed in the inserted/copied result-card footer.
26
+ * Omitted → no brand line (and no footer hairline); a string → that custom
27
+ * brand; `false` → no brand line. Brand is opt-in.
28
+ */
29
+ insertBrand?: string | false;
24
30
  /** Opaque instance id, emitted as `data-component-id`. */
25
31
  id?: string;
26
32
  /** Extra class names on the wrapper. */
@@ -1 +1 @@
1
- {"version":3,"file":"cycle-calculator.d.ts","sourceRoot":"","sources":["../../../src/components/cycle-calculator/cycle-calculator.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAQlE,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,SAAS,CAAC;AAEjB,QAAA,MAAM,YAAY;;8EAKhB,CAAC;AAEH,MAAM,WAAW,oBAAqB,SAAQ,YAAY,CACxD,OAAO,YAAY,CACpB;IACC,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1D,kFAAkF;IAClF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,sEAAsE;IACtE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,wEAAwE;IACxE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,0DAA0D;IAC1D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,eAAe,iHAqK3B,CAAC"}
1
+ {"version":3,"file":"cycle-calculator.d.ts","sourceRoot":"","sources":["../../../src/components/cycle-calculator/cycle-calculator.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAQlE,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,SAAS,CAAC;AAEjB,QAAA,MAAM,YAAY;;8EAKhB,CAAC;AAUH,MAAM,WAAW,oBAAqB,SAAQ,YAAY,CACxD,OAAO,YAAY,CACpB;IACC,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1D,kFAAkF;IAClF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,sEAAsE;IACtE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,wEAAwE;IACxE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,0DAA0D;IAC1D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,eAAe,iHAwL3B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { C as e, L as l, p as r } from "../../_chunks/cycle-calculator-Dln-y1k_.js";
1
+ import { C as e, L as l, p as r } from "../../_chunks/cycle-calculator-KxA8dqDf.js";
2
2
  export {
3
3
  e as CycleCalculator,
4
4
  l as LUTEAL_PHASE_DAYS,
@@ -1,4 +1,4 @@
1
- import { A as l, B as r, C as t, a as s, D as n, b as d, c as i, d as o, E as C, e as R, I as F, L as g, N as T, f as b, S as u, g as c, h as D, T as m, i as p, j as x, k as f, l as y, m as E, n as S, o as h, U as A, p as L, q as N, u as k } from "../../_chunks/editable-currency-cell-renderer-9jqwDv5x.js";
1
+ import { A as l, B as r, C as t, a as s, D as n, b as d, c as i, d as o, E as C, e as R, I as F, L as g, N as T, f as b, S as u, g as c, h as D, T as m, i as p, j as x, k as f, l as y, m as E, n as S, o as h, U as A, p as L, q as N, u as k } from "../../_chunks/editable-currency-cell-renderer-BEBUQl9P.js";
2
2
  export {
3
3
  l as ActionsCellRenderer,
4
4
  r as BalanceCellRenderer,
@@ -36,6 +36,7 @@ export declare const Dialog: {
36
36
  Header: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
37
37
  Title: import("react").ForwardRefExoticComponent<Omit<RadixDialog.DialogTitleProps & import("react").RefAttributes<HTMLHeadingElement>, "ref"> & import("react").RefAttributes<HTMLHeadingElement>>;
38
38
  Description: import("react").ForwardRefExoticComponent<Omit<RadixDialog.DialogDescriptionProps & import("react").RefAttributes<HTMLParagraphElement>, "ref"> & import("react").RefAttributes<HTMLParagraphElement>>;
39
+ Body: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
39
40
  Footer: import("react").ForwardRefExoticComponent<DialogFooterProps & import("react").RefAttributes<HTMLDivElement>>;
40
41
  Close: import("react").ForwardRefExoticComponent<Omit<RadixDialog.DialogCloseProps & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
41
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/components/dialog/dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAuClE,QAAA,MAAM,eAAe;;8EAWnB,CAAC;AAGH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,eAAgB,SAAQ,wBAAwB,CAC/D,OAAO,WAAW,CAAC,IAAI,CACxB;IACC,+EAA+E;IAC/E,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAgED,MAAM,WAAW,kBACf,SACE,IAAI,CAAC,wBAAwB,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,EAClE,YAAY,CAAC,OAAO,eAAe,CAAC;IACtC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC;IACzC,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,cAAc,CAAC;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AA8GD,UAAU,iBAAkB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAqBD,eAAO,MAAM,MAAM;4EAnMhB,eAAe;;;;gFAAf,eAAe;;;;;;;;;;CA4MhB,CAAC;AAEH,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/components/dialog/dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA0ClE,QAAA,MAAM,eAAe;;8EAUnB,CAAC;AAGH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,eAAgB,SAAQ,wBAAwB,CAC/D,OAAO,WAAW,CAAC,IAAI,CACxB;IACC,+EAA+E;IAC/E,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAgED,MAAM,WAAW,kBACf,SACE,IAAI,CAAC,wBAAwB,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,EAClE,YAAY,CAAC,OAAO,eAAe,CAAC;IACtC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC;IACzC,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,cAAc,CAAC;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAiHD,UAAU,iBAAkB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAqBD,eAAO,MAAM,MAAM;4EAtMhB,eAAe;;;;gFAAf,eAAe;;;;;;;;;;;CAgNhB,CAAC;AAEH,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { D as g, d } from "../../_chunks/dialog-DOYgd75U.js";
1
+ import { D as g, d } from "../../_chunks/dialog-BTpZV6It.js";
2
2
  export {
3
3
  g as Dialog,
4
4
  d as dialogAgent
@@ -21,6 +21,12 @@ export interface DueDateCalculatorProps extends VariantProps<typeof rootVariants
21
21
  onCopy?: (mode: InsertMode) => void;
22
22
  /** `copy` variant only — fired if the clipboard write can't proceed. */
23
23
  onError?: (error: unknown) => void;
24
+ /**
25
+ * Brand wordmark printed in the inserted/copied result-card footer.
26
+ * Omitted → no brand line (and no footer hairline); a string → that custom
27
+ * brand; `false` → no brand line. Brand is opt-in.
28
+ */
29
+ insertBrand?: string | false;
24
30
  /** Opaque instance id, emitted as `data-component-id`. */
25
31
  id?: string;
26
32
  /** Extra class names on the wrapper. */
@@ -1 +1 @@
1
- {"version":3,"file":"due-date-calculator.d.ts","sourceRoot":"","sources":["../../../src/components/due-date-calculator/due-date-calculator.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAQlE,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,aAAa,EAGlB,KAAK,aAAa,EAGnB,MAAM,aAAa,CAAC;AAErB,QAAA,MAAM,YAAY;;8EAKhB,CAAC;AAoBH,MAAM,WAAW,sBAAuB,SAAQ,YAAY,CAC1D,OAAO,YAAY,CACpB;IACC,kDAAkD;IAClD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,iFAAiF;IACjF,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;IACxD,mFAAmF;IACnF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,sEAAsE;IACtE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,wEAAwE;IACxE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,0DAA0D;IAC1D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,mHAuM7B,CAAC"}
1
+ {"version":3,"file":"due-date-calculator.d.ts","sourceRoot":"","sources":["../../../src/components/due-date-calculator/due-date-calculator.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAQlE,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,aAAa,EAGlB,KAAK,aAAa,EAGnB,MAAM,aAAa,CAAC;AAErB,QAAA,MAAM,YAAY;;8EAKhB,CAAC;AAgDH,MAAM,WAAW,sBAAuB,SAAQ,YAAY,CAC1D,OAAO,YAAY,CACpB;IACC,kDAAkD;IAClD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,iFAAiF;IACjF,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;IACxD,mFAAmF;IACnF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,sEAAsE;IACtE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,wEAAwE;IACxE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,0DAA0D;IAC1D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,mHAqN7B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { D as s } from "../../_chunks/due-date-calculator-Cc4dRqTI.js";
1
+ import { D as s } from "../../_chunks/due-date-calculator-mFxpHLml.js";
2
2
  import { D as E, G as o, M as D, T as r, c as T, g as _, t as C } from "../../_chunks/gestation-mWF4AXea.js";
3
3
  export {
4
4
  E as DEFAULT_CYCLE_LENGTH,
@@ -1,4 +1,4 @@
1
- import { F as m, f as l } from "../../_chunks/freemium-paywall-BLXESpH4.js";
1
+ import { F as m, f as l } from "../../_chunks/freemium-paywall-BYist2sJ.js";
2
2
  export {
3
3
  m as FreemiumPaywall,
4
4
  l as freemiumPaywallAgent