koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
81 lines (80 loc) • 1.92 kB
JavaScript
"use client";
import { jsx as b } from "react/jsx-runtime";
import { forwardRef as y, useMemo as N } from "react";
import D from "classnames";
import { useBrowserLocale as w } from "../../internal/locale/useBrowserLocale.js";
import F from "./Number.module.css.js";
import { CurrencyDisplayTypes as L, SignDisplayModes as S, Styles as I, LocaleMatchers as M } from "./types.js";
const h = y(
({
value: i,
className: f,
locale: r,
localeMatcher: t = M["best fit"],
digitsConfig: m = {
integer: {
minimum: 1
},
significant: {
minimum: 1,
maximum: 21
},
fraction: {
maximum: 2
}
},
grouping: e,
signDisplay: n = S.auto,
currency: a,
currencyDisplay: u = L.symbol,
currencySign: s,
...l
}, x) => {
const p = w(), o = r || p, c = N(
() => i ? new Intl.NumberFormat(o, {
localeMatcher: t,
style: I.currency,
minimumIntegerDigits: m.integer?.minimum,
minimumFractionDigits: m.fraction?.minimum,
minimumSignificantDigits: m.significant?.minimum,
maximumSignificantDigits: m.significant?.maximum,
maximumFractionDigits: m.fraction?.maximum,
useGrouping: e,
signDisplay: n,
currency: a,
currencyDisplay: u,
currencySign: s
}).format(i) : "",
[
a,
u,
s,
m.fraction?.maximum,
m.fraction?.minimum,
m.integer?.minimum,
m.significant?.maximum,
m.significant?.minimum,
e,
o,
t,
n,
i
]
);
return i && /* @__PURE__ */ b(
"span",
{
...l,
title: c,
className: D(F.number, f),
ref: x,
children: c
}
);
}
);
h.displayName = "NumberCurrency";
export {
h as NumberCurrency
};
//# sourceMappingURL=NumberCurrency.js.map