diff --git a/next.config.js b/next.config.js index acdf704dc..dae78ca01 100644 --- a/next.config.js +++ b/next.config.js @@ -2,7 +2,6 @@ const { i18n } = require("./next-i18next.config"); /** @type {import('next').NextConfig} */ const nextConfig = { - assetPrefix: ".", reactStrictMode: true, output: "standalone", swcMinify: false, diff --git a/src/components/services/ping.jsx b/src/components/services/ping.jsx index ca2504506..cdaec08d5 100644 --- a/src/components/services/ping.jsx +++ b/src/components/services/ping.jsx @@ -3,7 +3,7 @@ import useSWR from "swr"; export default function Ping({ group, service, style }) { const { t } = useTranslation(); - const { data, error } = useSWR(`api/ping?${new URLSearchParams({ group, service }).toString()}`, { + const { data, error } = useSWR(`/api/ping?${new URLSearchParams({ group, service }).toString()}`, { refreshInterval: 30000, }); diff --git a/src/components/services/status.jsx b/src/components/services/status.jsx index da120ce23..e0f74210f 100644 --- a/src/components/services/status.jsx +++ b/src/components/services/status.jsx @@ -4,7 +4,7 @@ import useSWR from "swr"; export default function Status({ service, style }) { const { t } = useTranslation(); - const { data, error } = useSWR(`api/docker/status/${service.container}/${service.server || ""}`); + const { data, error } = useSWR(`/api/docker/status/${service.container}/${service.server || ""}`); let statusLabel = t("docker.unknown"); let statusTitle = ""; diff --git a/src/components/toggles/revalidate.jsx b/src/components/toggles/revalidate.jsx index c17f4abe3..14fe8b377 100644 --- a/src/components/toggles/revalidate.jsx +++ b/src/components/toggles/revalidate.jsx @@ -2,7 +2,7 @@ import { MdRefresh } from "react-icons/md"; export default function Revalidate() { const revalidate = () => { - fetch("api/revalidate").then((res) => { + fetch("/api/revalidate").then((res) => { if (res.ok) { window.location.reload(); } diff --git a/src/components/version.jsx b/src/components/version.jsx index d2652f965..5c0b82b6c 100644 --- a/src/components/version.jsx +++ b/src/components/version.jsx @@ -12,7 +12,7 @@ export default function Version() { const revision = process.env.NEXT_PUBLIC_REVISION?.length ? process.env.NEXT_PUBLIC_REVISION : "dev"; const version = process.env.NEXT_PUBLIC_VERSION?.length ? process.env.NEXT_PUBLIC_VERSION : "dev"; - const { data: releaseData } = useSWR("api/releases"); + const { data: releaseData } = useSWR("/api/releases"); // use Intl.DateTimeFormat to format the date const formatDate = (date) => { diff --git a/src/components/widgets/glances/glances.jsx b/src/components/widgets/glances/glances.jsx index 4bb8184f0..0834b7756 100644 --- a/src/components/widgets/glances/glances.jsx +++ b/src/components/widgets/glances/glances.jsx @@ -23,7 +23,7 @@ export default function Widget({ options }) { const { settings } = useContext(SettingsContext); const { data, error } = useSWR( - `api/widgets/glances?${new URLSearchParams({ lang: i18n.language, ...options }).toString()}`, + `/api/widgets/glances?${new URLSearchParams({ lang: i18n.language, ...options }).toString()}`, { refreshInterval: 1500, }, diff --git a/src/components/widgets/kubernetes/kubernetes.jsx b/src/components/widgets/kubernetes/kubernetes.jsx index 911280204..f7b101c7d 100644 --- a/src/components/widgets/kubernetes/kubernetes.jsx +++ b/src/components/widgets/kubernetes/kubernetes.jsx @@ -25,7 +25,7 @@ export default function Widget({ options }) { }, }; - const { data, error } = useSWR(`api/widgets/kubernetes?${new URLSearchParams({ lang: i18n.language }).toString()}`, { + const { data, error } = useSWR(`/api/widgets/kubernetes?${new URLSearchParams({ lang: i18n.language }).toString()}`, { refreshInterval: 1500, }); diff --git a/src/components/widgets/longhorn/longhorn.jsx b/src/components/widgets/longhorn/longhorn.jsx index e0872b57f..22047e2c6 100644 --- a/src/components/widgets/longhorn/longhorn.jsx +++ b/src/components/widgets/longhorn/longhorn.jsx @@ -8,7 +8,7 @@ import Node from "./node"; export default function Longhorn({ options }) { const { expanded, total, labels, include, nodes } = options; - const { data, error } = useSWR(`api/widgets/longhorn`, { + const { data, error } = useSWR(`/api/widgets/longhorn`, { refreshInterval: 1500, }); diff --git a/src/components/widgets/openmeteo/openmeteo.jsx b/src/components/widgets/openmeteo/openmeteo.jsx index aaee7918f..8baddfa5d 100644 --- a/src/components/widgets/openmeteo/openmeteo.jsx +++ b/src/components/widgets/openmeteo/openmeteo.jsx @@ -15,7 +15,7 @@ import mapIcon from "../../../utils/weather/openmeteo-condition-map"; function Widget({ options }) { const { t } = useTranslation(); - const { data, error } = useSWR(`api/widgets/openmeteo?${new URLSearchParams({ ...options }).toString()}`); + const { data, error } = useSWR(`/api/widgets/openmeteo?${new URLSearchParams({ ...options }).toString()}`); if (error || data?.error) { return ; diff --git a/src/components/widgets/openweathermap/weather.jsx b/src/components/widgets/openweathermap/weather.jsx index 2c51ba0f3..7b442990c 100644 --- a/src/components/widgets/openweathermap/weather.jsx +++ b/src/components/widgets/openweathermap/weather.jsx @@ -16,7 +16,7 @@ function Widget({ options }) { const { t, i18n } = useTranslation(); const { data, error } = useSWR( - `api/widgets/openweathermap?${new URLSearchParams({ lang: i18n.language, ...options }).toString()}`, + `/api/widgets/openweathermap?${new URLSearchParams({ lang: i18n.language, ...options }).toString()}`, ); if (error || data?.cod === 401 || data?.error) { diff --git a/src/components/widgets/resources/cpu.jsx b/src/components/widgets/resources/cpu.jsx index 4e1128ec1..1963637d7 100644 --- a/src/components/widgets/resources/cpu.jsx +++ b/src/components/widgets/resources/cpu.jsx @@ -8,7 +8,7 @@ import Error from "../widget/error"; export default function Cpu({ expanded, refresh = 1500 }) { const { t } = useTranslation(); - const { data, error } = useSWR(`api/widgets/resources?type=cpu`, { + const { data, error } = useSWR(`/api/widgets/resources?type=cpu`, { refreshInterval: refresh, }); diff --git a/src/components/widgets/resources/cputemp.jsx b/src/components/widgets/resources/cputemp.jsx index 20b377f1b..96f980963 100644 --- a/src/components/widgets/resources/cputemp.jsx +++ b/src/components/widgets/resources/cputemp.jsx @@ -12,7 +12,7 @@ function convertToFahrenheit(t) { export default function CpuTemp({ expanded, units, refresh = 1500 }) { const { t } = useTranslation(); - const { data, error } = useSWR(`api/widgets/resources?type=cputemp`, { + const { data, error } = useSWR(`/api/widgets/resources?type=cputemp`, { refreshInterval: refresh, }); diff --git a/src/components/widgets/resources/disk.jsx b/src/components/widgets/resources/disk.jsx index 0660063c1..4cc86afbf 100644 --- a/src/components/widgets/resources/disk.jsx +++ b/src/components/widgets/resources/disk.jsx @@ -8,7 +8,7 @@ import Error from "../widget/error"; export default function Disk({ options, expanded, refresh = 1500 }) { const { t } = useTranslation(); - const { data, error } = useSWR(`api/widgets/resources?type=disk&target=${options.disk}`, { + const { data, error } = useSWR(`/api/widgets/resources?type=disk&target=${options.disk}`, { refreshInterval: refresh, }); diff --git a/src/components/widgets/resources/memory.jsx b/src/components/widgets/resources/memory.jsx index b25c82615..155b7ecb4 100644 --- a/src/components/widgets/resources/memory.jsx +++ b/src/components/widgets/resources/memory.jsx @@ -8,7 +8,7 @@ import Error from "../widget/error"; export default function Memory({ expanded, refresh = 1500 }) { const { t } = useTranslation(); - const { data, error } = useSWR(`api/widgets/resources?type=memory`, { + const { data, error } = useSWR(`/api/widgets/resources?type=memory`, { refreshInterval: refresh, }); diff --git a/src/components/widgets/resources/uptime.jsx b/src/components/widgets/resources/uptime.jsx index d89c5e8a3..72b4865f0 100644 --- a/src/components/widgets/resources/uptime.jsx +++ b/src/components/widgets/resources/uptime.jsx @@ -8,7 +8,7 @@ import Error from "../widget/error"; export default function Uptime({ refresh = 1500 }) { const { t } = useTranslation(); - const { data, error } = useSWR(`api/widgets/resources?type=uptime`, { + const { data, error } = useSWR(`/api/widgets/resources?type=uptime`, { refreshInterval: refresh, }); diff --git a/src/components/widgets/weather/weather.jsx b/src/components/widgets/weather/weather.jsx index c6ea27671..08074ee5f 100644 --- a/src/components/widgets/weather/weather.jsx +++ b/src/components/widgets/weather/weather.jsx @@ -16,7 +16,7 @@ function Widget({ options }) { const { t, i18n } = useTranslation(); const { data, error } = useSWR( - `api/widgets/weather?${new URLSearchParams({ lang: i18n.language, ...options }).toString()}`, + `/api/widgets/weather?${new URLSearchParams({ lang: i18n.language, ...options }).toString()}`, ); if (error || data?.error) { diff --git a/src/pages/_document.jsx b/src/pages/_document.jsx index 0698f6caa..c9a6c29e1 100644 --- a/src/pages/_document.jsx +++ b/src/pages/_document.jsx @@ -9,8 +9,8 @@ export default function Document() { content="A highly customizable homepage (or startpage / application dashboard) with Docker and service API integrations." /> - - + +
diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 5053e0878..4b922ccfe 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -56,10 +56,10 @@ export async function getStaticProps() { props: { initialSettings: settings, fallback: { - "api/services": services, - "api/bookmarks": bookmarks, - "api/widgets": widgets, - "api/hash": false, + "/api/services": services, + "/api/bookmarks": bookmarks, + "/api/widgets": widgets, + "/api/hash": false, }, ...(await serverSideTranslations(settings.language ?? "en")), }, @@ -72,10 +72,10 @@ export async function getStaticProps() { props: { initialSettings: {}, fallback: { - "api/services": [], - "api/bookmarks": [], - "api/widgets": [], - "api/hash": false, + "/api/services": [], + "/api/bookmarks": [], + "/api/widgets": [], + "/api/hash": false, }, ...(await serverSideTranslations("en")), }, @@ -86,8 +86,8 @@ export async function getStaticProps() { function Index({ initialSettings, fallback }) { const windowFocused = useWindowFocus(); const [stale, setStale] = useState(false); - const { data: errorsData } = useSWR("api/validate"); - const { data: hashData, mutate: mutateHash } = useSWR("api/hash"); + const { data: errorsData } = useSWR("/api/validate"); + const { data: hashData, mutate: mutateHash } = useSWR("/api/hash"); useEffect(() => { if (windowFocused) { @@ -108,7 +108,7 @@ function Index({ initialSettings, fallback }) { setStale(true); localStorage.setItem("hash", hashData.hash); - fetch("api/revalidate").then((res) => { + fetch("/api/revalidate").then((res) => { if (res.ok) { window.location.reload(); } @@ -179,9 +179,9 @@ function Home({ initialSettings }) { setSettings(initialSettings); }, [initialSettings, setSettings]); - const { data: services } = useSWR("api/services"); - const { data: bookmarks } = useSWR("api/bookmarks"); - const { data: widgets } = useSWR("api/widgets"); + const { data: services } = useSWR("/api/services"); + const { data: bookmarks } = useSWR("/api/bookmarks"); + const { data: widgets } = useSWR("/api/widgets"); const servicesAndBookmarks = [ ...services.map((sg) => sg.services).flat(), @@ -368,17 +368,17 @@ function Home({ initialSettings }) { ) : ( <> - - - - + + + + )} - + - +