summaryrefslogtreecommitdiff
path: root/src/frontend/components/ProductPrice/ProductPrice.tsx
diff options
context:
space:
mode:
authorSaumit <justsaumit@protonmail.com>2025-09-27 02:14:26 +0530
committerSaumit <justsaumit@protonmail.com>2025-09-27 02:14:26 +0530
commit82e03978b89938219958032efb1448cc76baa181 (patch)
tree626f3e54d52ecd49be0ed3bee30abacc0453d081 /src/frontend/components/ProductPrice/ProductPrice.tsx
Initial snapshot - OpenTelemetry demo 2.1.3 -f
Diffstat (limited to 'src/frontend/components/ProductPrice/ProductPrice.tsx')
-rw-r--r--src/frontend/components/ProductPrice/ProductPrice.tsx31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/frontend/components/ProductPrice/ProductPrice.tsx b/src/frontend/components/ProductPrice/ProductPrice.tsx
new file mode 100644
index 0000000..8dc352a
--- /dev/null
+++ b/src/frontend/components/ProductPrice/ProductPrice.tsx
@@ -0,0 +1,31 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+import { useMemo } from 'react';
+import getSymbolFromCurrency from 'currency-symbol-map';
+import { Money } from '../../protos/demo';
+import { useCurrency } from '../../providers/Currency.provider';
+import { CypressFields } from '../../utils/enums/CypressFields';
+
+interface IProps {
+ price: Money;
+}
+
+const ProductPrice = ({ price: { units, currencyCode, nanos } }: IProps) => {
+ const { selectedCurrency } = useCurrency();
+
+ const currencySymbol = useMemo(
+ () => getSymbolFromCurrency(currencyCode) || selectedCurrency,
+ [currencyCode, selectedCurrency]
+ );
+
+ const total = units + nanos / 1000000000;
+
+ return (
+ <span data-cy={CypressFields.ProductPrice}>
+ {currencySymbol} {total.toFixed(2)}
+ </span>
+ );
+};
+
+export default ProductPrice;