- {options.map((i) => (
-
+ {options.map((option) => (
+
))}
diff --git a/src/components/services/item.jsx b/src/components/services/item.jsx
index 1c447597..06cc1629 100644
--- a/src/components/services/item.jsx
+++ b/src/components/services/item.jsx
@@ -33,19 +33,6 @@ export default function Item({ service }) {
}
};
- const cmcValues = [
- { label: t("coinmarketcap.1hour"), value: "1h" },
- { label: t("coinmarketcap.1day"), value: "24h" },
- { label: t("coinmarketcap.7days"), value: "7d" },
- { label: t("coinmarketcap.30days"), value: "30d" },
- ];
-
- const [cmcV, cmcSet] = useState(cmcValues[0]);
-
- const states = {
- coinmarketcap: { value: cmcV, set: cmcSet },
- };
-
const hasLink = service.href && service.href !== "#";
return (
@@ -100,7 +87,6 @@ export default function Item({ service }) {
)}
- {service?.widget?.type === "coinmarketcap" && }
@@ -109,7 +95,7 @@ export default function Item({ service }) {
- {service.widget && }
+ {service.widget && }
diff --git a/src/components/services/widget.jsx b/src/components/services/widget.jsx
index 415b24f3..df124324 100644
--- a/src/components/services/widget.jsx
+++ b/src/components/services/widget.jsx
@@ -48,13 +48,13 @@ const widgetMappings = {
prowlarr: Prowlarr,
};
-export default function Widget({ service, state }) {
+export default function Widget({ service }) {
const { t } = useTranslation("common");
const ServiceWidget = widgetMappings[service.widget.type];
if (ServiceWidget) {
- return ;
+ return ;
}
return (
diff --git a/src/components/services/widgets/service/coinmarketcap.jsx b/src/components/services/widgets/service/coinmarketcap.jsx
index 5262eb02..8fc30f52 100644
--- a/src/components/services/widgets/service/coinmarketcap.jsx
+++ b/src/components/services/widgets/service/coinmarketcap.jsx
@@ -1,14 +1,26 @@
import useSWR from "swr";
+import { useState } from "react";
import { useTranslation } from "react-i18next";
import Widget from "../widget";
import Block from "../block";
+import Dropdown from "components/services/dropdown";
import { formatApiUrl } from "utils/api-helpers";
+import classNames from "classnames";
-export default function CoinMarketCap({ service, state }) {
+export default function CoinMarketCap({ service }) {
const { t } = useTranslation();
+ const dateRangeOptions = [
+ { label: t("coinmarketcap.1hour"), value: "1h" },
+ { label: t("coinmarketcap.1day"), value: "24h" },
+ { label: t("coinmarketcap.7days"), value: "7d" },
+ { label: t("coinmarketcap.30days"), value: "30d" },
+ ];
+
+ const [dateRange, setDateRange] = useState(dateRangeOptions[0].value);
+
const config = service.widget;
const currencyCode = config.currency ?? "USD";
const { symbols } = config;
@@ -29,7 +41,7 @@ export default function CoinMarketCap({ service, state }) {
return ;
}
- if (!statsData) {
+ if (!statsData || !dateRange) {
return (
@@ -41,29 +53,33 @@ export default function CoinMarketCap({ service, state }) {
return (
+
+
+
+
- {symbols.map((key) => (
+ {symbols.map((symbol) => (
-
{data[key].name}
+
{data[symbol].name}
{t("common.number", {
- value: data[key].quote[currencyCode].price,
+ value: data[symbol].quote[currencyCode].price,
style: "currency",
currency: currencyCode,
})}
0
+ data[symbol].quote[currencyCode][`percent_change_${dateRange}`] > 0
? "text-emerald-300"
: "text-rose-300"
}`}
>
- {data[key].quote[currencyCode][`percent_change_${state.value.value}`].toFixed(2)}%
+ {data[symbol].quote[currencyCode][`percent_change_${dateRange}`].toFixed(2)}%
diff --git a/src/components/services/widgets/widget.jsx b/src/components/services/widgets/widget.jsx
index 98e4683e..12202c05 100644
--- a/src/components/services/widgets/widget.jsx
+++ b/src/components/services/widgets/widget.jsx
@@ -7,5 +7,5 @@ export default function Widget({ error = false, children }) {
);
}
- return
{children}
;
+ return
{children}
;
}