From c184c5add628ab9105cef7e7cba8e7253c34aaf5 Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Sun, 29 Jan 2023 19:03:43 +1000 Subject: [PATCH] Cleanup & start transition of moduleConfig --- src/Nav/NavBar.tsx | 37 ++++ src/Nav/PageNav.tsx | 5 - src/PageRouter.tsx | 2 - src/components/CommandPalette/GroupView.tsx | 4 +- src/components/CommandPalette/Index.tsx | 81 ++++---- .../CommandPalette/SearchResult.tsx | 6 +- src/components/Dialog/RebootDialog.tsx | 4 +- src/components/Dialog/ShutdownDialog.tsx | 4 +- src/components/Drawer/index.tsx | 8 +- src/components/NewDevice.tsx | 6 +- src/components/PageComponents/Channel.tsx | 183 ++++++++++-------- src/components/PageComponents/Connect/BLE.tsx | 4 +- .../PageComponents/Connect/HTTP.tsx | 5 +- .../PageComponents/Connect/Serial.tsx | 4 +- src/components/Widgets/DeviceWidget.tsx | 8 +- src/components/form/Button.tsx | 5 +- src/components/form/Form.tsx | 2 +- src/components/generic/TabbedContent.tsx | 6 +- .../generic/VerticalTabbedContent.tsx | 49 +++++ src/core/stores/deviceStore.ts | 1 - src/pages/Channels.tsx | 2 +- src/pages/Config/DeviceConfig.tsx | 70 ++----- src/pages/Config/ModuleConfig.tsx | 52 +++-- src/pages/Config/index.tsx | 6 +- src/pages/Extensions/Environment.tsx | 13 -- src/pages/Extensions/FileBrowser.tsx | 47 ----- src/pages/Extensions/Index.tsx | 35 ---- src/pages/Messages.tsx | 2 +- 28 files changed, 297 insertions(+), 354 deletions(-) create mode 100644 src/Nav/NavBar.tsx create mode 100644 src/components/generic/VerticalTabbedContent.tsx delete mode 100644 src/pages/Extensions/Environment.tsx delete mode 100644 src/pages/Extensions/FileBrowser.tsx delete mode 100644 src/pages/Extensions/Index.tsx diff --git a/src/Nav/NavBar.tsx b/src/Nav/NavBar.tsx new file mode 100644 index 00000000..7c5b1687 --- /dev/null +++ b/src/Nav/NavBar.tsx @@ -0,0 +1,37 @@ +import { Button } from "@app/components/form/Button.js"; +import { ChevronRightIcon, HomeIcon } from "@primer/octicons-react"; + +export interface NavBarProps { + breadcrumb: string[]; + actions?: { + label: string; + onClick: () => void; + }[]; +} + +export const NavBar = ({ breadcrumb, actions }: NavBarProps): JSX.Element => { + return ( +
+
    +
  1. + +
  2. + {breadcrumb.map((breadcrumb, index) => ( +
  3. + + + {breadcrumb} + +
  4. + ))} +
+
+ {actions?.map((Action, index) => ( + + ))} +
+
+ ); +}; diff --git a/src/Nav/PageNav.tsx b/src/Nav/PageNav.tsx index affff920..25fd0848 100755 --- a/src/Nav/PageNav.tsx +++ b/src/Nav/PageNav.tsx @@ -30,11 +30,6 @@ export const PageNav = (): JSX.Element => { icon: MapIcon, page: "map" }, - { - name: "Extensions", - icon: BeakerIcon, - page: "extensions" - }, { name: "Config", icon: Cog8ToothIcon, diff --git a/src/PageRouter.tsx b/src/PageRouter.tsx index 8fc41e73..9fe5d13c 100644 --- a/src/PageRouter.tsx +++ b/src/PageRouter.tsx @@ -1,7 +1,6 @@ import { useDevice } from "@core/providers/useDevice.js"; import { ChannelsPage } from "@pages/Channels.js"; import { ConfigPage } from "@pages/Config/index.js"; -import { ExtensionsPage } from "@pages/Extensions/Index.js"; import { MapPage } from "@pages/Map.js"; import { MessagesPage } from "@pages/Messages.js"; import { PeersPage } from "@pages/Peers.js"; @@ -12,7 +11,6 @@ export const PageRouter = (): JSX.Element => {
{activePage === "messages" && } {activePage === "map" && } - {activePage === "extensions" && } {activePage === "config" && } {activePage === "channels" && } {activePage === "peers" && } diff --git a/src/components/CommandPalette/GroupView.tsx b/src/components/CommandPalette/GroupView.tsx index 1e89bf8d..ec1014c9 100644 --- a/src/components/CommandPalette/GroupView.tsx +++ b/src/components/CommandPalette/GroupView.tsx @@ -9,7 +9,7 @@ export interface GroupViewProps { export const GroupView = ({ group }: GroupViewProps): JSX.Element => { return ( `flex cursor-default select-none items-center rounded-md px-3 py-2 ${ active ? "bg-backgroundPrimary text-textPrimary" : "" @@ -19,7 +19,7 @@ export const GroupView = ({ group }: GroupViewProps): JSX.Element => { {({ active }) => ( <> - {group.name} + {group.label} {active && } )} diff --git a/src/components/CommandPalette/Index.tsx b/src/components/CommandPalette/Index.tsx index 420d1753..7c88f36c 100644 --- a/src/components/CommandPalette/Index.tsx +++ b/src/components/CommandPalette/Index.tsx @@ -40,12 +40,12 @@ import { Blur } from "@components/generic/Blur.js"; import { ThemeController } from "@components/generic/ThemeController.js"; export interface Group { - name: string; + label: string; icon: ComponentType>; commands: Command[]; } export interface Command { - name: string; + label: string; icon: ComponentType>; action?: () => void; subItems?: SubItem[]; @@ -53,7 +53,7 @@ export interface Command { } export interface SubItem { - name: string; + label: string; icon: JSX.Element; action: () => void; } @@ -77,32 +77,25 @@ export const CommandPalette = (): JSX.Element => { const groups: Group[] = [ { - name: "Goto", + label: "Goto", icon: LinkIcon, commands: [ { - name: "Messages", + label: "Messages", icon: InboxIcon, action() { setActivePage("messages"); } }, { - name: "Map", + label: "Map", icon: MapIcon, action() { setActivePage("map"); } }, { - name: "Extensions", - icon: BeakerIcon, - action() { - setActivePage("extensions"); - } - }, - { - name: "Config", + label: "Config", icon: Cog8ToothIcon, action() { setActivePage("config"); @@ -110,14 +103,14 @@ export const CommandPalette = (): JSX.Element => { tags: ["settings"] }, { - name: "Channels", + label: "Channels", icon: Square3Stack3DIcon, action() { setActivePage("channels"); } }, { - name: "Peers", + label: "Peers", icon: UsersIcon, action() { setActivePage("peers"); @@ -126,15 +119,15 @@ export const CommandPalette = (): JSX.Element => { ] }, { - name: "Manage", + label: "Manage", icon: DevicePhoneMobileIcon, commands: [ { - name: "Switch Node", + label: "Switch Node", icon: ArrowsRightLeftIcon, subItems: getDevices().map((device) => { return { - name: + label: device.nodes.find( (n) => n.data.num === device.hardware.myNodeNum )?.data.user?.longName ?? device.hardware.myNodeNum.toString(), @@ -151,7 +144,7 @@ export const CommandPalette = (): JSX.Element => { }) }, { - name: "Connect New Node", + label: "Connect New Node", icon: PlusIcon, action() { setSelectedDevice(0); @@ -160,22 +153,22 @@ export const CommandPalette = (): JSX.Element => { ] }, { - name: "Contextual", + label: "Contextual", icon: CubeTransparentIcon, commands: [ { - name: "QR Code", + label: "QR Code", icon: QrCodeIcon, subItems: [ { - name: "Generator", + label: "Generator", icon: , action() { setDialogOpen("QR", true); } }, { - name: "Import", + label: "Import", icon: , action() { setDialogOpen("import", true); @@ -184,7 +177,7 @@ export const CommandPalette = (): JSX.Element => { ] }, { - name: "Disconnect", + label: "Disconnect", icon: XCircleIcon, action() { void connection?.disconnect(); @@ -193,21 +186,21 @@ export const CommandPalette = (): JSX.Element => { } }, { - name: "Schedule Shutdown", + label: "Schedule Shutdown", icon: PowerIcon, action() { setDialogOpen("shutdown", true); } }, { - name: "Schedule Reboot", + label: "Schedule Reboot", icon: ArrowPathIcon, action() { setDialogOpen("reboot", true); } }, { - name: "Reset Peers", + label: "Reset Peers", icon: TrashIcon, action() { if (connection) { @@ -220,7 +213,7 @@ export const CommandPalette = (): JSX.Element => { } }, { - name: "Factory Reset", + label: "Factory Reset", icon: ArrowPathRoundedSquareIcon, action() { if (connection) { @@ -235,18 +228,18 @@ export const CommandPalette = (): JSX.Element => { ] }, { - name: "Debug", + label: "Debug", icon: BugAntIcon, commands: [ { - name: "Reconfigure", + label: "Reconfigure", icon: ArrowPathIcon, action() { void connection?.configure(); } }, { - name: "[WIP] Clear Messages", + label: "[WIP] Clear Messages", icon: ArchiveBoxXMarkIcon, action() { alert("This feature is not implemented"); @@ -255,22 +248,22 @@ export const CommandPalette = (): JSX.Element => { ] }, { - name: "Application", + label: "Application", icon: WindowIcon, commands: [ { - name: "Toggle Dark Mode", + label: "Toggle Dark Mode", icon: MoonIcon, action() { setDarkMode(!darkMode); } }, { - name: "Accent Color", + label: "Accent Color", icon: SwatchIcon, subItems: [ { - name: "Red", + label: "Red", icon: ( { } }, { - name: "Orange", + label: "Orange", icon: ( { } }, { - name: "Yellow", + label: "Yellow", icon: ( { } }, { - name: "Green", + label: "Green", icon: ( { } }, { - name: "Blue", + label: "Blue", icon: ( { } }, { - name: "Purple", + label: "Purple", icon: ( { } }, { - name: "Pink", + label: "Pink", icon: ( { return { ...group, commands: group.commands.filter((command) => { - const nameIncludes = `${group.name} ${command.name}` + const nameIncludes = `${group.label} ${command.label}` .toLowerCase() .includes(query.toLowerCase()); @@ -399,7 +392,7 @@ export const CommandPalette = (): JSX.Element => { const subItemsInclude = ( command.subItems ?.map((s) => - s.name.toLowerCase().includes(query.toLowerCase()) + s.label.toLowerCase().includes(query.toLowerCase()) ) .filter(Boolean) ?? [] ).length; diff --git a/src/components/CommandPalette/SearchResult.tsx b/src/components/CommandPalette/SearchResult.tsx index 387b713b..cd6a6b01 100644 --- a/src/components/CommandPalette/SearchResult.tsx +++ b/src/components/CommandPalette/SearchResult.tsx @@ -11,7 +11,7 @@ export const SearchResult = ({ group }: SearchResultProps): JSX.Element => {
- {group.name} + {group.label}
{group.commands.map((command, index) => (
@@ -30,7 +30,7 @@ export const SearchResult = ({ group }: SearchResultProps): JSX.Element => { active ? "text-opacity-100" : "" }`} /> - {command.name} + {command.label} {active && ( )} @@ -54,7 +54,7 @@ export const SearchResult = ({ group }: SearchResultProps): JSX.Element => { {({ active }) => ( <> {item.icon} - {item.name} + {item.label} {active && ( )} diff --git a/src/components/Dialog/RebootDialog.tsx b/src/components/Dialog/RebootDialog.tsx index 7ee89420..6dd07766 100644 --- a/src/components/Dialog/RebootDialog.tsx +++ b/src/components/Dialog/RebootDialog.tsx @@ -41,11 +41,13 @@ export const RebootDialog = ({ />
diff --git a/src/components/Dialog/ShutdownDialog.tsx b/src/components/Dialog/ShutdownDialog.tsx index 18b8e1e5..cf628a63 100644 --- a/src/components/Dialog/ShutdownDialog.tsx +++ b/src/components/Dialog/ShutdownDialog.tsx @@ -41,14 +41,14 @@ export const ShutdownDialog = ({ />
diff --git a/src/components/Drawer/index.tsx b/src/components/Drawer/index.tsx index b222b083..2fce27ee 100644 --- a/src/components/Drawer/index.tsx +++ b/src/components/Drawer/index.tsx @@ -10,9 +10,9 @@ export const Drawer = (): JSX.Element => { const [drawerOpen, setDrawerOpen] = useState(false); const tabs: TabType[] = [ - { name: "Notifications", element: Notifications }, - { name: "Metrics", element: Metrics }, - { name: "Sensor", element: Sensor } + { label: "Notifications", element: Notifications }, + { label: "Metrics", element: Metrics }, + { label: "Sensor", element: Sensor } ]; return ( @@ -30,7 +30,7 @@ export const Drawer = (): JSX.Element => { : "border-backgroundPrimary text-textSecondary" }`} > - {tab.name} + {tab.label}
)} diff --git a/src/components/NewDevice.tsx b/src/components/NewDevice.tsx index dd89eb5d..2169fc99 100644 --- a/src/components/NewDevice.tsx +++ b/src/components/NewDevice.tsx @@ -12,7 +12,7 @@ export const NewDevice = () => { const tabs: TabType[] = [ { - name: "Bluetooth", + label: "Bluetooth", element: BLE, disabled: !navigator.bluetooth, disabledMessage: @@ -21,13 +21,13 @@ export const NewDevice = () => { "https://developer.mozilla.org/en-US/docs/Web/API/Web_Serial_API#browser_compatibility" }, { - name: "HTTP", + label: "HTTP", element: HTTP, disabled: false, disabledMessage: "Unsuported connection method" }, { - name: "Serial", + label: "Serial", element: Serial, disabled: !navigator.serial, disabledMessage: diff --git a/src/components/PageComponents/Channel.tsx b/src/components/PageComponents/Channel.tsx index ddc99c70..b9bdfa8d 100644 --- a/src/components/PageComponents/Channel.tsx +++ b/src/components/PageComponents/Channel.tsx @@ -15,6 +15,7 @@ import { } from "@heroicons/react/24/outline"; import { classValidatorResolver } from "@hookform/resolvers/class-validator"; import { Protobuf } from "@meshtastic/meshtasticjs"; +import { NavBar } from "@app/Nav/NavBar.js"; export interface SettingsPanelProps { channel: Protobuf.Channel; @@ -102,92 +103,106 @@ export const Channel = ({ channel }: SettingsPanelProps): JSX.Element => { }); return ( -
- {channel?.index !== 0 && ( - <> - ( - - )} - /> - - - )} - - - ) : ( - - ), - action: () => { - setPskHidden(!pskHidden); - } - }} - error={errors.psk?.message} - {...register("psk")} - /> - ( - - )} + ]} /> - ( - + + + {channel?.index !== 0 && ( + <> + ( + + )} + /> + + )} - /> - + + + ) : ( + + ), + action: () => { + setPskHidden(!pskHidden); + } + }} + error={errors.psk?.message} + {...register("psk")} + /> + ( + + )} + /> + ( + + )} + /> + + ); }; diff --git a/src/components/PageComponents/Connect/BLE.tsx b/src/components/PageComponents/Connect/BLE.tsx index 3bda0902..290b0d3b 100644 --- a/src/components/PageComponents/Connect/BLE.tsx +++ b/src/components/PageComponents/Connect/BLE.tsx @@ -51,7 +51,6 @@ export const BLE = (): JSX.Element => { )} ); diff --git a/src/components/PageComponents/Connect/HTTP.tsx b/src/components/PageComponents/Connect/HTTP.tsx index 0c857f52..0c7f9cd9 100644 --- a/src/components/PageComponents/Connect/HTTP.tsx +++ b/src/components/PageComponents/Connect/HTTP.tsx @@ -71,8 +71,9 @@ export const HTTP = (): JSX.Element => { )} /> - ); diff --git a/src/components/PageComponents/Connect/Serial.tsx b/src/components/PageComponents/Connect/Serial.tsx index 8b6545a9..efe25dc3 100644 --- a/src/components/PageComponents/Connect/Serial.tsx +++ b/src/components/PageComponents/Connect/Serial.tsx @@ -64,14 +64,14 @@ export const Serial = (): JSX.Element => { )} ); diff --git a/src/components/Widgets/DeviceWidget.tsx b/src/components/Widgets/DeviceWidget.tsx index 10950f57..b1eadfe3 100644 --- a/src/components/Widgets/DeviceWidget.tsx +++ b/src/components/Widgets/DeviceWidget.tsx @@ -28,12 +28,8 @@ export const DeviceWidget = ({ {name}
-
diff --git a/src/components/form/Button.tsx b/src/components/form/Button.tsx index f674be69..b129dc30 100644 --- a/src/components/form/Button.tsx +++ b/src/components/form/Button.tsx @@ -1,13 +1,11 @@ -import type { ButtonHTMLAttributes } from "react"; +import type { ButtonHTMLAttributes, ComponentType, SVGProps } from "react"; export interface ButtonProps extends ButtonHTMLAttributes { size?: "sm" | "md" | "lg"; - iconBefore?: JSX.Element; } export const Button = ({ size = "md", - iconBefore, children, disabled, className, @@ -30,7 +28,6 @@ export const Button = ({ {...rest} >
- {iconBefore} {children}
diff --git a/src/components/form/Form.tsx b/src/components/form/Form.tsx index d5ce214a..6cbdc033 100644 --- a/src/components/form/Form.tsx +++ b/src/components/form/Form.tsx @@ -11,7 +11,7 @@ export const Form = ({ }: FormProps): JSX.Element => { return (
JSX.Element; disabled?: boolean; @@ -46,7 +46,7 @@ export const TabbedContent = ({ {entry.icon && (
{entry.icon}
)} - {entry.name} + {entry.label} )} @@ -65,7 +65,7 @@ export const TabbedContent = ({ {tabs.map((entry, index) => ( - + {!entry.disabled ? ( ) : ( diff --git a/src/components/generic/VerticalTabbedContent.tsx b/src/components/generic/VerticalTabbedContent.tsx new file mode 100644 index 00000000..d9010eb4 --- /dev/null +++ b/src/components/generic/VerticalTabbedContent.tsx @@ -0,0 +1,49 @@ +import { Fragment } from "react"; +import { Mono } from "@components/generic/Mono"; +import { Tab } from "@headlessui/react"; + +export interface TabType { + label: string; + element: () => JSX.Element; + disabled?: boolean; +} + +export interface TabbedContentProps { + tabs: TabType[]; +} + +export const VerticalTabbedContent = ({ + tabs +}: TabbedContentProps): JSX.Element => { + return ( + + + {tabs.map((tab, index) => ( + + {({ selected }) => ( +
+ {tab.label} + + 3 + +
+ )} +
+ ))} +
+ + {tabs.map((tab, index) => ( + + + + ))} + +
+ ); +}; diff --git a/src/core/stores/deviceStore.ts b/src/core/stores/deviceStore.ts index e82c0e94..a938c0a8 100644 --- a/src/core/stores/deviceStore.ts +++ b/src/core/stores/deviceStore.ts @@ -8,7 +8,6 @@ import { Protobuf, Types } from "@meshtastic/meshtasticjs"; export type Page = | "messages" | "map" - | "extensions" | "config" | "channels" | "peers"; diff --git a/src/pages/Channels.tsx b/src/pages/Channels.tsx index 74c0408b..466cdb83 100644 --- a/src/pages/Channels.tsx +++ b/src/pages/Channels.tsx @@ -12,7 +12,7 @@ export const ChannelsPage = (): JSX.Element => { const tabs: TabType[] = channels.map((channel) => { return { - name: channel.config.settings?.name.length + label: channel.config.settings?.name.length ? channel.config.settings.name : channel.config.role === Protobuf.Channel_Role.PRIMARY ? "Primary" diff --git a/src/pages/Config/DeviceConfig.tsx b/src/pages/Config/DeviceConfig.tsx index 3dcadfc0..4d81345c 100644 --- a/src/pages/Config/DeviceConfig.tsx +++ b/src/pages/Config/DeviceConfig.tsx @@ -12,11 +12,13 @@ import { Tab } from "@headlessui/react"; import { ChevronRightIcon, HomeIcon } from "@heroicons/react/24/outline"; import { Button } from "@components/form/Button.js"; import { CheckIcon } from "@primer/octicons-react"; +import { NavBar } from "@app/Nav/NavBar.js"; +import { VerticalTabbedContent } from "@app/components/generic/VerticalTabbedContent.js"; export const DeviceConfig = (): JSX.Element => { const { hardware, workingConfig, connection } = useDevice(); - const configSections = [ + const tabs = [ { label: "User", element: User @@ -53,65 +55,23 @@ export const DeviceConfig = (): JSX.Element => { ]; return ( -
-
-
    -
  1. - -
  2. - {["Config", "User"].map((breadcrumb, index) => ( -
  3. - - - {breadcrumb} - -
  4. - ))} -
-
- -
-
+ } + } + ]} + /> - - - {configSections.map((Config, index) => ( - - {({ selected }) => ( -
- {Config.label} - - 3 - -
- )} -
- ))} -
- - {configSections.map((Config, index) => ( - - - - ))} - -
+
); }; diff --git a/src/pages/Config/ModuleConfig.tsx b/src/pages/Config/ModuleConfig.tsx index c9a1cfb0..1f5b84fa 100644 --- a/src/pages/Config/ModuleConfig.tsx +++ b/src/pages/Config/ModuleConfig.tsx @@ -7,10 +7,14 @@ import { RangeTest } from "@components/PageComponents/ModuleConfig/RangeTest.js" import { Serial } from "@components/PageComponents/ModuleConfig/Serial.js"; import { StoreForward } from "@components/PageComponents/ModuleConfig/StoreForward.js"; import { Telemetry } from "@components/PageComponents/ModuleConfig/Telemetry.js"; -import { Tab } from "@headlessui/react"; +import { useDevice } from "@app/core/providers/useDevice.js"; +import { NavBar } from "@app/Nav/NavBar.js"; +import { VerticalTabbedContent } from "@app/components/generic/VerticalTabbedContent.js"; export const ModuleConfig = (): JSX.Element => { - const configSections = [ + const { workingModuleConfig, connection } = useDevice(); + + const tabs = [ { label: "MQTT", element: MQTT @@ -46,31 +50,23 @@ export const ModuleConfig = (): JSX.Element => { ]; return ( - - - {configSections.map((Config, index) => ( - - {({ selected }) => ( -
- {Config.label} -
- )} -
- ))} -
- - {configSections.map((Config, index) => ( - - - - ))} - -
+
+ { + await connection?.setModuleConfig(moduleConfig); + }); + await connection?.commitEditSettings(); + } + } + ]} + /> + + +
); }; diff --git a/src/pages/Config/index.tsx b/src/pages/Config/index.tsx index 7d6ffa6b..b978590c 100644 --- a/src/pages/Config/index.tsx +++ b/src/pages/Config/index.tsx @@ -14,17 +14,17 @@ export const ConfigPage = (): JSX.Element => { const tabs: TabType[] = [ { - name: "Device Config", + label: "Device Config", icon: , element: DeviceConfig }, { - name: "Module Config", + label: "Module Config", icon: , element: ModuleConfig }, { - name: "App Config", + label: "App Config", icon: , element: AppConfig } diff --git a/src/pages/Extensions/Environment.tsx b/src/pages/Extensions/Environment.tsx deleted file mode 100644 index 0a73dac5..00000000 --- a/src/pages/Extensions/Environment.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { useDevice } from "@core/providers/useDevice.js"; - -export const Environment = (): JSX.Element => { - const { nodes } = useDevice(); - - return ( -
- {nodes.map((node, index) => ( -
{JSON.stringify(node.environmentMetrics)}
- ))} -
- ); -}; diff --git a/src/pages/Extensions/FileBrowser.tsx b/src/pages/Extensions/FileBrowser.tsx deleted file mode 100644 index 70d6c27f..00000000 --- a/src/pages/Extensions/FileBrowser.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { useEffect, useState } from "react"; - -export interface File { - nameModified: string; - name: string; - size: number; -} - -export interface Files { - data: { - files: File[]; - fileSystem: { - total: number; - used: number; - free: number; - }; - }; - status: string; -} - -export const FileBrowser = (): JSX.Element => { - const [data, setData] = useState(); - - useEffect(() => { - void fetch("http://meshtastic.local/json/fs/browse/static").then( - async (res) => { - setData((await res.json()) as Files); - } - ); - }, []); - - return ( -
- {data?.data.files.map((file) => ( - - ))} -
- ); -}; diff --git a/src/pages/Extensions/Index.tsx b/src/pages/Extensions/Index.tsx deleted file mode 100644 index a56dbce4..00000000 --- a/src/pages/Extensions/Index.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { TabbedContent, TabType } from "@components/generic/TabbedContent"; -import { useDevice } from "@core/providers/useDevice.js"; -import { - CloudIcon, - DocumentIcon, - SignalIcon -} from "@heroicons/react/24/outline"; -import { Environment } from "@pages/Extensions/Environment.js"; -import { FileBrowser } from "@pages/Extensions/FileBrowser"; - -export const ExtensionsPage = (): JSX.Element => { - const { hardware } = useDevice(); - - const tabs: TabType[] = [ - { - name: "File Browser", - icon: , - element: FileBrowser, - disabled: !hardware.hasWifi - }, - { - name: "Range Test", - icon: , - element: FileBrowser, - disabled: !hardware.hasWifi - }, - { - name: "Environment", - icon: , - element: Environment - } - ]; - - return ; -}; diff --git a/src/pages/Messages.tsx b/src/pages/Messages.tsx index 69517a0d..f38afb11 100644 --- a/src/pages/Messages.tsx +++ b/src/pages/Messages.tsx @@ -9,7 +9,7 @@ export const MessagesPage = (): JSX.Element => { const tabs: TabType[] = channels.map((channel) => { return { - name: channel.config.settings?.name.length + label: channel.config.settings?.name.length ? channel.config.settings?.name : channel.config.index === 0 ? "Primary"