MCPcopy Create free account
hub / github.com/VGabriel45/SolidityVisualizer / Header

Function Header

src/components/header.tsx:10–97  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

8import { ApiKeyDialog } from "./api-key-dialog";
9
10export function Header() {
11 const [isPrivateReposDialogOpen, setIsPrivateReposDialogOpen] =
12 useState(false);
13 const [isApiKeyDialogOpen, setIsApiKeyDialogOpen] = useState(false);
14 const [starCount, setStarCount] = useState<number | null>(null);
15
16 useEffect(() => {
17 void getStarCount().then(setStarCount);
18 }, []);
19
20 const formatStarCount = (count: number | null) => {
21 if (!count) return "0"; // Default to 2.0k if count is null (it can only go up from here)
22 if (count >= 1000) {
23 return `${(count / 1000).toFixed(1)}k`;
24 }
25 return count.toString();
26 };
27
28 const handlePrivateReposSubmit = (pat: string) => {
29 // Store the PAT in localStorage
30 localStorage.setItem("github_pat", pat);
31 setIsPrivateReposDialogOpen(false);
32 };
33
34 const handleApiKeySubmit = (apiKey: string) => {
35 localStorage.setItem("openai_key", apiKey);
36 setIsApiKeyDialogOpen(false);
37 };
38
39 return (
40 <header className="border-b-[3px] border-primary">
41 <div className="mx-auto flex h-16 max-w-4xl items-center justify-between px-4 sm:px-8">
42 <Link href="/" className="flex items-center">
43 <span className="text-lg font-semibold sm:text-xl">
44 <span className="text-foreground transition-colors duration-200 hover:text-primary">
45 Solidity
46 </span>
47 <span className="text-primary transition-colors duration-200 hover:text-accent">
48 Visualizer
49 </span>
50 </span>
51 </Link>
52 <nav className="flex items-center gap-3 sm:gap-6">
53 <span
54 onClick={() => setIsApiKeyDialogOpen(true)}
55 className="cursor-pointer text-sm font-medium text-foreground transition-transform hover:translate-y-[-2px] hover:text-primary"
56 >
57 <span className="flex items-center sm:hidden">
58 <span>API Key</span>
59 </span>
60 <span className="hidden items-center gap-1 sm:flex">
61 <span>API Key</span>
62 </span>
63 </span>
64 <span
65 onClick={() => setIsPrivateReposDialogOpen(true)}
66 className="cursor-pointer text-sm font-medium text-foreground transition-transform hover:translate-y-[-2px] hover:text-primary"
67 >

Callers

nothing calls this directly

Calls 1

formatStarCountFunction · 0.85

Tested by

no test coverage detected