diff --git a/package-lock.json b/package-lock.json
index 6810ed19..2cb65cdc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,6 +19,7 @@
"js-yaml": "^4.1.0",
"json-rpc-2.0": "^1.4.1",
"memory-cache": "^0.2.0",
+ "mime": "^3.0.0",
"minecraft-ping-js": "^1.0.2",
"next": "^12.3.1",
"next-i18next": "^12.0.1",
@@ -4166,6 +4167,17 @@
"node": ">=8.6"
}
},
+ "node_modules/mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
diff --git a/package.json b/package.json
index 34493efb..c982d1b4 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,7 @@
"js-yaml": "^4.1.0",
"json-rpc-2.0": "^1.4.1",
"memory-cache": "^0.2.0",
+ "mime": "^3.0.0",
"minecraft-ping-js": "^1.0.2",
"next": "^12.3.1",
"next-i18next": "^12.0.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b1854a23..b6c91a37 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -38,6 +38,9 @@ dependencies:
memory-cache:
specifier: ^0.2.0
version: 0.2.0
+ mime:
+ specifier: ^3.0.0
+ version: 3.0.0
minecraft-ping-js:
specifier: ^1.0.2
version: 1.0.2
@@ -2698,6 +2701,12 @@ packages:
mime-db: 1.52.0
dev: false
+ /mime@3.0.0:
+ resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ dev: false
+
/mimic-fn@2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
diff --git a/src/components/filecontent.jsx b/src/components/filecontent.jsx
new file mode 100644
index 00000000..6db30d18
--- /dev/null
+++ b/src/components/filecontent.jsx
@@ -0,0 +1,12 @@
+import useSWR from "swr"
+
+export default function FileContent({ path, loadingValue, errorValue, emptyValue = '', refresh = 1500 }) {
+ const fetcher = (url) => fetch(url).then((res) => res.text())
+ const { data, error, isLoading } = useSWR(`/api/config/${ path }`, fetcher, {
+ refreshInterval: refresh,
+ })
+
+ if (error) return (errorValue)
+ if (isLoading) return (loadingValue)
+ return (data || emptyValue)
+}
diff --git a/src/components/toggles/color.jsx b/src/components/toggles/color.jsx
index 29e81c0b..d65d5391 100644
--- a/src/components/toggles/color.jsx
+++ b/src/components/toggles/color.jsx
@@ -38,7 +38,7 @@ export default function ColorToggle() {
}
return (
-
+
+
revalidate()} className="text-theme-800 dark:text-theme-200 w-6 h-6 cursor-pointer" />
);
diff --git a/src/components/toggles/theme.jsx b/src/components/toggles/theme.jsx
index 3cc1fccf..d2e3e21b 100644
--- a/src/components/toggles/theme.jsx
+++ b/src/components/toggles/theme.jsx
@@ -11,7 +11,7 @@ export default function ThemeToggle() {
}
return (
-
+
{theme === "dark" ? (
+
{version === "main" || version === "dev" || version === "nightly" ? (
<>
diff --git a/src/components/widgets/datetime/datetime.jsx b/src/components/widgets/datetime/datetime.jsx
index 454d004d..4e1cd6f1 100644
--- a/src/components/widgets/datetime/datetime.jsx
+++ b/src/components/widgets/datetime/datetime.jsx
@@ -30,7 +30,7 @@ export default function DateTime({ options }) {
}, [date, setDate, dateLocale, format]);
return (
-
+
diff --git a/src/components/widgets/glances/glances.jsx b/src/components/widgets/glances/glances.jsx
index 092636aa..69224e60 100644
--- a/src/components/widgets/glances/glances.jsx
+++ b/src/components/widgets/glances/glances.jsx
@@ -3,6 +3,7 @@ import { useContext } from "react";
import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa";
import { FiCpu, FiHardDrive } from "react-icons/fi";
import { useTranslation } from "next-i18next";
+import classNames from "classnames";
import Error from "../widget/error";
import Resource from "../widget/resource";
@@ -32,7 +33,7 @@ export default function Widget({ options }) {
}
if (!data) {
- return
+ return
{ options.cpu !== false && }
{ options.mem !== false && }
{ options.cputemp && }
@@ -69,8 +70,10 @@ export default function Widget({ options }) {
: [data.fs.find((d) => d.mnt_point === options.disk)].filter((d) => d);
}
+ const addedClasses = classNames('information-widget-glances', { 'information-widget-expanded': options.expanded })
+
return (
-
+
{options.cpu !== false &&
+ return
{options.text}
diff --git a/src/components/widgets/kubernetes/kubernetes.jsx b/src/components/widgets/kubernetes/kubernetes.jsx
index 2d1f55e4..2a9da46a 100644
--- a/src/components/widgets/kubernetes/kubernetes.jsx
+++ b/src/components/widgets/kubernetes/kubernetes.jsx
@@ -36,7 +36,7 @@ export default function Widget({ options }) {
}
if (!data) {
- return
+ return
{cluster.show &&
@@ -50,7 +50,7 @@ export default function Widget({ options }) {
;
}
- return
+ return
{cluster.show &&
diff --git a/src/components/widgets/logo/logo.jsx b/src/components/widgets/logo/logo.jsx
index 83432561..70b33ec0 100644
--- a/src/components/widgets/logo/logo.jsx
+++ b/src/components/widgets/logo/logo.jsx
@@ -5,14 +5,14 @@ import ResolvedIcon from "components/resolvedicon"
export default function Logo({ options }) {
return (
-
+
{options.icon ?
-
+
:
// fallback to homepage logo
-
+