|
|
@ -6,7 +6,7 @@ import { |
|
|
|
Menu, |
|
|
|
Menu, |
|
|
|
Shirt, |
|
|
|
Shirt, |
|
|
|
Video, |
|
|
|
Video, |
|
|
|
Waypoints, |
|
|
|
Map, |
|
|
|
} from 'lucide-react'; |
|
|
|
} from 'lucide-react'; |
|
|
|
import { useEffect, useRef, useState } from 'react'; |
|
|
|
import { useEffect, useRef, useState } from 'react'; |
|
|
|
import { cn } from '../lib/classname.ts'; |
|
|
|
import { cn } from '../lib/classname.ts'; |
|
|
@ -22,31 +22,36 @@ const links = [ |
|
|
|
link: '/roadmaps', |
|
|
|
link: '/roadmaps', |
|
|
|
label: 'Official Roadmaps', |
|
|
|
label: 'Official Roadmaps', |
|
|
|
description: 'Made by subject matter experts', |
|
|
|
description: 'Made by subject matter experts', |
|
|
|
Icon: Waypoints, |
|
|
|
Icon: Map, |
|
|
|
|
|
|
|
isHighlighted: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
link: '/projects', |
|
|
|
link: '/projects', |
|
|
|
label: 'Projects', |
|
|
|
label: 'Projects', |
|
|
|
description: 'Skill-up with real-world projects', |
|
|
|
description: 'Skill-up with real-world projects', |
|
|
|
Icon: FolderKanban, |
|
|
|
Icon: FolderKanban, |
|
|
|
|
|
|
|
isHighlighted: false, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
link: '/best-practices', |
|
|
|
link: '/best-practices', |
|
|
|
label: 'Best Practices', |
|
|
|
label: 'Best Practices', |
|
|
|
description: "Do's and don'ts", |
|
|
|
description: "Do's and don'ts", |
|
|
|
Icon: CheckSquare, |
|
|
|
Icon: CheckSquare, |
|
|
|
|
|
|
|
isHighlighted: false, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
link: '/questions', |
|
|
|
link: '/questions', |
|
|
|
label: 'Questions', |
|
|
|
label: 'Questions', |
|
|
|
description: 'Test and Practice your knowledge', |
|
|
|
description: 'Test and Practice your knowledge', |
|
|
|
Icon: FileQuestion, |
|
|
|
Icon: FileQuestion, |
|
|
|
|
|
|
|
isHighlighted: false, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
link: '/guides', |
|
|
|
link: '/guides', |
|
|
|
label: 'Guides', |
|
|
|
label: 'Guides', |
|
|
|
description: 'In-depth articles and tutorials', |
|
|
|
description: 'In-depth articles and tutorials', |
|
|
|
Icon: BookOpenText, |
|
|
|
Icon: BookOpenText, |
|
|
|
|
|
|
|
isHighlighted: false, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
link: 'https://youtube.com/@roadmapsh', |
|
|
|
link: 'https://youtube.com/@roadmapsh', |
|
|
@ -54,6 +59,7 @@ const links = [ |
|
|
|
description: 'Animated and interactive content', |
|
|
|
description: 'Animated and interactive content', |
|
|
|
Icon: Video, |
|
|
|
Icon: Video, |
|
|
|
isExternal: true, |
|
|
|
isExternal: true, |
|
|
|
|
|
|
|
isHighlighted: false, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
link: 'https://cottonbureau.com/people/roadmapsh', |
|
|
|
link: 'https://cottonbureau.com/people/roadmapsh', |
|
|
@ -61,12 +67,14 @@ const links = [ |
|
|
|
description: 'Get some cool swag', |
|
|
|
description: 'Get some cool swag', |
|
|
|
Icon: Shirt, |
|
|
|
Icon: Shirt, |
|
|
|
isExternal: true, |
|
|
|
isExternal: true, |
|
|
|
|
|
|
|
isHighlighted: false, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
link: '/advertise', |
|
|
|
link: '/advertise', |
|
|
|
label: 'Advertise', |
|
|
|
label: 'Advertise', |
|
|
|
description: 'Promote your product or service', |
|
|
|
description: 'Promote your product or service', |
|
|
|
Icon: Menu, |
|
|
|
Icon: Menu, |
|
|
|
|
|
|
|
isHighlighted: false, |
|
|
|
}, |
|
|
|
}, |
|
|
|
]; |
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
@ -115,7 +123,13 @@ export function NavigationDropdown() { |
|
|
|
target={link.isExternal ? '_blank' : undefined} |
|
|
|
target={link.isExternal ? '_blank' : undefined} |
|
|
|
rel={link.isExternal ? 'noopener noreferrer' : undefined} |
|
|
|
rel={link.isExternal ? 'noopener noreferrer' : undefined} |
|
|
|
key={link.link} |
|
|
|
key={link.link} |
|
|
|
className="group flex items-center gap-3 px-4 py-2.5 text-gray-400 transition-colors hover:bg-slate-700" |
|
|
|
className={cn( |
|
|
|
|
|
|
|
'group flex items-center gap-3 px-4 py-2.5 text-gray-400 transition-colors hover:bg-slate-700', |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
'mx-2 mb-1 rounded-md border border-slate-600 bg-slate-700 pl-2.5 text-gray-200 hover:bg-slate-600': |
|
|
|
|
|
|
|
link.isHighlighted, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
)} |
|
|
|
role="menuitem" |
|
|
|
role="menuitem" |
|
|
|
> |
|
|
|
> |
|
|
|
<span className="flex h-[40px] w-[40px] items-center justify-center rounded-full bg-slate-600 transition-colors group-hover:bg-slate-500 group-hover:text-slate-100"> |
|
|
|
<span className="flex h-[40px] w-[40px] items-center justify-center rounded-full bg-slate-600 transition-colors group-hover:bg-slate-500 group-hover:text-slate-100"> |
|
|
|