Skip to content

Commit 764883d

Browse files
committed
Add branding
1 parent c00195f commit 764883d

File tree

13 files changed

+106
-31
lines changed

13 files changed

+106
-31
lines changed

build.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { $ } from "bun";
22

33
// Build the CLI binary
44
const result = await Bun.build({
5-
entrypoints: ["./bin/prdash.ts"],
5+
entrypoints: ["./bin/pullpal.ts"],
66
outdir: "./dist",
77
target: "bun",
88
minify: true,
@@ -18,10 +18,10 @@ if (!result.success) {
1818
}
1919

2020
// Make the binary executable
21-
await $`chmod +x ./dist/prdash.js`;
21+
await $`chmod +x ./dist/pullpal.js`;
2222

23-
// Rename to just 'prdash' for cleaner bin usage
24-
await $`mv ./dist/prdash.js ./dist/prdash`;
23+
// Rename to just 'pullpal' for cleaner bin usage
24+
await $`mv ./dist/pullpal.js ./dist/pullpal`;
2525

26-
console.log("✅ Build complete: ./dist/prdash");
26+
console.log("✅ Build complete: ./dist/pullpal");
2727

bun.lock

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"configVersion": 1,
44
"workspaces": {
55
"": {
6-
"name": "prdash",
6+
"name": "pullpal",
77
"dependencies": {
88
"@radix-ui/react-collapsible": "^1.1.12",
99
"@radix-ui/react-context-menu": "^2.2.16",
@@ -25,6 +25,7 @@
2525
},
2626
"devDependencies": {
2727
"@hono/node-server": "^1.19.6",
28+
"@octokit/core": "^7.0.6",
2829
"@types/bun": "latest",
2930
"@types/react": "^19",
3031
"@types/react-dom": "^19",
@@ -120,6 +121,22 @@
120121

121122
"@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.0.6", "", { "os": "win32", "cpu": "x64" }, "sha512-QGs18P4OKdK9y2F3Th42+KGnwsc2iaThOe6jxQgP62kslUU4W+g6AzI6bdIn/pslhSfxjAMU5SjakfT5Fyo/xA=="],
122123

124+
"@octokit/auth-token": ["@octokit/auth-token@6.0.0", "", {}, "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w=="],
125+
126+
"@octokit/core": ["@octokit/core@7.0.6", "", { "dependencies": { "@octokit/auth-token": "^6.0.0", "@octokit/graphql": "^9.0.3", "@octokit/request": "^10.0.6", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "before-after-hook": "^4.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q=="],
127+
128+
"@octokit/endpoint": ["@octokit/endpoint@11.0.2", "", { "dependencies": { "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ=="],
129+
130+
"@octokit/graphql": ["@octokit/graphql@9.0.3", "", { "dependencies": { "@octokit/request": "^10.0.6", "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA=="],
131+
132+
"@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="],
133+
134+
"@octokit/request": ["@octokit/request@10.0.7", "", { "dependencies": { "@octokit/endpoint": "^11.0.2", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "fast-content-type-parse": "^3.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA=="],
135+
136+
"@octokit/request-error": ["@octokit/request-error@7.1.0", "", { "dependencies": { "@octokit/types": "^16.0.0" } }, "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw=="],
137+
138+
"@octokit/types": ["@octokit/types@16.0.0", "", { "dependencies": { "@octokit/openapi-types": "^27.0.0" } }, "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg=="],
139+
123140
"@oven/bun-darwin-aarch64": ["@oven/bun-darwin-aarch64@1.3.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-eJopQrUk0WR7jViYDC29+Rp50xGvs4GtWOXBeqCoFMzutkkO3CZvHehA4JqnjfWMTSS8toqvRhCSOpOz62Wf9w=="],
124141

125142
"@oven/bun-darwin-x64": ["@oven/bun-darwin-x64@1.3.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-xGDePueVFrNgkS+iN0QdEFeRrx2MQ5hQ9ipRFu7N73rgoSSJsFlOKKt2uGZzunczedViIfjYl0ii0K4E9aZ0Ow=="],
@@ -244,6 +261,8 @@
244261

245262
"bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="],
246263

264+
"before-after-hook": ["before-after-hook@4.0.0", "", {}, "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ=="],
265+
247266
"bun": ["bun@1.3.3", "", { "optionalDependencies": { "@oven/bun-darwin-aarch64": "1.3.3", "@oven/bun-darwin-x64": "1.3.3", "@oven/bun-darwin-x64-baseline": "1.3.3", "@oven/bun-linux-aarch64": "1.3.3", "@oven/bun-linux-aarch64-musl": "1.3.3", "@oven/bun-linux-x64": "1.3.3", "@oven/bun-linux-x64-baseline": "1.3.3", "@oven/bun-linux-x64-musl": "1.3.3", "@oven/bun-linux-x64-musl-baseline": "1.3.3", "@oven/bun-windows-x64": "1.3.3", "@oven/bun-windows-x64-baseline": "1.3.3" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "x64", "arm64", ], "bin": { "bun": "bin/bun.exe", "bunx": "bin/bunx.exe" } }, "sha512-2hJ4ocTZ634/Ptph4lysvO+LbbRZq8fzRvMwX0/CqaLBxrF2UB5D1LdMB8qGcdtCer4/VR9Bx5ORub0yn+yzmw=="],
248267

249268
"bun-plugin-tailwind": ["bun-plugin-tailwind@0.1.2", "", { "peerDependencies": { "bun": ">=1.0.0" } }, "sha512-41jNC1tZRSK3s1o7pTNrLuQG8kL/0vR/JgiTmZAJ1eHwe0w5j6HFPKeqEk0WAD13jfrUC7+ULuewFBBCoADPpg=="],
@@ -308,6 +327,8 @@
308327

309328
"extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="],
310329

330+
"fast-content-type-parse": ["fast-content-type-parse@3.0.0", "", {}, "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg=="],
331+
311332
"geist": ["geist@1.5.1", "", { "peerDependencies": { "next": ">=13.2.0" } }, "sha512-mAHZxIsL2o3ZITFaBVFBnwyDOw+zNLYum6A6nIjpzCGIO8QtC3V76XF2RnZTyLx1wlDTmMDy8jg3Ib52MIjGvQ=="],
312333

313334
"get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="],
@@ -538,6 +559,8 @@
538559

539560
"unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="],
540561

562+
"universal-user-agent": ["universal-user-agent@7.0.3", "", {}, "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A=="],
563+
541564
"use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="],
542565

543566
"use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="],

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
2-
"name": "prdash",
2+
"name": "pullpal",
33
"version": "0.1.0",
44
"description": "A fast, local PR review dashboard",
55
"type": "module",
66
"bin": {
7-
"prdash": "./dist/prdash"
7+
"pullpal": "./dist/pullpal"
88
},
99
"files": [
1010
"dist"
@@ -43,6 +43,7 @@
4343
},
4444
"devDependencies": {
4545
"@hono/node-server": "^1.19.6",
46+
"@octokit/core": "^7.0.6",
4647
"@types/bun": "latest",
4748
"@types/react": "^19",
4849
"@types/react-dom": "^19",

public/file.svg

Lines changed: 0 additions & 1 deletion
This file was deleted.

public/globe.svg

Lines changed: 0 additions & 1 deletion
This file was deleted.

public/next.svg

Lines changed: 0 additions & 1 deletion
This file was deleted.

public/vercel.svg

Lines changed: 0 additions & 1 deletion
This file was deleted.

public/window.svg

Lines changed: 0 additions & 1 deletion
This file was deleted.

scripts/build-browser.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,3 @@ if (isWatch) {
4141
}, 100);
4242
});
4343
}
44-

src/browser/components/home.tsx

Lines changed: 54 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { useState, useEffect } from "react";
22
import { useNavigate } from "react-router-dom";
3+
import logoUrl from "../logo.svg";
34

45
export function Home() {
56
const navigate = useNavigate();
67
const [prUrl, setPrUrl] = useState("");
78
const [error, setError] = useState("");
9+
const [isFocused, setIsFocused] = useState(false);
810

911
useEffect(() => {
1012
// Check for hash URL and redirect
@@ -34,47 +36,84 @@ export function Home() {
3436
};
3537

3638
return (
37-
<div className="flex min-h-screen flex-col items-center justify-center p-8">
38-
<main className="flex w-full max-w-xl flex-col items-center gap-8">
39-
<div className="text-center">
40-
<h1 className="text-4xl font-bold tracking-tight mb-2">PRDash</h1>
41-
<p className="text-muted-foreground">
42-
Fast GitHub PR review with syntax highlighting
43-
</p>
39+
<div className="flex min-h-screen flex-col items-center justify-center p-8 relative overflow-hidden">
40+
{/* Background gradient effect */}
41+
<div className="absolute inset-0 -z-10">
42+
<div className="absolute top-1/4 left-1/2 -translate-x-1/2 w-[600px] h-[600px] bg-[#408AC3]/10 rounded-full blur-[120px]" />
43+
<div className="absolute bottom-1/4 left-1/3 w-[400px] h-[400px] bg-[#9ED8F7]/5 rounded-full blur-[100px]" />
44+
</div>
45+
46+
<main className="flex w-full max-w-md flex-col items-center gap-10">
47+
{/* Logo and branding */}
48+
<div className="flex flex-col items-center gap-5">
49+
<div className="relative group">
50+
<div className="absolute inset-0 bg-[#408AC3]/20 rounded-3xl blur-xl group-hover:bg-[#408AC3]/30 transition-colors duration-500" />
51+
<img
52+
src={logoUrl}
53+
alt="PullPal"
54+
className="relative w-24 h-24 drop-shadow-2xl transition-transform duration-300 group-hover:scale-105"
55+
/>
56+
</div>
57+
<div className="text-center space-y-2">
58+
<h1 className="text-4xl font-bold tracking-tight bg-gradient-to-r from-white via-white to-[#9ED8F7] bg-clip-text text-transparent">
59+
PullPal
60+
</h1>
61+
<p className="text-muted-foreground text-sm">
62+
Lightning-fast GitHub PR reviews
63+
</p>
64+
</div>
4465
</div>
4566

67+
{/* Input form */}
4668
<form onSubmit={handleSubmit} className="w-full space-y-4">
4769
<div className="relative">
70+
<div
71+
className={`absolute -inset-0.5 bg-gradient-to-r from-[#408AC3] to-[#9ED8F7] rounded-xl opacity-0 blur transition-opacity duration-300 ${
72+
isFocused ? "opacity-50" : ""
73+
}`}
74+
/>
4875
<input
4976
type="text"
5077
value={prUrl}
5178
onChange={(e) => {
5279
setPrUrl(e.target.value);
5380
setError("");
5481
}}
55-
placeholder="https://github.com/owner/repo/pull/123"
56-
className="w-full h-12 px-4 rounded-lg border border-input bg-background text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring font-mono text-sm"
82+
onFocus={() => setIsFocused(true)}
83+
onBlur={() => setIsFocused(false)}
84+
placeholder="Paste a GitHub PR URL..."
85+
className="relative w-full h-12 px-4 rounded-xl border border-white/10 bg-black/50 backdrop-blur-sm text-foreground placeholder:text-muted-foreground/60 focus:outline-none focus:border-[#408AC3]/50 font-mono text-sm transition-colors"
5786
autoFocus
5887
/>
5988
</div>
6089

61-
{error && <p className="text-sm text-destructive">{error}</p>}
90+
{error && (
91+
<p className="text-sm text-red-400 text-center animate-in fade-in slide-in-from-top-1 duration-200">
92+
{error}
93+
</p>
94+
)}
6295

6396
<button
6497
type="submit"
65-
className="w-full h-12 rounded-lg bg-primary text-primary-foreground font-medium hover:bg-primary/90 transition-colors"
98+
className="w-full h-12 rounded-xl bg-gradient-to-r from-[#408AC3] to-[#3a7db0] text-white font-medium hover:from-[#4a9ad3] hover:to-[#408AC3] transition-all duration-300 shadow-lg shadow-[#408AC3]/20 hover:shadow-[#408AC3]/30 hover:scale-[1.02] active:scale-[0.98]"
6699
>
67100
Review PR
68101
</button>
69102
</form>
70103

71-
<div className="text-sm text-muted-foreground text-center space-y-2">
72-
<p>Or use the hash URL shortcut:</p>
73-
<code className="block px-3 py-2 rounded bg-muted font-mono text-xs">
74-
localhost:3000#https://github.com/owner/repo/pull/123
104+
{/* Hash URL hint */}
105+
<div className="text-center space-y-3 pt-4 border-t border-white/5 w-full">
106+
<p className="text-xs text-muted-foreground/70">Quick access via hash URL</p>
107+
<code className="block px-4 py-2.5 rounded-lg bg-white/5 border border-white/5 font-mono text-xs text-muted-foreground/80 select-all">
108+
localhost:3000#github.com/owner/repo/pull/123
75109
</code>
76110
</div>
77111
</main>
112+
113+
{/* Footer attribution */}
114+
<footer className="absolute bottom-6 text-xs text-muted-foreground/40">
115+
Fast. Local. Private.
116+
</footer>
78117
</div>
79118
);
80119
}

0 commit comments

Comments
 (0)