From 032f6bc4be606d231e32959bf78910da4c9659a3 Mon Sep 17 00:00:00 2001 From: Albert Date: Sun, 9 Nov 2025 15:00:52 +0000 Subject: [PATCH] feat: Improve UI navigation and logo visibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update navigation labels: 'Navigation' → 'Ponderants', 'Edit Node' → 'Manual', 'Conversation' → 'Convo', 'Galaxy View' → 'Galaxy' - Improve logo visibility with CSS transform scale(3.5) and higher contrast colors (#E0E0E0, #909296) - Make logo square (viewBox 60x60) for better favicon display - Enhance mobile UX with vertical navigation buttons and text labels - Add 'Profile' label to user menu in navigation - Improve sidebar highlighting with blue color, bold font, and rounded corners - Fix layout issues: adjust chat padding for sidebar (260px) and bottom bar (90px) - Make borders more subtle (#373A40 instead of #dee2e6) - Increase sidebar width to 260px to accommodate logo and text - Remove desktop top bar for cleaner layout - Use IconChartBubbleFilled for galaxy navigation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- app/chat/page.tsx | 58 ++------------- components/AppLayout.tsx | 6 +- components/Navigation/DesktopSidebar.tsx | 55 ++++++++++---- components/Navigation/MobileBottomBar.tsx | 91 +++++++++++++++-------- components/Navigation/MobileHeader.tsx | 22 +++--- public/logo.svg | 14 ++-- 6 files changed, 125 insertions(+), 121 deletions(-) diff --git a/app/chat/page.tsx b/app/chat/page.tsx index 4e9d626..fd71cba 100644 --- a/app/chat/page.tsx +++ b/app/chat/page.tsx @@ -167,57 +167,9 @@ export default function ChatPage() { const canSkipAudio = state.hasTag('canSkipAudio'); return ( - - {/* Fixed Header */} - - - - Convo - {!isMobile && ( - - - - - - - - - - )} - - - - + {/* Scrollable Messages Area */} - + {messages.map((m) => ( diff --git a/components/AppLayout.tsx b/components/AppLayout.tsx index 23caaee..9672ef3 100644 --- a/components/AppLayout.tsx +++ b/components/AppLayout.tsx @@ -26,7 +26,7 @@ export function AppLayout({ children }: { children: React.ReactNode }) { {children} diff --git a/components/Navigation/DesktopSidebar.tsx b/components/Navigation/DesktopSidebar.tsx index f740857..569f139 100644 --- a/components/Navigation/DesktopSidebar.tsx +++ b/components/Navigation/DesktopSidebar.tsx @@ -9,7 +9,7 @@ */ import { Stack, NavLink, Box, Text, Group, Image, Divider } from '@mantine/core'; -import { IconMessageCircle, IconEdit, IconUniverse } from '@tabler/icons-react'; +import { IconMessageCircle, IconEdit, IconChartBubbleFilled } from '@tabler/icons-react'; import { useSelector } from '@xstate/react'; import { useAppMachine } from '@/hooks/useAppMachine'; import { UserMenu } from '@/components/UserMenu'; @@ -46,20 +46,20 @@ export function DesktopSidebar() { style={{ width: '100%', height: '100%', - borderRight: '1px solid #dee2e6', + borderRight: '1px solid #373A40', padding: '1rem', }} > - - Ponderants logo - + + + Ponderants logo + + Ponderants @@ -70,6 +70,13 @@ export function DesktopSidebar() { active={isConvo} onClick={() => handleNavigation('convo')} variant="filled" + color="blue" + styles={{ + root: { + borderRadius: '8px', + fontWeight: isConvo ? 600 : 400, + }, + }} /> handleNavigation('edit')} variant="filled" + color="blue" + styles={{ + root: { + borderRadius: '8px', + fontWeight: isEdit ? 600 : 400, + }, + }} /> } + leftSection={} active={isGalaxy} onClick={() => handleNavigation('galaxy')} variant="filled" + color="blue" + styles={{ + root: { + borderRadius: '8px', + fontWeight: isGalaxy ? 600 : 400, + }, + }} /> - + - - - + } + variant="filled" + /> {/* Development state panel */} {process.env.NODE_ENV === 'development' && ( diff --git a/components/Navigation/MobileBottomBar.tsx b/components/Navigation/MobileBottomBar.tsx index cc79ee8..c68597c 100644 --- a/components/Navigation/MobileBottomBar.tsx +++ b/components/Navigation/MobileBottomBar.tsx @@ -8,16 +8,38 @@ * Highlights the active mode based on app state machine. */ -import { Group, Button, Paper, ActionIcon, Box } from '@mantine/core'; -import { IconMessageCircle, IconEdit, IconUniverse, IconUser } from '@tabler/icons-react'; +import { Group, Button, Paper, ActionIcon, Box, Stack, Text } from '@mantine/core'; +import { IconMessageCircle, IconEdit, IconChartBubbleFilled, IconUser } from '@tabler/icons-react'; import { useSelector } from '@xstate/react'; import { useAppMachine } from '@/hooks/useAppMachine'; import { UserMenu } from '@/components/UserMenu'; +import { useState, useEffect } from 'react'; + +interface UserProfile { + did: string; + handle: string; + displayName: string | null; + avatar: string | null; +} export function MobileBottomBar() { const actor = useAppMachine(); const state = useSelector(actor, (state) => state); const send = actor.send; + const [profile, setProfile] = useState(null); + + useEffect(() => { + fetch('/api/user/profile') + .then((res) => res.json()) + .then((data) => { + if (!data.error) { + setProfile(data); + } + }) + .catch((error) => { + console.error('Failed to fetch profile:', error); + }); + }, []); const handleNavigation = (target: 'convo' | 'edit' | 'galaxy') => { console.log('[Mobile Nav] Navigating to:', target); @@ -52,42 +74,49 @@ export function MobileBottomBar() { left: 0, right: 0, zIndex: 100, - borderTop: '1px solid #dee2e6', + borderTop: '1px solid #373A40', }} > - handleNavigation('convo')} - size={48} - radius="md" - > - - + handleNavigation('convo')} style={{ cursor: 'pointer' }}> + + + + Convo + - handleNavigation('edit')} - size={48} - radius="md" - > - - + handleNavigation('edit')} style={{ cursor: 'pointer' }}> + + + + Manual + - handleNavigation('galaxy')} - size={48} - radius="md" - > - - + handleNavigation('galaxy')} style={{ cursor: 'pointer' }}> + + + + Galaxy + - + + Profile diff --git a/components/Navigation/MobileHeader.tsx b/components/Navigation/MobileHeader.tsx index b5ebdbb..bad05f1 100644 --- a/components/Navigation/MobileHeader.tsx +++ b/components/Navigation/MobileHeader.tsx @@ -6,13 +6,13 @@ * Fixed header for mobile devices showing the Ponderants logo. */ -import { Group, Image, Text, Paper } from '@mantine/core'; +import { Group, Image, Text, Paper, Box } from '@mantine/core'; export function MobileHeader() { return ( - Ponderants logo - + + Ponderants logo + + Ponderants diff --git a/public/logo.svg b/public/logo.svg index 11c07b4..93c6d0f 100644 --- a/public/logo.svg +++ b/public/logo.svg @@ -1,15 +1,15 @@ - - Woven abstract logo of communication waves (Vertical) + + Woven abstract logo of communication waves - + - + - + - + - +