Skip to content

Commit 216f7c4

Browse files
updated navbar
1 parent 6fb3bce commit 216f7c4

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import React from "react";
2+
import {
3+
Book,
4+
Eye,
5+
LayoutDashboard,
6+
DollarSign,
7+
User,
8+
Newspaper,
9+
MoreHorizontal,
10+
Github,
11+
BadgeCheck,
12+
FileText,
13+
Users,
14+
Tv,
15+
Mic,
16+
Lightbulb,
17+
Puzzle,
18+
} from "lucide-react";
19+
20+
const iconMap: Record<string, React.ReactNode> = {
21+
Docs: <Book size={18} style={{ verticalAlign: "middle" }} />,
22+
Showcase: <Eye size={18} style={{ verticalAlign: "middle" }} />,
23+
Dashboard: <LayoutDashboard size={18} style={{ verticalAlign: "middle" }} />,
24+
Donate: <DollarSign size={18} style={{ verticalAlign: "middle" }} />,
25+
Devfolio: <User size={18} style={{ verticalAlign: "middle" }} />,
26+
Blogs: <Newspaper size={18} style={{ verticalAlign: "middle" }} />,
27+
More: <MoreHorizontal size={18} style={{ verticalAlign: "middle" }} />,
28+
GitHub: <Github size={18} style={{ verticalAlign: "middle" }} />,
29+
Badges: <BadgeCheck size={18} style={{ verticalAlign: "middle" }} />,
30+
Ebooks: <FileText size={18} style={{ verticalAlign: "middle" }} />,
31+
Roadmap: <LayoutDashboard size={18} style={{ verticalAlign: "middle" }} />,
32+
Community: <Users size={18} style={{ verticalAlign: "middle" }} />,
33+
Broadcast: <Tv size={18} style={{ verticalAlign: "middle" }} />,
34+
Podcast: <Mic size={18} style={{ verticalAlign: "middle" }} />,
35+
Behavioral: <Lightbulb size={18} style={{ verticalAlign: "middle" }} />,
36+
Technical: <Puzzle size={18} style={{ verticalAlign: "middle" }} />,
37+
};
38+
39+
export default function NavbarIcon({ name }: { name: string }) {
40+
return (
41+
<span
42+
style={{
43+
display: "inline-flex",
44+
alignItems: "center",
45+
gap: 4,
46+
marginRight: 2,
47+
}}
48+
>
49+
{iconMap[name] || null}
50+
</span>
51+
);
52+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import React, { useEffect } from "react";
2+
import NavbarIcon from "./NavbarIcon";
3+
4+
const iconMap = [
5+
{ id: "nav-docs", name: "Docs" },
6+
{ id: "nav-showcase", name: "Showcase" },
7+
{ id: "nav-dashboard", name: "Dashboard" },
8+
{ id: "nav-donate", name: "Donate" },
9+
{ id: "nav-devfolio", name: "Devfolio" },
10+
{ id: "nav-blogs", name: "Blogs" },
11+
{ id: "nav-more", name: "More" },
12+
// Sub nav items
13+
{ id: "nav-github", name: "GitHub" },
14+
{ id: "nav-badges", name: "Badges" },
15+
{ id: "nav-ebooks", name: "Ebooks" },
16+
{ id: "nav-roadmap", name: "Roadmap" },
17+
{ id: "nav-community", name: "Community" },
18+
{ id: "nav-broadcast", name: "Broadcast" },
19+
{ id: "nav-podcast", name: "Podcast" },
20+
];
21+
22+
export default function NavbarIconInjector() {
23+
useEffect(() => {
24+
iconMap.forEach(({ id, name }) => {
25+
const el = document.getElementById(id);
26+
if (el && el.childNodes.length === 0) {
27+
import("react-dom").then((ReactDOM) => {
28+
(ReactDOM.default as any).render(<NavbarIcon name={name} />, el);
29+
});
30+
}
31+
});
32+
}, []);
33+
return null;
34+
}

0 commit comments

Comments
 (0)