diff --git a/demo-video/public/assets/journey/010-dashboard-full.png b/demo-video/public/assets/journey/010-dashboard-full.png index b8a670a..16cec1c 100644 Binary files a/demo-video/public/assets/journey/010-dashboard-full.png and b/demo-video/public/assets/journey/010-dashboard-full.png differ diff --git a/demo-video/public/assets/journey/020-dashboard-stats.png b/demo-video/public/assets/journey/020-dashboard-stats.png index 0028a2a..16cec1c 100644 Binary files a/demo-video/public/assets/journey/020-dashboard-stats.png and b/demo-video/public/assets/journey/020-dashboard-stats.png differ diff --git a/demo-video/public/assets/journey/030-dashboard-risk-panel.png b/demo-video/public/assets/journey/030-dashboard-risk-panel.png index 209eed3..16cec1c 100644 Binary files a/demo-video/public/assets/journey/030-dashboard-risk-panel.png and b/demo-video/public/assets/journey/030-dashboard-risk-panel.png differ diff --git a/demo-video/public/assets/journey/040-dashboard-with-analysis.png b/demo-video/public/assets/journey/040-dashboard-with-analysis.png index a97a013..16cec1c 100644 Binary files a/demo-video/public/assets/journey/040-dashboard-with-analysis.png and b/demo-video/public/assets/journey/040-dashboard-with-analysis.png differ diff --git a/demo-video/public/assets/journey/050-document-analysis-full.png b/demo-video/public/assets/journey/050-document-analysis-full.png index b8c2963..31e4432 100644 Binary files a/demo-video/public/assets/journey/050-document-analysis-full.png and b/demo-video/public/assets/journey/050-document-analysis-full.png differ diff --git a/demo-video/public/assets/journey/070-clause-type-sidebar.png b/demo-video/public/assets/journey/070-clause-type-sidebar.png index 9f10dfa..ba3f5d3 100644 Binary files a/demo-video/public/assets/journey/070-clause-type-sidebar.png and b/demo-video/public/assets/journey/070-clause-type-sidebar.png differ diff --git a/demo-video/public/assets/journey/080-clause-critical-expanded.png b/demo-video/public/assets/journey/080-clause-critical-expanded.png index 1b51cfd..672eb72 100644 Binary files a/demo-video/public/assets/journey/080-clause-critical-expanded.png and b/demo-video/public/assets/journey/080-clause-critical-expanded.png differ diff --git a/demo-video/public/assets/journey/100-clause-indemnification.png b/demo-video/public/assets/journey/100-clause-indemnification.png index 05491ea..dd81229 100644 Binary files a/demo-video/public/assets/journey/100-clause-indemnification.png and b/demo-video/public/assets/journey/100-clause-indemnification.png differ diff --git a/demo-video/public/assets/journey/110-report-modal.png b/demo-video/public/assets/journey/110-report-modal.png index 61b79de..6067a6d 100644 Binary files a/demo-video/public/assets/journey/110-report-modal.png and b/demo-video/public/assets/journey/110-report-modal.png differ diff --git a/demo-video/public/assets/journey/140-obligations-full.png b/demo-video/public/assets/journey/140-obligations-full.png index da60838..05bce92 100644 Binary files a/demo-video/public/assets/journey/140-obligations-full.png and b/demo-video/public/assets/journey/140-obligations-full.png differ diff --git a/demo-video/public/assets/journey/150-obligations-full-page.png b/demo-video/public/assets/journey/150-obligations-full-page.png index da19261..05bce92 100644 Binary files a/demo-video/public/assets/journey/150-obligations-full-page.png and b/demo-video/public/assets/journey/150-obligations-full-page.png differ diff --git a/demo-video/public/assets/journey/160-deals-list.png b/demo-video/public/assets/journey/160-deals-list.png index c24a8a0..6065c2c 100644 Binary files a/demo-video/public/assets/journey/160-deals-list.png and b/demo-video/public/assets/journey/160-deals-list.png differ diff --git a/demo-video/public/assets/journey/170-deal-detail-risk.png b/demo-video/public/assets/journey/170-deal-detail-risk.png index 90cb5cf..6065c2c 100644 Binary files a/demo-video/public/assets/journey/170-deal-detail-risk.png and b/demo-video/public/assets/journey/170-deal-detail-risk.png differ diff --git a/demo-video/public/assets/journey/180-search-results.png b/demo-video/public/assets/journey/180-search-results.png index 117443a..3524157 100644 Binary files a/demo-video/public/assets/journey/180-search-results.png and b/demo-video/public/assets/journey/180-search-results.png differ diff --git a/demo-video/public/assets/journey/190-analytics-overview.png b/demo-video/public/assets/journey/190-analytics-overview.png index e5ec5d7..85fde42 100644 Binary files a/demo-video/public/assets/journey/190-analytics-overview.png and b/demo-video/public/assets/journey/190-analytics-overview.png differ diff --git a/demo-video/public/assets/journey/200-document-full-page.png b/demo-video/public/assets/journey/200-document-full-page.png index dbe5893..4c3a3ea 100644 Binary files a/demo-video/public/assets/journey/200-document-full-page.png and b/demo-video/public/assets/journey/200-document-full-page.png differ diff --git a/demo-video/public/assets/screenshot-dashboard.png b/demo-video/public/assets/screenshot-dashboard.png index b8dc487..16cec1c 100644 Binary files a/demo-video/public/assets/screenshot-dashboard.png and b/demo-video/public/assets/screenshot-dashboard.png differ diff --git a/demo-video/public/assets/screenshot-deals.png b/demo-video/public/assets/screenshot-deals.png index bcf7fb7..6065c2c 100644 Binary files a/demo-video/public/assets/screenshot-deals.png and b/demo-video/public/assets/screenshot-deals.png differ diff --git a/demo-video/public/assets/screenshot-hero.png b/demo-video/public/assets/screenshot-hero.png index ee51aa9..c73162f 100644 Binary files a/demo-video/public/assets/screenshot-hero.png and b/demo-video/public/assets/screenshot-hero.png differ diff --git a/demo-video/public/assets/screenshot-obligations.png b/demo-video/public/assets/screenshot-obligations.png index 4d7131e..05bce92 100644 Binary files a/demo-video/public/assets/screenshot-obligations.png and b/demo-video/public/assets/screenshot-obligations.png differ diff --git a/demo-video/public/assets/screenshot-risk.png b/demo-video/public/assets/screenshot-risk.png index 43e7200..85fde42 100644 Binary files a/demo-video/public/assets/screenshot-risk.png and b/demo-video/public/assets/screenshot-risk.png differ diff --git a/frontend/src/app/globals.css b/frontend/src/app/globals.css index 354d966..b1130b0 100644 --- a/frontend/src/app/globals.css +++ b/frontend/src/app/globals.css @@ -161,6 +161,17 @@ body { radial-gradient(ellipse at 100% 100%, rgba(201, 162, 39, 0.02) 0%, transparent 50%); } +/* Bottom bar safe area clearance on mobile */ +@media (max-width: 767px) { + body { + padding-bottom: calc(64px + env(safe-area-inset-bottom, 0px)); + } +} + +.safe-area-pb { + padding-bottom: env(safe-area-inset-bottom, 0px); +} + /* Scrollbar styling */ ::-webkit-scrollbar { width: 8px; diff --git a/frontend/src/lib/navigation.tsx b/frontend/src/lib/navigation.tsx index e996450..ddcf6f9 100644 --- a/frontend/src/lib/navigation.tsx +++ b/frontend/src/lib/navigation.tsx @@ -3,8 +3,15 @@ import { usePathname } from 'next/navigation' import Link from 'next/link' import Image from 'next/image' -import { LayoutDashboard, BarChart3, GitCompareArrows, Menu, X, Sun, Moon, ClipboardCheck, Briefcase, Github } from 'lucide-react' -import { useState } from 'react' +import { LayoutDashboard, BarChart3, GitCompareArrows, Sun, Moon, ClipboardCheck, Briefcase } from 'lucide-react' + +function GithubIcon({ className }: { className?: string }) { + return ( + + + + ) +} import { useTheme } from '@/lib/theme' const navLinks = [ @@ -17,106 +24,99 @@ const navLinks = [ export function Navigation({ children }: { children?: React.ReactNode }) { const pathname = usePathname() - const [mobileOpen, setMobileOpen] = useState(false) const { theme, toggleTheme } = useTheme() return ( - - - - {/* Logo */} - - - - BrightClause - Contract Intelligence - - + <> + {/* Top header */} + + + + {/* Logo */} + + + + BrightClause + Contract Intelligence + + - {/* Desktop Nav */} - - {navLinks.map(({ href, label, icon: Icon }) => { - const active = pathname === href || (href !== '/dashboard' && pathname.startsWith(href)) - return ( - - - {label} - - ) - })} - + {/* Desktop Nav */} + + {navLinks.map(({ href, label, icon: Icon }) => { + const active = pathname === href || (href !== '/dashboard' && pathname.startsWith(href)) + return ( + + + {label} + + ) + })} + - {/* Right side actions (passed as children) + mobile toggle */} - - {children} - - - - - {theme === 'dark' ? : } - - setMobileOpen(!mobileOpen)} - className="md:hidden p-2 text-ink-400 hover:text-ink-100 hover:bg-ink-800/50 rounded-lg transition-colors" - aria-label="Toggle menu" - > - {mobileOpen ? : } - + {/* Right side actions */} + + {children} + + + + + {theme === 'dark' ? : } + + + - {/* Mobile Nav */} - {mobileOpen && ( - - {navLinks.map(({ href, label, icon: Icon }) => { - const active = pathname === href || (href !== '/dashboard' && pathname.startsWith(href)) - return ( - setMobileOpen(false)} - className={`flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium transition-colors - ${active - ? 'bg-accent/15 text-accent' - : 'text-ink-400 hover:text-ink-100 hover:bg-ink-800/50' - }`} - > - - {label} - - ) - })} - - )} - - + {/* Mobile bottom bar */} + + + {navLinks.map(({ href, label, icon: Icon }) => { + const active = pathname === href || (href !== '/dashboard' && pathname.startsWith(href)) + return ( + + + {label} + + ) + })} + + + > ) }
Contract Intelligence