diff --git a/package.json b/package.json
index 00fd932e..4ad78d8d 100644
--- a/package.json
+++ b/package.json
@@ -11,7 +11,7 @@
"lint:fix": "deno lint --fix src/",
"format": "deno fmt src/",
"dev": "deno task dev:ui",
- "dev:ui": "deno run -A npm:vite dev",
+ "dev:ui": "VITE_APP_VERSION=development deno run -A npm:vite dev",
"test": "deno run -A npm:vitest",
"preview": "deno run -A npm:vite preview",
"package": "gzipper c -i html,js,css,png,ico,svg,webmanifest,txt dist dist/output && tar -cvf dist/build.tar -C ./dist/output/ ."
diff --git a/src/components/DeviceInfoPanel.tsx b/src/components/DeviceInfoPanel.tsx
index b753aaff..0e332f03 100644
--- a/src/components/DeviceInfoPanel.tsx
+++ b/src/components/DeviceInfoPanel.tsx
@@ -2,7 +2,7 @@ import { cn } from "@core/utils/cn.ts";
import {
CpuIcon,
Languages,
- LucideIcon,
+ type LucideIcon,
Palette,
PenLine,
Search as SearchIcon,
@@ -11,7 +11,7 @@ import {
import BatteryStatus from "./BatteryStatus.tsx";
import { Subtle } from "./UI/Typography/Subtle.tsx";
import { Avatar } from "./UI/Avatar.tsx";
-import { DeviceMetrics } from "./types.ts";
+import type { DeviceMetrics } from "./types.ts";
import { Button } from "./UI/Button.tsx";
import React, { Fragment } from "react";
import { useTranslation } from "react-i18next";
@@ -110,131 +110,130 @@ export const DeviceInfoPanel = ({
];
return (
-
-
-
-
- {!isCollapsed && (
-
- {user.longName}
-
- )}
-
-
+ <>
+
+
{!isCollapsed && (
-
+
+ {user.longName}
+
)}
+
-
- {deviceInfoItems.map((item) => {
- const IconComponent = item.icon;
- return (
-
- {IconComponent && (
-
- )}
- {item.customComponent}
- {item.id !== "battery" && (
-
- {item.label}: {item.value}
-
- )}
-
- );
- })}
+ {!isCollapsed && (
+
+ )}
- {!isCollapsed && (
-
+
+ {deviceInfoItems.map((item) => {
+ const IconComponent = item.icon;
+ return (
+
+ {IconComponent && (
+
+ )}
+ {item.customComponent}
+ {item.id !== "battery" && (
+
+ {item.label}: {item.value}
+
+ )}
+
+ );
+ })}
+
-
- {actionButtons.map((buttonItem) => {
- const Icon = buttonItem.icon;
- if (buttonItem.render) {
- return (
-
- {buttonItem.render()}
-
- );
- }
+ {!isCollapsed && (
+
+
+ )}
+
+
+ {actionButtons.map((buttonItem) => {
+ const Icon = buttonItem.icon;
+ if (buttonItem.render) {
return (
-
+ {buttonItem.label}
+
+
+ );
+ })}
-
+ >
);
};
diff --git a/src/components/PageLayout.tsx b/src/components/PageLayout.tsx
index 5d2d9167..a08a2afa 100644
--- a/src/components/PageLayout.tsx
+++ b/src/components/PageLayout.tsx
@@ -111,7 +111,7 @@ export const PageLayout = ({
{rightBar && (
-
+
{myNode === undefined
? (
diff --git a/src/components/UI/Footer.tsx b/src/components/UI/Footer.tsx
index 7d762b21..1a9cf55d 100644
--- a/src/components/UI/Footer.tsx
+++ b/src/components/UI/Footer.tsx
@@ -1,11 +1,13 @@
import { cn } from "@core/utils/cn.ts";
-import { Trans } from "react-i18next";
+import { Trans, useTranslation } from "react-i18next";
type FooterProps = {
className?: string;
};
const Footer = ({ className, ...props }: FooterProps) => {
+ const { t } = useTranslation();
+
return (