Skip to content

Commit 33facff

Browse files
committed
feat: update logo usage across components to use light variant and enhance Logo component release:patch
1 parent 776828b commit 33facff

9 files changed

Lines changed: 59 additions & 71 deletions

File tree

‎README.md‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -342,19 +342,19 @@ pnpm dev
342342
### MVP (v1.0)
343343

344344
- [x] Documentation and architecture
345-
- [ ] Monorepo setup
346-
- [ ] Marketing website
347-
- [ ] Desktop host app
348-
- [ ] PWA viewer
349-
- [ ] Screen sharing
350-
- [ ] Remote control
351-
- [ ] Package manager distribution
345+
- [x] Monorepo setup
346+
- [x] Marketing website
347+
- [x] Desktop host app
348+
- [x] PWA viewer
349+
- [x] Screen sharing
350+
- [x] Remote control
351+
- [x] Package manager distribution
352+
- [x] Multi-viewer support (up to 5 for p2p, 100k for SNF)
353+
- [x] Session recording
354+
- [x] Chat and annotations
352355

353356
### Future
354357

355-
- [ ] Multi-viewer support (up to 5)
356-
- [ ] Session recording
357-
- [ ] Chat and annotations
358358
- [ ] File transfer
359359
- [ ] Mobile viewer app
360360

