diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index e257cff8..2ce7bd9c 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -3,6 +3,8 @@ import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.tsx"; import { Subtle } from "@components/UI/Typography/Subtle.tsx"; import { useDevice } from "@core/stores/deviceStore.ts"; import type { Page } from "@core/stores/deviceStore.ts"; +import { Spinner } from "@components/UI/Spinner.tsx"; + import { BatteryMediumIcon, CpuIcon, @@ -67,46 +69,55 @@ export const Sidebar = ({ children }: SidebarProps) => { return showSidebar ? (
-
-
- - {myNode?.user?.shortName ?? "UNK"} - - {myNode?.user?.longName ?? "UNK"} + {myNode === undefined ? ( +
+ + Loading device info...
- - -
-
-
- - - {myNode?.deviceMetrics?.batteryLevel - ? myNode?.deviceMetrics?.batteryLevel > 100 - ? "Charging" - : `${myNode?.deviceMetrics?.batteryLevel}%` - : "UNK"} - -
-
- - - {myNode?.deviceMetrics?.voltage?.toPrecision(3) ?? "UNK"} volts - -
-
- - v{myMetadata?.firmwareVersion ?? "UNK"} -
-
+ ) : ( + <> +
+
+ + {myNode.user?.shortName ?? "UNK"} + + {myNode.user?.longName ?? "UNK"} +
+ + +
+
+
+ + + {myNode.deviceMetrics?.batteryLevel + ? myNode.deviceMetrics.batteryLevel > 100 + ? "Charging" + : `${myNode.deviceMetrics.batteryLevel}%` + : "UNK"} + +
+
+ + + {myNode.deviceMetrics?.voltage?.toPrecision(3) ?? "UNK"} volts + +
+
+ + v{myMetadata?.firmwareVersion ?? "UNK"} +
+
+ + )} {pages.map((link) => ( @@ -115,9 +126,12 @@ export const Sidebar = ({ children }: SidebarProps) => { label={link.name} Icon={link.icon} onClick={() => { - setActivePage(link.page); + if (myNode !== undefined) { + setActivePage(link.page); + } }} active={link.page === activePage} + disabled={myNode === undefined} /> ))} diff --git a/src/components/UI/Sidebar/sidebarButton.tsx b/src/components/UI/Sidebar/sidebarButton.tsx index b6444bb8..fa569968 100644 --- a/src/components/UI/Sidebar/sidebarButton.tsx +++ b/src/components/UI/Sidebar/sidebarButton.tsx @@ -7,6 +7,7 @@ export interface SidebarButtonProps { Icon?: LucideIcon; element?; onClick?: () => void; + disabled?: boolean; } export const SidebarButton = ({ @@ -15,12 +16,14 @@ export const SidebarButton = ({ Icon, element, onClick, + disabled = false, }: SidebarButtonProps) => (