diff --git a/app/layout.tsx b/app/layout.tsx index 6494e6f..8292672 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,8 +1,34 @@ import type { Metadata } from 'next'; import { Analytics } from '@vercel/analytics/react'; +import { Bebas_Neue, Inter, JetBrains_Mono, Space_Grotesk } from 'next/font/google'; import '../src/styles/globals.css'; import { ExperienceProvider } from '@/src/features/motion/ExperienceProvider'; +const inter = Inter({ + subsets: ['latin'], + variable: '--font-inter', + display: 'swap', +}); + +const spaceGrotesk = Space_Grotesk({ + subsets: ['latin'], + variable: '--font-space-grotesk', + display: 'swap', +}); + +const bebasNeue = Bebas_Neue({ + weight: '400', + subsets: ['latin'], + variable: '--font-bebas-neue', + display: 'swap', +}); + +const jetbrainsMono = JetBrains_Mono({ + subsets: ['latin'], + variable: '--font-jetbrains-mono', + display: 'swap', +}); + export const metadata: Metadata = { title: { default: 'Yantra Code Editor', @@ -19,7 +45,9 @@ export default function RootLayout({ }>) { return ( -
+ (null); + +export function useDashboardData() { + const context = useContext(DashboardDataContext); + + if (!context) { + throw new Error('useDashboardData must be used inside StudentDashboard.'); + } + + return context; +} diff --git a/src/features/dashboard/StudentDashboard.tsx b/src/features/dashboard/StudentDashboard.tsx index 7d7f74d..e43bf44 100644 --- a/src/features/dashboard/StudentDashboard.tsx +++ b/src/features/dashboard/StudentDashboard.tsx @@ -23,19 +23,21 @@ import { type LucideIcon, } from 'lucide-react'; import { motion, useInView } from 'motion/react'; -import { createContext, memo, useContext, useEffect, useRef, useState, type ReactNode } from 'react'; +import { memo, useEffect, useRef, useState } from 'react'; import { ChatProvider, useChatWidgetActions } from '@/src/features/chat/ChatWidget'; import { useScrollThreshold } from '@/src/features/motion/useScrollThreshold'; import GlobalSidebar from '@/src/features/navigation/GlobalSidebar'; +import { DashboardDataContext, useDashboardData } from './DashboardDataContext'; import { type DashboardRoomTextureKey, type DashboardSkillIconKey, type DashboardSkillToneKey, - type StudentDashboardCurriculumNode, type StudentDashboardData, - type StudentDashboardRoom, type StudentDashboardSkill, } from './student-dashboard-model'; +import DashboardCurriculumSection from './sections/DashboardCurriculumSection'; +import DashboardRoomsSection from './sections/DashboardRoomsSection'; +import DashboardSectionShell from './sections/DashboardSectionShell'; const YantraAmbientBackground = dynamic(() => import('./YantraAmbientBackground'), { ssr: false }); import type { DashboardCurriculumNode, @@ -397,8 +399,6 @@ function buildDashboardViewModel(data: StudentDashboardData): DashboardViewModel }; } -const DashboardDataContext = createContext{description}
-{node.description}
-{room.description}
-{node.description}
+{room.description}
+{description}
+