‎apps/desktop/src/renderer/components/auth/LoginForm.tsx‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,11 @@ export function LoginForm() {
6464
<Card className="w-full max-w-md border-border">
6565
<CardHeader className="space-y-1 text-center">
6666
<div className="mb-4 flex justify-center">
67-
<img src={`${import.meta.env.BASE_URL}logo.svg`} alt="PairUX" className="h-12 w-12" />
67+
<img
68+
src={`${import.meta.env.BASE_URL}logo.light.svg`}
69+
alt="PairUX"
70+
className="h-11 w-auto"
71+
/>
6872
</div>
6973
<CardTitle className="text-2xl font-semibold">Welcome back</CardTitle>
7074
<CardDescription>Sign in to your PairUX account</CardDescription>

‎apps/desktop/src/renderer/components/layout/TitleBar.tsx‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ export function TitleBar() {
2323
} pr-4`}
2424
>
2525
<div className="no-drag flex items-center gap-2">
26-
<img src={`${import.meta.env.BASE_URL}logo.svg`} alt="PairUX" className="h-6 w-auto" />
26+
<img
27+
src={`${import.meta.env.BASE_URL}logo.light.svg`}
28+
alt="PairUX"
29+
className="h-7 w-auto"
30+
/>
2731
</div>
2832

2933
<div className="flex-1" />

‎apps/web/src/app/host/[id]/page.tsx‎

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import { useScreenCapture, type CaptureQuality } from '@/hooks/useScreenCapture'
2626
import { useRecording, formatDuration, type RecordingQuality } from '@/hooks/useRecording';
2727
import { useWebRTCHost } from '@/hooks/useWebRTCHost';
2828
import type { SessionParticipant } from '@pairux/shared-types';
29+
import { Logo } from '@/components/Logo';
2930

3031
interface SessionData {
3132
id: string;
@@ -243,12 +244,7 @@ export default function HostSessionPage({ params }: { params: Promise<{ id: stri
243244
<header className="border-b border-gray-800 bg-gray-900">
244245
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
245246
<div className="flex h-14 items-center">
246-
<Link href="/" className="flex items-center gap-2">
247-
<div className="bg-primary-600 flex h-7 w-7 items-center justify-center rounded-lg text-xs font-bold text-white">
248-
P
249-
</div>
250-
<span className="text-lg font-bold text-white">PairUX</span>
251-
</Link>
247+
<Logo size="sm" variant="light" />
252248
</div>
253249
</div>
254250
</header>
@@ -281,12 +277,7 @@ export default function HostSessionPage({ params }: { params: Promise<{ id: stri
281277
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
282278
<div className="flex h-14 items-center justify-between">
283279
<div className="flex items-center gap-4">
284-
<Link href="/" className="flex items-center gap-2">
285-
<div className="bg-primary-600 flex h-7 w-7 items-center justify-center rounded-lg text-xs font-bold text-white">
286-
P
287-
</div>
288-
<span className="text-lg font-bold text-white">PairUX</span>
289-
</Link>
280+
<Logo size="sm" variant="light" />
290281
<div className="flex items-center gap-2">
291282
<span className="rounded-full bg-green-900/50 px-2 py-0.5 text-xs font-medium text-green-400">
292283
Hosting

‎apps/web/src/app/join/[joinCode]/page.tsx‎

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { useState, useEffect, use } from 'react';
44
import { useRouter } from 'next/navigation';
55
import Link from 'next/link';
66
import { User, Loader2, AlertCircle, Users, Monitor, CheckCircle } from 'lucide-react';
7+
import { Logo } from '@/components/Logo';
78

89
interface SessionInfo {
910
id: string;
@@ -184,12 +185,7 @@ export default function JoinPage({ params }: { params: Promise<{ joinCode: strin
184185
<header className="border-b border-gray-200 bg-white">
185186
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
186187
<div className="flex h-16 items-center">
187-
<Link href="/" className="flex items-center gap-2">
188-
<div className="bg-primary-600 flex h-8 w-8 items-center justify-center rounded-lg text-sm font-bold text-white">
189-
P
190-
</div>
191-
<span className="text-xl font-bold text-gray-900">PairUX</span>
192-
</Link>
188+
<Logo size="sm" />
193189
</div>
194190
</div>
195191
</header>

‎apps/web/src/app/session/[id]/page.tsx‎

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import {
2424
} from '@/components/control';
2525
import { ChatPanel } from '@/components/chat/ChatPanel';
2626
import { SessionSettingsPanel } from '@/components/session/SessionSettingsPanel';
27+
import { Logo } from '@/components/Logo';
2728

2829
type SidebarPanel = 'participants' | 'chat' | 'settings' | null;
2930

@@ -149,12 +150,7 @@ export default function SessionViewerPage({ params }: { params: Promise<{ id: st
149150
<header className="border-b border-gray-800 bg-gray-900">
150151
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
151152
<div className="flex h-14 items-center">
152-
<Link href="/" className="flex items-center gap-2">
153-
<div className="bg-primary-600 flex h-7 w-7 items-center justify-center rounded-lg text-xs font-bold text-white">
154-
P
155-
</div>
156-
<span className="text-lg font-bold text-white">PairUX</span>
157-
</Link>
153+
<Logo size="sm" variant="light" />
158154
</div>
159155
</div>
160156
</header>
@@ -187,12 +183,7 @@ export default function SessionViewerPage({ params }: { params: Promise<{ id: st
187183
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
188184
<div className="flex h-14 items-center justify-between">
189185
<div className="flex items-center gap-4">
190-
<Link href="/" className="flex items-center gap-2">
191-
<div className="bg-primary-600 flex h-7 w-7 items-center justify-center rounded-lg text-xs font-bold text-white">
192-
P
193-
</div>
194-
<span className="text-lg font-bold text-white">PairUX</span>
195-
</Link>
186+
<Logo size="sm" variant="light" />
196187
<div className="hidden items-center gap-2 sm:flex">
197188
<span className="text-sm text-gray-500">Session</span>
198189
<span className="font-mono text-sm font-semibold text-white">

‎apps/web/src/app/view/[sessionId]/page.tsx‎

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
InputCapture,
1515
CursorOverlay,
1616
} from '@/components/control';
17+
import { Logo } from '@/components/Logo';
1718

1819
interface Participant {
1920
id: string;
@@ -147,12 +148,7 @@ export default function GuestSessionViewerPage({
147148
<header className="border-b border-gray-800 bg-gray-900">
148149
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
149150
<div className="flex h-14 items-center">
150-
<Link href="/" className="flex items-center gap-2">
151-
<div className="bg-primary-600 flex h-7 w-7 items-center justify-center rounded-lg text-xs font-bold text-white">
152-
P
153-
</div>
154-
<span className="text-lg font-bold text-white">PairUX</span>
155-
</Link>
151+
<Logo size="sm" variant="light" />
156152
</div>
157153
</div>
158154
</header>
@@ -185,12 +181,7 @@ export default function GuestSessionViewerPage({
185181
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
186182
<div className="flex h-14 items-center justify-between">
187183
<div className="flex items-center gap-4">
188-
<Link href="/" className="flex items-center gap-2">
189-
<div className="bg-primary-600 flex h-7 w-7 items-center justify-center rounded-lg text-xs font-bold text-white">
190-
P
191-
</div>
192-
<span className="text-lg font-bold text-white">PairUX</span>
193-
</Link>
184+
<Logo size="sm" variant="light" />
194185
<div className="hidden items-center gap-2 sm:flex">
195186
<span className="text-sm text-gray-500">Session</span>
196187
<span className="font-mono text-sm font-semibold text-white">

‎apps/web/src/components/Logo.tsx‎

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,44 @@ import { cn } from '@/lib/utils';
44

55
interface LogoProps {
66
size?: 'sm' | 'md' | 'lg';
7+
/** Use 'light' variant on dark backgrounds (white text). Default uses dark text for light backgrounds. */
8+
variant?: 'default' | 'light';
9+
/** Set to false to render without a Link wrapper (e.g. when already inside a Link). */
10+
asLink?: boolean;
711
className?: string;
812
}
913

1014
const sizes = {
11-
sm: { height: 24 },
12-
md: { height: 32 },
13-
lg: { height: 40 },
15+
sm: { height: 28 },
16+
md: { height: 36 },
17+
lg: { height: 44 },
1418
};
1519

16-
export function Logo({ size = 'md', className }: LogoProps) {
20+
export function Logo({ size = 'md', variant = 'default', asLink = true, className }: LogoProps) {
1721
const sizeConfig = sizes[size];
1822
// Logo aspect ratio is approximately 2.83:1 (512.75 / 181.44)
1923
const width = Math.round(sizeConfig.height * 2.83);
24+
const src = variant === 'light' ? '/logo.light.svg' : '/logo.svg';
25+
26+
const image = (
27+
<Image
28+
src={src}
29+
alt="PairUX"
30+
width={width}
31+
height={sizeConfig.height}
32+
className="h-auto"
33+
style={{ height: sizeConfig.height }}
34+
priority
35+
/>
36+
);
37+
38+
if (!asLink) {
39+
return <span className={cn('flex items-center', className)}>{image}</span>;
40+
}
2041

2142
return (
2243
<Link href="/" className={cn('flex items-center', className)}>
23-
<Image
24-
src="/logo.svg"
25-
alt="PairUX"
26-
width={width}
27-
height={sizeConfig.height}
28-
className="h-auto"
29-
style={{ height: sizeConfig.height }}
30-
priority
31-
/>
44+
{image}
3245
</Link>
3346
);
3447
}

‎apps/web/src/components/footer.tsx‎

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Link from 'next/link';
2-
import Image from 'next/image';
2+
import { Logo } from '@/components/Logo';
33

44
// Custom GitHub icon SVG component (brand icons deprecated in lucide)
55
function GitHubIcon({ className }: { className?: string }) {
@@ -87,9 +87,7 @@ export function Footer() {
8787
<div className="grid grid-cols-2 gap-8 lg:grid-cols-5">
8888
{/* Brand */}
8989
<div className="col-span-2 lg:col-span-1">
90-
<Link href="/" className="flex items-center">
91-
<Image src="/logo.svg" alt="PairUX" width={113} height={40} className="h-10 w-auto" />
92-
</Link>
90+
<Logo size="lg" />
9391
<p className="mt-4 text-sm text-gray-600">
9492
Collaborative screen sharing with simultaneous remote control. Like Screenhero, but
9593
open source.

0 commit comments

Comments
 (0)