diff --git a/src/components/Roadmaps/RoadmapsPage.tsx b/src/components/Roadmaps/RoadmapsPage.tsx index 77513251f..4d21fda08 100644 --- a/src/components/Roadmaps/RoadmapsPage.tsx +++ b/src/components/Roadmaps/RoadmapsPage.tsx @@ -365,54 +365,58 @@ const groups: GroupType[] = [ }, ]; +const roleRoadmaps = groups.flatMap((group) => + group.roadmaps.filter((roadmap) => roadmap.type === 'role'), +); +const skillRoadmaps = groups.flatMap((group) => + group.roadmaps.filter((roadmap) => roadmap.type === 'skill'), +); + +const allGroups = [ + { + group: 'Role Based Roadmaps', + roadmaps: roleRoadmaps, + }, + { + group: 'Skill Based Roadmaps', + roadmaps: skillRoadmaps, + }, +]; + export function RoadmapsPage() { const [activeGroup, setActiveGroup] = useState(''); - const [visibleGroups, setVisibleGroups] = useState([]); + const [visibleGroups, setVisibleGroups] = useState(allGroups); useEffect(() => { if (!activeGroup) { - const roleRoadmaps = groups.flatMap((group) => - group.roadmaps.filter((roadmap) => roadmap.type === 'role'), - ); - const skillRoadmaps = groups.flatMap((group) => - group.roadmaps.filter((roadmap) => roadmap.type === 'skill'), - ); + setVisibleGroups(allGroups); + return; + } - setVisibleGroups([ - { - group: 'Role Based Roadmaps', - roadmaps: roleRoadmaps, - }, - { - group: 'Skill Based Roadmaps', - roadmaps: skillRoadmaps, - }, - ]); - } else { - const group = groups.find((group) => group.group === activeGroup); + const group = groups.find((group) => group.group === activeGroup); + if (!group) { + return; + } - if (group) { - // other groups that have a roadmap that is in the same group - const otherGroups = groups.filter((g) => { - return ( - g.group !== group.group && - g.roadmaps.some((roadmap) => { - return roadmap.otherGroups?.includes(group.group); - }) - ); - }); + // other groups that have a roadmap that is in the same group + const otherGroups = groups.filter((g) => { + return ( + g.group !== group.group && + g.roadmaps.some((roadmap) => { + return roadmap.otherGroups?.includes(group.group); + }) + ); + }); - setVisibleGroups([ - group, - ...otherGroups.map((g) => ({ - ...g, - roadmaps: g.roadmaps.filter((roadmap) => - roadmap.otherGroups?.includes(group.group), - ), - })), - ]); - } - } + setVisibleGroups([ + group, + ...otherGroups.map((g) => ({ + ...g, + roadmaps: g.roadmaps.filter((roadmap) => + roadmap.otherGroups?.includes(group.group), + ), + })), + ]); }, [activeGroup]); return ( diff --git a/src/components/Roadmaps/RoadmapsPageHeader.tsx b/src/components/Roadmaps/RoadmapsPageHeader.tsx new file mode 100644 index 000000000..a3ab04649 --- /dev/null +++ b/src/components/Roadmaps/RoadmapsPageHeader.tsx @@ -0,0 +1,28 @@ +export function RoadmapsPageHeader() { + return ( +
+
+
+

Developer Roadmaps

+

+ Browse ever-growing list of up-to-date, community driven roadmaps +

+

+ + Draw your own roadmap + + + Generate Roadmap with AI + +

+
+
+
+ ); +} diff --git a/src/pages/roadmaps.astro b/src/pages/roadmaps.astro index c5cd1cdee..7d9df0145 100644 --- a/src/pages/roadmaps.astro +++ b/src/pages/roadmaps.astro @@ -1,5 +1,6 @@ --- import { RoadmapsPage } from '../components/Roadmaps/RoadmapsPage'; +import { RoadmapsPageHeader } from '../components/Roadmaps/RoadmapsPageHeader'; import GridItem from '../components/GridItem.astro'; import SimplePageHeader from '../components/SimplePageHeader.astro'; import BaseLayout from '../layouts/BaseLayout.astro'; @@ -11,32 +12,6 @@ import { getRoadmapsByTag } from '../lib/roadmap'; description={'Step by step guides and paths to learn different tools or technologies'} permalink={'/roadmaps'} > -
-
-
-
-

Developer Roadmaps

-

- Browse ever-growing list of up-to-date, community driven roadmaps -

-

- - Draw your own roadmap - - - Generate Roadmap with AI - -

-
-
-
- - -
+ +