@burdenoff/microfe-technospam 2026.720.1 → 2026.730.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/technospam/TechnoSpamRoot.d.ts.map +1 -1
  2. package/dist/technospam/TechnoSpamRoot.js +174 -212
  3. package/dist/technospam/TechnoSpamRoot.js.map +1 -1
  4. package/dist/technospam/TechnoSpamRoutes.d.ts.map +1 -1
  5. package/dist/technospam/TechnoSpamRoutes.js +31 -30
  6. package/dist/technospam/TechnoSpamRoutes.js.map +1 -1
  7. package/dist/technospam/api/technospamApi.d.ts +166 -0
  8. package/dist/technospam/api/technospamApi.d.ts.map +1 -1
  9. package/dist/technospam/api/technospamApi.js +336 -147
  10. package/dist/technospam/api/technospamApi.js.map +1 -1
  11. package/dist/technospam/components/UpgradeGate.d.ts +24 -0
  12. package/dist/technospam/components/UpgradeGate.d.ts.map +1 -0
  13. package/dist/technospam/components/UpgradeGate.js +47 -0
  14. package/dist/technospam/components/UpgradeGate.js.map +1 -0
  15. package/dist/technospam/components/index.d.ts +1 -0
  16. package/dist/technospam/components/index.d.ts.map +1 -1
  17. package/dist/technospam/components/index.js +1 -0
  18. package/dist/technospam/pages/ApplicationsPortfolioPagePage.d.ts +2 -0
  19. package/dist/technospam/pages/ApplicationsPortfolioPagePage.d.ts.map +1 -0
  20. package/dist/technospam/pages/ApplicationsPortfolioPagePage.js +275 -0
  21. package/dist/technospam/pages/ApplicationsPortfolioPagePage.js.map +1 -0
  22. package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.d.ts.map +1 -1
  23. package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.js +380 -168
  24. package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.js.map +1 -1
  25. package/dist/technospam/pages/ApplicationsProblemsPagePage.d.ts.map +1 -1
  26. package/dist/technospam/pages/ApplicationsProblemsPagePage.js +81 -77
  27. package/dist/technospam/pages/ApplicationsProblemsPagePage.js.map +1 -1
  28. package/dist/technospam/pages/CoursesCourseDetailsPagePage.d.ts.map +1 -1
  29. package/dist/technospam/pages/CoursesCourseDetailsPagePage.js +200 -178
  30. package/dist/technospam/pages/CoursesCourseDetailsPagePage.js.map +1 -1
  31. package/dist/technospam/pages/CoursesCoursesPagePage.d.ts.map +1 -1
  32. package/dist/technospam/pages/CoursesCoursesPagePage.js +66 -62
  33. package/dist/technospam/pages/CoursesCoursesPagePage.js.map +1 -1
  34. package/dist/technospam/pages/StudyPlannerStudyPlannerPagePage.d.ts +2 -0
  35. package/dist/technospam/pages/StudyPlannerStudyPlannerPagePage.d.ts.map +1 -0
  36. package/dist/technospam/pages/StudyPlannerStudyPlannerPagePage.js +266 -0
  37. package/dist/technospam/pages/StudyPlannerStudyPlannerPagePage.js.map +1 -0
  38. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TechnoSpamRoot.js","names":[],"sources":["../../src/technospam/TechnoSpamRoot.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useEffect } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n LayoutDashboard,\n Home,\n ShieldCheck,\n BarChart3,\n Code,\n BookOpen,\n Trophy,\n Users,\n Bell,\n CalendarDays,\n HeadphonesIcon,\n Settings,\n LogIn,\n UserPlus,\n KeyRound,\n ScrollText,\n Shield,\n Cookie,\n TrendingUp,\n FileText,\n Target,\n Map,\n Pencil,\n Calendar,\n Star,\n ClipboardList,\n Briefcase,\n Award,\n User,\n BellRing,\n} from 'lucide-react';\nimport { TechnoSpamProvider } from './providers/TechnoSpamProvider';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport type { NavItem, TechnoSpamRootProps } from './types';\nimport { TechnoSpamRoutes } from './TechnoSpamRoutes';\nimport { tWithFallback } from './utils/i18n';\nimport { joinPath } from './utils/navigation';\n\nexport const TechnoSpamRoot: FC<TechnoSpamRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => tWithFallback(t, key, fallback);\n\n useEffect(() => {\n if (!registerNavItems) return;\n\n const navItem: NavItem = {\n id: 'technospam',\n label: tr('technospam.nav.root', 'TechnoSpam'),\n path: basePath,\n icon: <Code size={20} />,\n order: 80,\n group: 'products',\n children: [\n {\n id: 'technospam-home',\n label: tr('technospam.nav.home', 'Home'),\n path: joinPath(basePath, 'home'),\n icon: <Home size={16} />,\n order: 0,\n },\n {\n id: 'technospam-dashboard-section',\n label: tr('technospam.nav.dashboard.section', 'Dashboard'),\n path: joinPath(basePath, 'dashboard'),\n icon: <LayoutDashboard size={16} />,\n order: 1,\n children: [\n {\n id: 'technospam-dashboard-dashboard-page',\n label: tr('technospam.nav.dashboard.overview', 'Dashboard'),\n path: joinPath(basePath, 'dashboard/dashboard-page'),\n icon: <LayoutDashboard size={16} />,\n },\n ],\n },\n {\n id: 'technospam-admin',\n label: tr('technospam.nav.admin.section', 'Admin'),\n path: joinPath(basePath, 'admin'),\n icon: <ShieldCheck size={16} />,\n order: 2,\n children: [\n {\n id: 'technospam-admin-admin-dashboard-page',\n label: tr('technospam.nav.admin.dashboard', 'Admin Dashboard'),\n path: joinPath(basePath, 'admin/admin-dashboard-page'),\n icon: <LayoutDashboard size={16} />,\n },\n {\n id: 'technospam-admin-audit-reports-page',\n label: tr('technospam.nav.admin.auditReports', 'Audit Reports'),\n path: joinPath(basePath, 'admin/audit-reports-page'),\n icon: <ClipboardList size={16} />,\n },\n ],\n },\n {\n id: 'technospam-analytics',\n label: tr('technospam.nav.analytics.section', 'Analytics'),\n path: joinPath(basePath, 'analytics'),\n icon: <BarChart3 size={16} />,\n order: 3,\n children: [\n {\n id: 'technospam-analytics-analytics-page',\n label: tr('technospam.nav.analytics.overview', 'Analytics'),\n path: joinPath(basePath, 'analytics/analytics-page'),\n icon: <TrendingUp size={16} />,\n },\n {\n id: 'technospam-analytics-progress-page',\n label: tr('technospam.nav.analytics.progress', 'Progress'),\n path: joinPath(basePath, 'analytics/progress-page'),\n icon: <Target size={16} />,\n },\n {\n id: 'technospam-analytics-achievements-page',\n label: tr('technospam.nav.analytics.achievements', 'Achievements'),\n path: joinPath(basePath, 'analytics/achievements-page'),\n icon: <Award size={16} />,\n },\n {\n id: 'technospam-analytics-reports-page',\n label: tr('technospam.nav.analytics.reports', 'Reports'),\n path: joinPath(basePath, 'analytics/reports-page'),\n icon: <FileText size={16} />,\n },\n ],\n },\n {\n id: 'technospam-applications',\n label: tr('technospam.nav.applications.section', 'Applications'),\n path: joinPath(basePath, 'applications'),\n icon: <Code size={16} />,\n order: 4,\n children: [\n {\n id: 'technospam-applications-problems-page',\n label: tr('technospam.nav.applications.problems', 'Problems'),\n path: joinPath(basePath, 'applications/problems-page'),\n icon: <Code size={16} />,\n },\n {\n id: 'technospam-applications-problem-details-page',\n label: tr('technospam.nav.applications.problemDetails', 'Problem Details'),\n path: joinPath(basePath, 'applications/problem-details-page'),\n icon: <FileText size={16} />,\n },\n {\n id: 'technospam-applications-solutions-page',\n label: tr('technospam.nav.applications.solutions', 'Solutions'),\n path: joinPath(basePath, 'applications/solutions-page'),\n icon: <ClipboardList size={16} />,\n },\n {\n id: 'technospam-applications-portfolio-page',\n label: tr('technospam.nav.applications.portfolio', 'Portfolio'),\n path: joinPath(basePath, 'applications/portfolio-page'),\n icon: <Briefcase size={16} />,\n },\n ],\n },\n {\n id: 'technospam-courses',\n label: tr('technospam.nav.courses.section', 'Courses'),\n path: joinPath(basePath, 'courses'),\n icon: <BookOpen size={16} />,\n order: 5,\n children: [\n {\n id: 'technospam-courses-courses-page',\n label: tr('technospam.nav.courses.browse', 'Browse Courses'),\n path: joinPath(basePath, 'courses/courses-page'),\n icon: <BookOpen size={16} />,\n },\n {\n id: 'technospam-courses-course-details-page',\n label: tr('technospam.nav.courses.courseDetails', 'Course Details'),\n path: joinPath(basePath, 'courses/course-details-page'),\n icon: <FileText size={16} />,\n },\n {\n id: 'technospam-courses-my-learning-page',\n label: tr('technospam.nav.courses.myLearning', 'My Learning'),\n path: joinPath(basePath, 'courses/my-learning-page'),\n icon: <Target size={16} />,\n },\n {\n id: 'technospam-courses-instructors-page',\n label: tr('technospam.nav.courses.instructors', 'Instructors'),\n path: joinPath(basePath, 'courses/instructors-page'),\n icon: <Users size={16} />,\n },\n {\n id: 'technospam-courses-instructor-profile-page',\n label: tr('technospam.nav.courses.instructorProfile', 'Instructor Profile'),\n path: joinPath(basePath, 'courses/instructor-profile-page'),\n icon: <User size={16} />,\n },\n ],\n },\n {\n id: 'technospam-hackathons',\n label: tr('technospam.nav.hackathons.section', 'Hackathons'),\n path: joinPath(basePath, 'hackathons'),\n icon: <Trophy size={16} />,\n order: 6,\n children: [\n {\n id: 'technospam-hackathons-hackathons-page',\n label: tr('technospam.nav.hackathons.overview', 'Hackathons'),\n path: joinPath(basePath, 'hackathons/hackathons-page'),\n icon: <Trophy size={16} />,\n },\n {\n id: 'technospam-hackathons-hackathon-details-page',\n label: tr('technospam.nav.hackathons.details', 'Hackathon Details'),\n path: joinPath(basePath, 'hackathons/hackathon-details-page'),\n icon: <FileText size={16} />,\n },\n {\n id: 'technospam-hackathons-events-page',\n label: tr('technospam.nav.hackathons.events', 'Events'),\n path: joinPath(basePath, 'hackathons/events-page'),\n icon: <Calendar size={16} />,\n },\n {\n id: 'technospam-hackathons-teams-page',\n label: tr('technospam.nav.hackathons.teams', 'Teams'),\n path: joinPath(basePath, 'hackathons/teams-page'),\n icon: <Users size={16} />,\n },\n ],\n },\n {\n id: 'technospam-mentorship',\n label: tr('technospam.nav.mentorship.section', 'Mentorship'),\n path: joinPath(basePath, 'mentorship'),\n icon: <Users size={16} />,\n order: 8,\n children: [\n {\n id: 'technospam-mentorship-mentorship-page',\n label: tr('technospam.nav.mentorship.overview', 'Mentorship'),\n path: joinPath(basePath, 'mentorship/mentorship-page'),\n icon: <Users size={16} />,\n },\n {\n id: 'technospam-mentorship-mentors-page',\n label: tr('technospam.nav.mentorship.mentors', 'Mentors'),\n path: joinPath(basePath, 'mentorship/mentors-page'),\n icon: <Star size={16} />,\n },\n {\n id: 'technospam-mentorship-mentor-profile-page',\n label: tr('technospam.nav.mentorship.mentorProfile', 'Mentor Profile'),\n path: joinPath(basePath, 'mentorship/mentor-profile-page'),\n icon: <User size={16} />,\n },\n {\n id: 'technospam-mentorship-sessions-page',\n label: tr('technospam.nav.mentorship.sessions', 'Sessions'),\n path: joinPath(basePath, 'mentorship/sessions-page'),\n icon: <CalendarDays size={16} />,\n },\n {\n id: 'technospam-mentorship-bookings-page',\n label: tr('technospam.nav.mentorship.bookings', 'Bookings'),\n path: joinPath(basePath, 'mentorship/bookings-page'),\n icon: <Calendar size={16} />,\n },\n ],\n },\n {\n id: 'technospam-notifications',\n label: tr('technospam.nav.notifications.section', 'Notifications'),\n path: joinPath(basePath, 'notifications'),\n icon: <Bell size={16} />,\n order: 9,\n children: [\n {\n id: 'technospam-notifications-notifications-page',\n label: tr('technospam.nav.notifications.overview', 'Notifications'),\n path: joinPath(basePath, 'notifications/notifications-page'),\n icon: <BellRing size={16} />,\n },\n ],\n },\n {\n id: 'technospam-study-planner',\n label: tr('technospam.nav.studyPlanner.section', 'Study Planner'),\n path: joinPath(basePath, 'study-planner'),\n icon: <CalendarDays size={16} />,\n order: 11,\n children: [\n {\n id: 'technospam-study-planner-study-planner-page',\n label: tr('technospam.nav.studyPlanner.overview', 'Study Planner'),\n path: joinPath(basePath, 'study-planner/study-planner-page'),\n icon: <CalendarDays size={16} />,\n },\n {\n id: 'technospam-study-planner-study-plans-page',\n label: tr('technospam.nav.studyPlanner.plans', 'Study Plans'),\n path: joinPath(basePath, 'study-planner/study-plans-page'),\n icon: <ClipboardList size={16} />,\n },\n {\n id: 'technospam-study-planner-study-plan-details-page',\n label: tr('technospam.nav.studyPlanner.planDetails', 'Plan Details'),\n path: joinPath(basePath, 'study-planner/study-plan-details-page'),\n icon: <FileText size={16} />,\n },\n {\n id: 'technospam-study-planner-study-plan-edit-page',\n label: tr('technospam.nav.studyPlanner.editPlan', 'Edit Plan'),\n path: joinPath(basePath, 'study-planner/study-plan-edit-page'),\n icon: <Pencil size={16} />,\n },\n {\n id: 'technospam-study-planner-learning-paths-page',\n label: tr('technospam.nav.studyPlanner.learningPaths', 'Learning Paths'),\n path: joinPath(basePath, 'study-planner/learning-paths-page'),\n icon: <Map size={16} />,\n },\n {\n id: 'technospam-study-planner-learning-path-details-page',\n label: tr('technospam.nav.studyPlanner.pathDetails', 'Path Details'),\n path: joinPath(basePath, 'study-planner/learning-path-details-page'),\n icon: <FileText size={16} />,\n },\n {\n id: 'technospam-study-planner-goals-page',\n label: tr('technospam.nav.studyPlanner.goals', 'Goals'),\n path: joinPath(basePath, 'study-planner/goals-page'),\n icon: <Target size={16} />,\n },\n ],\n },\n {\n id: 'technospam-support',\n label: tr('technospam.nav.support.section', 'Support'),\n path: joinPath(basePath, 'support'),\n icon: <HeadphonesIcon size={16} />,\n order: 12,\n children: [\n {\n id: 'technospam-support-support-page',\n label: tr('technospam.nav.support.overview', 'Support'),\n path: joinPath(basePath, 'support/support-page'),\n icon: <HeadphonesIcon size={16} />,\n },\n ],\n },\n {\n id: 'technospam-settings',\n label: tr('technospam.nav.settings.section', 'Settings'),\n path: joinPath(basePath, 'settings'),\n icon: <Settings size={16} />,\n order: 13,\n children: [\n {\n id: 'technospam-settings-settings-page',\n label: tr('technospam.nav.settings.general', 'General Settings'),\n path: joinPath(basePath, 'settings/settings-page'),\n icon: <Settings size={16} />,\n },\n {\n id: 'technospam-settings-profile-settings-page',\n label: tr('technospam.nav.settings.profile', 'Profile Settings'),\n path: joinPath(basePath, 'settings/profile-settings-page'),\n icon: <User size={16} />,\n },\n {\n id: 'technospam-settings-notification-settings-page',\n label: tr('technospam.nav.settings.notifications', 'Notification Settings'),\n path: joinPath(basePath, 'settings/notification-settings-page'),\n icon: <BellRing size={16} />,\n },\n ],\n },\n {\n id: 'technospam-auth',\n label: tr('technospam.nav.auth.section', 'Auth'),\n path: joinPath(basePath, 'auth'),\n icon: <LogIn size={16} />,\n order: 14,\n children: [\n {\n id: 'technospam-auth-login-page',\n label: tr('technospam.nav.auth.login', 'Login'),\n path: joinPath(basePath, 'auth/login-page'),\n icon: <LogIn size={16} />,\n },\n {\n id: 'technospam-auth-register-page',\n label: tr('technospam.nav.auth.register', 'Register'),\n path: joinPath(basePath, 'auth/register-page'),\n icon: <UserPlus size={16} />,\n },\n {\n id: 'technospam-auth-forgot-password-page',\n label: tr('technospam.nav.auth.forgotPassword', 'Forgot Password'),\n path: joinPath(basePath, 'auth/forgot-password-page'),\n icon: <KeyRound size={16} />,\n },\n ],\n },\n {\n id: 'technospam-legal',\n label: tr('technospam.nav.legal.section', 'Legal'),\n path: joinPath(basePath, 'legal'),\n icon: <ScrollText size={16} />,\n order: 15,\n children: [\n {\n id: 'technospam-legal-terms-page',\n label: tr('technospam.nav.legal.terms', 'Terms of Service'),\n path: joinPath(basePath, 'legal/terms-page'),\n icon: <ScrollText size={16} />,\n },\n {\n id: 'technospam-legal-privacy-policy-page',\n label: tr('technospam.nav.legal.privacy', 'Privacy Policy'),\n path: joinPath(basePath, 'legal/privacy-policy-page'),\n icon: <Shield size={16} />,\n },\n {\n id: 'technospam-legal-cookies-page',\n label: tr('technospam.nav.legal.cookies', 'Cookie Policy'),\n path: joinPath(basePath, 'legal/cookies-page'),\n icon: <Cookie size={16} />,\n },\n ],\n },\n ],\n };\n\n return registerNavItems(navItem);\n }, [registerNavItems, basePath, t]);\n\n useEffect(() => {\n if (!registerFooterItems) return;\n\n return registerFooterItems([\n {\n id: 'technospam-status',\n label: tr('technospam.footer.ready', 'TechnoSpam Ready'),\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems, t]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <TechnoSpamProvider {...props}>\n <TechnoSpamRoutes />\n </TechnoSpamProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"TechnoSpamRoot.js","names":[],"sources":["../../src/technospam/TechnoSpamRoot.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useEffect } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n LayoutDashboard,\n Home,\n ShieldCheck,\n BarChart3,\n Code,\n BookOpen,\n Trophy,\n Users,\n Bell,\n CalendarDays,\n HeadphonesIcon,\n Settings,\n LogIn,\n UserPlus,\n KeyRound,\n ScrollText,\n Shield,\n Cookie,\n TrendingUp,\n FileText,\n Target,\n Calendar,\n Star,\n ClipboardList,\n Briefcase,\n Award,\n User,\n BellRing,\n} from 'lucide-react';\nimport { TechnoSpamProvider } from './providers/TechnoSpamProvider';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport type { NavItem, TechnoSpamRootProps } from './types';\nimport { TechnoSpamRoutes } from './TechnoSpamRoutes';\nimport { tWithFallback } from './utils/i18n';\nimport { joinPath } from './utils/navigation';\n\nexport const TechnoSpamRoot: FC<TechnoSpamRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => tWithFallback(t, key, fallback);\n\n useEffect(() => {\n if (!registerNavItems) return;\n\n const navItem: NavItem = {\n id: 'technospam',\n label: tr('technospam.nav.root', 'TechnoSpam'),\n path: basePath,\n icon: <Code size={20} />,\n order: 80,\n group: 'products',\n children: [\n {\n id: 'technospam-home',\n label: tr('technospam.nav.home', 'Home'),\n path: joinPath(basePath, 'home'),\n icon: <Home size={16} />,\n order: 0,\n },\n {\n id: 'technospam-dashboard-section',\n label: tr('technospam.nav.dashboard.section', 'Dashboard'),\n path: joinPath(basePath, 'dashboard'),\n icon: <LayoutDashboard size={16} />,\n order: 1,\n children: [\n {\n id: 'technospam-dashboard-dashboard-page',\n label: tr('technospam.nav.dashboard.overview', 'Dashboard'),\n path: joinPath(basePath, 'dashboard/dashboard-page'),\n icon: <LayoutDashboard size={16} />,\n },\n ],\n },\n {\n id: 'technospam-admin',\n label: tr('technospam.nav.admin.section', 'Admin'),\n path: joinPath(basePath, 'admin'),\n icon: <ShieldCheck size={16} />,\n order: 2,\n children: [\n {\n id: 'technospam-admin-admin-dashboard-page',\n label: tr('technospam.nav.admin.dashboard', 'Admin Dashboard'),\n path: joinPath(basePath, 'admin/admin-dashboard-page'),\n icon: <LayoutDashboard size={16} />,\n },\n {\n id: 'technospam-admin-audit-reports-page',\n label: tr('technospam.nav.admin.auditReports', 'Audit Reports'),\n path: joinPath(basePath, 'admin/audit-reports-page'),\n icon: <ClipboardList size={16} />,\n },\n ],\n },\n {\n id: 'technospam-analytics',\n label: tr('technospam.nav.analytics.section', 'Analytics'),\n path: joinPath(basePath, 'analytics'),\n icon: <BarChart3 size={16} />,\n order: 3,\n children: [\n {\n id: 'technospam-analytics-analytics-page',\n label: tr('technospam.nav.analytics.overview', 'Analytics'),\n path: joinPath(basePath, 'analytics/analytics-page'),\n icon: <TrendingUp size={16} />,\n },\n {\n id: 'technospam-analytics-progress-page',\n label: tr('technospam.nav.analytics.progress', 'Progress'),\n path: joinPath(basePath, 'analytics/progress-page'),\n icon: <Target size={16} />,\n },\n {\n id: 'technospam-analytics-achievements-page',\n label: tr('technospam.nav.analytics.achievements', 'Achievements'),\n path: joinPath(basePath, 'analytics/achievements-page'),\n icon: <Award size={16} />,\n },\n {\n id: 'technospam-analytics-reports-page',\n label: tr('technospam.nav.analytics.reports', 'Reports'),\n path: joinPath(basePath, 'analytics/reports-page'),\n icon: <FileText size={16} />,\n },\n ],\n },\n {\n id: 'technospam-applications',\n label: tr('technospam.nav.applications.section', 'Applications'),\n path: joinPath(basePath, 'applications'),\n icon: <Code size={16} />,\n order: 4,\n children: [\n {\n id: 'technospam-applications-problems-page',\n label: tr('technospam.nav.applications.problems', 'Problems'),\n path: joinPath(basePath, 'applications/problems-page'),\n icon: <Code size={16} />,\n },\n {\n id: 'technospam-applications-problem-details-page',\n label: tr('technospam.nav.applications.problemDetails', 'Problem Details'),\n path: joinPath(basePath, 'applications/problem-details-page'),\n icon: <FileText size={16} />,\n },\n {\n id: 'technospam-applications-solutions-page',\n label: tr('technospam.nav.applications.solutions', 'Solutions'),\n path: joinPath(basePath, 'applications/solutions-page'),\n icon: <ClipboardList size={16} />,\n },\n {\n id: 'technospam-applications-portfolio-page',\n label: tr('technospam.nav.applications.portfolio', 'Portfolio'),\n path: joinPath(basePath, 'applications/portfolio-page'),\n icon: <Briefcase size={16} />,\n },\n ],\n },\n {\n id: 'technospam-courses',\n label: tr('technospam.nav.courses.section', 'Courses'),\n path: joinPath(basePath, 'courses'),\n icon: <BookOpen size={16} />,\n order: 5,\n children: [\n {\n id: 'technospam-courses-courses-page',\n label: tr('technospam.nav.courses.browse', 'Browse Courses'),\n path: joinPath(basePath, 'courses/courses-page'),\n icon: <BookOpen size={16} />,\n },\n {\n id: 'technospam-courses-course-details-page',\n label: tr('technospam.nav.courses.courseDetails', 'Course Details'),\n path: joinPath(basePath, 'courses/course-details-page'),\n icon: <FileText size={16} />,\n },\n {\n id: 'technospam-courses-my-learning-page',\n label: tr('technospam.nav.courses.myLearning', 'My Learning'),\n path: joinPath(basePath, 'courses/my-learning-page'),\n icon: <Target size={16} />,\n },\n {\n id: 'technospam-courses-instructors-page',\n label: tr('technospam.nav.courses.instructors', 'Instructors'),\n path: joinPath(basePath, 'courses/instructors-page'),\n icon: <Users size={16} />,\n },\n {\n id: 'technospam-courses-instructor-profile-page',\n label: tr('technospam.nav.courses.instructorProfile', 'Instructor Profile'),\n path: joinPath(basePath, 'courses/instructor-profile-page'),\n icon: <User size={16} />,\n },\n ],\n },\n {\n id: 'technospam-hackathons',\n label: tr('technospam.nav.hackathons.section', 'Hackathons'),\n path: joinPath(basePath, 'hackathons'),\n icon: <Trophy size={16} />,\n order: 6,\n children: [\n {\n id: 'technospam-hackathons-hackathons-page',\n label: tr('technospam.nav.hackathons.overview', 'Hackathons'),\n path: joinPath(basePath, 'hackathons/hackathons-page'),\n icon: <Trophy size={16} />,\n },\n {\n id: 'technospam-hackathons-hackathon-details-page',\n label: tr('technospam.nav.hackathons.details', 'Hackathon Details'),\n path: joinPath(basePath, 'hackathons/hackathon-details-page'),\n icon: <FileText size={16} />,\n },\n {\n id: 'technospam-hackathons-events-page',\n label: tr('technospam.nav.hackathons.events', 'Events'),\n path: joinPath(basePath, 'hackathons/events-page'),\n icon: <Calendar size={16} />,\n },\n {\n id: 'technospam-hackathons-teams-page',\n label: tr('technospam.nav.hackathons.teams', 'Teams'),\n path: joinPath(basePath, 'hackathons/teams-page'),\n icon: <Users size={16} />,\n },\n ],\n },\n {\n id: 'technospam-mentorship',\n label: tr('technospam.nav.mentorship.section', 'Mentorship'),\n path: joinPath(basePath, 'mentorship'),\n icon: <Users size={16} />,\n order: 8,\n children: [\n {\n id: 'technospam-mentorship-mentorship-page',\n label: tr('technospam.nav.mentorship.overview', 'Mentorship'),\n path: joinPath(basePath, 'mentorship/mentorship-page'),\n icon: <Users size={16} />,\n },\n {\n id: 'technospam-mentorship-mentors-page',\n label: tr('technospam.nav.mentorship.mentors', 'Mentors'),\n path: joinPath(basePath, 'mentorship/mentors-page'),\n icon: <Star size={16} />,\n },\n {\n id: 'technospam-mentorship-mentor-profile-page',\n label: tr('technospam.nav.mentorship.mentorProfile', 'Mentor Profile'),\n path: joinPath(basePath, 'mentorship/mentor-profile-page'),\n icon: <User size={16} />,\n },\n {\n id: 'technospam-mentorship-sessions-page',\n label: tr('technospam.nav.mentorship.sessions', 'Sessions'),\n path: joinPath(basePath, 'mentorship/sessions-page'),\n icon: <CalendarDays size={16} />,\n },\n {\n id: 'technospam-mentorship-bookings-page',\n label: tr('technospam.nav.mentorship.bookings', 'Bookings'),\n path: joinPath(basePath, 'mentorship/bookings-page'),\n icon: <Calendar size={16} />,\n },\n ],\n },\n {\n id: 'technospam-notifications',\n label: tr('technospam.nav.notifications.section', 'Notifications'),\n path: joinPath(basePath, 'notifications'),\n icon: <Bell size={16} />,\n order: 9,\n children: [\n {\n id: 'technospam-notifications-notifications-page',\n label: tr('technospam.nav.notifications.overview', 'Notifications'),\n path: joinPath(basePath, 'notifications/notifications-page'),\n icon: <BellRing size={16} />,\n },\n ],\n },\n /*\n * BOFF-4415: a real, deterministic (non-AI) plan generator now\n * lives at study-planner/study-planner-page — see\n * StudyPlannerStudyPlannerPagePage's honesty note. Only that one\n * child is registered; the richer standalone views the original\n * scaffolding anticipated (a separate plans list, plan details,\n * plan edit, learning paths, goals) are consolidated into that\n * single page for this pass and are not separately built, so no\n * nav item points at them.\n */\n {\n id: 'technospam-study-planner',\n label: tr('technospam.nav.studyPlanner.section', 'Study Planner'),\n path: joinPath(basePath, 'study-planner'),\n icon: <CalendarDays size={16} />,\n order: 11,\n children: [\n {\n id: 'technospam-study-planner-study-planner-page',\n label: tr('technospam.nav.studyPlanner.overview', 'Study Planner'),\n path: joinPath(basePath, 'study-planner/study-planner-page'),\n icon: <CalendarDays size={16} />,\n },\n ],\n },\n {\n id: 'technospam-support',\n label: tr('technospam.nav.support.section', 'Support'),\n path: joinPath(basePath, 'support'),\n icon: <HeadphonesIcon size={16} />,\n order: 12,\n children: [\n {\n id: 'technospam-support-support-page',\n label: tr('technospam.nav.support.overview', 'Support'),\n path: joinPath(basePath, 'support/support-page'),\n icon: <HeadphonesIcon size={16} />,\n },\n ],\n },\n {\n id: 'technospam-settings',\n label: tr('technospam.nav.settings.section', 'Settings'),\n path: joinPath(basePath, 'settings'),\n icon: <Settings size={16} />,\n order: 13,\n children: [\n {\n id: 'technospam-settings-settings-page',\n label: tr('technospam.nav.settings.general', 'General Settings'),\n path: joinPath(basePath, 'settings/settings-page'),\n icon: <Settings size={16} />,\n },\n {\n id: 'technospam-settings-profile-settings-page',\n label: tr('technospam.nav.settings.profile', 'Profile Settings'),\n path: joinPath(basePath, 'settings/profile-settings-page'),\n icon: <User size={16} />,\n },\n {\n id: 'technospam-settings-notification-settings-page',\n label: tr('technospam.nav.settings.notifications', 'Notification Settings'),\n path: joinPath(basePath, 'settings/notification-settings-page'),\n icon: <BellRing size={16} />,\n },\n ],\n },\n {\n id: 'technospam-auth',\n label: tr('technospam.nav.auth.section', 'Auth'),\n path: joinPath(basePath, 'auth'),\n icon: <LogIn size={16} />,\n order: 14,\n children: [\n {\n id: 'technospam-auth-login-page',\n label: tr('technospam.nav.auth.login', 'Login'),\n path: joinPath(basePath, 'auth/login-page'),\n icon: <LogIn size={16} />,\n },\n {\n id: 'technospam-auth-register-page',\n label: tr('technospam.nav.auth.register', 'Register'),\n path: joinPath(basePath, 'auth/register-page'),\n icon: <UserPlus size={16} />,\n },\n {\n id: 'technospam-auth-forgot-password-page',\n label: tr('technospam.nav.auth.forgotPassword', 'Forgot Password'),\n path: joinPath(basePath, 'auth/forgot-password-page'),\n icon: <KeyRound size={16} />,\n },\n ],\n },\n {\n id: 'technospam-legal',\n label: tr('technospam.nav.legal.section', 'Legal'),\n path: joinPath(basePath, 'legal'),\n icon: <ScrollText size={16} />,\n order: 15,\n children: [\n {\n id: 'technospam-legal-terms-page',\n label: tr('technospam.nav.legal.terms', 'Terms of Service'),\n path: joinPath(basePath, 'legal/terms-page'),\n icon: <ScrollText size={16} />,\n },\n {\n id: 'technospam-legal-privacy-policy-page',\n label: tr('technospam.nav.legal.privacy', 'Privacy Policy'),\n path: joinPath(basePath, 'legal/privacy-policy-page'),\n icon: <Shield size={16} />,\n },\n {\n id: 'technospam-legal-cookies-page',\n label: tr('technospam.nav.legal.cookies', 'Cookie Policy'),\n path: joinPath(basePath, 'legal/cookies-page'),\n icon: <Cookie size={16} />,\n },\n ],\n },\n ],\n };\n\n return registerNavItems(navItem);\n }, [registerNavItems, basePath, t]);\n\n useEffect(() => {\n if (!registerFooterItems) return;\n\n return registerFooterItems([\n {\n id: 'technospam-status',\n label: tr('technospam.footer.ready', 'TechnoSpam Ready'),\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems, t]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <TechnoSpamProvider {...props}>\n <TechnoSpamRoutes />\n </TechnoSpamProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TechnoSpamRoutes.d.ts","sourceRoot":"","sources":["../../src/technospam/TechnoSpamRoutes.tsx"],"names":[],"mappings":"AAiIA,wBAAgB,gBAAgB,gCAoJ/B"}
1
+ {"version":3,"file":"TechnoSpamRoutes.d.ts","sourceRoot":"","sources":["../../src/technospam/TechnoSpamRoutes.tsx"],"names":[],"mappings":"AAiJA,wBAAgB,gBAAgB,gCA8J/B"}
@@ -8,8 +8,8 @@ import { Navigate as c, Route as l, Routes as u, useLocation as d } from "react-
8
8
  import { jsx as f, jsxs as p } from "react/jsx-runtime";
9
9
  import { FeatureGate as m } from "@burdenoff/fe-libs/shared/feature-flags";
10
10
  //#region src/technospam/TechnoSpamRoutes.tsx
11
- var h = i(() => import("./pages/DashboardDashboardPagePage.js").then((e) => ({ default: e.DashboardDashboardPagePage }))), g = i(() => import("./pages/CoursesCoursesPagePage.js").then((e) => ({ default: e.CoursesCoursesPagePage }))), _ = i(() => import("./pages/CoursesCourseDetailsPagePage.js").then((e) => ({ default: e.CoursesCourseDetailsPagePage }))), v = i(() => import("./pages/CoursesMyLearningPagePage.js").then((e) => ({ default: e.CoursesMyLearningPagePage }))), y = i(() => import("./pages/ApplicationsProblemsPagePage.js").then((e) => ({ default: e.ApplicationsProblemsPagePage }))), b = i(() => import("./pages/ApplicationsProblemDetailsPagePage.js").then((e) => ({ default: e.ApplicationsProblemDetailsPagePage }))), x = i(() => import("./pages/MentorshipMentorsPagePage.js").then((e) => ({ default: e.MentorshipMentorsPagePage }))), S = i(() => import("./pages/MentorshipMentorProfilePagePage.js").then((e) => ({ default: e.MentorshipMentorProfilePagePage }))), C = i(() => import("./pages/MentorshipSessionsPagePage.js").then((e) => ({ default: e.MentorshipSessionsPagePage }))), w = i(() => import("./pages/HackathonsHackathonsPagePage.js").then((e) => ({ default: e.HackathonsHackathonsPagePage }))), T = i(() => import("./pages/HackathonsHackathonDetailsPagePage.js").then((e) => ({ default: e.HackathonsHackathonDetailsPagePage }))), E = i(() => import("./pages/AnalyticsAnalyticsPagePage.js").then((e) => ({ default: e.AnalyticsAnalyticsPagePage }))), D = i(() => import("./pages/AdminAdminDashboardPagePage.js").then((e) => ({ default: e.AdminAdminDashboardPagePage })));
12
- function O() {
11
+ var h = i(() => import("./pages/DashboardDashboardPagePage.js").then((e) => ({ default: e.DashboardDashboardPagePage }))), g = i(() => import("./pages/CoursesCoursesPagePage.js").then((e) => ({ default: e.CoursesCoursesPagePage }))), _ = i(() => import("./pages/CoursesCourseDetailsPagePage.js").then((e) => ({ default: e.CoursesCourseDetailsPagePage }))), v = i(() => import("./pages/CoursesMyLearningPagePage.js").then((e) => ({ default: e.CoursesMyLearningPagePage }))), y = i(() => import("./pages/ApplicationsProblemsPagePage.js").then((e) => ({ default: e.ApplicationsProblemsPagePage }))), b = i(() => import("./pages/ApplicationsProblemDetailsPagePage.js").then((e) => ({ default: e.ApplicationsProblemDetailsPagePage }))), x = i(() => import("./pages/MentorshipMentorsPagePage.js").then((e) => ({ default: e.MentorshipMentorsPagePage }))), S = i(() => import("./pages/MentorshipMentorProfilePagePage.js").then((e) => ({ default: e.MentorshipMentorProfilePagePage }))), C = i(() => import("./pages/MentorshipSessionsPagePage.js").then((e) => ({ default: e.MentorshipSessionsPagePage }))), w = i(() => import("./pages/HackathonsHackathonsPagePage.js").then((e) => ({ default: e.HackathonsHackathonsPagePage }))), T = i(() => import("./pages/HackathonsHackathonDetailsPagePage.js").then((e) => ({ default: e.HackathonsHackathonDetailsPagePage }))), E = i(() => import("./pages/AnalyticsAnalyticsPagePage.js").then((e) => ({ default: e.AnalyticsAnalyticsPagePage }))), D = i(() => import("./pages/AdminAdminDashboardPagePage.js").then((e) => ({ default: e.AdminAdminDashboardPagePage }))), O = i(() => import("./pages/StudyPlannerStudyPlannerPagePage.js").then((e) => ({ default: e.StudyPlannerStudyPlannerPagePage }))), k = i(() => import("./pages/ApplicationsPortfolioPagePage.js").then((e) => ({ default: e.ApplicationsPortfolioPagePage })));
12
+ function A() {
13
13
  return /* @__PURE__ */ f("div", {
14
14
  className: "flex h-full min-h-[40vh] items-center justify-center",
15
15
  children: /* @__PURE__ */ f(o, {
@@ -18,7 +18,7 @@ function O() {
18
18
  })
19
19
  });
20
20
  }
21
- function k() {
21
+ function j() {
22
22
  return /* @__PURE__ */ f("div", {
23
23
  className: "flex h-full min-h-[40vh] items-center justify-center p-6",
24
24
  children: /* @__PURE__ */ f(t, {
@@ -28,41 +28,41 @@ function k() {
28
28
  })
29
29
  });
30
30
  }
31
- function A(e, t) {
31
+ function M(e, t) {
32
32
  return /* @__PURE__ */ f(m, {
33
33
  flag: e,
34
34
  defaultValue: !0,
35
- fallback: /* @__PURE__ */ f(k, {}),
35
+ fallback: /* @__PURE__ */ f(j, {}),
36
36
  children: t
37
37
  });
38
38
  }
39
- function j() {
39
+ function N() {
40
40
  let { pathname: t } = d();
41
- e(a(() => t.includes("/courses/course-details") ? "course-details" : t.includes("/courses/my-learning") ? "my-learning" : t.includes("/courses") ? "courses" : t.includes("/applications/problem-details") ? "problem-details" : t.includes("/applications") ? "problems" : t.includes("/mentorship/mentor-profile") ? "mentor-profile" : t.includes("/mentorship/sessions") ? "sessions" : t.includes("/mentorship") ? "mentors" : t.includes("/hackathons/hackathon-details") ? "hackathon-details" : t.includes("/hackathons") ? "hackathons" : t.includes("/analytics") ? "analytics" : t.includes("/admin") ? "admin" : "dashboard", [t]));
41
+ e(a(() => t.includes("/courses/course-details") ? "course-details" : t.includes("/courses/my-learning") ? "my-learning" : t.includes("/courses") ? "courses" : t.includes("/applications/problem-details") ? "problem-details" : t.includes("/applications/portfolio") ? "portfolio" : t.includes("/applications") ? "problems" : t.includes("/study-planner") ? "study-planner" : t.includes("/mentorship/mentor-profile") ? "mentor-profile" : t.includes("/mentorship/sessions") ? "sessions" : t.includes("/mentorship") ? "mentors" : t.includes("/hackathons/hackathon-details") ? "hackathon-details" : t.includes("/hackathons") ? "hackathons" : t.includes("/analytics") ? "analytics" : t.includes("/admin") ? "admin" : "dashboard", [t]));
42
42
  }
43
- function M() {
44
- return j(), /* @__PURE__ */ f(r, {
45
- fallback: /* @__PURE__ */ f(O, {}),
43
+ function P() {
44
+ return N(), /* @__PURE__ */ f(r, {
45
+ fallback: /* @__PURE__ */ f(A, {}),
46
46
  children: /* @__PURE__ */ p(u, { children: [
47
47
  /* @__PURE__ */ f(l, {
48
48
  index: !0,
49
- element: A("technospam.dashboard", /* @__PURE__ */ f(n, {}))
49
+ element: M("technospam.dashboard", /* @__PURE__ */ f(n, {}))
50
50
  }),
51
51
  /* @__PURE__ */ f(l, {
52
52
  path: "dashboard/dashboard-page",
53
- element: A("technospam.dashboard", /* @__PURE__ */ f(h, {}))
53
+ element: M("technospam.dashboard", /* @__PURE__ */ f(h, {}))
54
54
  }),
55
55
  /* @__PURE__ */ f(l, {
56
56
  path: "courses/courses-page",
57
- element: A("technospam.courses", /* @__PURE__ */ f(g, {}))
57
+ element: M("technospam.courses", /* @__PURE__ */ f(g, {}))
58
58
  }),
59
59
  /* @__PURE__ */ f(l, {
60
60
  path: "courses/course-details-page",
61
- element: A("technospam.courses", /* @__PURE__ */ f(_, {}))
61
+ element: M("technospam.courses", /* @__PURE__ */ f(_, {}))
62
62
  }),
63
63
  /* @__PURE__ */ f(l, {
64
64
  path: "courses/my-learning-page",
65
- element: A("technospam.courses", /* @__PURE__ */ f(v, {}))
65
+ element: M("technospam.courses", /* @__PURE__ */ f(v, {}))
66
66
  }),
67
67
  /* @__PURE__ */ f(l, {
68
68
  path: "courses/instructors-page",
@@ -80,11 +80,11 @@ function M() {
80
80
  }),
81
81
  /* @__PURE__ */ f(l, {
82
82
  path: "applications/problems-page",
83
- element: A("technospam.problems", /* @__PURE__ */ f(y, {}))
83
+ element: M("technospam.problems", /* @__PURE__ */ f(y, {}))
84
84
  }),
85
85
  /* @__PURE__ */ f(l, {
86
86
  path: "applications/problem-details-page",
87
- element: A("technospam.problems", /* @__PURE__ */ f(b, {}))
87
+ element: M("technospam.problems", /* @__PURE__ */ f(b, {}))
88
88
  }),
89
89
  /* @__PURE__ */ f(l, {
90
90
  path: "applications/solutions-page",
@@ -95,22 +95,19 @@ function M() {
95
95
  }),
96
96
  /* @__PURE__ */ f(l, {
97
97
  path: "applications/portfolio-page",
98
- element: /* @__PURE__ */ f(c, {
99
- to: "../applications/problems-page",
100
- replace: !0
101
- })
98
+ element: M("technospam.portfolio", /* @__PURE__ */ f(k, {}))
102
99
  }),
103
100
  /* @__PURE__ */ f(l, {
104
101
  path: "mentorship/mentors-page",
105
- element: A("technospam.mentorship", /* @__PURE__ */ f(x, {}))
102
+ element: M("technospam.mentorship", /* @__PURE__ */ f(x, {}))
106
103
  }),
107
104
  /* @__PURE__ */ f(l, {
108
105
  path: "mentorship/mentor-profile-page",
109
- element: A("technospam.mentorship", /* @__PURE__ */ f(S, {}))
106
+ element: M("technospam.mentorship", /* @__PURE__ */ f(S, {}))
110
107
  }),
111
108
  /* @__PURE__ */ f(l, {
112
109
  path: "mentorship/sessions-page",
113
- element: A("technospam.mentorship", /* @__PURE__ */ f(C, {}))
110
+ element: M("technospam.mentorship", /* @__PURE__ */ f(C, {}))
114
111
  }),
115
112
  /* @__PURE__ */ f(l, {
116
113
  path: "mentorship/mentorship-page",
@@ -128,11 +125,11 @@ function M() {
128
125
  }),
129
126
  /* @__PURE__ */ f(l, {
130
127
  path: "hackathons/hackathons-page",
131
- element: A("technospam.hackathons", /* @__PURE__ */ f(w, {}))
128
+ element: M("technospam.hackathons", /* @__PURE__ */ f(w, {}))
132
129
  }),
133
130
  /* @__PURE__ */ f(l, {
134
131
  path: "hackathons/hackathon-details-page",
135
- element: A("technospam.hackathons", /* @__PURE__ */ f(T, {}))
132
+ element: M("technospam.hackathons", /* @__PURE__ */ f(T, {}))
136
133
  }),
137
134
  /* @__PURE__ */ f(l, {
138
135
  path: "hackathons/events-page",
@@ -150,7 +147,7 @@ function M() {
150
147
  }),
151
148
  /* @__PURE__ */ f(l, {
152
149
  path: "analytics/analytics-page",
153
- element: A("technospam.analytics", /* @__PURE__ */ f(E, {}))
150
+ element: M("technospam.analytics", /* @__PURE__ */ f(E, {}))
154
151
  }),
155
152
  /* @__PURE__ */ f(l, {
156
153
  path: "analytics/progress-page",
@@ -175,7 +172,7 @@ function M() {
175
172
  }),
176
173
  /* @__PURE__ */ f(l, {
177
174
  path: "admin/admin-dashboard-page",
178
- element: A("technospam.admin", /* @__PURE__ */ f(D, {}))
175
+ element: M("technospam.admin", /* @__PURE__ */ f(D, {}))
179
176
  }),
180
177
  /* @__PURE__ */ f(l, {
181
178
  path: "admin/audit-reports-page",
@@ -184,10 +181,14 @@ function M() {
184
181
  replace: !0
185
182
  })
186
183
  }),
184
+ /* @__PURE__ */ f(l, {
185
+ path: "study-planner/study-planner-page",
186
+ element: M("technospam.studyPlanner", /* @__PURE__ */ f(O, {}))
187
+ }),
187
188
  /* @__PURE__ */ f(l, {
188
189
  path: "study-planner/*",
189
190
  element: /* @__PURE__ */ f(c, {
190
- to: "../dashboard/dashboard-page",
191
+ to: "../study-planner/study-planner-page",
191
192
  replace: !0
192
193
  })
193
194
  }),
@@ -216,6 +217,6 @@ function M() {
216
217
  });
217
218
  }
218
219
  //#endregion
219
- export { M as TechnoSpamRoutes };
220
+ export { P as TechnoSpamRoutes };
220
221
 
221
222
  //# sourceMappingURL=TechnoSpamRoutes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TechnoSpamRoutes.js","names":[],"sources":["../../src/technospam/TechnoSpamRoutes.tsx"],"sourcesContent":["import { lazy, Suspense, useMemo } from 'react';\nimport { Navigate, Route, Routes, useLocation } from 'react-router-dom';\nimport { Loader2, ShieldAlert } from 'lucide-react';\nimport { FeatureGate } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useTechnoSpamPageView } from './hooks/useTechnoSpamPageView';\nimport { EmptyView } from './components';\n\n/**\n * TechnoSpam routes — every page is backed by the real wspace-technospam-svc\n * (Tec* fields). Modules with no backend (study planner, open source, knowledge\n * base, portfolio, standalone instructors, extra analytics/admin sub-pages) were\n * removed during the backend-reconciliation rebuild; their old paths redirect to\n * the nearest live page so stale links never 404.\n */\n\nimport { DashboardDashboardPagePage as IndexPage } from './pages/DashboardDashboardPagePage';\n\nconst DashboardDashboardPagePage = lazy(() =>\n import('./pages/DashboardDashboardPagePage').then((m) => ({\n default: m.DashboardDashboardPagePage,\n }))\n);\nconst CoursesCoursesPagePage = lazy(() =>\n import('./pages/CoursesCoursesPagePage').then((m) => ({ default: m.CoursesCoursesPagePage }))\n);\nconst CoursesCourseDetailsPagePage = lazy(() =>\n import('./pages/CoursesCourseDetailsPagePage').then((m) => ({\n default: m.CoursesCourseDetailsPagePage,\n }))\n);\nconst CoursesMyLearningPagePage = lazy(() =>\n import('./pages/CoursesMyLearningPagePage').then((m) => ({\n default: m.CoursesMyLearningPagePage,\n }))\n);\nconst ApplicationsProblemsPagePage = lazy(() =>\n import('./pages/ApplicationsProblemsPagePage').then((m) => ({\n default: m.ApplicationsProblemsPagePage,\n }))\n);\nconst ApplicationsProblemDetailsPagePage = lazy(() =>\n import('./pages/ApplicationsProblemDetailsPagePage').then((m) => ({\n default: m.ApplicationsProblemDetailsPagePage,\n }))\n);\nconst MentorshipMentorsPagePage = lazy(() =>\n import('./pages/MentorshipMentorsPagePage').then((m) => ({\n default: m.MentorshipMentorsPagePage,\n }))\n);\nconst MentorshipMentorProfilePagePage = lazy(() =>\n import('./pages/MentorshipMentorProfilePagePage').then((m) => ({\n default: m.MentorshipMentorProfilePagePage,\n }))\n);\nconst MentorshipSessionsPagePage = lazy(() =>\n import('./pages/MentorshipSessionsPagePage').then((m) => ({\n default: m.MentorshipSessionsPagePage,\n }))\n);\nconst HackathonsHackathonsPagePage = lazy(() =>\n import('./pages/HackathonsHackathonsPagePage').then((m) => ({\n default: m.HackathonsHackathonsPagePage,\n }))\n);\nconst HackathonsHackathonDetailsPagePage = lazy(() =>\n import('./pages/HackathonsHackathonDetailsPagePage').then((m) => ({\n default: m.HackathonsHackathonDetailsPagePage,\n }))\n);\nconst AnalyticsAnalyticsPagePage = lazy(() =>\n import('./pages/AnalyticsAnalyticsPagePage').then((m) => ({\n default: m.AnalyticsAnalyticsPagePage,\n }))\n);\nconst AdminAdminDashboardPagePage = lazy(() =>\n import('./pages/AdminAdminDashboardPagePage').then((m) => ({\n default: m.AdminAdminDashboardPagePage,\n }))\n);\n\nfunction PageLoader() {\n return (\n <div className=\"flex h-full min-h-[40vh] items-center justify-center\">\n <Loader2 className=\"animate-spin text-text-muted\" size={28} />\n </div>\n );\n}\n\nfunction FeatureDisabledFallback() {\n return (\n <div className=\"flex h-full min-h-[40vh] items-center justify-center p-6\">\n <EmptyView\n icon={<ShieldAlert size={28} />}\n title=\"Feature not available\"\n description=\"This TechnoSpam feature is currently disabled for your workspace.\"\n />\n </div>\n );\n}\n\nfunction gated(flag: string, element: React.ReactNode): React.ReactElement {\n return (\n <FeatureGate flag={flag} defaultValue={true} fallback={<FeatureDisabledFallback />}>\n {element}\n </FeatureGate>\n );\n}\n\nfunction useTrackedPageView() {\n const { pathname } = useLocation();\n const page = useMemo(() => {\n if (pathname.includes('/courses/course-details')) return 'course-details';\n if (pathname.includes('/courses/my-learning')) return 'my-learning';\n if (pathname.includes('/courses')) return 'courses';\n if (pathname.includes('/applications/problem-details')) return 'problem-details';\n if (pathname.includes('/applications')) return 'problems';\n if (pathname.includes('/mentorship/mentor-profile')) return 'mentor-profile';\n if (pathname.includes('/mentorship/sessions')) return 'sessions';\n if (pathname.includes('/mentorship')) return 'mentors';\n if (pathname.includes('/hackathons/hackathon-details')) return 'hackathon-details';\n if (pathname.includes('/hackathons')) return 'hackathons';\n if (pathname.includes('/analytics')) return 'analytics';\n if (pathname.includes('/admin')) return 'admin';\n return 'dashboard';\n }, [pathname]);\n useTechnoSpamPageView(page);\n}\n\nexport function TechnoSpamRoutes() {\n useTrackedPageView();\n return (\n <Suspense fallback={<PageLoader />}>\n <Routes>\n <Route index element={gated('technospam.dashboard', <IndexPage />)} />\n <Route\n path=\"dashboard/dashboard-page\"\n element={gated('technospam.dashboard', <DashboardDashboardPagePage />)}\n />\n\n {/* Courses */}\n <Route\n path=\"courses/courses-page\"\n element={gated('technospam.courses', <CoursesCoursesPagePage />)}\n />\n <Route\n path=\"courses/course-details-page\"\n element={gated('technospam.courses', <CoursesCourseDetailsPagePage />)}\n />\n <Route\n path=\"courses/my-learning-page\"\n element={gated('technospam.courses', <CoursesMyLearningPagePage />)}\n />\n <Route\n path=\"courses/instructors-page\"\n element={<Navigate to=\"../courses/courses-page\" replace />}\n />\n <Route\n path=\"courses/instructor-profile-page\"\n element={<Navigate to=\"../courses/courses-page\" replace />}\n />\n\n {/* Practice (applications) */}\n <Route\n path=\"applications/problems-page\"\n element={gated('technospam.problems', <ApplicationsProblemsPagePage />)}\n />\n <Route\n path=\"applications/problem-details-page\"\n element={gated('technospam.problems', <ApplicationsProblemDetailsPagePage />)}\n />\n <Route\n path=\"applications/solutions-page\"\n element={<Navigate to=\"../applications/problems-page\" replace />}\n />\n <Route\n path=\"applications/portfolio-page\"\n element={<Navigate to=\"../applications/problems-page\" replace />}\n />\n\n {/* Mentorship */}\n <Route\n path=\"mentorship/mentors-page\"\n element={gated('technospam.mentorship', <MentorshipMentorsPagePage />)}\n />\n <Route\n path=\"mentorship/mentor-profile-page\"\n element={gated('technospam.mentorship', <MentorshipMentorProfilePagePage />)}\n />\n <Route\n path=\"mentorship/sessions-page\"\n element={gated('technospam.mentorship', <MentorshipSessionsPagePage />)}\n />\n <Route\n path=\"mentorship/mentorship-page\"\n element={<Navigate to=\"../mentorship/mentors-page\" replace />}\n />\n <Route\n path=\"mentorship/bookings-page\"\n element={<Navigate to=\"../mentorship/sessions-page\" replace />}\n />\n\n {/* Hackathons */}\n <Route\n path=\"hackathons/hackathons-page\"\n element={gated('technospam.hackathons', <HackathonsHackathonsPagePage />)}\n />\n <Route\n path=\"hackathons/hackathon-details-page\"\n element={gated('technospam.hackathons', <HackathonsHackathonDetailsPagePage />)}\n />\n <Route\n path=\"hackathons/events-page\"\n element={<Navigate to=\"../hackathons/hackathons-page\" replace />}\n />\n <Route\n path=\"hackathons/teams-page\"\n element={<Navigate to=\"../hackathons/hackathons-page\" replace />}\n />\n\n {/* Analytics */}\n <Route\n path=\"analytics/analytics-page\"\n element={gated('technospam.analytics', <AnalyticsAnalyticsPagePage />)}\n />\n <Route\n path=\"analytics/progress-page\"\n element={<Navigate to=\"../analytics/analytics-page\" replace />}\n />\n <Route\n path=\"analytics/achievements-page\"\n element={<Navigate to=\"../analytics/analytics-page\" replace />}\n />\n <Route\n path=\"analytics/reports-page\"\n element={<Navigate to=\"../analytics/analytics-page\" replace />}\n />\n\n {/* Admin */}\n <Route\n path=\"admin/admin-dashboard-page\"\n element={gated('technospam.admin', <AdminAdminDashboardPagePage />)}\n />\n <Route\n path=\"admin/audit-reports-page\"\n element={<Navigate to=\"../admin/admin-dashboard-page\" replace />}\n />\n\n {/*\n * Removed modules → dashboard.\n *\n * open-source and knowledge-base were never shipped and have no nav\n * entries anymore (BOFF-3086) — these redirects are a defensive\n * fallback for stale bookmarks/links only.\n *\n * study-planner intentionally KEEPS its nav entry (TechnoSpamRoot.tsx)\n * and this redirect: the TechnoSage AI planner epic (BOFF-3841/3874/\n * 3895) plans to land a real page at this route. Do not remove the\n * nav item until that page ships — see BOFF-3086 for the carve-out.\n */}\n <Route\n path=\"study-planner/*\"\n element={<Navigate to=\"../dashboard/dashboard-page\" replace />}\n />\n <Route\n path=\"open-source/*\"\n element={<Navigate to=\"../dashboard/dashboard-page\" replace />}\n />\n <Route\n path=\"knowledge-base/*\"\n element={<Navigate to=\"../dashboard/dashboard-page\" replace />}\n />\n\n <Route path=\"*\" element={<Navigate to=\"../dashboard/dashboard-page\" replace />} />\n </Routes>\n </Suspense>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TechnoSpamRoutes.js","names":[],"sources":["../../src/technospam/TechnoSpamRoutes.tsx"],"sourcesContent":["import { lazy, Suspense, useMemo } from 'react';\nimport { Navigate, Route, Routes, useLocation } from 'react-router-dom';\nimport { Loader2, ShieldAlert } from 'lucide-react';\nimport { FeatureGate } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useTechnoSpamPageView } from './hooks/useTechnoSpamPageView';\nimport { EmptyView } from './components';\n\n/**\n * TechnoSpam routes — every page is backed by the real wspace-technospam-svc\n * (Tec* fields). Modules with no backend (open source, knowledge base,\n * standalone instructors, extra analytics/admin sub-pages) were removed\n * during the backend-reconciliation rebuild; their old paths redirect to\n * the nearest live page so stale links never 404.\n *\n * study-planner (BOFF-4415) and applications/portfolio-page (BOFF-4432) are\n * real pages again as of this pass — see their page components' honesty\n * notes for exactly what is/isn't AI and what's deferred.\n */\n\nimport { DashboardDashboardPagePage as IndexPage } from './pages/DashboardDashboardPagePage';\n\nconst DashboardDashboardPagePage = lazy(() =>\n import('./pages/DashboardDashboardPagePage').then((m) => ({\n default: m.DashboardDashboardPagePage,\n }))\n);\nconst CoursesCoursesPagePage = lazy(() =>\n import('./pages/CoursesCoursesPagePage').then((m) => ({ default: m.CoursesCoursesPagePage }))\n);\nconst CoursesCourseDetailsPagePage = lazy(() =>\n import('./pages/CoursesCourseDetailsPagePage').then((m) => ({\n default: m.CoursesCourseDetailsPagePage,\n }))\n);\nconst CoursesMyLearningPagePage = lazy(() =>\n import('./pages/CoursesMyLearningPagePage').then((m) => ({\n default: m.CoursesMyLearningPagePage,\n }))\n);\nconst ApplicationsProblemsPagePage = lazy(() =>\n import('./pages/ApplicationsProblemsPagePage').then((m) => ({\n default: m.ApplicationsProblemsPagePage,\n }))\n);\nconst ApplicationsProblemDetailsPagePage = lazy(() =>\n import('./pages/ApplicationsProblemDetailsPagePage').then((m) => ({\n default: m.ApplicationsProblemDetailsPagePage,\n }))\n);\nconst MentorshipMentorsPagePage = lazy(() =>\n import('./pages/MentorshipMentorsPagePage').then((m) => ({\n default: m.MentorshipMentorsPagePage,\n }))\n);\nconst MentorshipMentorProfilePagePage = lazy(() =>\n import('./pages/MentorshipMentorProfilePagePage').then((m) => ({\n default: m.MentorshipMentorProfilePagePage,\n }))\n);\nconst MentorshipSessionsPagePage = lazy(() =>\n import('./pages/MentorshipSessionsPagePage').then((m) => ({\n default: m.MentorshipSessionsPagePage,\n }))\n);\nconst HackathonsHackathonsPagePage = lazy(() =>\n import('./pages/HackathonsHackathonsPagePage').then((m) => ({\n default: m.HackathonsHackathonsPagePage,\n }))\n);\nconst HackathonsHackathonDetailsPagePage = lazy(() =>\n import('./pages/HackathonsHackathonDetailsPagePage').then((m) => ({\n default: m.HackathonsHackathonDetailsPagePage,\n }))\n);\nconst AnalyticsAnalyticsPagePage = lazy(() =>\n import('./pages/AnalyticsAnalyticsPagePage').then((m) => ({\n default: m.AnalyticsAnalyticsPagePage,\n }))\n);\nconst AdminAdminDashboardPagePage = lazy(() =>\n import('./pages/AdminAdminDashboardPagePage').then((m) => ({\n default: m.AdminAdminDashboardPagePage,\n }))\n);\nconst StudyPlannerStudyPlannerPagePage = lazy(() =>\n import('./pages/StudyPlannerStudyPlannerPagePage').then((m) => ({\n default: m.StudyPlannerStudyPlannerPagePage,\n }))\n);\nconst ApplicationsPortfolioPagePage = lazy(() =>\n import('./pages/ApplicationsPortfolioPagePage').then((m) => ({\n default: m.ApplicationsPortfolioPagePage,\n }))\n);\n\nfunction PageLoader() {\n return (\n <div className=\"flex h-full min-h-[40vh] items-center justify-center\">\n <Loader2 className=\"animate-spin text-text-muted\" size={28} />\n </div>\n );\n}\n\nfunction FeatureDisabledFallback() {\n return (\n <div className=\"flex h-full min-h-[40vh] items-center justify-center p-6\">\n <EmptyView\n icon={<ShieldAlert size={28} />}\n title=\"Feature not available\"\n description=\"This TechnoSpam feature is currently disabled for your workspace.\"\n />\n </div>\n );\n}\n\nfunction gated(flag: string, element: React.ReactNode): React.ReactElement {\n return (\n <FeatureGate flag={flag} defaultValue={true} fallback={<FeatureDisabledFallback />}>\n {element}\n </FeatureGate>\n );\n}\n\nfunction useTrackedPageView() {\n const { pathname } = useLocation();\n const page = useMemo(() => {\n if (pathname.includes('/courses/course-details')) return 'course-details';\n if (pathname.includes('/courses/my-learning')) return 'my-learning';\n if (pathname.includes('/courses')) return 'courses';\n if (pathname.includes('/applications/problem-details')) return 'problem-details';\n if (pathname.includes('/applications/portfolio')) return 'portfolio';\n if (pathname.includes('/applications')) return 'problems';\n if (pathname.includes('/study-planner')) return 'study-planner';\n if (pathname.includes('/mentorship/mentor-profile')) return 'mentor-profile';\n if (pathname.includes('/mentorship/sessions')) return 'sessions';\n if (pathname.includes('/mentorship')) return 'mentors';\n if (pathname.includes('/hackathons/hackathon-details')) return 'hackathon-details';\n if (pathname.includes('/hackathons')) return 'hackathons';\n if (pathname.includes('/analytics')) return 'analytics';\n if (pathname.includes('/admin')) return 'admin';\n return 'dashboard';\n }, [pathname]);\n useTechnoSpamPageView(page);\n}\n\nexport function TechnoSpamRoutes() {\n useTrackedPageView();\n return (\n <Suspense fallback={<PageLoader />}>\n <Routes>\n <Route index element={gated('technospam.dashboard', <IndexPage />)} />\n <Route\n path=\"dashboard/dashboard-page\"\n element={gated('technospam.dashboard', <DashboardDashboardPagePage />)}\n />\n\n {/* Courses */}\n <Route\n path=\"courses/courses-page\"\n element={gated('technospam.courses', <CoursesCoursesPagePage />)}\n />\n <Route\n path=\"courses/course-details-page\"\n element={gated('technospam.courses', <CoursesCourseDetailsPagePage />)}\n />\n <Route\n path=\"courses/my-learning-page\"\n element={gated('technospam.courses', <CoursesMyLearningPagePage />)}\n />\n <Route\n path=\"courses/instructors-page\"\n element={<Navigate to=\"../courses/courses-page\" replace />}\n />\n <Route\n path=\"courses/instructor-profile-page\"\n element={<Navigate to=\"../courses/courses-page\" replace />}\n />\n\n {/* Practice (applications) */}\n <Route\n path=\"applications/problems-page\"\n element={gated('technospam.problems', <ApplicationsProblemsPagePage />)}\n />\n <Route\n path=\"applications/problem-details-page\"\n element={gated('technospam.problems', <ApplicationsProblemDetailsPagePage />)}\n />\n <Route\n path=\"applications/solutions-page\"\n element={<Navigate to=\"../applications/problems-page\" replace />}\n />\n <Route\n path=\"applications/portfolio-page\"\n element={gated('technospam.portfolio', <ApplicationsPortfolioPagePage />)}\n />\n\n {/* Mentorship */}\n <Route\n path=\"mentorship/mentors-page\"\n element={gated('technospam.mentorship', <MentorshipMentorsPagePage />)}\n />\n <Route\n path=\"mentorship/mentor-profile-page\"\n element={gated('technospam.mentorship', <MentorshipMentorProfilePagePage />)}\n />\n <Route\n path=\"mentorship/sessions-page\"\n element={gated('technospam.mentorship', <MentorshipSessionsPagePage />)}\n />\n <Route\n path=\"mentorship/mentorship-page\"\n element={<Navigate to=\"../mentorship/mentors-page\" replace />}\n />\n <Route\n path=\"mentorship/bookings-page\"\n element={<Navigate to=\"../mentorship/sessions-page\" replace />}\n />\n\n {/* Hackathons */}\n <Route\n path=\"hackathons/hackathons-page\"\n element={gated('technospam.hackathons', <HackathonsHackathonsPagePage />)}\n />\n <Route\n path=\"hackathons/hackathon-details-page\"\n element={gated('technospam.hackathons', <HackathonsHackathonDetailsPagePage />)}\n />\n <Route\n path=\"hackathons/events-page\"\n element={<Navigate to=\"../hackathons/hackathons-page\" replace />}\n />\n <Route\n path=\"hackathons/teams-page\"\n element={<Navigate to=\"../hackathons/hackathons-page\" replace />}\n />\n\n {/* Analytics */}\n <Route\n path=\"analytics/analytics-page\"\n element={gated('technospam.analytics', <AnalyticsAnalyticsPagePage />)}\n />\n <Route\n path=\"analytics/progress-page\"\n element={<Navigate to=\"../analytics/analytics-page\" replace />}\n />\n <Route\n path=\"analytics/achievements-page\"\n element={<Navigate to=\"../analytics/analytics-page\" replace />}\n />\n <Route\n path=\"analytics/reports-page\"\n element={<Navigate to=\"../analytics/analytics-page\" replace />}\n />\n\n {/* Admin */}\n <Route\n path=\"admin/admin-dashboard-page\"\n element={gated('technospam.admin', <AdminAdminDashboardPagePage />)}\n />\n <Route\n path=\"admin/audit-reports-page\"\n element={<Navigate to=\"../admin/admin-dashboard-page\" replace />}\n />\n\n {/*\n * Study Planner (BOFF-4415): a real, deterministic (non-AI)\n * scheduler now lives at study-planner/study-planner-page — see\n * StudyPlannerStudyPlannerPagePage's honesty note. This single page\n * intentionally consolidates what the nav scaffolding originally\n * anticipated as several separate pages (plans list, plan details,\n * edit, learning paths, goals) — those richer standalone views,\n * plus true AI/adaptive re-planning (BOFF-3874/3895), remain\n * deferred. Any other study-planner/* sub-path falls back here\n * rather than to the dashboard, since the real page now exists.\n */}\n <Route\n path=\"study-planner/study-planner-page\"\n element={gated('technospam.studyPlanner', <StudyPlannerStudyPlannerPagePage />)}\n />\n <Route\n path=\"study-planner/*\"\n element={<Navigate to=\"../study-planner/study-planner-page\" replace />}\n />\n {/*\n * Removed modules → dashboard.\n *\n * open-source and knowledge-base were never shipped and have no nav\n * entries anymore (BOFF-3086) — these redirects are a defensive\n * fallback for stale bookmarks/links only.\n */}\n <Route\n path=\"open-source/*\"\n element={<Navigate to=\"../dashboard/dashboard-page\" replace />}\n />\n <Route\n path=\"knowledge-base/*\"\n element={<Navigate to=\"../dashboard/dashboard-page\" replace />}\n />\n\n <Route path=\"*\" element={<Navigate to=\"../dashboard/dashboard-page\" replace />} />\n </Routes>\n </Suspense>\n );\n}\n"],"mappings":"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"}
@@ -24,6 +24,14 @@ export interface TecCourse {
24
24
  tags: string[];
25
25
  estimatedMinutes: number;
26
26
  instructorId?: string | null;
27
+ /** BOFF-4416: true when this course requires a paid TechnoSpam plan. */
28
+ isPremiumOnly: boolean;
29
+ /**
30
+ * BOFF-4416: computed for the calling workspace — true when this course
31
+ * is `isPremiumOnly` and the workspace has no paid plan. When true, every
32
+ * non-preview lesson's `content` is already null in the API response.
33
+ */
34
+ isLocked: boolean;
27
35
  publishedAt?: string | null;
28
36
  createdAt: string;
29
37
  updatedAt: string;
@@ -39,6 +47,12 @@ export interface TecLesson {
39
47
  position: number;
40
48
  estimatedMinutes: number;
41
49
  isPreview: boolean;
50
+ /**
51
+ * BOFF-4416: true when this lesson's `content` is gated behind a paid
52
+ * TechnoSpam plan (never true for `isPreview` lessons). `content` is
53
+ * already null in the API response whenever this is true.
54
+ */
55
+ isLocked: boolean;
42
56
  createdAt: string;
43
57
  updatedAt: string;
44
58
  }
@@ -84,10 +98,53 @@ export interface TecProblem {
84
98
  interviewFrequency?: TecInterviewFrequency | null;
85
99
  points: number;
86
100
  starterCode?: string | null;
101
+ /** BOFF-4416: true when this problem requires a paid TechnoSpam plan. */
102
+ isPremiumOnly: boolean;
103
+ /**
104
+ * BOFF-4416: computed for the calling workspace — true when this problem
105
+ * is `isPremiumOnly` and the workspace has no paid plan. `statement` /
106
+ * `starterCode` are already null and `publicTestCases` already empty in
107
+ * the API response whenever this is true.
108
+ */
109
+ isLocked: boolean;
87
110
  publishedAt?: string | null;
88
111
  createdAt: string;
89
112
  updatedAt: string;
90
113
  submissions?: TecSubmission[];
114
+ /** Worked-example fixtures the grader runs against; PUBLIC cases only. */
115
+ publicTestCases?: TecProblemTestCase[];
116
+ }
117
+ /** Visibility of a problem test case. Mirrors TecTestCaseVisibility. */
118
+ export type TecTestCaseVisibility = 'PUBLIC' | 'HIDDEN';
119
+ /** Per-test-case outcome of a graded submission. Mirrors TecTestCaseStatus. */
120
+ export type TecTestCaseStatus = 'PASSED' | 'WRONG_ANSWER' | 'RUNTIME_ERROR' | 'TIME_LIMIT_EXCEEDED' | 'COMPILE_ERROR' | 'SKIPPED';
121
+ /**
122
+ * A worked-example fixture shown on the problem page. Only PUBLIC cases are
123
+ * ever returned to a learner, so `input`/`expectedOutput` are always present
124
+ * in practice; they stay optional because the schema allows null for the
125
+ * author-facing redacted shape.
126
+ */
127
+ export interface TecProblemTestCase {
128
+ id: string;
129
+ problemId: string;
130
+ name: string;
131
+ ordering: number;
132
+ visibility: TecTestCaseVisibility;
133
+ timeLimitMs: number;
134
+ input?: string | null;
135
+ expectedOutput?: string | null;
136
+ }
137
+ /** Grading detail for one test case of a submission. */
138
+ export interface TecTestCaseResult {
139
+ testCaseId: string;
140
+ name: string;
141
+ visibility: TecTestCaseVisibility;
142
+ status: TecTestCaseStatus;
143
+ passed: boolean;
144
+ durationMs: number;
145
+ input?: string | null;
146
+ expectedOutput?: string | null;
147
+ actualOutput?: string | null;
91
148
  }
92
149
  export interface TecSubmission {
93
150
  id: string;
@@ -98,6 +155,10 @@ export interface TecSubmission {
98
155
  verdict: TecSubmissionVerdict;
99
156
  runtimeMs: number;
100
157
  pointsAwarded: number;
158
+ passedCount: number;
159
+ totalCount: number;
160
+ stderr?: string | null;
161
+ testResults: TecTestCaseResult[];
101
162
  judgedAt?: string | null;
102
163
  createdAt: string;
103
164
  updatedAt: string;
@@ -286,6 +347,16 @@ export declare const useSubmitSolution: () => useMutation.ResultTuple<{
286
347
  }, {
287
348
  [x: string]: any;
288
349
  }, import('@apollo/client').ApolloCache, undefined>;
350
+ /**
351
+ * Re-run the grader for a submission. Used by the problem page when a verdict
352
+ * came back PENDING (grader unavailable at submit time) so a learner can retry
353
+ * without resubmitting identical code.
354
+ */
355
+ export declare const useRegradeSubmission: () => useMutation.ResultTuple<{
356
+ tecRegradeSubmission: TecSubmission;
357
+ }, {
358
+ [x: string]: any;
359
+ }, import('@apollo/client').ApolloCache, undefined>;
289
360
  export declare const useBookSession: () => useMutation.ResultTuple<{
290
361
  tecBookSession: TecMentorSession;
291
362
  }, {
@@ -401,6 +472,101 @@ export declare const useCompleteHackathon: () => useMutation.ResultTuple<{
401
472
  }, {
402
473
  [x: string]: any;
403
474
  }, import('@apollo/client').ApolloCache, undefined>;
475
+ export type TecStudyPlanStatus = 'ACTIVE' | 'COMPLETED' | 'ARCHIVED';
476
+ export type TecStudyPlanStepKind = 'COURSE' | 'PROBLEM';
477
+ export type TecStudyPlanStepStatus = 'PENDING' | 'IN_PROGRESS' | 'COMPLETED' | 'SKIPPED';
478
+ export interface TecStudyPlanStep {
479
+ id: string;
480
+ order: number;
481
+ kind: TecStudyPlanStepKind;
482
+ targetId: string;
483
+ title: string;
484
+ scheduledWeek: number;
485
+ status: TecStudyPlanStepStatus;
486
+ rationale: string;
487
+ estimatedMinutes: number;
488
+ completedAt?: string | null;
489
+ }
490
+ export interface TecStudyPlan {
491
+ id: string;
492
+ goal: string;
493
+ topic?: string | null;
494
+ timeframeWeeks: number;
495
+ status: TecStudyPlanStatus;
496
+ targetCompletionDate?: string | null;
497
+ progressPct: number;
498
+ totalSteps: number;
499
+ completedSteps: number;
500
+ createdAt: string;
501
+ steps: TecStudyPlanStep[];
502
+ }
503
+ export declare const useMyStudyPlansQuery: () => useQuery.Result<{
504
+ tecMyStudyPlans: {
505
+ items: TecStudyPlan[];
506
+ pageInfo: TecPageInfo;
507
+ };
508
+ }, import('@apollo/client').OperationVariables, "empty" | "complete" | "streaming", import('@apollo/client').OperationVariables>;
509
+ export declare const useGenerateStudyPlan: () => useMutation.ResultTuple<{
510
+ tecGenerateStudyPlan: TecStudyPlan;
511
+ }, {
512
+ [x: string]: any;
513
+ }, import('@apollo/client').ApolloCache, undefined>;
514
+ export declare const useUpdateStudyPlanStepStatus: () => useMutation.ResultTuple<{
515
+ tecUpdateStudyPlanStepStatus: TecStudyPlanStep;
516
+ }, {
517
+ [x: string]: any;
518
+ }, import('@apollo/client').ApolloCache, undefined>;
519
+ export declare const useArchiveStudyPlan: () => useMutation.ResultTuple<{
520
+ tecArchiveStudyPlan: boolean;
521
+ }, {
522
+ [x: string]: any;
523
+ }, import('@apollo/client').ApolloCache, undefined>;
524
+ export type TecPortfolioItemKind = 'HACKATHON_PROJECT' | 'CERTIFICATE' | 'COURSE_COMPLETION';
525
+ export interface TecPortfolioItem {
526
+ id: string;
527
+ kind: TecPortfolioItemKind;
528
+ sourceId: string;
529
+ title: string;
530
+ description?: string | null;
531
+ link?: string | null;
532
+ completionDate: string;
533
+ order: number;
534
+ }
535
+ export interface TecPortfolio {
536
+ id: string;
537
+ isPublished: boolean;
538
+ publicSlug?: string | null;
539
+ publishedAt?: string | null;
540
+ items: TecPortfolioItem[];
541
+ }
542
+ export declare const useMyPortfolioQuery: () => useQuery.Result<{
543
+ tecMyPortfolio: TecPortfolio;
544
+ }, import('@apollo/client').OperationVariables, "empty" | "complete" | "streaming", import('@apollo/client').OperationVariables>;
545
+ export declare const useAddPortfolioItem: () => useMutation.ResultTuple<{
546
+ tecAddPortfolioItem: TecPortfolioItem;
547
+ }, {
548
+ [x: string]: any;
549
+ }, import('@apollo/client').ApolloCache, undefined>;
550
+ export declare const useReorderPortfolioItems: () => useMutation.ResultTuple<{
551
+ tecReorderPortfolioItems: TecPortfolio;
552
+ }, {
553
+ [x: string]: any;
554
+ }, import('@apollo/client').ApolloCache, undefined>;
555
+ export declare const useRemovePortfolioItem: () => useMutation.ResultTuple<{
556
+ tecRemovePortfolioItem: boolean;
557
+ }, {
558
+ [x: string]: any;
559
+ }, import('@apollo/client').ApolloCache, undefined>;
560
+ export declare const usePublishPortfolio: () => useMutation.ResultTuple<{
561
+ tecPublishPortfolio: TecPortfolio;
562
+ }, {
563
+ [x: string]: any;
564
+ }, import('@apollo/client').ApolloCache, undefined>;
565
+ export declare const useUnpublishPortfolio: () => useMutation.ResultTuple<{
566
+ tecUnpublishPortfolio: TecPortfolio;
567
+ }, {
568
+ [x: string]: any;
569
+ }, import('@apollo/client').ApolloCache, undefined>;
404
570
  export interface PageLimit {
405
571
  limit: number;
406
572
  more: () => void;