@burdenoff/microfe-technospam 2026.716.2 → 2026.719.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 (29) hide show
  1. package/dist/node_modules/recharts/es6/cartesian/Brush.js.map +1 -1
  2. package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js.map +1 -1
  3. package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js.map +1 -1
  4. package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js.map +1 -1
  5. package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js.map +1 -1
  6. package/dist/node_modules/recharts/es6/cartesian/XAxis.js.map +1 -1
  7. package/dist/node_modules/recharts/es6/cartesian/YAxis.js.map +1 -1
  8. package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js.map +1 -1
  9. package/dist/node_modules/sonner/dist/index.js.map +1 -1
  10. package/dist/technospam/TechnoSpamRoot.d.ts.map +1 -1
  11. package/dist/technospam/TechnoSpamRoot.js +190 -250
  12. package/dist/technospam/TechnoSpamRoot.js.map +1 -1
  13. package/dist/technospam/TechnoSpamRoutes.d.ts.map +1 -1
  14. package/dist/technospam/TechnoSpamRoutes.js.map +1 -1
  15. package/dist/technospam/api/technospamApi.d.ts +13 -9
  16. package/dist/technospam/api/technospamApi.d.ts.map +1 -1
  17. package/dist/technospam/api/technospamApi.js +53 -16
  18. package/dist/technospam/api/technospamApi.js.map +1 -1
  19. package/dist/technospam/pages/AdminAdminDashboardPagePage.js +2 -2
  20. package/dist/technospam/pages/AdminAdminDashboardPagePage.js.map +1 -1
  21. package/dist/technospam/pages/AnalyticsAnalyticsPagePage.js +1 -1
  22. package/dist/technospam/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  23. package/dist/technospam/pages/DashboardDashboardPagePage.js +1 -1
  24. package/dist/technospam/pages/DashboardDashboardPagePage.js.map +1 -1
  25. package/dist/technospam/pages/HackathonsHackathonDetailsPagePage.js +1 -1
  26. package/dist/technospam/pages/HackathonsHackathonDetailsPagePage.js.map +1 -1
  27. package/dist/technospam/pages/MentorshipSessionsPagePage.js +1 -1
  28. package/dist/technospam/pages/MentorshipSessionsPagePage.js.map +1 -1
  29. 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 Book,\n Users,\n Bell,\n GitBranch,\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 FolderOpen,\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-knowledge-base',\n label: tr('technospam.nav.knowledgeBase.section', 'Knowledge Base'),\n path: joinPath(basePath, 'knowledge-base'),\n icon: <Book size={16} />,\n order: 7,\n children: [\n {\n id: 'technospam-knowledge-base-knowledge-base-page',\n label: tr('technospam.nav.knowledgeBase.overview', 'Knowledge Base'),\n path: joinPath(basePath, 'knowledge-base/knowledge-base-page'),\n icon: <Book size={16} />,\n },\n {\n id: 'technospam-knowledge-base-articles-page',\n label: tr('technospam.nav.knowledgeBase.articles', 'Articles'),\n path: joinPath(basePath, 'knowledge-base/articles-page'),\n icon: <FileText size={16} />,\n },\n {\n id: 'technospam-knowledge-base-article-details-page',\n label: tr('technospam.nav.knowledgeBase.articleDetails', 'Article Details'),\n path: joinPath(basePath, 'knowledge-base/article-details-page'),\n icon: <FileText size={16} />,\n },\n {\n id: 'technospam-knowledge-base-categories-page',\n label: tr('technospam.nav.knowledgeBase.categories', 'Categories'),\n path: joinPath(basePath, 'knowledge-base/categories-page'),\n icon: <FolderOpen 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-open-source',\n label: tr('technospam.nav.openSource.section', 'Open Source'),\n path: joinPath(basePath, 'open-source'),\n icon: <GitBranch size={16} />,\n order: 10,\n children: [\n {\n id: 'technospam-open-source-open-source-page',\n label: tr('technospam.nav.openSource.overview', 'Open Source'),\n path: joinPath(basePath, 'open-source/open-source-page'),\n icon: <GitBranch size={16} />,\n },\n {\n id: 'technospam-open-source-projects-page',\n label: tr('technospam.nav.openSource.projects', 'Projects'),\n path: joinPath(basePath, 'open-source/projects-page'),\n icon: <FolderOpen size={16} />,\n },\n {\n id: 'technospam-open-source-contributions-page',\n label: tr('technospam.nav.openSource.contributions', 'Contributions'),\n path: joinPath(basePath, 'open-source/contributions-page'),\n icon: <Award 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":";;;;;;;;;;AA6CA,IAAa,KAA2C,MAAU;CAChE,IAAM,EAAE,qBAAkB,wBAAqB,cAAW,QAAQ,GAC5D,EAAE,SAAM,GAAS,EACjB,KAAM,GAAa,MAA6B,EAAc,GAAG,GAAK,EAAS;AA2drF,QAzdA,QAAgB;AACT,QAucL,QAAO,EArckB;GACvB,IAAI;GACJ,OAAO,EAAG,uBAAuB,aAAa;GAC9C,MAAM;GACN,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;GACxB,OAAO;GACP,OAAO;GACP,UAAU;IACR;KACE,IAAI;KACJ,OAAO,EAAG,uBAAuB,OAAO;KACxC,MAAM,EAAS,GAAU,OAAO;KAChC,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;KACxB,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAG,oCAAoC,YAAY;KAC1D,MAAM,EAAS,GAAU,YAAY;KACrC,MAAM,kBAAC,GAAD,EAAiB,MAAM,IAAM,CAAA;KACnC,OAAO;KACP,UAAU,CACR;MACE,IAAI;MACJ,OAAO,EAAG,qCAAqC,YAAY;MAC3D,MAAM,EAAS,GAAU,2BAA2B;MACpD,MAAM,kBAAC,GAAD,EAAiB,MAAM,IAAM,CAAA;MACpC,CACF;KACF;IACD;KACE,IAAI;KACJ,OAAO,EAAG,gCAAgC,QAAQ;KAClD,MAAM,EAAS,GAAU,QAAQ;KACjC,MAAM,kBAAC,GAAD,EAAa,MAAM,IAAM,CAAA;KAC/B,OAAO;KACP,UAAU,CACR;MACE,IAAI;MACJ,OAAO,EAAG,kCAAkC,kBAAkB;MAC9D,MAAM,EAAS,GAAU,6BAA6B;MACtD,MAAM,kBAAC,GAAD,EAAiB,MAAM,IAAM,CAAA;MACpC,EACD;MACE,IAAI;MACJ,OAAO,EAAG,qCAAqC,gBAAgB;MAC/D,MAAM,EAAS,GAAU,2BAA2B;MACpD,MAAM,kBAAC,GAAD,EAAe,MAAM,IAAM,CAAA;MAClC,CACF;KACF;IACD;KACE,IAAI;KACJ,OAAO,EAAG,oCAAoC,YAAY;KAC1D,MAAM,EAAS,GAAU,YAAY;KACrC,MAAM,kBAAC,GAAD,EAAW,MAAM,IAAM,CAAA;KAC7B,OAAO;KACP,UAAU;MACR;OACE,IAAI;OACJ,OAAO,EAAG,qCAAqC,YAAY;OAC3D,MAAM,EAAS,GAAU,2BAA2B;OACpD,MAAM,kBAAC,GAAD,EAAY,MAAM,IAAM,CAAA;OAC/B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,qCAAqC,WAAW;OAC1D,MAAM,EAAS,GAAU,0BAA0B;OACnD,MAAM,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;OAC3B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,yCAAyC,eAAe;OAClE,MAAM,EAAS,GAAU,8BAA8B;OACvD,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;OAC1B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,oCAAoC,UAAU;OACxD,MAAM,EAAS,GAAU,yBAAyB;OAClD,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACF;KACF;IACD;KACE,IAAI;KACJ,OAAO,EAAG,uCAAuC,eAAe;KAChE,MAAM,EAAS,GAAU,eAAe;KACxC,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;KACxB,OAAO;KACP,UAAU;MACR;OACE,IAAI;OACJ,OAAO,EAAG,wCAAwC,WAAW;OAC7D,MAAM,EAAS,GAAU,6BAA6B;OACtD,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;OACzB;MACD;OACE,IAAI;OACJ,OAAO,EAAG,8CAA8C,kBAAkB;OAC1E,MAAM,EAAS,GAAU,oCAAoC;OAC7D,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,yCAAyC,YAAY;OAC/D,MAAM,EAAS,GAAU,8BAA8B;OACvD,MAAM,kBAAC,GAAD,EAAe,MAAM,IAAM,CAAA;OAClC;MACD;OACE,IAAI;OACJ,OAAO,EAAG,yCAAyC,YAAY;OAC/D,MAAM,EAAS,GAAU,8BAA8B;OACvD,MAAM,kBAAC,GAAD,EAAW,MAAM,IAAM,CAAA;OAC9B;MACF;KACF;IACD;KACE,IAAI;KACJ,OAAO,EAAG,kCAAkC,UAAU;KACtD,MAAM,EAAS,GAAU,UAAU;KACnC,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;KAC5B,OAAO;KACP,UAAU;MACR;OACE,IAAI;OACJ,OAAO,EAAG,iCAAiC,iBAAiB;OAC5D,MAAM,EAAS,GAAU,uBAAuB;OAChD,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,wCAAwC,iBAAiB;OACnE,MAAM,EAAS,GAAU,8BAA8B;OACvD,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,qCAAqC,cAAc;OAC7D,MAAM,EAAS,GAAU,2BAA2B;OACpD,MAAM,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;OAC3B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,sCAAsC,cAAc;OAC9D,MAAM,EAAS,GAAU,2BAA2B;OACpD,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;OAC1B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,4CAA4C,qBAAqB;OAC3E,MAAM,EAAS,GAAU,kCAAkC;OAC3D,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;OACzB;MACF;KACF;IACD;KACE,IAAI;KACJ,OAAO,EAAG,qCAAqC,aAAa;KAC5D,MAAM,EAAS,GAAU,aAAa;KACtC,MAAM,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;KAC1B,OAAO;KACP,UAAU;MACR;OACE,IAAI;OACJ,OAAO,EAAG,sCAAsC,aAAa;OAC7D,MAAM,EAAS,GAAU,6BAA6B;OACtD,MAAM,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;OAC3B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,qCAAqC,oBAAoB;OACnE,MAAM,EAAS,GAAU,oCAAoC;OAC7D,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,oCAAoC,SAAS;OACvD,MAAM,EAAS,GAAU,yBAAyB;OAClD,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,mCAAmC,QAAQ;OACrD,MAAM,EAAS,GAAU,wBAAwB;OACjD,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;OAC1B;MACF;KACF;IACD;KACE,IAAI;KACJ,OAAO,EAAG,wCAAwC,iBAAiB;KACnE,MAAM,EAAS,GAAU,iBAAiB;KAC1C,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;KACxB,OAAO;KACP,UAAU;MACR;OACE,IAAI;OACJ,OAAO,EAAG,yCAAyC,iBAAiB;OACpE,MAAM,EAAS,GAAU,qCAAqC;OAC9D,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;OACzB;MACD;OACE,IAAI;OACJ,OAAO,EAAG,yCAAyC,WAAW;OAC9D,MAAM,EAAS,GAAU,+BAA+B;OACxD,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,+CAA+C,kBAAkB;OAC3E,MAAM,EAAS,GAAU,sCAAsC;OAC/D,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,2CAA2C,aAAa;OAClE,MAAM,EAAS,GAAU,iCAAiC;OAC1D,MAAM,kBAAC,GAAD,EAAY,MAAM,IAAM,CAAA;OAC/B;MACF;KACF;IACD;KACE,IAAI;KACJ,OAAO,EAAG,qCAAqC,aAAa;KAC5D,MAAM,EAAS,GAAU,aAAa;KACtC,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;KACzB,OAAO;KACP,UAAU;MACR;OACE,IAAI;OACJ,OAAO,EAAG,sCAAsC,aAAa;OAC7D,MAAM,EAAS,GAAU,6BAA6B;OACtD,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;OAC1B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,qCAAqC,UAAU;OACzD,MAAM,EAAS,GAAU,0BAA0B;OACnD,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;OACzB;MACD;OACE,IAAI;OACJ,OAAO,EAAG,2CAA2C,iBAAiB;OACtE,MAAM,EAAS,GAAU,iCAAiC;OAC1D,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;OACzB;MACD;OACE,IAAI;OACJ,OAAO,EAAG,sCAAsC,WAAW;OAC3D,MAAM,EAAS,GAAU,2BAA2B;OACpD,MAAM,kBAAC,GAAD,EAAc,MAAM,IAAM,CAAA;OACjC;MACD;OACE,IAAI;OACJ,OAAO,EAAG,sCAAsC,WAAW;OAC3D,MAAM,EAAS,GAAU,2BAA2B;OACpD,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACF;KACF;IACD;KACE,IAAI;KACJ,OAAO,EAAG,wCAAwC,gBAAgB;KAClE,MAAM,EAAS,GAAU,gBAAgB;KACzC,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;KACxB,OAAO;KACP,UAAU,CACR;MACE,IAAI;MACJ,OAAO,EAAG,yCAAyC,gBAAgB;MACnE,MAAM,EAAS,GAAU,mCAAmC;MAC5D,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;MAC7B,CACF;KACF;IACD;KACE,IAAI;KACJ,OAAO,EAAG,qCAAqC,cAAc;KAC7D,MAAM,EAAS,GAAU,cAAc;KACvC,MAAM,kBAAC,GAAD,EAAW,MAAM,IAAM,CAAA;KAC7B,OAAO;KACP,UAAU;MACR;OACE,IAAI;OACJ,OAAO,EAAG,sCAAsC,cAAc;OAC9D,MAAM,EAAS,GAAU,+BAA+B;OACxD,MAAM,kBAAC,GAAD,EAAW,MAAM,IAAM,CAAA;OAC9B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,sCAAsC,WAAW;OAC3D,MAAM,EAAS,GAAU,4BAA4B;OACrD,MAAM,kBAAC,GAAD,EAAY,MAAM,IAAM,CAAA;OAC/B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,2CAA2C,gBAAgB;OACrE,MAAM,EAAS,GAAU,iCAAiC;OAC1D,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;OAC1B;MACF;KACF;IACD;KACE,IAAI;KACJ,OAAO,EAAG,uCAAuC,gBAAgB;KACjE,MAAM,EAAS,GAAU,gBAAgB;KACzC,MAAM,kBAAC,GAAD,EAAc,MAAM,IAAM,CAAA;KAChC,OAAO;KACP,UAAU;MACR;OACE,IAAI;OACJ,OAAO,EAAG,wCAAwC,gBAAgB;OAClE,MAAM,EAAS,GAAU,mCAAmC;OAC5D,MAAM,kBAAC,GAAD,EAAc,MAAM,IAAM,CAAA;OACjC;MACD;OACE,IAAI;OACJ,OAAO,EAAG,qCAAqC,cAAc;OAC7D,MAAM,EAAS,GAAU,iCAAiC;OAC1D,MAAM,kBAAC,GAAD,EAAe,MAAM,IAAM,CAAA;OAClC;MACD;OACE,IAAI;OACJ,OAAO,EAAG,2CAA2C,eAAe;OACpE,MAAM,EAAS,GAAU,wCAAwC;OACjE,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,wCAAwC,YAAY;OAC9D,MAAM,EAAS,GAAU,qCAAqC;OAC9D,MAAM,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;OAC3B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,6CAA6C,iBAAiB;OACxE,MAAM,EAAS,GAAU,oCAAoC;OAC7D,MAAM,kBAAC,GAAD,EAAK,MAAM,IAAM,CAAA;OACxB;MACD;OACE,IAAI;OACJ,OAAO,EAAG,2CAA2C,eAAe;OACpE,MAAM,EAAS,GAAU,2CAA2C;OACpE,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,qCAAqC,QAAQ;OACvD,MAAM,EAAS,GAAU,2BAA2B;OACpD,MAAM,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;OAC3B;MACF;KACF;IACD;KACE,IAAI;KACJ,OAAO,EAAG,kCAAkC,UAAU;KACtD,MAAM,EAAS,GAAU,UAAU;KACnC,MAAM,kBAAC,GAAD,EAAgB,MAAM,IAAM,CAAA;KAClC,OAAO;KACP,UAAU,CACR;MACE,IAAI;MACJ,OAAO,EAAG,mCAAmC,UAAU;MACvD,MAAM,EAAS,GAAU,uBAAuB;MAChD,MAAM,kBAAC,GAAD,EAAgB,MAAM,IAAM,CAAA;MACnC,CACF;KACF;IACD;KACE,IAAI;KACJ,OAAO,EAAG,mCAAmC,WAAW;KACxD,MAAM,EAAS,GAAU,WAAW;KACpC,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;KAC5B,OAAO;KACP,UAAU;MACR;OACE,IAAI;OACJ,OAAO,EAAG,mCAAmC,mBAAmB;OAChE,MAAM,EAAS,GAAU,yBAAyB;OAClD,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,mCAAmC,mBAAmB;OAChE,MAAM,EAAS,GAAU,iCAAiC;OAC1D,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;OACzB;MACD;OACE,IAAI;OACJ,OAAO,EAAG,yCAAyC,wBAAwB;OAC3E,MAAM,EAAS,GAAU,sCAAsC;OAC/D,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACF;KACF;IACD;KACE,IAAI;KACJ,OAAO,EAAG,+BAA+B,OAAO;KAChD,MAAM,EAAS,GAAU,OAAO;KAChC,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;KACzB,OAAO;KACP,UAAU;MACR;OACE,IAAI;OACJ,OAAO,EAAG,6BAA6B,QAAQ;OAC/C,MAAM,EAAS,GAAU,kBAAkB;OAC3C,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;OAC1B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,gCAAgC,WAAW;OACrD,MAAM,EAAS,GAAU,qBAAqB;OAC9C,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,sCAAsC,kBAAkB;OAClE,MAAM,EAAS,GAAU,4BAA4B;OACrD,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;OAC7B;MACF;KACF;IACD;KACE,IAAI;KACJ,OAAO,EAAG,gCAAgC,QAAQ;KAClD,MAAM,EAAS,GAAU,QAAQ;KACjC,MAAM,kBAAC,GAAD,EAAY,MAAM,IAAM,CAAA;KAC9B,OAAO;KACP,UAAU;MACR;OACE,IAAI;OACJ,OAAO,EAAG,8BAA8B,mBAAmB;OAC3D,MAAM,EAAS,GAAU,mBAAmB;OAC5C,MAAM,kBAAC,GAAD,EAAY,MAAM,IAAM,CAAA;OAC/B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,gCAAgC,iBAAiB;OAC3D,MAAM,EAAS,GAAU,4BAA4B;OACrD,MAAM,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;OAC3B;MACD;OACE,IAAI;OACJ,OAAO,EAAG,gCAAgC,gBAAgB;OAC1D,MAAM,EAAS,GAAU,qBAAqB;OAC9C,MAAM,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;OAC3B;MACF;KACF;IACF;GACF,CAE+B;IAC/B;EAAC;EAAkB;EAAU;EAAE,CAAC,EAEnC,QAAgB;AACT,QAEL,QAAO,EAAoB,CACzB;GACE,IAAI;GACJ,OAAO,EAAG,2BAA2B,mBAAmB;GACxD,MAAM;GACN,SAAS;GACT,OAAO;GACR,CACF,CAAC;IACD,CAAC,GAAqB,EAAE,CAAC,EAG1B,kBAAC,GAAD;EAAqB,aAAa;EAAM,SAAQ;EAAS,gBAAgB;YACvE,kBAAC,GAAD;GAAoB,GAAI;aACtB,kBAAC,GAAD,EAAoB,CAAA;GACD,CAAA;EACD,CAAA"}
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 +1 @@
1
- {"version":3,"file":"TechnoSpamRoutes.d.ts","sourceRoot":"","sources":["../../src/technospam/TechnoSpamRoutes.tsx"],"names":[],"mappings":"AAiIA,wBAAgB,gBAAgB,gCAyI/B"}
1
+ {"version":3,"file":"TechnoSpamRoutes.d.ts","sourceRoot":"","sources":["../../src/technospam/TechnoSpamRoutes.tsx"],"names":[],"mappings":"AAiIA,wBAAgB,gBAAgB,gCAoJ/B"}
@@ -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 {/* Removed modules → dashboard */}\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 (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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"}
@@ -236,9 +236,11 @@ export declare const useSessionsQuery: (vars: {
236
236
  mentorId?: string;
237
237
  menteeId?: string;
238
238
  status?: TecSessionStatus;
239
- }) => useQuery.Result<{
240
- tecListSessions: TecMentorSession[];
241
- }, import('@apollo/client').OperationVariables, "empty" | "complete" | "streaming", import('@apollo/client').OperationVariables>;
239
+ pagination?: {
240
+ limit: number;
241
+ cursor?: string;
242
+ };
243
+ }) => useQuery.Result<Conn<"tecListSessions", TecMentorSession>, import('@apollo/client').OperationVariables, "empty" | "complete" | "streaming", import('@apollo/client').OperationVariables>;
242
244
  export declare const useHackathonsQuery: (vars: {
243
245
  status?: TecHackathonStatus;
244
246
  pagination?: {
@@ -249,12 +251,14 @@ export declare const useHackathonsQuery: (vars: {
249
251
  export declare const useHackathonQuery: (id: string) => useQuery.Result<{
250
252
  tecHackathon: TecHackathon | null;
251
253
  }, import('@apollo/client').OperationVariables, "empty" | "complete" | "streaming", import('@apollo/client').OperationVariables>;
252
- export declare const useTeamsQuery: (hackathonId: string) => useQuery.Result<{
253
- tecListTeams: TecHackathonTeam[];
254
- }, import('@apollo/client').OperationVariables, "empty" | "complete" | "streaming", import('@apollo/client').OperationVariables>;
255
- export declare const useLessonsQuery: (courseId: string) => useQuery.Result<{
256
- tecListLessons: TecLesson[];
257
- }, import('@apollo/client').OperationVariables, "empty" | "complete" | "streaming", import('@apollo/client').OperationVariables>;
254
+ export declare const useTeamsQuery: (hackathonId: string, pagination?: {
255
+ limit: number;
256
+ cursor?: string;
257
+ }) => useQuery.Result<Conn<"tecListTeams", TecHackathonTeam>, import('@apollo/client').OperationVariables, "empty" | "complete" | "streaming", import('@apollo/client').OperationVariables>;
258
+ export declare const useLessonsQuery: (courseId: string, pagination?: {
259
+ limit: number;
260
+ cursor?: string;
261
+ }) => useQuery.Result<Conn<"tecListLessons", TecLesson>, import('@apollo/client').OperationVariables, "empty" | "complete" | "streaming", import('@apollo/client').OperationVariables>;
258
262
  export declare const useEnroll: () => useMutation.ResultTuple<{
259
263
  tecEnroll: TecEnrollment;
260
264
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"technospamApi.d.ts","sourceRoot":"","sources":["../../../src/technospam/api/technospamApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"technospamApi.d.ts","sourceRoot":"","sources":["../../../src/technospam/api/technospamApi.ts"],"names":[],"mappings":"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"}
@@ -303,11 +303,27 @@ var o = n`
303
303
  `, C = n`
304
304
  ${f}
305
305
  ${d}
306
- query TecListSessions($mentorId: ID, $menteeId: ID, $status: TecSessionStatus) {
307
- tecListSessions(mentorId: $mentorId, menteeId: $menteeId, status: $status) {
308
- ...SessionFields
309
- mentor {
310
- ...MentorFields
306
+ query TecListSessions(
307
+ $mentorId: ID
308
+ $menteeId: ID
309
+ $status: TecSessionStatus
310
+ $pagination: PaginationInput
311
+ ) {
312
+ tecListSessions(
313
+ mentorId: $mentorId
314
+ menteeId: $menteeId
315
+ status: $status
316
+ pagination: $pagination
317
+ ) {
318
+ items {
319
+ ...SessionFields
320
+ mentor {
321
+ ...MentorFields
322
+ }
323
+ }
324
+ pageInfo {
325
+ cursor
326
+ hasMore
311
327
  }
312
328
  }
313
329
  }
@@ -337,16 +353,28 @@ var o = n`
337
353
  }
338
354
  `, E = n`
339
355
  ${m}
340
- query TecListTeams($hackathonId: ID!) {
341
- tecListTeams(hackathonId: $hackathonId) {
342
- ...TeamFields
356
+ query TecListTeams($hackathonId: ID!, $pagination: PaginationInput) {
357
+ tecListTeams(hackathonId: $hackathonId, pagination: $pagination) {
358
+ items {
359
+ ...TeamFields
360
+ }
361
+ pageInfo {
362
+ cursor
363
+ hasMore
364
+ }
343
365
  }
344
366
  }
345
367
  `, D = n`
346
368
  ${s}
347
- query TecListLessons($courseId: ID!) {
348
- tecListLessons(courseId: $courseId) {
349
- ...LessonFields
369
+ query TecListLessons($courseId: ID!, $pagination: PaginationInput) {
370
+ tecListLessons(courseId: $courseId, pagination: $pagination) {
371
+ items {
372
+ ...LessonFields
373
+ }
374
+ pageInfo {
375
+ cursor
376
+ hasMore
377
+ }
350
378
  }
351
379
  }
352
380
  `, O = (e) => i(g, {
@@ -395,7 +423,10 @@ var o = n`
395
423
  skip: !e,
396
424
  fetchPolicy: "cache-and-network"
397
425
  }), L = (e) => i(C, {
398
- variables: e,
426
+ variables: {
427
+ pagination: a(50),
428
+ ...e
429
+ },
399
430
  fetchPolicy: "cache-and-network"
400
431
  }), R = (e) => i(w, {
401
432
  variables: {
@@ -407,12 +438,18 @@ var o = n`
407
438
  variables: { id: e },
408
439
  skip: !e,
409
440
  fetchPolicy: "cache-and-network"
410
- }), B = (e) => i(E, {
411
- variables: { hackathonId: e },
441
+ }), B = (e, t) => i(E, {
442
+ variables: {
443
+ hackathonId: e,
444
+ pagination: t ?? a(50)
445
+ },
412
446
  skip: !e,
413
447
  fetchPolicy: "cache-and-network"
414
- }), V = (e) => i(D, {
415
- variables: { courseId: e },
448
+ }), V = (e, t) => i(D, {
449
+ variables: {
450
+ courseId: e,
451
+ pagination: t ?? a(50)
452
+ },
416
453
  skip: !e,
417
454
  fetchPolicy: "cache-and-network"
418
455
  }), H = (t) => {
@@ -1 +1 @@
1
- {"version":3,"file":"technospamApi.js","names":[],"sources":["../../../src/technospam/api/technospamApi.ts"],"sourcesContent":["/**\n * TechnoSpam data layer — Apollo operations + typed hooks over the\n * wspace-technospam-svc subgraph (Tec* fields), reached through the host\n * shell's default workspace ApolloProvider (defaultGateway: \"workspace\").\n *\n * Every page consumes real backend data through these hooks. There is NO mock\n * data. List queries are cursor-paginated: page 1 omits `cursor` entirely\n * (passing cursor: null makes the Prisma cursor resolver 500), \"load more\"\n * passes the previous page's `pageInfo.cursor`.\n */\nimport { useState } from 'react';\nimport { gql, type ErrorLike } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\n\nimport { notify } from '../lib/toast';\n\n/* ------------------------------------------------------------------ enums */\n\nexport type TecCourseLevel = 'BEGINNER' | 'INTERMEDIATE' | 'ADVANCED' | 'EXPERT';\nexport type TecCourseStatus = 'DRAFT' | 'PUBLISHED' | 'ARCHIVED';\nexport type TecLessonKind = 'VIDEO' | 'ARTICLE' | 'INTERACTIVE' | 'QUIZ' | 'PROJECT';\nexport type TecEnrollmentStatus = 'ENROLLED' | 'IN_PROGRESS' | 'COMPLETED' | 'DROPPED';\nexport type TecCertificateStatus = 'ISSUED' | 'REVOKED';\nexport type TecProblemDifficulty = 'EASY' | 'MEDIUM' | 'HARD';\nexport type TecProblemStatus = 'DRAFT' | 'PUBLISHED' | 'ARCHIVED';\nexport type TecSubmissionVerdict =\n | 'PENDING'\n | 'ACCEPTED'\n | 'WRONG_ANSWER'\n | 'TIME_LIMIT_EXCEEDED'\n | 'RUNTIME_ERROR'\n | 'COMPILE_ERROR';\nexport type TecMentorStatus = 'PENDING' | 'ACTIVE' | 'PAUSED' | 'INACTIVE';\nexport type TecSessionStatus = 'REQUESTED' | 'CONFIRMED' | 'COMPLETED' | 'CANCELLED' | 'NO_SHOW';\nexport type TecHackathonStatus =\n 'DRAFT' | 'REGISTRATION_OPEN' | 'IN_PROGRESS' | 'JUDGING' | 'COMPLETED' | 'CANCELLED';\nexport type TecTeamSubmissionStatus = 'DRAFT' | 'SUBMITTED' | 'DISQUALIFIED' | 'WINNER';\n\n/* ------------------------------------------------------------------ types */\n\nexport interface TecCourse {\n id: string;\n slug: string;\n title: string;\n summary?: string | null;\n topic?: string | null;\n level: TecCourseLevel;\n status: TecCourseStatus;\n tags: string[];\n estimatedMinutes: number;\n instructorId?: string | null;\n publishedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n lessons?: TecLesson[];\n enrollments?: TecEnrollment[];\n}\n\nexport interface TecLesson {\n id: string;\n courseId: string;\n title: string;\n kind: TecLessonKind;\n content?: string | null;\n position: number;\n estimatedMinutes: number;\n isPreview: boolean;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface TecEnrollment {\n id: string;\n courseId: string;\n learnerId: string;\n status: TecEnrollmentStatus;\n progressPct: number;\n lessonsCompleted: number;\n startedAt: string;\n lastActiveAt?: string | null;\n completedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n course?: TecCourse | null;\n}\n\nexport interface TecCertificate {\n id: string;\n courseId: string;\n learnerId: string;\n serial: string;\n score: number;\n status: TecCertificateStatus;\n issuedAt: string;\n revokedAt?: string | null;\n revokeReason?: string | null;\n createdAt: string;\n course?: TecCourse | null;\n}\n\nexport interface TecProblem {\n id: string;\n slug: string;\n title: string;\n statement?: string | null;\n topic?: string | null;\n difficulty: TecProblemDifficulty;\n status: TecProblemStatus;\n tags: string[];\n languages: string[];\n points: number;\n starterCode?: string | null;\n publishedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n submissions?: TecSubmission[];\n}\n\nexport interface TecSubmission {\n id: string;\n problemId: string;\n learnerId: string;\n language: string;\n code: string;\n verdict: TecSubmissionVerdict;\n runtimeMs: number;\n pointsAwarded: number;\n judgedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n problem?: TecProblem | null;\n}\n\nexport interface TecMentor {\n id: string;\n userId: string;\n headline: string;\n bio?: string | null;\n expertise: string[];\n hourlyRate: number;\n currency: string;\n status: TecMentorStatus;\n isAcceptingMentees: boolean;\n ratingAvg: number;\n sessionsCount: number;\n createdAt: string;\n updatedAt: string;\n sessions?: TecMentorSession[];\n}\n\nexport interface TecMentorSession {\n id: string;\n mentorId: string;\n menteeId: string;\n topic: string;\n agenda?: string | null;\n scheduledAt: string;\n durationMinutes: number;\n status: TecSessionStatus;\n meetingUrl?: string | null;\n rating?: number | null;\n feedback?: string | null;\n completedAt?: string | null;\n cancelledAt?: string | null;\n createdAt: string;\n updatedAt: string;\n mentor?: TecMentor | null;\n}\n\nexport interface TecHackathon {\n id: string;\n slug: string;\n title: string;\n theme?: string | null;\n description?: string | null;\n status: TecHackathonStatus;\n startAt: string;\n endAt: string;\n submissionDeadline?: string | null;\n prizePool: number;\n currency: string;\n maxTeamSize: number;\n tags: string[];\n createdAt: string;\n updatedAt: string;\n teams?: TecHackathonTeam[];\n}\n\nexport interface TecHackathonTeam {\n id: string;\n hackathonId: string;\n name: string;\n captainId: string;\n memberIds: string[];\n projectName?: string | null;\n projectUrl?: string | null;\n repoUrl?: string | null;\n pitch?: string | null;\n status: TecTeamSubmissionStatus;\n score: number;\n submittedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n hackathon?: TecHackathon | null;\n}\n\nexport interface TecPageInfo {\n cursor?: string | null;\n hasMore: boolean;\n}\n\nexport interface PaginationInput {\n limit?: number;\n cursor?: string | null;\n}\n\n/** Build a pagination arg that NEVER sends cursor:null (page-1 500 guard). */\nexport function pageArg(limit = 50, cursor?: string | null): { limit: number; cursor?: string } {\n return cursor ? { limit, cursor } : { limit };\n}\n\n/* -------------------------------------------------------------- fragments */\n\nconst COURSE_FIELDS = gql`\n fragment CourseFields on TecCourse {\n id\n slug\n title\n summary\n topic\n level\n status\n tags\n estimatedMinutes\n instructorId\n publishedAt\n createdAt\n updatedAt\n }\n`;\n\nconst LESSON_FIELDS = gql`\n fragment LessonFields on TecLesson {\n id\n courseId\n title\n kind\n content\n position\n estimatedMinutes\n isPreview\n createdAt\n updatedAt\n }\n`;\n\nconst ENROLLMENT_FIELDS = gql`\n fragment EnrollmentFields on TecEnrollment {\n id\n courseId\n learnerId\n status\n progressPct\n lessonsCompleted\n startedAt\n lastActiveAt\n completedAt\n createdAt\n updatedAt\n }\n`;\n\nconst PROBLEM_FIELDS = gql`\n fragment ProblemFields on TecProblem {\n id\n slug\n title\n statement\n topic\n difficulty\n status\n tags\n languages\n points\n starterCode\n publishedAt\n createdAt\n updatedAt\n }\n`;\n\nconst SUBMISSION_FIELDS = gql`\n fragment SubmissionFields on TecSubmission {\n id\n problemId\n learnerId\n language\n code\n verdict\n runtimeMs\n pointsAwarded\n judgedAt\n createdAt\n updatedAt\n }\n`;\n\nconst MENTOR_FIELDS = gql`\n fragment MentorFields on TecMentor {\n id\n userId\n headline\n bio\n expertise\n hourlyRate\n currency\n status\n isAcceptingMentees\n ratingAvg\n sessionsCount\n createdAt\n updatedAt\n }\n`;\n\nconst SESSION_FIELDS = gql`\n fragment SessionFields on TecMentorSession {\n id\n mentorId\n menteeId\n topic\n agenda\n scheduledAt\n durationMinutes\n status\n meetingUrl\n rating\n feedback\n completedAt\n cancelledAt\n createdAt\n updatedAt\n }\n`;\n\nconst HACKATHON_FIELDS = gql`\n fragment HackathonFields on TecHackathon {\n id\n slug\n title\n theme\n description\n status\n startAt\n endAt\n submissionDeadline\n prizePool\n currency\n maxTeamSize\n tags\n createdAt\n updatedAt\n }\n`;\n\nconst TEAM_FIELDS = gql`\n fragment TeamFields on TecHackathonTeam {\n id\n hackathonId\n name\n captainId\n memberIds\n projectName\n projectUrl\n repoUrl\n pitch\n status\n score\n submittedAt\n createdAt\n updatedAt\n }\n`;\n\nconst CERTIFICATE_FIELDS = gql`\n fragment CertificateFields on TecCertificate {\n id\n courseId\n learnerId\n serial\n score\n status\n issuedAt\n revokedAt\n revokeReason\n createdAt\n }\n`;\n\n/* --------------------------------------------------------------- queries */\n\nconst LIST_COURSES = gql`\n ${COURSE_FIELDS}\n query TecListCourses(\n $level: TecCourseLevel\n $status: TecCourseStatus\n $pagination: PaginationInput\n ) {\n tecListCourses(level: $level, status: $status, pagination: $pagination) {\n items {\n ...CourseFields\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\nconst GET_COURSE = gql`\n ${COURSE_FIELDS}\n ${LESSON_FIELDS}\n ${ENROLLMENT_FIELDS}\n query TecCourse($id: ID!) {\n tecCourse(id: $id) {\n ...CourseFields\n lessons {\n ...LessonFields\n }\n enrollments {\n ...EnrollmentFields\n }\n }\n }\n`;\n\nconst LIST_ENROLLMENTS = gql`\n ${ENROLLMENT_FIELDS}\n ${COURSE_FIELDS}\n query TecListEnrollments($learnerId: ID, $courseId: ID, $pagination: PaginationInput) {\n tecListEnrollments(learnerId: $learnerId, courseId: $courseId, pagination: $pagination) {\n items {\n ...EnrollmentFields\n course {\n ...CourseFields\n }\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\nconst LIST_CERTIFICATES = gql`\n ${CERTIFICATE_FIELDS}\n ${COURSE_FIELDS}\n query TecListCertificates($learnerId: ID, $courseId: ID) {\n tecListCertificates(learnerId: $learnerId, courseId: $courseId) {\n ...CertificateFields\n course {\n ...CourseFields\n }\n }\n }\n`;\n\nconst LIST_PROBLEMS = gql`\n ${PROBLEM_FIELDS}\n query TecListProblems(\n $difficulty: TecProblemDifficulty\n $status: TecProblemStatus\n $topic: String\n $pagination: PaginationInput\n ) {\n tecListProblems(\n difficulty: $difficulty\n status: $status\n topic: $topic\n pagination: $pagination\n ) {\n items {\n ...ProblemFields\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\nconst GET_PROBLEM = gql`\n ${PROBLEM_FIELDS}\n ${SUBMISSION_FIELDS}\n query TecProblem($id: ID!) {\n tecProblem(id: $id) {\n ...ProblemFields\n submissions {\n ...SubmissionFields\n }\n }\n }\n`;\n\nconst LIST_SUBMISSIONS = gql`\n ${SUBMISSION_FIELDS}\n ${PROBLEM_FIELDS}\n query TecListSubmissions($learnerId: ID, $problemId: ID, $pagination: PaginationInput) {\n tecListSubmissions(learnerId: $learnerId, problemId: $problemId, pagination: $pagination) {\n items {\n ...SubmissionFields\n problem {\n ...ProblemFields\n }\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\nconst LIST_MENTORS = gql`\n ${MENTOR_FIELDS}\n query TecListMentors($status: TecMentorStatus, $pagination: PaginationInput) {\n tecListMentors(status: $status, pagination: $pagination) {\n items {\n ...MentorFields\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\nconst GET_MENTOR = gql`\n ${MENTOR_FIELDS}\n ${SESSION_FIELDS}\n query TecMentor($id: ID!) {\n tecMentor(id: $id) {\n ...MentorFields\n sessions {\n ...SessionFields\n }\n }\n }\n`;\n\nconst LIST_SESSIONS = gql`\n ${SESSION_FIELDS}\n ${MENTOR_FIELDS}\n query TecListSessions($mentorId: ID, $menteeId: ID, $status: TecSessionStatus) {\n tecListSessions(mentorId: $mentorId, menteeId: $menteeId, status: $status) {\n ...SessionFields\n mentor {\n ...MentorFields\n }\n }\n }\n`;\n\nconst LIST_HACKATHONS = gql`\n ${HACKATHON_FIELDS}\n query TecListHackathons($status: TecHackathonStatus, $pagination: PaginationInput) {\n tecListHackathons(status: $status, pagination: $pagination) {\n items {\n ...HackathonFields\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\nconst GET_HACKATHON = gql`\n ${HACKATHON_FIELDS}\n ${TEAM_FIELDS}\n query TecHackathon($id: ID!) {\n tecHackathon(id: $id) {\n ...HackathonFields\n teams {\n ...TeamFields\n }\n }\n }\n`;\n\nconst LIST_TEAMS = gql`\n ${TEAM_FIELDS}\n query TecListTeams($hackathonId: ID!) {\n tecListTeams(hackathonId: $hackathonId) {\n ...TeamFields\n }\n }\n`;\n\nconst LIST_LESSONS = gql`\n ${LESSON_FIELDS}\n query TecListLessons($courseId: ID!) {\n tecListLessons(courseId: $courseId) {\n ...LessonFields\n }\n }\n`;\n\n/* ------------------------------------------------------- response typings */\n\ntype Conn<K extends string, T> = Record<K, { items: T[]; pageInfo: TecPageInfo }>;\n\n/* ---------------------------------------------------------- query hooks */\n\nexport const useCoursesQuery = (vars: {\n level?: TecCourseLevel;\n status?: TecCourseStatus;\n pagination?: { limit: number; cursor?: string };\n}) =>\n useQuery<Conn<'tecListCourses', TecCourse>>(LIST_COURSES, {\n variables: { pagination: pageArg(50), ...vars },\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useCourseQuery = (id: string) =>\n useQuery<{ tecCourse: TecCourse | null }>(GET_COURSE, {\n variables: { id },\n skip: !id,\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useEnrollmentsQuery = (vars: { learnerId?: string; courseId?: string }) =>\n useQuery<Conn<'tecListEnrollments', TecEnrollment>>(LIST_ENROLLMENTS, {\n variables: { pagination: pageArg(50), ...vars },\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useCertificatesQuery = (vars: { learnerId?: string; courseId?: string }) =>\n useQuery<{ tecListCertificates: TecCertificate[] }>(LIST_CERTIFICATES, {\n variables: vars,\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useProblemsQuery = (vars: {\n difficulty?: TecProblemDifficulty;\n status?: TecProblemStatus;\n topic?: string;\n pagination?: { limit: number; cursor?: string };\n}) =>\n useQuery<Conn<'tecListProblems', TecProblem>>(LIST_PROBLEMS, {\n variables: { pagination: pageArg(50), ...vars },\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useProblemQuery = (id: string) =>\n useQuery<{ tecProblem: TecProblem | null }>(GET_PROBLEM, {\n variables: { id },\n skip: !id,\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useSubmissionsQuery = (vars: { learnerId?: string; problemId?: string }) =>\n useQuery<Conn<'tecListSubmissions', TecSubmission>>(LIST_SUBMISSIONS, {\n variables: { pagination: pageArg(50), ...vars },\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useMentorsQuery = (vars: {\n status?: TecMentorStatus;\n pagination?: { limit: number; cursor?: string };\n}) =>\n useQuery<Conn<'tecListMentors', TecMentor>>(LIST_MENTORS, {\n variables: { pagination: pageArg(50), ...vars },\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useMentorQuery = (id: string) =>\n useQuery<{ tecMentor: TecMentor | null }>(GET_MENTOR, {\n variables: { id },\n skip: !id,\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useSessionsQuery = (vars: {\n mentorId?: string;\n menteeId?: string;\n status?: TecSessionStatus;\n}) =>\n useQuery<{ tecListSessions: TecMentorSession[] }>(LIST_SESSIONS, {\n variables: vars,\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useHackathonsQuery = (vars: {\n status?: TecHackathonStatus;\n pagination?: { limit: number; cursor?: string };\n}) =>\n useQuery<Conn<'tecListHackathons', TecHackathon>>(LIST_HACKATHONS, {\n variables: { pagination: pageArg(50), ...vars },\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useHackathonQuery = (id: string) =>\n useQuery<{ tecHackathon: TecHackathon | null }>(GET_HACKATHON, {\n variables: { id },\n skip: !id,\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useTeamsQuery = (hackathonId: string) =>\n useQuery<{ tecListTeams: TecHackathonTeam[] }>(LIST_TEAMS, {\n variables: { hackathonId },\n skip: !hackathonId,\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useLessonsQuery = (courseId: string) =>\n useQuery<{ tecListLessons: TecLesson[] }>(LIST_LESSONS, {\n variables: { courseId },\n skip: !courseId,\n fetchPolicy: 'cache-and-network',\n });\n\n/* ------------------------------------------------------------ mutations */\n\nconst onMutationError = (error: ErrorLike): void => {\n notify.error('Something went wrong', error.message || 'Please try again.');\n};\n\nconst REFETCH = {\n courses: 'TecListCourses',\n enrollments: 'TecListEnrollments',\n problems: 'TecListProblems',\n submissions: 'TecListSubmissions',\n mentors: 'TecListMentors',\n sessions: 'TecListSessions',\n hackathons: 'TecListHackathons',\n} as const;\n\nconst ENROLL = gql`\n ${ENROLLMENT_FIELDS}\n mutation TecEnroll($input: TecEnrollInput!) {\n tecEnroll(input: $input) {\n ...EnrollmentFields\n }\n }\n`;\n\nconst UPDATE_PROGRESS = gql`\n ${ENROLLMENT_FIELDS}\n mutation TecUpdateProgress($input: TecUpdateProgressInput!) {\n tecUpdateProgress(input: $input) {\n ...EnrollmentFields\n }\n }\n`;\n\nconst SUBMIT_SOLUTION = gql`\n ${SUBMISSION_FIELDS}\n mutation TecSubmitSolution($input: TecSubmitSolutionInput!) {\n tecSubmitSolution(input: $input) {\n ...SubmissionFields\n }\n }\n`;\n\nconst BOOK_SESSION = gql`\n ${SESSION_FIELDS}\n mutation TecBookSession($input: TecBookSessionInput!) {\n tecBookSession(input: $input) {\n ...SessionFields\n }\n }\n`;\n\nconst CANCEL_SESSION = gql`\n ${SESSION_FIELDS}\n mutation TecCancelSession($id: ID!) {\n tecCancelSession(id: $id) {\n ...SessionFields\n }\n }\n`;\n\nconst BECOME_MENTOR = gql`\n ${MENTOR_FIELDS}\n mutation TecBecomeMentor($input: TecCreateMentorInput!) {\n tecBecomeMentor(input: $input) {\n ...MentorFields\n }\n }\n`;\n\nconst REGISTER_TEAM = gql`\n ${TEAM_FIELDS}\n mutation TecRegisterTeam($input: TecRegisterTeamInput!) {\n tecRegisterTeam(input: $input) {\n ...TeamFields\n }\n }\n`;\n\nconst SUBMIT_PROJECT = gql`\n ${TEAM_FIELDS}\n mutation TecSubmitProject($input: TecSubmitProjectInput!) {\n tecSubmitProject(input: $input) {\n ...TeamFields\n }\n }\n`;\n\n/* ------- admin / authoring mutations ------- */\n\nconst CREATE_COURSE = gql`\n ${COURSE_FIELDS}\n mutation TecCreateCourse($input: TecCreateCourseInput!) {\n tecCreateCourse(input: $input) {\n ...CourseFields\n }\n }\n`;\n\nconst PUBLISH_COURSE = gql`\n ${COURSE_FIELDS}\n mutation TecPublishCourse($id: ID!) {\n tecPublishCourse(id: $id) {\n ...CourseFields\n }\n }\n`;\n\nconst ARCHIVE_COURSE = gql`\n mutation TecArchiveCourse($id: ID!) {\n tecArchiveCourse(id: $id)\n }\n`;\n\nconst CREATE_LESSON = gql`\n ${LESSON_FIELDS}\n mutation TecCreateLesson($input: TecCreateLessonInput!) {\n tecCreateLesson(input: $input) {\n ...LessonFields\n }\n }\n`;\n\nconst CREATE_PROBLEM = gql`\n ${PROBLEM_FIELDS}\n mutation TecCreateProblem($input: TecCreateProblemInput!) {\n tecCreateProblem(input: $input) {\n ...ProblemFields\n }\n }\n`;\n\nconst PUBLISH_PROBLEM = gql`\n ${PROBLEM_FIELDS}\n mutation TecPublishProblem($id: ID!) {\n tecPublishProblem(id: $id) {\n ...ProblemFields\n }\n }\n`;\n\nconst CREATE_HACKATHON = gql`\n ${HACKATHON_FIELDS}\n mutation TecCreateHackathon($input: TecCreateHackathonInput!) {\n tecCreateHackathon(input: $input) {\n ...HackathonFields\n }\n }\n`;\n\nconst OPEN_REGISTRATION = gql`\n ${HACKATHON_FIELDS}\n mutation TecOpenRegistration($id: ID!) {\n tecOpenRegistration(id: $id) {\n ...HackathonFields\n }\n }\n`;\n\nconst APPROVE_MENTOR = gql`\n ${MENTOR_FIELDS}\n mutation TecApproveMentor($id: ID!) {\n tecApproveMentor(id: $id) {\n ...MentorFields\n }\n }\n`;\n\nconst SCORE_TEAM = gql`\n ${TEAM_FIELDS}\n mutation TecScoreTeam($id: ID!, $score: Int!, $winner: Boolean) {\n tecScoreTeam(id: $id, score: $score, winner: $winner) {\n ...TeamFields\n }\n }\n`;\n\nconst CONFIRM_SESSION = gql`\n ${SESSION_FIELDS}\n mutation TecConfirmSession($id: ID!, $meetingUrl: String) {\n tecConfirmSession(id: $id, meetingUrl: $meetingUrl) {\n ...SessionFields\n }\n }\n`;\n\nconst COMPLETE_SESSION = gql`\n ${SESSION_FIELDS}\n mutation TecCompleteSession($id: ID!, $rating: Int, $feedback: String) {\n tecCompleteSession(id: $id, rating: $rating, feedback: $feedback) {\n ...SessionFields\n }\n }\n`;\n\nconst GRADE_SUBMISSION = gql`\n ${SUBMISSION_FIELDS}\n mutation TecGradeSubmission($id: ID!, $verdict: TecSubmissionVerdict!, $runtimeMs: Int) {\n tecGradeSubmission(id: $id, verdict: $verdict, runtimeMs: $runtimeMs) {\n ...SubmissionFields\n }\n }\n`;\n\nconst ISSUE_CERTIFICATE = gql`\n ${CERTIFICATE_FIELDS}\n mutation TecIssueCertificate($courseId: ID!, $learnerId: ID!, $score: Int!) {\n tecIssueCertificate(courseId: $courseId, learnerId: $learnerId, score: $score) {\n ...CertificateFields\n }\n }\n`;\n\nconst REVOKE_CERTIFICATE = gql`\n ${CERTIFICATE_FIELDS}\n mutation TecRevokeCertificate($id: ID!, $reason: String) {\n tecRevokeCertificate(id: $id, reason: $reason) {\n ...CertificateFields\n }\n }\n`;\n\nconst START_HACKATHON = gql`\n ${HACKATHON_FIELDS}\n mutation TecStartHackathon($id: ID!) {\n tecStartHackathon(id: $id) {\n ...HackathonFields\n }\n }\n`;\n\nconst START_JUDGING = gql`\n ${HACKATHON_FIELDS}\n mutation TecStartJudging($id: ID!) {\n tecStartJudging(id: $id) {\n ...HackathonFields\n }\n }\n`;\n\nconst COMPLETE_HACKATHON = gql`\n ${HACKATHON_FIELDS}\n mutation TecCompleteHackathon($id: ID!) {\n tecCompleteHackathon(id: $id) {\n ...HackathonFields\n }\n }\n`;\n\n/* ---------------------------------------------------------- mutation hooks */\n\nexport const useEnroll = () =>\n useMutation<{ tecEnroll: TecEnrollment }>(ENROLL, {\n onError: onMutationError,\n refetchQueries: [REFETCH.enrollments, REFETCH.courses],\n });\n\nexport const useUpdateProgress = () =>\n useMutation<{ tecUpdateProgress: TecEnrollment }>(UPDATE_PROGRESS, {\n onError: onMutationError,\n refetchQueries: [REFETCH.enrollments],\n });\n\nexport const useSubmitSolution = () =>\n useMutation<{ tecSubmitSolution: TecSubmission }>(SUBMIT_SOLUTION, {\n onError: onMutationError,\n refetchQueries: [REFETCH.submissions],\n });\n\nexport const useBookSession = () =>\n useMutation<{ tecBookSession: TecMentorSession }>(BOOK_SESSION, {\n onError: onMutationError,\n refetchQueries: [REFETCH.sessions, REFETCH.mentors],\n });\n\nexport const useCancelSession = () =>\n useMutation<{ tecCancelSession: TecMentorSession }>(CANCEL_SESSION, {\n onError: onMutationError,\n refetchQueries: [REFETCH.sessions],\n });\n\nexport const useBecomeMentor = () =>\n useMutation<{ tecBecomeMentor: TecMentor }>(BECOME_MENTOR, {\n onError: onMutationError,\n refetchQueries: [REFETCH.mentors],\n });\n\nexport const useRegisterTeam = () =>\n useMutation<{ tecRegisterTeam: TecHackathonTeam }>(REGISTER_TEAM, {\n onError: onMutationError,\n refetchQueries: [REFETCH.hackathons],\n });\n\nexport const useSubmitProject = () =>\n useMutation<{ tecSubmitProject: TecHackathonTeam }>(SUBMIT_PROJECT, {\n onError: onMutationError,\n });\n\nexport const useCreateCourse = () =>\n useMutation<{ tecCreateCourse: TecCourse }>(CREATE_COURSE, {\n onError: onMutationError,\n refetchQueries: [REFETCH.courses],\n });\n\nexport const usePublishCourse = () =>\n useMutation<{ tecPublishCourse: TecCourse }>(PUBLISH_COURSE, {\n onError: onMutationError,\n refetchQueries: [REFETCH.courses],\n });\n\nexport const useArchiveCourse = () =>\n useMutation<{ tecArchiveCourse: boolean }>(ARCHIVE_COURSE, {\n onError: onMutationError,\n refetchQueries: [REFETCH.courses],\n });\n\nexport const useCreateLesson = () =>\n useMutation<{ tecCreateLesson: TecLesson }>(CREATE_LESSON, { onError: onMutationError });\n\nexport const useCreateProblem = () =>\n useMutation<{ tecCreateProblem: TecProblem }>(CREATE_PROBLEM, {\n onError: onMutationError,\n refetchQueries: [REFETCH.problems],\n });\n\nexport const usePublishProblem = () =>\n useMutation<{ tecPublishProblem: TecProblem }>(PUBLISH_PROBLEM, {\n onError: onMutationError,\n refetchQueries: [REFETCH.problems],\n });\n\nexport const useCreateHackathon = () =>\n useMutation<{ tecCreateHackathon: TecHackathon }>(CREATE_HACKATHON, {\n onError: onMutationError,\n refetchQueries: [REFETCH.hackathons],\n });\n\nexport const useOpenRegistration = () =>\n useMutation<{ tecOpenRegistration: TecHackathon }>(OPEN_REGISTRATION, {\n onError: onMutationError,\n refetchQueries: [REFETCH.hackathons],\n });\n\nexport const useApproveMentor = () =>\n useMutation<{ tecApproveMentor: TecMentor }>(APPROVE_MENTOR, {\n onError: onMutationError,\n refetchQueries: [REFETCH.mentors],\n });\n\nexport const useScoreTeam = () =>\n useMutation<{ tecScoreTeam: TecHackathonTeam }>(SCORE_TEAM, { onError: onMutationError });\n\nexport const useConfirmSession = () =>\n useMutation<{ tecConfirmSession: TecMentorSession }>(CONFIRM_SESSION, {\n onError: onMutationError,\n refetchQueries: [REFETCH.sessions],\n });\n\nexport const useCompleteSession = () =>\n useMutation<{ tecCompleteSession: TecMentorSession }>(COMPLETE_SESSION, {\n onError: onMutationError,\n refetchQueries: [REFETCH.sessions],\n });\n\nexport const useGradeSubmission = () =>\n useMutation<{ tecGradeSubmission: TecSubmission }>(GRADE_SUBMISSION, {\n onError: onMutationError,\n refetchQueries: [REFETCH.submissions],\n });\n\nexport const useIssueCertificate = () =>\n useMutation<{ tecIssueCertificate: TecCertificate }>(ISSUE_CERTIFICATE, {\n onError: onMutationError,\n });\n\nexport const useRevokeCertificate = () =>\n useMutation<{ tecRevokeCertificate: TecCertificate }>(REVOKE_CERTIFICATE, {\n onError: onMutationError,\n });\n\nexport const useStartHackathon = () =>\n useMutation<{ tecStartHackathon: TecHackathon }>(START_HACKATHON, {\n onError: onMutationError,\n refetchQueries: [REFETCH.hackathons],\n });\n\nexport const useStartJudging = () =>\n useMutation<{ tecStartJudging: TecHackathon }>(START_JUDGING, {\n onError: onMutationError,\n refetchQueries: [REFETCH.hackathons],\n });\n\nexport const useCompleteHackathon = () =>\n useMutation<{ tecCompleteHackathon: TecHackathon }>(COMPLETE_HACKATHON, {\n onError: onMutationError,\n refetchQueries: [REFETCH.hackathons],\n });\n\n/* ------------------------------------------------------- pagination helper */\n\nexport interface PageLimit {\n limit: number;\n more: () => void;\n}\n\n/**\n * Simple, robust \"load more\". The backend paginates with `take = limit + 1`\n * (offset is ignored; only `cursor` shifts the window), so a larger `limit`\n * simply fetches more rows from the top and `pageInfo.hasMore` reports whether\n * still more exist. Growing the limit avoids cursor-merge/fetchMore complexity\n * and never sends `cursor: null` (the page-1 500 guard). Pass `limit` into the\n * query's `pageArg` and render <LoadMore hasMore={...} onClick={more} />.\n */\nexport function usePageLimit(step = 24, initial = 24): PageLimit {\n const [limit, setLimit] = useState(initial);\n return { limit, more: () => setLimit((l) => l + step) };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"technospamApi.js","names":[],"sources":["../../../src/technospam/api/technospamApi.ts"],"sourcesContent":["/**\n * TechnoSpam data layer — Apollo operations + typed hooks over the\n * wspace-technospam-svc subgraph (Tec* fields), reached through the host\n * shell's default workspace ApolloProvider (defaultGateway: \"workspace\").\n *\n * Every page consumes real backend data through these hooks. There is NO mock\n * data. List queries are cursor-paginated: page 1 omits `cursor` entirely\n * (passing cursor: null makes the Prisma cursor resolver 500), \"load more\"\n * passes the previous page's `pageInfo.cursor`.\n */\nimport { useState } from 'react';\nimport { gql, type ErrorLike } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\n\nimport { notify } from '../lib/toast';\n\n/* ------------------------------------------------------------------ enums */\n\nexport type TecCourseLevel = 'BEGINNER' | 'INTERMEDIATE' | 'ADVANCED' | 'EXPERT';\nexport type TecCourseStatus = 'DRAFT' | 'PUBLISHED' | 'ARCHIVED';\nexport type TecLessonKind = 'VIDEO' | 'ARTICLE' | 'INTERACTIVE' | 'QUIZ' | 'PROJECT';\nexport type TecEnrollmentStatus = 'ENROLLED' | 'IN_PROGRESS' | 'COMPLETED' | 'DROPPED';\nexport type TecCertificateStatus = 'ISSUED' | 'REVOKED';\nexport type TecProblemDifficulty = 'EASY' | 'MEDIUM' | 'HARD';\nexport type TecProblemStatus = 'DRAFT' | 'PUBLISHED' | 'ARCHIVED';\nexport type TecSubmissionVerdict =\n | 'PENDING'\n | 'ACCEPTED'\n | 'WRONG_ANSWER'\n | 'TIME_LIMIT_EXCEEDED'\n | 'RUNTIME_ERROR'\n | 'COMPILE_ERROR';\nexport type TecMentorStatus = 'PENDING' | 'ACTIVE' | 'PAUSED' | 'INACTIVE';\nexport type TecSessionStatus = 'REQUESTED' | 'CONFIRMED' | 'COMPLETED' | 'CANCELLED' | 'NO_SHOW';\nexport type TecHackathonStatus =\n 'DRAFT' | 'REGISTRATION_OPEN' | 'IN_PROGRESS' | 'JUDGING' | 'COMPLETED' | 'CANCELLED';\nexport type TecTeamSubmissionStatus = 'DRAFT' | 'SUBMITTED' | 'DISQUALIFIED' | 'WINNER';\n\n/* ------------------------------------------------------------------ types */\n\nexport interface TecCourse {\n id: string;\n slug: string;\n title: string;\n summary?: string | null;\n topic?: string | null;\n level: TecCourseLevel;\n status: TecCourseStatus;\n tags: string[];\n estimatedMinutes: number;\n instructorId?: string | null;\n publishedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n lessons?: TecLesson[];\n enrollments?: TecEnrollment[];\n}\n\nexport interface TecLesson {\n id: string;\n courseId: string;\n title: string;\n kind: TecLessonKind;\n content?: string | null;\n position: number;\n estimatedMinutes: number;\n isPreview: boolean;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface TecEnrollment {\n id: string;\n courseId: string;\n learnerId: string;\n status: TecEnrollmentStatus;\n progressPct: number;\n lessonsCompleted: number;\n startedAt: string;\n lastActiveAt?: string | null;\n completedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n course?: TecCourse | null;\n}\n\nexport interface TecCertificate {\n id: string;\n courseId: string;\n learnerId: string;\n serial: string;\n score: number;\n status: TecCertificateStatus;\n issuedAt: string;\n revokedAt?: string | null;\n revokeReason?: string | null;\n createdAt: string;\n course?: TecCourse | null;\n}\n\nexport interface TecProblem {\n id: string;\n slug: string;\n title: string;\n statement?: string | null;\n topic?: string | null;\n difficulty: TecProblemDifficulty;\n status: TecProblemStatus;\n tags: string[];\n languages: string[];\n points: number;\n starterCode?: string | null;\n publishedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n submissions?: TecSubmission[];\n}\n\nexport interface TecSubmission {\n id: string;\n problemId: string;\n learnerId: string;\n language: string;\n code: string;\n verdict: TecSubmissionVerdict;\n runtimeMs: number;\n pointsAwarded: number;\n judgedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n problem?: TecProblem | null;\n}\n\nexport interface TecMentor {\n id: string;\n userId: string;\n headline: string;\n bio?: string | null;\n expertise: string[];\n hourlyRate: number;\n currency: string;\n status: TecMentorStatus;\n isAcceptingMentees: boolean;\n ratingAvg: number;\n sessionsCount: number;\n createdAt: string;\n updatedAt: string;\n sessions?: TecMentorSession[];\n}\n\nexport interface TecMentorSession {\n id: string;\n mentorId: string;\n menteeId: string;\n topic: string;\n agenda?: string | null;\n scheduledAt: string;\n durationMinutes: number;\n status: TecSessionStatus;\n meetingUrl?: string | null;\n rating?: number | null;\n feedback?: string | null;\n completedAt?: string | null;\n cancelledAt?: string | null;\n createdAt: string;\n updatedAt: string;\n mentor?: TecMentor | null;\n}\n\nexport interface TecHackathon {\n id: string;\n slug: string;\n title: string;\n theme?: string | null;\n description?: string | null;\n status: TecHackathonStatus;\n startAt: string;\n endAt: string;\n submissionDeadline?: string | null;\n prizePool: number;\n currency: string;\n maxTeamSize: number;\n tags: string[];\n createdAt: string;\n updatedAt: string;\n teams?: TecHackathonTeam[];\n}\n\nexport interface TecHackathonTeam {\n id: string;\n hackathonId: string;\n name: string;\n captainId: string;\n memberIds: string[];\n projectName?: string | null;\n projectUrl?: string | null;\n repoUrl?: string | null;\n pitch?: string | null;\n status: TecTeamSubmissionStatus;\n score: number;\n submittedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n hackathon?: TecHackathon | null;\n}\n\nexport interface TecPageInfo {\n cursor?: string | null;\n hasMore: boolean;\n}\n\nexport interface PaginationInput {\n limit?: number;\n cursor?: string | null;\n}\n\n/** Build a pagination arg that NEVER sends cursor:null (page-1 500 guard). */\nexport function pageArg(limit = 50, cursor?: string | null): { limit: number; cursor?: string } {\n return cursor ? { limit, cursor } : { limit };\n}\n\n/* -------------------------------------------------------------- fragments */\n\nconst COURSE_FIELDS = gql`\n fragment CourseFields on TecCourse {\n id\n slug\n title\n summary\n topic\n level\n status\n tags\n estimatedMinutes\n instructorId\n publishedAt\n createdAt\n updatedAt\n }\n`;\n\nconst LESSON_FIELDS = gql`\n fragment LessonFields on TecLesson {\n id\n courseId\n title\n kind\n content\n position\n estimatedMinutes\n isPreview\n createdAt\n updatedAt\n }\n`;\n\nconst ENROLLMENT_FIELDS = gql`\n fragment EnrollmentFields on TecEnrollment {\n id\n courseId\n learnerId\n status\n progressPct\n lessonsCompleted\n startedAt\n lastActiveAt\n completedAt\n createdAt\n updatedAt\n }\n`;\n\nconst PROBLEM_FIELDS = gql`\n fragment ProblemFields on TecProblem {\n id\n slug\n title\n statement\n topic\n difficulty\n status\n tags\n languages\n points\n starterCode\n publishedAt\n createdAt\n updatedAt\n }\n`;\n\nconst SUBMISSION_FIELDS = gql`\n fragment SubmissionFields on TecSubmission {\n id\n problemId\n learnerId\n language\n code\n verdict\n runtimeMs\n pointsAwarded\n judgedAt\n createdAt\n updatedAt\n }\n`;\n\nconst MENTOR_FIELDS = gql`\n fragment MentorFields on TecMentor {\n id\n userId\n headline\n bio\n expertise\n hourlyRate\n currency\n status\n isAcceptingMentees\n ratingAvg\n sessionsCount\n createdAt\n updatedAt\n }\n`;\n\nconst SESSION_FIELDS = gql`\n fragment SessionFields on TecMentorSession {\n id\n mentorId\n menteeId\n topic\n agenda\n scheduledAt\n durationMinutes\n status\n meetingUrl\n rating\n feedback\n completedAt\n cancelledAt\n createdAt\n updatedAt\n }\n`;\n\nconst HACKATHON_FIELDS = gql`\n fragment HackathonFields on TecHackathon {\n id\n slug\n title\n theme\n description\n status\n startAt\n endAt\n submissionDeadline\n prizePool\n currency\n maxTeamSize\n tags\n createdAt\n updatedAt\n }\n`;\n\nconst TEAM_FIELDS = gql`\n fragment TeamFields on TecHackathonTeam {\n id\n hackathonId\n name\n captainId\n memberIds\n projectName\n projectUrl\n repoUrl\n pitch\n status\n score\n submittedAt\n createdAt\n updatedAt\n }\n`;\n\nconst CERTIFICATE_FIELDS = gql`\n fragment CertificateFields on TecCertificate {\n id\n courseId\n learnerId\n serial\n score\n status\n issuedAt\n revokedAt\n revokeReason\n createdAt\n }\n`;\n\n/* --------------------------------------------------------------- queries */\n\nconst LIST_COURSES = gql`\n ${COURSE_FIELDS}\n query TecListCourses(\n $level: TecCourseLevel\n $status: TecCourseStatus\n $pagination: PaginationInput\n ) {\n tecListCourses(level: $level, status: $status, pagination: $pagination) {\n items {\n ...CourseFields\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\nconst GET_COURSE = gql`\n ${COURSE_FIELDS}\n ${LESSON_FIELDS}\n ${ENROLLMENT_FIELDS}\n query TecCourse($id: ID!) {\n tecCourse(id: $id) {\n ...CourseFields\n lessons {\n ...LessonFields\n }\n enrollments {\n ...EnrollmentFields\n }\n }\n }\n`;\n\nconst LIST_ENROLLMENTS = gql`\n ${ENROLLMENT_FIELDS}\n ${COURSE_FIELDS}\n query TecListEnrollments($learnerId: ID, $courseId: ID, $pagination: PaginationInput) {\n tecListEnrollments(learnerId: $learnerId, courseId: $courseId, pagination: $pagination) {\n items {\n ...EnrollmentFields\n course {\n ...CourseFields\n }\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\nconst LIST_CERTIFICATES = gql`\n ${CERTIFICATE_FIELDS}\n ${COURSE_FIELDS}\n query TecListCertificates($learnerId: ID, $courseId: ID) {\n tecListCertificates(learnerId: $learnerId, courseId: $courseId) {\n ...CertificateFields\n course {\n ...CourseFields\n }\n }\n }\n`;\n\nconst LIST_PROBLEMS = gql`\n ${PROBLEM_FIELDS}\n query TecListProblems(\n $difficulty: TecProblemDifficulty\n $status: TecProblemStatus\n $topic: String\n $pagination: PaginationInput\n ) {\n tecListProblems(\n difficulty: $difficulty\n status: $status\n topic: $topic\n pagination: $pagination\n ) {\n items {\n ...ProblemFields\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\nconst GET_PROBLEM = gql`\n ${PROBLEM_FIELDS}\n ${SUBMISSION_FIELDS}\n query TecProblem($id: ID!) {\n tecProblem(id: $id) {\n ...ProblemFields\n submissions {\n ...SubmissionFields\n }\n }\n }\n`;\n\nconst LIST_SUBMISSIONS = gql`\n ${SUBMISSION_FIELDS}\n ${PROBLEM_FIELDS}\n query TecListSubmissions($learnerId: ID, $problemId: ID, $pagination: PaginationInput) {\n tecListSubmissions(learnerId: $learnerId, problemId: $problemId, pagination: $pagination) {\n items {\n ...SubmissionFields\n problem {\n ...ProblemFields\n }\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\nconst LIST_MENTORS = gql`\n ${MENTOR_FIELDS}\n query TecListMentors($status: TecMentorStatus, $pagination: PaginationInput) {\n tecListMentors(status: $status, pagination: $pagination) {\n items {\n ...MentorFields\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\nconst GET_MENTOR = gql`\n ${MENTOR_FIELDS}\n ${SESSION_FIELDS}\n query TecMentor($id: ID!) {\n tecMentor(id: $id) {\n ...MentorFields\n sessions {\n ...SessionFields\n }\n }\n }\n`;\n\nconst LIST_SESSIONS = gql`\n ${SESSION_FIELDS}\n ${MENTOR_FIELDS}\n query TecListSessions(\n $mentorId: ID\n $menteeId: ID\n $status: TecSessionStatus\n $pagination: PaginationInput\n ) {\n tecListSessions(\n mentorId: $mentorId\n menteeId: $menteeId\n status: $status\n pagination: $pagination\n ) {\n items {\n ...SessionFields\n mentor {\n ...MentorFields\n }\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\nconst LIST_HACKATHONS = gql`\n ${HACKATHON_FIELDS}\n query TecListHackathons($status: TecHackathonStatus, $pagination: PaginationInput) {\n tecListHackathons(status: $status, pagination: $pagination) {\n items {\n ...HackathonFields\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\nconst GET_HACKATHON = gql`\n ${HACKATHON_FIELDS}\n ${TEAM_FIELDS}\n query TecHackathon($id: ID!) {\n tecHackathon(id: $id) {\n ...HackathonFields\n teams {\n ...TeamFields\n }\n }\n }\n`;\n\nconst LIST_TEAMS = gql`\n ${TEAM_FIELDS}\n query TecListTeams($hackathonId: ID!, $pagination: PaginationInput) {\n tecListTeams(hackathonId: $hackathonId, pagination: $pagination) {\n items {\n ...TeamFields\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\nconst LIST_LESSONS = gql`\n ${LESSON_FIELDS}\n query TecListLessons($courseId: ID!, $pagination: PaginationInput) {\n tecListLessons(courseId: $courseId, pagination: $pagination) {\n items {\n ...LessonFields\n }\n pageInfo {\n cursor\n hasMore\n }\n }\n }\n`;\n\n/* ------------------------------------------------------- response typings */\n\ntype Conn<K extends string, T> = Record<K, { items: T[]; pageInfo: TecPageInfo }>;\n\n/* ---------------------------------------------------------- query hooks */\n\nexport const useCoursesQuery = (vars: {\n level?: TecCourseLevel;\n status?: TecCourseStatus;\n pagination?: { limit: number; cursor?: string };\n}) =>\n useQuery<Conn<'tecListCourses', TecCourse>>(LIST_COURSES, {\n variables: { pagination: pageArg(50), ...vars },\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useCourseQuery = (id: string) =>\n useQuery<{ tecCourse: TecCourse | null }>(GET_COURSE, {\n variables: { id },\n skip: !id,\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useEnrollmentsQuery = (vars: { learnerId?: string; courseId?: string }) =>\n useQuery<Conn<'tecListEnrollments', TecEnrollment>>(LIST_ENROLLMENTS, {\n variables: { pagination: pageArg(50), ...vars },\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useCertificatesQuery = (vars: { learnerId?: string; courseId?: string }) =>\n useQuery<{ tecListCertificates: TecCertificate[] }>(LIST_CERTIFICATES, {\n variables: vars,\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useProblemsQuery = (vars: {\n difficulty?: TecProblemDifficulty;\n status?: TecProblemStatus;\n topic?: string;\n pagination?: { limit: number; cursor?: string };\n}) =>\n useQuery<Conn<'tecListProblems', TecProblem>>(LIST_PROBLEMS, {\n variables: { pagination: pageArg(50), ...vars },\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useProblemQuery = (id: string) =>\n useQuery<{ tecProblem: TecProblem | null }>(GET_PROBLEM, {\n variables: { id },\n skip: !id,\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useSubmissionsQuery = (vars: { learnerId?: string; problemId?: string }) =>\n useQuery<Conn<'tecListSubmissions', TecSubmission>>(LIST_SUBMISSIONS, {\n variables: { pagination: pageArg(50), ...vars },\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useMentorsQuery = (vars: {\n status?: TecMentorStatus;\n pagination?: { limit: number; cursor?: string };\n}) =>\n useQuery<Conn<'tecListMentors', TecMentor>>(LIST_MENTORS, {\n variables: { pagination: pageArg(50), ...vars },\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useMentorQuery = (id: string) =>\n useQuery<{ tecMentor: TecMentor | null }>(GET_MENTOR, {\n variables: { id },\n skip: !id,\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useSessionsQuery = (vars: {\n mentorId?: string;\n menteeId?: string;\n status?: TecSessionStatus;\n pagination?: { limit: number; cursor?: string };\n}) =>\n useQuery<Conn<'tecListSessions', TecMentorSession>>(LIST_SESSIONS, {\n variables: { pagination: pageArg(50), ...vars },\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useHackathonsQuery = (vars: {\n status?: TecHackathonStatus;\n pagination?: { limit: number; cursor?: string };\n}) =>\n useQuery<Conn<'tecListHackathons', TecHackathon>>(LIST_HACKATHONS, {\n variables: { pagination: pageArg(50), ...vars },\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useHackathonQuery = (id: string) =>\n useQuery<{ tecHackathon: TecHackathon | null }>(GET_HACKATHON, {\n variables: { id },\n skip: !id,\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useTeamsQuery = (\n hackathonId: string,\n pagination?: { limit: number; cursor?: string }\n) =>\n useQuery<Conn<'tecListTeams', TecHackathonTeam>>(LIST_TEAMS, {\n variables: { hackathonId, pagination: pagination ?? pageArg(50) },\n skip: !hackathonId,\n fetchPolicy: 'cache-and-network',\n });\n\nexport const useLessonsQuery = (\n courseId: string,\n pagination?: { limit: number; cursor?: string }\n) =>\n useQuery<Conn<'tecListLessons', TecLesson>>(LIST_LESSONS, {\n variables: { courseId, pagination: pagination ?? pageArg(50) },\n skip: !courseId,\n fetchPolicy: 'cache-and-network',\n });\n\n/* ------------------------------------------------------------ mutations */\n\nconst onMutationError = (error: ErrorLike): void => {\n notify.error('Something went wrong', error.message || 'Please try again.');\n};\n\nconst REFETCH = {\n courses: 'TecListCourses',\n enrollments: 'TecListEnrollments',\n problems: 'TecListProblems',\n submissions: 'TecListSubmissions',\n mentors: 'TecListMentors',\n sessions: 'TecListSessions',\n hackathons: 'TecListHackathons',\n} as const;\n\nconst ENROLL = gql`\n ${ENROLLMENT_FIELDS}\n mutation TecEnroll($input: TecEnrollInput!) {\n tecEnroll(input: $input) {\n ...EnrollmentFields\n }\n }\n`;\n\nconst UPDATE_PROGRESS = gql`\n ${ENROLLMENT_FIELDS}\n mutation TecUpdateProgress($input: TecUpdateProgressInput!) {\n tecUpdateProgress(input: $input) {\n ...EnrollmentFields\n }\n }\n`;\n\nconst SUBMIT_SOLUTION = gql`\n ${SUBMISSION_FIELDS}\n mutation TecSubmitSolution($input: TecSubmitSolutionInput!) {\n tecSubmitSolution(input: $input) {\n ...SubmissionFields\n }\n }\n`;\n\nconst BOOK_SESSION = gql`\n ${SESSION_FIELDS}\n mutation TecBookSession($input: TecBookSessionInput!) {\n tecBookSession(input: $input) {\n ...SessionFields\n }\n }\n`;\n\nconst CANCEL_SESSION = gql`\n ${SESSION_FIELDS}\n mutation TecCancelSession($id: ID!) {\n tecCancelSession(id: $id) {\n ...SessionFields\n }\n }\n`;\n\nconst BECOME_MENTOR = gql`\n ${MENTOR_FIELDS}\n mutation TecBecomeMentor($input: TecCreateMentorInput!) {\n tecBecomeMentor(input: $input) {\n ...MentorFields\n }\n }\n`;\n\nconst REGISTER_TEAM = gql`\n ${TEAM_FIELDS}\n mutation TecRegisterTeam($input: TecRegisterTeamInput!) {\n tecRegisterTeam(input: $input) {\n ...TeamFields\n }\n }\n`;\n\nconst SUBMIT_PROJECT = gql`\n ${TEAM_FIELDS}\n mutation TecSubmitProject($input: TecSubmitProjectInput!) {\n tecSubmitProject(input: $input) {\n ...TeamFields\n }\n }\n`;\n\n/* ------- admin / authoring mutations ------- */\n\nconst CREATE_COURSE = gql`\n ${COURSE_FIELDS}\n mutation TecCreateCourse($input: TecCreateCourseInput!) {\n tecCreateCourse(input: $input) {\n ...CourseFields\n }\n }\n`;\n\nconst PUBLISH_COURSE = gql`\n ${COURSE_FIELDS}\n mutation TecPublishCourse($id: ID!) {\n tecPublishCourse(id: $id) {\n ...CourseFields\n }\n }\n`;\n\nconst ARCHIVE_COURSE = gql`\n mutation TecArchiveCourse($id: ID!) {\n tecArchiveCourse(id: $id)\n }\n`;\n\nconst CREATE_LESSON = gql`\n ${LESSON_FIELDS}\n mutation TecCreateLesson($input: TecCreateLessonInput!) {\n tecCreateLesson(input: $input) {\n ...LessonFields\n }\n }\n`;\n\nconst CREATE_PROBLEM = gql`\n ${PROBLEM_FIELDS}\n mutation TecCreateProblem($input: TecCreateProblemInput!) {\n tecCreateProblem(input: $input) {\n ...ProblemFields\n }\n }\n`;\n\nconst PUBLISH_PROBLEM = gql`\n ${PROBLEM_FIELDS}\n mutation TecPublishProblem($id: ID!) {\n tecPublishProblem(id: $id) {\n ...ProblemFields\n }\n }\n`;\n\nconst CREATE_HACKATHON = gql`\n ${HACKATHON_FIELDS}\n mutation TecCreateHackathon($input: TecCreateHackathonInput!) {\n tecCreateHackathon(input: $input) {\n ...HackathonFields\n }\n }\n`;\n\nconst OPEN_REGISTRATION = gql`\n ${HACKATHON_FIELDS}\n mutation TecOpenRegistration($id: ID!) {\n tecOpenRegistration(id: $id) {\n ...HackathonFields\n }\n }\n`;\n\nconst APPROVE_MENTOR = gql`\n ${MENTOR_FIELDS}\n mutation TecApproveMentor($id: ID!) {\n tecApproveMentor(id: $id) {\n ...MentorFields\n }\n }\n`;\n\nconst SCORE_TEAM = gql`\n ${TEAM_FIELDS}\n mutation TecScoreTeam($id: ID!, $score: Int!, $winner: Boolean) {\n tecScoreTeam(id: $id, score: $score, winner: $winner) {\n ...TeamFields\n }\n }\n`;\n\nconst CONFIRM_SESSION = gql`\n ${SESSION_FIELDS}\n mutation TecConfirmSession($id: ID!, $meetingUrl: String) {\n tecConfirmSession(id: $id, meetingUrl: $meetingUrl) {\n ...SessionFields\n }\n }\n`;\n\nconst COMPLETE_SESSION = gql`\n ${SESSION_FIELDS}\n mutation TecCompleteSession($id: ID!, $rating: Int, $feedback: String) {\n tecCompleteSession(id: $id, rating: $rating, feedback: $feedback) {\n ...SessionFields\n }\n }\n`;\n\nconst GRADE_SUBMISSION = gql`\n ${SUBMISSION_FIELDS}\n mutation TecGradeSubmission($id: ID!, $verdict: TecSubmissionVerdict!, $runtimeMs: Int) {\n tecGradeSubmission(id: $id, verdict: $verdict, runtimeMs: $runtimeMs) {\n ...SubmissionFields\n }\n }\n`;\n\nconst ISSUE_CERTIFICATE = gql`\n ${CERTIFICATE_FIELDS}\n mutation TecIssueCertificate($courseId: ID!, $learnerId: ID!, $score: Int!) {\n tecIssueCertificate(courseId: $courseId, learnerId: $learnerId, score: $score) {\n ...CertificateFields\n }\n }\n`;\n\nconst REVOKE_CERTIFICATE = gql`\n ${CERTIFICATE_FIELDS}\n mutation TecRevokeCertificate($id: ID!, $reason: String) {\n tecRevokeCertificate(id: $id, reason: $reason) {\n ...CertificateFields\n }\n }\n`;\n\nconst START_HACKATHON = gql`\n ${HACKATHON_FIELDS}\n mutation TecStartHackathon($id: ID!) {\n tecStartHackathon(id: $id) {\n ...HackathonFields\n }\n }\n`;\n\nconst START_JUDGING = gql`\n ${HACKATHON_FIELDS}\n mutation TecStartJudging($id: ID!) {\n tecStartJudging(id: $id) {\n ...HackathonFields\n }\n }\n`;\n\nconst COMPLETE_HACKATHON = gql`\n ${HACKATHON_FIELDS}\n mutation TecCompleteHackathon($id: ID!) {\n tecCompleteHackathon(id: $id) {\n ...HackathonFields\n }\n }\n`;\n\n/* ---------------------------------------------------------- mutation hooks */\n\nexport const useEnroll = () =>\n useMutation<{ tecEnroll: TecEnrollment }>(ENROLL, {\n onError: onMutationError,\n refetchQueries: [REFETCH.enrollments, REFETCH.courses],\n });\n\nexport const useUpdateProgress = () =>\n useMutation<{ tecUpdateProgress: TecEnrollment }>(UPDATE_PROGRESS, {\n onError: onMutationError,\n refetchQueries: [REFETCH.enrollments],\n });\n\nexport const useSubmitSolution = () =>\n useMutation<{ tecSubmitSolution: TecSubmission }>(SUBMIT_SOLUTION, {\n onError: onMutationError,\n refetchQueries: [REFETCH.submissions],\n });\n\nexport const useBookSession = () =>\n useMutation<{ tecBookSession: TecMentorSession }>(BOOK_SESSION, {\n onError: onMutationError,\n refetchQueries: [REFETCH.sessions, REFETCH.mentors],\n });\n\nexport const useCancelSession = () =>\n useMutation<{ tecCancelSession: TecMentorSession }>(CANCEL_SESSION, {\n onError: onMutationError,\n refetchQueries: [REFETCH.sessions],\n });\n\nexport const useBecomeMentor = () =>\n useMutation<{ tecBecomeMentor: TecMentor }>(BECOME_MENTOR, {\n onError: onMutationError,\n refetchQueries: [REFETCH.mentors],\n });\n\nexport const useRegisterTeam = () =>\n useMutation<{ tecRegisterTeam: TecHackathonTeam }>(REGISTER_TEAM, {\n onError: onMutationError,\n refetchQueries: [REFETCH.hackathons],\n });\n\nexport const useSubmitProject = () =>\n useMutation<{ tecSubmitProject: TecHackathonTeam }>(SUBMIT_PROJECT, {\n onError: onMutationError,\n });\n\nexport const useCreateCourse = () =>\n useMutation<{ tecCreateCourse: TecCourse }>(CREATE_COURSE, {\n onError: onMutationError,\n refetchQueries: [REFETCH.courses],\n });\n\nexport const usePublishCourse = () =>\n useMutation<{ tecPublishCourse: TecCourse }>(PUBLISH_COURSE, {\n onError: onMutationError,\n refetchQueries: [REFETCH.courses],\n });\n\nexport const useArchiveCourse = () =>\n useMutation<{ tecArchiveCourse: boolean }>(ARCHIVE_COURSE, {\n onError: onMutationError,\n refetchQueries: [REFETCH.courses],\n });\n\nexport const useCreateLesson = () =>\n useMutation<{ tecCreateLesson: TecLesson }>(CREATE_LESSON, { onError: onMutationError });\n\nexport const useCreateProblem = () =>\n useMutation<{ tecCreateProblem: TecProblem }>(CREATE_PROBLEM, {\n onError: onMutationError,\n refetchQueries: [REFETCH.problems],\n });\n\nexport const usePublishProblem = () =>\n useMutation<{ tecPublishProblem: TecProblem }>(PUBLISH_PROBLEM, {\n onError: onMutationError,\n refetchQueries: [REFETCH.problems],\n });\n\nexport const useCreateHackathon = () =>\n useMutation<{ tecCreateHackathon: TecHackathon }>(CREATE_HACKATHON, {\n onError: onMutationError,\n refetchQueries: [REFETCH.hackathons],\n });\n\nexport const useOpenRegistration = () =>\n useMutation<{ tecOpenRegistration: TecHackathon }>(OPEN_REGISTRATION, {\n onError: onMutationError,\n refetchQueries: [REFETCH.hackathons],\n });\n\nexport const useApproveMentor = () =>\n useMutation<{ tecApproveMentor: TecMentor }>(APPROVE_MENTOR, {\n onError: onMutationError,\n refetchQueries: [REFETCH.mentors],\n });\n\nexport const useScoreTeam = () =>\n useMutation<{ tecScoreTeam: TecHackathonTeam }>(SCORE_TEAM, { onError: onMutationError });\n\nexport const useConfirmSession = () =>\n useMutation<{ tecConfirmSession: TecMentorSession }>(CONFIRM_SESSION, {\n onError: onMutationError,\n refetchQueries: [REFETCH.sessions],\n });\n\nexport const useCompleteSession = () =>\n useMutation<{ tecCompleteSession: TecMentorSession }>(COMPLETE_SESSION, {\n onError: onMutationError,\n refetchQueries: [REFETCH.sessions],\n });\n\nexport const useGradeSubmission = () =>\n useMutation<{ tecGradeSubmission: TecSubmission }>(GRADE_SUBMISSION, {\n onError: onMutationError,\n refetchQueries: [REFETCH.submissions],\n });\n\nexport const useIssueCertificate = () =>\n useMutation<{ tecIssueCertificate: TecCertificate }>(ISSUE_CERTIFICATE, {\n onError: onMutationError,\n });\n\nexport const useRevokeCertificate = () =>\n useMutation<{ tecRevokeCertificate: TecCertificate }>(REVOKE_CERTIFICATE, {\n onError: onMutationError,\n });\n\nexport const useStartHackathon = () =>\n useMutation<{ tecStartHackathon: TecHackathon }>(START_HACKATHON, {\n onError: onMutationError,\n refetchQueries: [REFETCH.hackathons],\n });\n\nexport const useStartJudging = () =>\n useMutation<{ tecStartJudging: TecHackathon }>(START_JUDGING, {\n onError: onMutationError,\n refetchQueries: [REFETCH.hackathons],\n });\n\nexport const useCompleteHackathon = () =>\n useMutation<{ tecCompleteHackathon: TecHackathon }>(COMPLETE_HACKATHON, {\n onError: onMutationError,\n refetchQueries: [REFETCH.hackathons],\n });\n\n/* ------------------------------------------------------- pagination helper */\n\nexport interface PageLimit {\n limit: number;\n more: () => void;\n}\n\n/**\n * Simple, robust \"load more\". The backend paginates with `take = limit + 1`\n * (offset is ignored; only `cursor` shifts the window), so a larger `limit`\n * simply fetches more rows from the top and `pageInfo.hasMore` reports whether\n * still more exist. Growing the limit avoids cursor-merge/fetchMore complexity\n * and never sends `cursor: null` (the page-1 500 guard). Pass `limit` into the\n * query's `pageArg` and render <LoadMore hasMore={...} onClick={more} />.\n */\nexport function usePageLimit(step = 24, initial = 24): PageLimit {\n const [limit, setLimit] = useState(initial);\n return { limit, more: () => setLimit((l) => l + step) };\n}\n"],"mappings":"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"}
@@ -134,7 +134,7 @@ function Ee({ leading: e, children: t, actions: n }) {
134
134
  });
135
135
  }
136
136
  function De({ courseId: e }) {
137
- let { data: t, loading: n, refetch: r } = T(e), [i, { loading: a }] = x(), [s, l] = P(""), [u, d] = P("ARTICLE"), [p, h] = P(""), [g, _] = P(""), [v, y] = P(!1), b = [...t?.tecListLessons ?? []].sort((e, t) => e.position - t.position);
137
+ let { data: t, loading: n, refetch: r } = T(e), [i, { loading: a }] = x(), [s, l] = P(""), [u, d] = P("ARTICLE"), [p, h] = P(""), [g, _] = P(""), [v, y] = P(!1), b = [...t?.tecListLessons.items ?? []].sort((e, t) => e.position - t.position);
138
138
  return /* @__PURE__ */ K("div", {
139
139
  className: "mt-3 rounded-xl border border-border-seam bg-bg-sunken p-4",
140
140
  children: [
@@ -317,7 +317,7 @@ function Oe({ problemId: e }) {
317
317
  });
318
318
  }
319
319
  function ke({ hackathon: e }) {
320
- let { data: t, loading: n, refetch: r } = N(e.id), [i] = k(), [a, o] = P(null), [s, c] = P({}), u = t?.tecListTeams ?? [], d = async (e, t) => {
320
+ let { data: t, loading: n, refetch: r } = N(e.id), [i] = k(), [a, o] = P(null), [s, c] = P({}), u = t?.tecListTeams.items ?? [], d = async (e, t) => {
321
321
  let n = Math.max(0, Number(s[e] ?? "0") || 0);
322
322
  o(e);
323
323
  try {