diff --git a/apps/desktop-ui/src/app/layout.tsx b/apps/desktop-ui/src/app/layout.tsx index 8dc9555f..18252dda 100644 --- a/apps/desktop-ui/src/app/layout.tsx +++ b/apps/desktop-ui/src/app/layout.tsx @@ -3,6 +3,7 @@ import { ThemeProvider } from "@/components/theme-provider" import { cn } from "@/lib/utils" import { GeistSans } from 'geist/font/sans' import { GeistMono } from 'geist/font/mono' +import { Courier_Prime } from 'next/font/google' import { NextIntlClientProvider } from 'next-intl'; import { getLocale, getMessages } from 'next-intl/server'; @@ -15,6 +16,13 @@ import "./globals.css"; import { siteMetadata } from "@/lib/metadata" +// Brand wordmark only — 700 is the heaviest weight Courier Prime ships. +const courierPrime = Courier_Prime({ + subsets: ['latin'], + weight: ['400', '700'], + variable: '--font-courier-prime', +}) + export const metadata: Metadata = { metadataBase: new URL(siteMetadata.url), title: { @@ -102,7 +110,8 @@ export default async function RootLayout({ return (
{/* Firebase Auth & token refresh */} diff --git a/apps/desktop-ui/src/components/shell/top-bar.tsx b/apps/desktop-ui/src/components/shell/top-bar.tsx index 80589882..10681aeb 100644 --- a/apps/desktop-ui/src/components/shell/top-bar.tsx +++ b/apps/desktop-ui/src/components/shell/top-bar.tsx @@ -1,11 +1,9 @@ 'use client' import { useEffect, useState } from 'react' -import Image from 'next/image' import Link from 'next/link' import { useRouter } from 'next/navigation' import { Settings, LogOut, User as UserIcon, HelpCircle, Moon, Grid2x2Plus } from 'lucide-react' -import { Logo } from '@/components/logo' import { ModeToggle } from '@/components/modeToggle' import { TooltipProvider } from '@/components/ui/tooltip' import { TopNavStrip, NavIcon } from '@/components/shell/top-nav-strip' @@ -77,30 +75,21 @@ export function TopBar() { data-tauri-drag-region className={cn( 'flex h-14 w-full shrink-0 items-center gap-3 border-b border-border bg-[hsl(var(--surface-2))]', - !isTauri ? 'px-4' : isFullscreen ? 'pl-4 pr-6' : 'pl-[74px] pr-6', + !isTauri ? 'px-4' : 'pr-6', )} + style={isTauri ? { paddingLeft: isFullscreen ? 16 : 92 } : undefined} > - {/* Brand → dashboard. Icon (logo mark) + a larger wordmark, sized - independently so the wordmark can grow without the mark. */} + {/* Brand → dashboard. Text wordmark in Courier Prime, no logo mark. */} diff --git a/apps/desktop-ui/src/components/tools/tool-header.tsx b/apps/desktop-ui/src/components/tools/tool-header.tsx index a9b2b818..f8c2fccc 100644 --- a/apps/desktop-ui/src/components/tools/tool-header.tsx +++ b/apps/desktop-ui/src/components/tools/tool-header.tsx @@ -1,10 +1,6 @@ 'use client'; import { CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; -import { getRouteConfig } from '@/lib/route-config'; -import { normalizePinnedToolPath } from '@/lib/pinned-tools-path'; -import { toolCategoryMap } from '@/lib/tool-categories'; -import { categoryAccent } from '@/components/dashboard/types'; import { cn } from '@/lib/utils'; // Pin/favorite toggle removed from tool pages — pinning is managed from the @@ -24,18 +20,14 @@ interface ToolHeaderProps { className?: string; } -export function ToolHeader({ title, description, toolId, className }: ToolHeaderProps) { +export function ToolHeader({ title, description, className }: ToolHeaderProps) { const hasHeading = Boolean(title?.trim()) || Boolean(description?.trim()); // Without a heading the header existed only to hold the pin button — now gone. if (!hasHeading) return null; // Compact single-row header — the tool's identity already lives in the tab - // and sidebar, so the in-page header stays out of the content's way. - const Icon = getRouteConfig(normalizePinnedToolPath(toolId))?.icon; - const slug = toolId.split('/').filter(Boolean).pop() ?? toolId; - const accent = categoryAccent(toolCategoryMap[slug] ?? ''); - + // and sidebar, so the in-page header stays out of the content's way (no icon). return (