diff --git a/frontend/src/components/AppShell.tsx b/frontend/src/components/AppShell.tsx index 558e3e1..72b9cb0 100644 --- a/frontend/src/components/AppShell.tsx +++ b/frontend/src/components/AppShell.tsx @@ -9,6 +9,7 @@ import { ChannelInfoPane } from './ChannelInfoPane'; import { Toaster } from './ui/sonner'; import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from './ui/sheet'; import { + SETTINGS_SECTION_ICONS, SETTINGS_SECTION_LABELS, SETTINGS_SECTION_ORDER, type SettingsSection, @@ -115,20 +116,26 @@ export function AppShell({
- {SETTINGS_SECTION_ORDER.map((section) => ( - - ))} + {SETTINGS_SECTION_ORDER.map((section) => { + const Icon = SETTINGS_SECTION_ICONS[section]; + return ( + + ); + })}
); @@ -216,7 +223,13 @@ export function AppShell({

Radio & Settings - {SETTINGS_SECTION_LABELS[settingsSection]} + + {(() => { + const Icon = SETTINGS_SECTION_ICONS[settingsSection]; + return

diff --git a/frontend/src/components/ChannelInfoPane.tsx b/frontend/src/components/ChannelInfoPane.tsx index 26eeb6d..7c284bd 100644 --- a/frontend/src/components/ChannelInfoPane.tsx +++ b/frontend/src/components/ChannelInfoPane.tsx @@ -1,4 +1,5 @@ import { useEffect, useState } from 'react'; +import { Star } from 'lucide-react'; import { api } from '../api'; import { formatTime } from '../utils/messageParser'; import { isFavorite } from '../utils/favorites'; @@ -125,12 +126,12 @@ export function ChannelInfoPane({ > {isFavorite(favorites, 'channel', channel.key) ? ( <> - +
diff --git a/frontend/src/components/RepeaterDashboard.tsx b/frontend/src/components/RepeaterDashboard.tsx index f118aa2..1982b68 100644 --- a/frontend/src/components/RepeaterDashboard.tsx +++ b/frontend/src/components/RepeaterDashboard.tsx @@ -1,5 +1,6 @@ import { toast } from './ui/sonner'; import { Button } from './ui/button'; +import { Route, Star, Trash2 } from 'lucide-react'; import { RepeaterLogin } from './RepeaterLogin'; import { useRepeaterDashboard } from '../hooks/useRepeaterDashboard'; import { isFavorite } from '../utils/favorites'; @@ -71,23 +72,33 @@ export function RepeaterDashboard({ return (
{/* Header */} -
- - {conversation.name} - { - navigator.clipboard.writeText(conversation.id); - toast.success('Contact key copied!'); - }} - title="Click to copy" - > - {conversation.id} +
+ + + + + {conversation.name} + + { + navigator.clipboard.writeText(conversation.id); + toast.success('Contact key copied!'); + }} + title="Click to copy" + > + {conversation.id} + + + {contact && ( + + + + )} - {contact && }
{loggedIn && ( @@ -102,15 +113,15 @@ export function RepeaterDashboard({ )}
diff --git a/frontend/src/components/SettingsModal.tsx b/frontend/src/components/SettingsModal.tsx index 46c62be..e3a2a78 100644 --- a/frontend/src/components/SettingsModal.tsx +++ b/frontend/src/components/SettingsModal.tsx @@ -7,7 +7,11 @@ import type { RadioConfigUpdate, } from '../types'; import type { LocalLabel } from '../utils/localLabel'; -import { SETTINGS_SECTION_LABELS, type SettingsSection } from './settings/settingsConstants'; +import { + SETTINGS_SECTION_ICONS, + SETTINGS_SECTION_LABELS, + type SettingsSection, +} from './settings/settingsConstants'; import { SettingsRadioSection } from './settings/SettingsRadioSection'; import { SettingsLocalSection } from './settings/SettingsLocalSection'; @@ -138,6 +142,7 @@ export function SettingsModal(props: SettingsModalProps) { const renderSectionHeader = (section: SettingsSection): ReactNode => { if (!showSectionButton) return null; + const Icon = SETTINGS_SECTION_ICONS[section]; return ( {(showSortToggle || unreadCount > 0) && ( @@ -651,7 +665,7 @@ export function Sidebar({ aria-label="New message" className="h-6 w-6 p-0 text-muted-foreground hover:text-foreground transition-colors" > - + +
@@ -672,7 +686,7 @@ export function Sidebar({ title="Clear search" aria-label="Clear search" > - Γ— + )} @@ -696,9 +710,7 @@ export function Sidebar({ onKeyDown={handleKeyboardActivate} onClick={onMarkAllRead} > - +