diff --git a/src/components/Dashboard/DashboardPage.tsx b/src/components/Dashboard/DashboardPage.tsx index 658d0352c..6509bd1ef 100644 --- a/src/components/Dashboard/DashboardPage.tsx +++ b/src/components/Dashboard/DashboardPage.tsx @@ -10,12 +10,14 @@ import type { TeamListResponse } from '../TeamDropdown/TeamDropdown'; import { DashboardTabButton } from './DashboardTabButton'; import { PersonalDashboard, type BuiltInRoadmap } from './PersonalDashboard'; import { TeamDashboard } from './TeamDashboard'; +import type { QuestionGroupType } from '../../lib/question-group'; type DashboardPageProps = { builtInRoleRoadmaps?: BuiltInRoadmap[]; builtInSkillRoadmaps?: BuiltInRoadmap[]; builtInBestPractices?: BuiltInRoadmap[]; isTeamPage?: boolean; + questionGroups?: QuestionGroupType[]; }; export function DashboardPage(props: DashboardPageProps) { @@ -24,6 +26,7 @@ export function DashboardPage(props: DashboardPageProps) { builtInBestPractices, builtInSkillRoadmaps, isTeamPage = false, + questionGroups, } = props; const currentUser = getUser(); @@ -124,6 +127,7 @@ export function DashboardPage(props: DashboardPageProps) { builtInRoleRoadmaps={builtInRoleRoadmaps} builtInSkillRoadmaps={builtInSkillRoadmaps} builtInBestPractices={builtInBestPractices} + questionGroups={questionGroups} /> )} diff --git a/src/components/Dashboard/PersonalDashboard.tsx b/src/components/Dashboard/PersonalDashboard.tsx index 34b9b7088..feb736142 100644 --- a/src/components/Dashboard/PersonalDashboard.tsx +++ b/src/components/Dashboard/PersonalDashboard.tsx @@ -24,7 +24,8 @@ import { import { HeroRoadmap } from '../HeroSection/HeroRoadmap.tsx'; import type { ProjectStatusDocument } from '../Projects/ListProjectSolutions'; import type { UserProgress } from '../TeamProgress/TeamProgressPage'; - +import { projectGroups } from '../../pages/index.astro'; +import type { QuestionGroupType } from '../../lib/question-group'; type UserDashboardResponse = { name: string; email: string; @@ -54,6 +55,7 @@ type PersonalDashboardProps = { builtInRoleRoadmaps?: BuiltInRoadmap[]; builtInSkillRoadmaps?: BuiltInRoadmap[]; builtInBestPractices?: BuiltInRoadmap[]; + questionGroups?: QuestionGroupType[]; }; type DashboardStatItemProps = { @@ -200,6 +202,7 @@ export function PersonalDashboard(props: PersonalDashboardProps) { builtInRoleRoadmaps = [], builtInBestPractices = [], builtInSkillRoadmaps = [], + questionGroups = [], } = props; const toast = useToast(); @@ -368,110 +371,161 @@ export function PersonalDashboard(props: PersonalDashboardProps) { isLoading={isLoading} /> -
-
-

- Role Based Roadmaps -

- -
- {builtInRoleRoadmaps.map((roadmap) => { - const roadmapProgress = learningRoadmapsToShow.find( - (lr) => lr.resourceId === roadmap.id, - ); - - const percentageDone = - (((roadmapProgress?.skipped || 0) + - (roadmapProgress?.done || 0)) / - (roadmapProgress?.total || 1)) * - 100; - - return ( - - ); - })} +
+
+
+

+ Role Based Roadmaps +

+ +
+ {builtInRoleRoadmaps.map((roadmap) => { + const roadmapProgress = learningRoadmapsToShow.find( + (lr) => lr.resourceId === roadmap.id, + ); + + const percentageDone = + (((roadmapProgress?.skipped || 0) + + (roadmapProgress?.done || 0)) / + (roadmapProgress?.total || 1)) * + 100; + + return ( + + ); + })} +
-
-
-
-

- Skill Based Roadmaps -

- -
- {builtInSkillRoadmaps.map((roadmap) => { - const roadmapProgress = learningRoadmapsToShow.find( - (lr) => lr.resourceId === roadmap.id, - ); - - const percentageDone = - (((roadmapProgress?.skipped || 0) + - (roadmapProgress?.done || 0)) / - (roadmapProgress?.total || 1)) * - 100; - - return ( - - ); - })} +
+
+

+ Skill Based Roadmaps +

+ +
+ {builtInSkillRoadmaps.map((roadmap) => { + const roadmapProgress = learningRoadmapsToShow.find( + (lr) => lr.resourceId === roadmap.id, + ); + + const percentageDone = + (((roadmapProgress?.skipped || 0) + + (roadmapProgress?.done || 0)) / + (roadmapProgress?.total || 1)) * + 100; + + return ( + + ); + })} +
+
+
+ +
+
+

+ Project Ideas +

+ +
+ {projectGroups.map((projectGroup) => { + return ( + + ); + })} +
+
+
+ +
+
+

+ Best Practices +

+ +
+ {builtInBestPractices.map((roadmap) => { + const roadmapProgress = learningRoadmapsToShow.find( + (lr) => lr.resourceId === roadmap.id, + ); + + const percentageDone = + (((roadmapProgress?.skipped || 0) + + (roadmapProgress?.done || 0)) / + (roadmapProgress?.total || 1)) * + 100; + + return ( + + ); + })} +
-
-
-
-

- Best Practices -

- -
- {builtInBestPractices.map((roadmap) => { - const roadmapProgress = learningRoadmapsToShow.find( - (lr) => lr.resourceId === roadmap.id, - ); - - const percentageDone = - (((roadmapProgress?.skipped || 0) + - (roadmapProgress?.done || 0)) / - (roadmapProgress?.total || 1)) * - 100; - - return ( - - ); - })} +
+
+

+ Questions +

+ +
+ {questionGroups.map((questionGroup) => { + return ( + + ); + })} +
diff --git a/src/pages/dashboard.astro b/src/pages/dashboard.astro index 1f8f81f36..53c94ff86 100644 --- a/src/pages/dashboard.astro +++ b/src/pages/dashboard.astro @@ -2,11 +2,13 @@ import { DashboardPage } from '../components/Dashboard/DashboardPage'; import BaseLayout from '../layouts/BaseLayout.astro'; import { getAllBestPractices } from '../lib/best-practice'; +import { getAllQuestionGroups } from '../lib/question-group'; import { getRoadmapsByTag } from '../lib/roadmap'; const roleRoadmaps = await getRoadmapsByTag('role-roadmap'); const skillRoadmaps = await getRoadmapsByTag('skill-roadmap'); const bestPractices = await getAllBestPractices(); +const questionGroups = await getAllQuestionGroups(); const enrichedRoleRoadmaps = roleRoadmaps .filter((roadmapItem) => !roadmapItem.frontmatter.isHidden) @@ -63,6 +65,7 @@ const enrichedBestPractices = bestPractices.map((bestPractice) => { builtInRoleRoadmaps={enrichedRoleRoadmaps} builtInSkillRoadmaps={enrichedSkillRoadmaps} builtInBestPractices={enrichedBestPractices} + questionGroups={questionGroups} client:load />
diff --git a/src/pages/index.astro b/src/pages/index.astro index 23c83f0f8..c6ce071a2 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -15,7 +15,8 @@ const roleRoadmaps = await getRoadmapsByTag('role-roadmap'); const skillRoadmaps = await getRoadmapsByTag('skill-roadmap'); const bestPractices = await getAllBestPractices(); const questionGroups = await getAllQuestionGroups(); -const projectGroups = [ + +export const projectGroups = [ { title: 'Frontend', id: 'frontend',