@alfadocs/ui-kit 0.44.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.
- package/dist/_chunks/{alia-sidebar-BpX4z_af.js → alia-sidebar-Be8FhKYd.js} +332 -237
- package/dist/_chunks/{autocomplete-DIgdhCGJ.js → autocomplete-CDqxB68B.js} +2 -2
- package/dist/_chunks/bmi-calculator-CQqXTVNL.js +258 -0
- package/dist/_chunks/{booking-CtLwaxkK.js → booking-DlDVuWMd.js} +2 -2
- package/dist/_chunks/{cycle-calculator-ChHBcjet.js → cycle-calculator-KxA8dqDf.js} +31 -20
- package/dist/_chunks/{due-date-calculator-CYXKLoof.js → due-date-calculator-mFxpHLml.js} +51 -39
- package/dist/_chunks/{editable-currency-cell-renderer-9jqwDv5x.js → editable-currency-cell-renderer-BEBUQl9P.js} +2 -2
- package/dist/_chunks/{freemium-paywall-BLXESpH4.js → freemium-paywall-BYist2sJ.js} +2 -2
- package/dist/_chunks/{gestational-age-calculator-sRmoqgVr.js → gestational-age-calculator-gWI_uRA1.js} +52 -39
- package/dist/_chunks/insert-result-C5ABnzDl.js +711 -0
- package/dist/_chunks/{marketplace-app-shell-Dc5cTIt8.js → marketplace-app-shell-Gfsf78ge.js} +2 -2
- package/dist/_chunks/{patient-search-DPe2ZYEL.js → patient-search-CocVcGJ3.js} +2 -2
- package/dist/_chunks/{payment-form-BzVsG6Ks.js → payment-form-DqEiEJRO.js} +247 -195
- package/dist/_chunks/{pdf-viewer-B6MC6VTx.js → pdf-viewer-CWEXTlwq.js} +2 -2
- package/dist/_chunks/{practice-results-CrLpEiiW.js → practice-results-DDi-kvaD.js} +2 -2
- package/dist/_chunks/{pregnancy-weight-gain-C5YhfYnL.js → pregnancy-weight-gain-BtEHaSqy.js} +26 -13
- package/dist/_chunks/{search-bar-CP6wUJFY.js → search-bar-CvN_S0jW.js} +2 -2
- package/dist/_chunks/{search-input-C1C3jQpD.js → search-input-D3aMvi4l.js} +2 -2
- package/dist/_chunks/{sign-document-B-3k_0LO.js → sign-document-BCyLpFHJ.js} +2 -2
- package/dist/_chunks/{sign-in-with-alfadocs-button-DeHBFRNS.js → sign-in-with-alfadocs-button-CuYn_kKP.js} +2 -2
- package/dist/_chunks/{social-sign-in-button-X54ySJr1.js → social-sign-in-button-uJYLM366.js} +2 -2
- package/dist/_chunks/{spinner-CCByyvcb.js → spinner-OjQNn8oN.js} +7 -3
- package/dist/_chunks/{transcript-panel-CR7VY1uw.js → transcript-panel-B4HiC7ed.js} +2 -2
- package/dist/_chunks/{unit-converter-Ds9jalbN.js → unit-converter-u3CwNDpP.js} +63 -52
- package/dist/_chunks/{wallet-pay-button-DK4ESYge.js → wallet-pay-button-DuDPBlCO.js} +2 -2
- package/dist/agent-catalog.json +1 -1
- package/dist/components/_shared/banded-gauge.d.ts +193 -0
- package/dist/components/_shared/insert-result.d.ts +81 -8
- package/dist/components/autocomplete/index.js +1 -1
- package/dist/components/bmi-calculator/bmi-calculator.d.ts +2 -2
- package/dist/components/bmi-calculator/index.js +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/cycle-calculator/cycle-calculator.d.ts +2 -2
- package/dist/components/cycle-calculator/index.js +1 -1
- package/dist/components/data-table/index.js +1 -1
- package/dist/components/due-date-calculator/due-date-calculator.d.ts +2 -2
- package/dist/components/due-date-calculator/index.js +1 -1
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts +2 -2
- package/dist/components/gestational-age-calculator/index.js +1 -1
- package/dist/components/patient-search/index.js +1 -1
- package/dist/components/payment-form/index.js +1 -1
- package/dist/components/payment-form/payment-form.d.ts +24 -2
- package/dist/components/pdf-viewer/index.js +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts +2 -2
- package/dist/components/search-bar/index.js +1 -1
- package/dist/components/search-input/index.js +1 -1
- package/dist/components/sign-document/index.js +1 -1
- package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
- package/dist/components/social-sign-in-button/index.js +1 -1
- package/dist/components/spinner/index.js +1 -1
- package/dist/components/spinner/spinner.d.ts +2 -2
- package/dist/components/transcript-panel/index.js +1 -1
- package/dist/components/unit-converter/index.js +1 -1
- package/dist/components/unit-converter/unit-converter.d.ts +2 -2
- package/dist/components/wallet-pay-button/index.js +1 -1
- package/dist/i18n/locales/ar.d.ts +1 -1
- package/dist/i18n/locales/ar.js +1 -1
- package/dist/i18n/locales/de.d.ts +1 -1
- package/dist/i18n/locales/de.js +1 -1
- package/dist/i18n/locales/el.d.ts +1 -1
- package/dist/i18n/locales/el.js +1 -1
- package/dist/i18n/locales/en.d.ts +1 -1
- package/dist/i18n/locales/en.js +1 -1
- package/dist/i18n/locales/es.d.ts +1 -1
- package/dist/i18n/locales/es.js +1 -1
- package/dist/i18n/locales/fr.d.ts +1 -1
- package/dist/i18n/locales/fr.js +1 -1
- package/dist/i18n/locales/hi.d.ts +1 -1
- package/dist/i18n/locales/hi.js +1 -1
- package/dist/i18n/locales/it.d.ts +1 -1
- package/dist/i18n/locales/it.js +1 -1
- package/dist/i18n/locales/ja.d.ts +1 -1
- package/dist/i18n/locales/ja.js +1 -1
- package/dist/i18n/locales/nl.d.ts +1 -1
- package/dist/i18n/locales/nl.js +1 -1
- package/dist/i18n/locales/pl.d.ts +1 -1
- package/dist/i18n/locales/pl.js +1 -1
- package/dist/i18n/locales/pt.d.ts +1 -1
- package/dist/i18n/locales/pt.js +1 -1
- package/dist/i18n/locales/ro.d.ts +1 -1
- package/dist/i18n/locales/ro.js +1 -1
- package/dist/i18n/locales/ru.d.ts +1 -1
- package/dist/i18n/locales/ru.js +1 -1
- package/dist/i18n/locales/sq.d.ts +1 -1
- package/dist/i18n/locales/sq.js +1 -1
- package/dist/i18n/locales/sv.d.ts +1 -1
- package/dist/i18n/locales/sv.js +1 -1
- package/dist/i18n/locales/tr.d.ts +1 -1
- package/dist/i18n/locales/tr.js +1 -1
- package/dist/i18n/locales/zh.d.ts +1 -1
- package/dist/i18n/locales/zh.js +1 -1
- package/dist/index.js +25 -25
- package/dist/locales/ar.json +1 -1
- package/dist/locales/de.json +1 -1
- package/dist/locales/el.json +1 -1
- package/dist/locales/en.json +1 -1
- package/dist/locales/es.json +1 -1
- package/dist/locales/fr.json +1 -1
- package/dist/locales/hi.json +1 -1
- package/dist/locales/it.json +1 -1
- package/dist/locales/ja.json +1 -1
- package/dist/locales/nl.json +1 -1
- package/dist/locales/pl.json +1 -1
- package/dist/locales/pt.json +1 -1
- package/dist/locales/ro.json +1 -1
- package/dist/locales/ru.json +1 -1
- package/dist/locales/sq.json +1 -1
- package/dist/locales/sv.json +1 -1
- package/dist/locales/tr.json +1 -1
- package/dist/locales/zh.json +1 -1
- package/dist/patterns/alia-assistant/alia-types.d.ts +20 -0
- package/dist/patterns/alia-assistant/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +1 -1
- package/dist/_chunks/bmi-calculator-DFPWL2OJ.js +0 -273
- package/dist/_chunks/insert-result-CoC1oo6R.js +0 -334
|
@@ -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
|
|
@@ -1,16 +1,40 @@
|
|
|
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
|
}
|
|
8
25
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* `<img>` → `<canvas>` → `toBlob` raster. No `<foreignObject>`, no charting
|
|
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.
|
|
12
34
|
*/
|
|
13
|
-
export interface
|
|
35
|
+
export interface InsertCardRadialGauge {
|
|
36
|
+
/** Discriminant. Optional — omitted means `'radial'` (back-compat). */
|
|
37
|
+
variant?: 'radial';
|
|
14
38
|
/** Big number rendered in the gauge centre (e.g. `'22.4'`). */
|
|
15
39
|
value: string;
|
|
16
40
|
/**
|
|
@@ -36,11 +60,59 @@ export interface InsertCardGauge {
|
|
|
36
60
|
/** Small category label under the value inside the ring. */
|
|
37
61
|
label?: string;
|
|
38
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;
|
|
39
104
|
export interface InsertCardData {
|
|
40
105
|
/** Card heading. */
|
|
41
106
|
title: string;
|
|
42
107
|
/** Key/value rows. */
|
|
43
108
|
fields: InsertCardField[];
|
|
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;
|
|
44
116
|
/** Optional highlighted line, rendered as a category chip (pill). */
|
|
45
117
|
highlight?: string;
|
|
46
118
|
/**
|
|
@@ -52,11 +124,12 @@ export interface InsertCardData {
|
|
|
52
124
|
/** Optional radial gauge drawn natively in the card. */
|
|
53
125
|
gauge?: InsertCardGauge;
|
|
54
126
|
/**
|
|
55
|
-
*
|
|
127
|
+
* Optional brand wordmark line printed at the foot of the card.
|
|
56
128
|
*
|
|
57
|
-
* - omitted → the
|
|
58
|
-
*
|
|
59
|
-
* -
|
|
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).
|
|
60
133
|
*
|
|
61
134
|
* A `brand` passed to {@link SvgCardToPngOptions} overrides this per-render.
|
|
62
135
|
*/
|
|
@@ -29,8 +29,8 @@ export interface BmiCalculatorProps extends VariantProps<typeof rootVariants> {
|
|
|
29
29
|
onError?: (error: unknown) => void;
|
|
30
30
|
/**
|
|
31
31
|
* Brand wordmark printed in the inserted/copied result-card footer.
|
|
32
|
-
* Omitted →
|
|
33
|
-
* `false`
|
|
32
|
+
* Omitted → no brand line (and no footer hairline); a string → that custom
|
|
33
|
+
* brand; `false` → no brand line. Brand is opt-in.
|
|
34
34
|
*/
|
|
35
35
|
insertBrand?: string | false;
|
|
36
36
|
/** Opaque instance id, emitted as `data-component-id`. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as m } from "../../_chunks/bmi-calculator-
|
|
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,
|
|
@@ -23,8 +23,8 @@ export interface CycleCalculatorProps extends VariantProps<typeof rootVariants>
|
|
|
23
23
|
onError?: (error: unknown) => void;
|
|
24
24
|
/**
|
|
25
25
|
* Brand wordmark printed in the inserted/copied result-card footer.
|
|
26
|
-
* Omitted →
|
|
27
|
-
* `false`
|
|
26
|
+
* Omitted → no brand line (and no footer hairline); a string → that custom
|
|
27
|
+
* brand; `false` → no brand line. Brand is opt-in.
|
|
28
28
|
*/
|
|
29
29
|
insertBrand?: string | false;
|
|
30
30
|
/** Opaque instance id, emitted as `data-component-id`. */
|
|
@@ -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-
|
|
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,
|
|
@@ -23,8 +23,8 @@ export interface DueDateCalculatorProps extends VariantProps<typeof rootVariants
|
|
|
23
23
|
onError?: (error: unknown) => void;
|
|
24
24
|
/**
|
|
25
25
|
* Brand wordmark printed in the inserted/copied result-card footer.
|
|
26
|
-
* Omitted →
|
|
27
|
-
* `false`
|
|
26
|
+
* Omitted → no brand line (and no footer hairline); a string → that custom
|
|
27
|
+
* brand; `false` → no brand line. Brand is opt-in.
|
|
28
28
|
*/
|
|
29
29
|
insertBrand?: string | false;
|
|
30
30
|
/** Opaque instance id, emitted as `data-component-id`. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as s } from "../../_chunks/due-date-calculator-
|
|
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,
|
|
@@ -29,8 +29,8 @@ export interface GestationalAgeCalculatorProps extends VariantProps<typeof rootV
|
|
|
29
29
|
onError?: (error: unknown) => void;
|
|
30
30
|
/**
|
|
31
31
|
* Brand wordmark printed in the inserted/copied result-card footer.
|
|
32
|
-
* Omitted →
|
|
33
|
-
* `false`
|
|
32
|
+
* Omitted → no brand line (and no footer hairline); a string → that custom
|
|
33
|
+
* brand; `false` → no brand line. Brand is opt-in.
|
|
34
34
|
*/
|
|
35
35
|
insertBrand?: string | false;
|
|
36
36
|
/** Opaque instance id, emitted as `data-component-id`. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P as r, f as s, p as m, a as e, s as n, b as o, c as i } from "../../_chunks/payment-form-
|
|
1
|
+
import { P as r, f as s, p as m, a as e, s as n, b as o, c as i } from "../../_chunks/payment-form-DqEiEJRO.js";
|
|
2
2
|
export {
|
|
3
3
|
r as PaymentForm,
|
|
4
4
|
s as formatPaymentAmount,
|
|
@@ -3,8 +3,30 @@ export type PaymentCurrency = string;
|
|
|
3
3
|
export interface PaymentFormProps {
|
|
4
4
|
/** Opaque instance id — emitted as `data-component-id` for the agent registry. */
|
|
5
5
|
id?: string;
|
|
6
|
-
/**
|
|
7
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Client secret from your server, created via the PaymentIntents API.
|
|
8
|
+
*
|
|
9
|
+
* Omit to use **deferred-intent mode** — the Payment Element renders from
|
|
10
|
+
* just the publishable key (no `clientSecret`, no backend round-trip up
|
|
11
|
+
* front). In deferred mode supply `onCreatePaymentIntent` to actually
|
|
12
|
+
* confirm: your server mints + returns the client secret at submit time.
|
|
13
|
+
*/
|
|
14
|
+
clientSecret?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Deferred-intent setup: `'payment'` collects a charge, `'setup'` saves a
|
|
17
|
+
* method for later. Ignored when `clientSecret` is supplied (the secret's
|
|
18
|
+
* own intent type wins). Defaults to `'payment'`.
|
|
19
|
+
*/
|
|
20
|
+
mode?: 'payment' | 'setup';
|
|
21
|
+
/**
|
|
22
|
+
* Deferred-confirm callback. Called at submit time (after client-side
|
|
23
|
+
* field validation succeeds) so your server can mint a PaymentIntent and
|
|
24
|
+
* return its `client_secret`. The returned secret is used ONLY to confirm
|
|
25
|
+
* and is never logged or sent to any third-party origin. When omitted in
|
|
26
|
+
* deferred mode the form runs in PREVIEW: fields render + validate, but no
|
|
27
|
+
* charge is attempted.
|
|
28
|
+
*/
|
|
29
|
+
onCreatePaymentIntent?: () => Promise<string>;
|
|
8
30
|
/** Stripe publishable key (`pk_test_…` / `pk_live_…`). */
|
|
9
31
|
publishableKey: string;
|
|
10
32
|
/** ISO-4217 currency code (e.g. 'EUR', 'USD', 'JPY'). */
|
|
@@ -21,8 +21,8 @@ export interface PregnancyWeightGainProps extends VariantProps<typeof rootVarian
|
|
|
21
21
|
onError?: (error: unknown) => void;
|
|
22
22
|
/**
|
|
23
23
|
* Brand wordmark printed in the inserted/copied result-card footer.
|
|
24
|
-
* Omitted →
|
|
25
|
-
* `false`
|
|
24
|
+
* Omitted → no brand line (and no footer hairline); a string → that custom
|
|
25
|
+
* brand; `false` → no brand line. Brand is opt-in.
|
|
26
26
|
*/
|
|
27
27
|
insertBrand?: string | false;
|
|
28
28
|
/** Opaque instance id, emitted as `data-component-id`. */
|
|
@@ -2,10 +2,10 @@ import { type HTMLAttributes } from 'react';
|
|
|
2
2
|
import { type VariantProps } from 'class-variance-authority';
|
|
3
3
|
declare const spinnerVariants: (props?: ({
|
|
4
4
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
5
|
-
variant?: "pulse" | "chase" | "prism" | null | undefined;
|
|
5
|
+
variant?: "static" | "pulse" | "chase" | "prism" | null | undefined;
|
|
6
6
|
speed?: "slower" | "slow" | "normal" | "fast" | "faster" | null | undefined;
|
|
7
7
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
|
-
export type SpinnerVariant = 'pulse' | 'chase' | 'prism';
|
|
8
|
+
export type SpinnerVariant = 'pulse' | 'chase' | 'prism' | 'static';
|
|
9
9
|
export type SpinnerSpeed = 'slower' | 'slow' | 'normal' | 'fast' | 'faster';
|
|
10
10
|
export interface SpinnerProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'role' | 'children'>, VariantProps<typeof spinnerVariants> {
|
|
11
11
|
size?: 'sm' | 'md' | 'lg';
|
|
@@ -23,8 +23,8 @@ export interface UnitConverterProps extends VariantProps<typeof rootVariants> {
|
|
|
23
23
|
onError?: (error: unknown) => void;
|
|
24
24
|
/**
|
|
25
25
|
* Brand wordmark printed in the inserted/copied result-card footer.
|
|
26
|
-
* Omitted →
|
|
27
|
-
* `false`
|
|
26
|
+
* Omitted → no brand line (and no footer hairline); a string → that custom
|
|
27
|
+
* brand; `false` → no brand line. Brand is opt-in.
|
|
28
28
|
*/
|
|
29
29
|
insertBrand?: string | false;
|
|
30
30
|
/** Opaque instance id, emitted as `data-component-id`. */
|
|
@@ -1673,7 +1673,7 @@ export declare const arUi: {
|
|
|
1673
1673
|
readonly overweight: "25.0 – 29.9";
|
|
1674
1674
|
readonly obese: "30.0 فأكثر";
|
|
1675
1675
|
};
|
|
1676
|
-
readonly gaugeAria: "مؤشر كتلة الجسم {{bmi}}
|
|
1676
|
+
readonly gaugeAria: "مؤشر كتلة الجسم {{bmi}} — {{category}} ({{range}})";
|
|
1677
1677
|
readonly empty: "أدخل الطول والوزن لحساب مؤشر كتلة الجسم.";
|
|
1678
1678
|
};
|
|
1679
1679
|
readonly dueDateCalculator: {
|
package/dist/i18n/locales/ar.js
CHANGED
|
@@ -1650,7 +1650,7 @@ const e = {
|
|
|
1650
1650
|
overweight: "25.0 – 29.9",
|
|
1651
1651
|
obese: "30.0 فأكثر"
|
|
1652
1652
|
},
|
|
1653
|
-
gaugeAria: "مؤشر كتلة الجسم {{bmi}}
|
|
1653
|
+
gaugeAria: "مؤشر كتلة الجسم {{bmi}} — {{category}} ({{range}})",
|
|
1654
1654
|
empty: "أدخل الطول والوزن لحساب مؤشر كتلة الجسم."
|
|
1655
1655
|
},
|
|
1656
1656
|
dueDateCalculator: {
|
|
@@ -1673,7 +1673,7 @@ export declare const deUi: {
|
|
|
1673
1673
|
readonly overweight: "25,0 – 29,9";
|
|
1674
1674
|
readonly obese: "30,0 und mehr";
|
|
1675
1675
|
};
|
|
1676
|
-
readonly gaugeAria: "Body-Mass-Index {{bmi}}
|
|
1676
|
+
readonly gaugeAria: "Body-Mass-Index {{bmi}} — {{category}} ({{range}})";
|
|
1677
1677
|
readonly empty: "Größe und Gewicht eingeben, um den BMI zu berechnen.";
|
|
1678
1678
|
};
|
|
1679
1679
|
readonly dueDateCalculator: {
|
package/dist/i18n/locales/de.js
CHANGED
|
@@ -1649,7 +1649,7 @@ const e = {
|
|
|
1649
1649
|
overweight: "25,0 – 29,9",
|
|
1650
1650
|
obese: "30,0 und mehr"
|
|
1651
1651
|
},
|
|
1652
|
-
gaugeAria: "Body-Mass-Index {{bmi}}
|
|
1652
|
+
gaugeAria: "Body-Mass-Index {{bmi}} — {{category}} ({{range}})",
|
|
1653
1653
|
empty: "Größe und Gewicht eingeben, um den BMI zu berechnen."
|
|
1654
1654
|
},
|
|
1655
1655
|
dueDateCalculator: {
|