diff --git a/frontend/src/components/Sidebar.tsx b/frontend/src/components/Sidebar.tsx index a521729..81d8b62 100644 --- a/frontend/src/components/Sidebar.tsx +++ b/frontend/src/components/Sidebar.tsx @@ -67,6 +67,8 @@ export type ViewId = | "product_lab" | "career" | "career_opportunities" + | "math_landing" + | "math_refresh_active" | "math_bridge" | "math_bridge_core_numeracy" | "math_bridge_high_school" @@ -144,6 +146,7 @@ export type ViewId = | "architecture_deep_dive_resilience" | "architecture_deep_dive_storage" | "architecture_deep_dive_stack" + | "mcp_ecosystem" | "changelog" | "design_system_components" | "design_system_coverage" @@ -1512,647 +1515,668 @@ export function Sidebar({ : url_tab === "build" ? "gpu_infra_build" : "gpu_infra_overview" - : pathname.startsWith("/changelog") - ? "changelog" - : pathname.startsWith( - "/design-system", - ) - ? url_tab === "coverage" - ? "design_system_coverage" - : "design_system_components" - : pathname.startsWith("/taxonomy") - ? url_tab === "skills" - ? "taxonomy_skills" - : url_tab === "domains" - ? "taxonomy_domains" - : url_tab === "composites" - ? "taxonomy_composites" - : url_tab === "roles" - ? "taxonomy_roles" - : "taxonomy_overview" + : pathname.startsWith( + "/how-mcp-works", + ) + ? "mcp_ecosystem" + : pathname.startsWith("/changelog") + ? "changelog" + : pathname.startsWith( + "/design-system", + ) + ? url_tab === "coverage" + ? "design_system_coverage" + : "design_system_components" : pathname.startsWith( - "/startup-challenge", + "/taxonomy", ) - ? "startup_challenge" + ? url_tab === "skills" + ? "taxonomy_skills" + : url_tab === "domains" + ? "taxonomy_domains" + : url_tab === "composites" + ? "taxonomy_composites" + : url_tab === "roles" + ? "taxonomy_roles" + : "taxonomy_overview" : pathname.startsWith( - "/sonic-dna", + "/startup-challenge", ) - ? "sonic_dna" + ? "startup_challenge" : pathname.startsWith( - "/chinese", + "/sonic-dna", ) - ? url_tab === "vocab" - ? "chinese_vocab" - : url_tab === "lessons" - ? "chinese_lessons" - : url_tab === "review" - ? "chinese_review" - : "chinese_dashboard" + ? "sonic_dna" : pathname.startsWith( - "/cantonese", + "/chinese", ) ? url_tab === "vocab" - ? "cantonese_vocab" + ? "chinese_vocab" : url_tab === "lessons" - ? "cantonese_lessons" + ? "chinese_lessons" : url_tab === "review" - ? "cantonese_review" - : "cantonese_dashboard" + ? "chinese_review" + : "chinese_dashboard" : pathname.startsWith( - "/module-48", + "/cantonese", ) - ? url_tab === "pnl" - ? "module48_pnl" + ? url_tab === "vocab" + ? "cantonese_vocab" : url_tab === - "pennylane" - ? "module48_pennylane" - : "module48_operations" + "lessons" + ? "cantonese_lessons" + : url_tab === + "review" + ? "cantonese_review" + : "cantonese_dashboard" : pathname.startsWith( - "/shopify-architect", - ) || - pathname.startsWith( - "/shopify", + "/module-48", ) - ? url_tab === - "skills" - ? "shopify_skills" - : "shopify_architect" + ? url_tab === "pnl" + ? "module48_pnl" + : url_tab === + "pennylane" + ? "module48_pennylane" + : "module48_operations" : pathname.startsWith( - "/linkedin-network", + "/shopify-architect", ) || pathname.startsWith( - "/linkedin-reset", - ) || - pathname.startsWith( - "/social", + "/shopify", ) ? url_tab === - "playbook" - ? "linkedin_playbook" - : url_tab === - "audit" - ? "linkedin_audit" - : "linkedin_network" + "skills" + ? "shopify_skills" + : "shopify_architect" : pathname.startsWith( - "/codex-productivity", + "/linkedin-network", + ) || + pathname.startsWith( + "/linkedin-reset", + ) || + pathname.startsWith( + "/social", ) - ? "codex_productivity" + ? url_tab === + "playbook" + ? "linkedin_playbook" + : url_tab === + "audit" + ? "linkedin_audit" + : "linkedin_network" : pathname.startsWith( - "/claude-productivity", + "/codex-productivity", ) - ? "claude_productivity" + ? "codex_productivity" : pathname.startsWith( - "/cowork-productivity", + "/claude-productivity", ) - ? "cowork_productivity" + ? "claude_productivity" : pathname.startsWith( - "/obsidian-productivity", + "/cowork-productivity", ) - ? "obsidian_productivity" + ? "cowork_productivity" : pathname.startsWith( - "/gmail-productivity", + "/obsidian-productivity", ) - ? "gmail_productivity" + ? "obsidian_productivity" : pathname.startsWith( - "/gemini-productivity", + "/gmail-productivity", ) - ? "gemini_productivity" + ? "gmail_productivity" : pathname.startsWith( - "/excel-productivity", + "/gemini-productivity", ) - ? "excel_productivity" + ? "gemini_productivity" : pathname.startsWith( - "/presentations-productivity", + "/excel-productivity", ) - ? "presentations_productivity" + ? "excel_productivity" : pathname.startsWith( - "/claude-video-productivity", + "/presentations-productivity", ) - ? "claude_video_productivity" + ? "presentations_productivity" : pathname.startsWith( - "/powerpoint-productivity", + "/claude-video-productivity", ) - ? "powerpoint_productivity" + ? "claude_video_productivity" : pathname.startsWith( - "/claude-frontend-productivity", + "/powerpoint-productivity", ) - ? "claude_frontend_productivity" + ? "powerpoint_productivity" : pathname.startsWith( - "/execution-playbook", - ) || - pathname.startsWith( - "/house-rules", + "/claude-frontend-productivity", ) - ? url_tab === - "prompt_tactics" - ? "execution_playbook_prompt_tactics" - : url_tab === - "parallel_ops" - ? "execution_playbook_parallel_ops" - : url_tab === - "remote_access" - ? "execution_playbook_remote_access" - : "execution_playbook_checklists" + ? "claude_frontend_productivity" : pathname.startsWith( - "/completion", + "/execution-playbook", + ) || + pathname.startsWith( + "/house-rules", ) - ? "completion" + ? url_tab === + "prompt_tactics" + ? "execution_playbook_prompt_tactics" + : url_tab === + "parallel_ops" + ? "execution_playbook_parallel_ops" + : url_tab === + "remote_access" + ? "execution_playbook_remote_access" + : "execution_playbook_checklists" : pathname.startsWith( - "/monitor", + "/completion", ) - ? url_tab === - "architecture" - ? "monitor_architecture" - : url_tab === - "evals" - ? "monitor_evals" + ? "completion" + : pathname.startsWith( + "/monitor", + ) + ? url_tab === + "architecture" + ? "monitor_architecture" : url_tab === - "test-cases" - ? "monitor_test_cases" + "evals" + ? "monitor_evals" : url_tab === - "databases" - ? "monitor_databases" + "test-cases" + ? "monitor_test_cases" : url_tab === - "costs" - ? "monitor_costs" + "databases" + ? "monitor_databases" : url_tab === - "tracing" - ? "monitor_tracing" + "costs" + ? "monitor_costs" : url_tab === - "plan-usage" - ? "monitor_plan_usage" + "tracing" + ? "monitor_tracing" : url_tab === - "playbook" - ? "monitor_playbook" + "plan-usage" + ? "monitor_plan_usage" : url_tab === - "codex-productivity" - ? "codex_productivity" + "playbook" + ? "monitor_playbook" : url_tab === - "claude-productivity" - ? "claude_productivity" + "codex-productivity" + ? "codex_productivity" : url_tab === - "cowork-productivity" - ? "cowork_productivity" - : "monitor_health" - : pathname.startsWith( - "/figma", - ) - ? "figma" + "claude-productivity" + ? "claude_productivity" + : url_tab === + "cowork-productivity" + ? "cowork_productivity" + : "monitor_health" : pathname.startsWith( - "/design-tools", + "/figma", ) - ? url_tab === - "tools" - ? "design_tools_tools" - : url_tab === - "compare" - ? "design_tools_compare" - : "design_tools_overview" + ? "figma" : pathname.startsWith( - "/career-accelerator", + "/design-tools", ) ? url_tab === - "opportunities" - ? "career_opportunities" - : "career" + "tools" + ? "design_tools_tools" + : url_tab === + "compare" + ? "design_tools_compare" + : "design_tools_overview" : pathname.startsWith( - "/math-bridge", + "/career-accelerator", ) ? url_tab === - "core_numeracy" - ? "math_bridge_core_numeracy" - : url_tab === - "high_school" - ? "math_bridge_high_school" - : url_tab === - "pre_university" - ? "math_bridge_pre_university" - : url_tab === - "engineering_prep" - ? "math_bridge_engineering_prep" - : "math_bridge" - : pathname.startsWith( - "/career-foundations", - ) - ? url_tab === - "msc_refresh" - ? "career_foundations_msc" - : url_tab === - "assessment" - ? "career_foundations_assessment" + "opportunities" + ? "career_opportunities" + : "career" + : pathname === + "/math" + ? "math_landing" + : pathname.startsWith( + "/math/bridge", + ) || + pathname.startsWith( + "/math-bridge", + ) + ? url_tab === + "core_numeracy" + ? "math_bridge_core_numeracy" : url_tab === - "ai_labs" - ? "career_foundations_ai_labs" + "high_school" + ? "math_bridge_high_school" : url_tab === - "forward_deployed" - ? "career_foundations_fde" + "pre_university" + ? "math_bridge_pre_university" : url_tab === - "cloud_consulting" - ? "career_foundations_cloud" + "engineering_prep" + ? "math_bridge_engineering_prep" + : "math_bridge" + : pathname.startsWith( + "/math/refresh", + ) || + pathname.startsWith( + "/math-refresh", + ) + ? "math_refresh_active" + : pathname.startsWith( + "/career-foundations", + ) + ? url_tab === + "msc_refresh" + ? "career_foundations_msc" + : url_tab === + "assessment" + ? "career_foundations_assessment" : url_tab === - "french_enterprise" - ? "career_foundations_french" + "ai_labs" + ? "career_foundations_ai_labs" : url_tab === - "adtech" - ? "career_foundations_adtech" + "forward_deployed" + ? "career_foundations_fde" : url_tab === - "faang" - ? "career_foundations_faang" + "cloud_consulting" + ? "career_foundations_cloud" : url_tab === - "data_platform" - ? "career_foundations_platform" + "french_enterprise" + ? "career_foundations_french" : url_tab === - "supply_chain" - ? "career_foundations_supply_chain" - : "career_foundations" - : pathname.startsWith( - "/high-performance", - ) - ? "high_performance" - : pathname.startsWith( - "/product-lab", - ) - ? "product_lab" - : pathname.startsWith( - "/apps", - ) - ? "my_apps" + "adtech" + ? "career_foundations_adtech" + : url_tab === + "faang" + ? "career_foundations_faang" + : url_tab === + "data_platform" + ? "career_foundations_platform" + : url_tab === + "supply_chain" + ? "career_foundations_supply_chain" + : "career_foundations" : pathname.startsWith( - "/brand-studio", + "/high-performance", ) - ? url_tab === - "collections" - ? "brand_studio_collections" - : "brand_studio_assets" + ? "high_performance" : pathname.startsWith( - "/events", + "/product-lab", ) - ? "events" + ? "product_lab" : pathname.startsWith( - "/reference-tracks", + "/apps", ) - ? "reference_tracks" + ? "my_apps" : pathname.startsWith( - "/oss-projects", + "/brand-studio", ) - ? "oss_projects" + ? url_tab === + "collections" + ? "brand_studio_collections" + : "brand_studio_assets" : pathname.startsWith( - "/hf-projects", + "/events", ) - ? "hf_projects" + ? "events" : pathname.startsWith( - "/elite-toolbox", + "/reference-tracks", ) - ? "elite_toolbox" + ? "reference_tracks" : pathname.startsWith( - "/dev-ref", - ) - ? get_dev_ref_view( - url_tab, + "/oss-projects", ) + ? "oss_projects" : pathname.startsWith( - "/prep", - ) - ? get_prep_view( - url_tab, + "/hf-projects", ) + ? "hf_projects" : pathname.startsWith( - "/applied-systems", + "/elite-toolbox", ) - ? url_tab === - "dataops" - ? "applied_systems_dataops" - : url_tab === - "recsys" - ? "applied_systems_recsys" - : url_tab === - "evals" - ? "applied_systems_evals" - : url_tab === - "worldmodels" - ? "applied_systems_worldmodels" - : url_tab === - "3d_vision" - ? "applied_systems_3d_vision" - : url_tab === - "distributed_ml" - ? "applied_systems_distributed_ml" - : "applied_systems_llmops" + ? "elite_toolbox" : pathname.startsWith( - "/embodied-ai", + "/dev-ref", + ) + ? get_dev_ref_view( + url_tab, ) - ? url_tab === - "humanoid" - ? "embodied_ai_humanoid" - : url_tab === - "service" - ? "embodied_ai_service" - : url_tab === - "autonomous" - ? "embodied_ai_autonomous" - : url_tab === - "agentic" - ? "embodied_ai_agentic" - : url_tab === - "edge_inference" - ? "embodied_ai_edge_inference" - : url_tab === - "world_models" - ? "embodied_ai_world_models" - : "embodied_ai_core" : pathname.startsWith( - "/ai-engineering", + "/prep", + ) + ? get_prep_view( + url_tab, ) - ? url_tab === - "agents" - ? "ai_engineering_agents" - : url_tab === - "evals" - ? "ai_engineering_evals" - : url_tab === - "retrieval" - ? "ai_engineering_retrieval" - : url_tab === - "memory" - ? "ai_engineering_memory" - : url_tab === - "fine_tuning" - ? "ai_engineering_fine_tuning" - : url_tab === - "multimodal" - ? "ai_engineering_multimodal" - : url_tab === - "reasoning" - ? "ai_engineering_reasoning" - : "ai_engineering_inference" : pathname.startsWith( - "/frontend-eng", + "/applied-systems", ) ? url_tab === - "components" - ? "frontend_eng_components" + "dataops" + ? "applied_systems_dataops" : url_tab === - "data_layer" - ? "frontend_eng_data_layer" + "recsys" + ? "applied_systems_recsys" : url_tab === - "performance" - ? "frontend_eng_performance" + "evals" + ? "applied_systems_evals" : url_tab === - "typescript" - ? "frontend_eng_typescript" + "worldmodels" + ? "applied_systems_worldmodels" : url_tab === - "testing" - ? "frontend_eng_testing" + "3d_vision" + ? "applied_systems_3d_vision" : url_tab === - "architecture" - ? "frontend_eng_architecture" - : "frontend_eng_state" + "distributed_ml" + ? "applied_systems_distributed_ml" + : "applied_systems_llmops" : pathname.startsWith( - "/agents", + "/embodied-ai", ) ? url_tab === - "resources" - ? "agents_resources" - : "agents_roadmap" + "humanoid" + ? "embodied_ai_humanoid" + : url_tab === + "service" + ? "embodied_ai_service" + : url_tab === + "autonomous" + ? "embodied_ai_autonomous" + : url_tab === + "agentic" + ? "embodied_ai_agentic" + : url_tab === + "edge_inference" + ? "embodied_ai_edge_inference" + : url_tab === + "world_models" + ? "embodied_ai_world_models" + : "embodied_ai_core" : pathname.startsWith( - "/tech-radar", + "/ai-engineering", ) ? url_tab === - "blogs" - ? "tech_radar_blogs" + "agents" + ? "ai_engineering_agents" : url_tab === - "tools" - ? "tech_radar_tools" - : "tech_radar_strategy" + "evals" + ? "ai_engineering_evals" + : url_tab === + "retrieval" + ? "ai_engineering_retrieval" + : url_tab === + "memory" + ? "ai_engineering_memory" + : url_tab === + "fine_tuning" + ? "ai_engineering_fine_tuning" + : url_tab === + "multimodal" + ? "ai_engineering_multimodal" + : url_tab === + "reasoning" + ? "ai_engineering_reasoning" + : "ai_engineering_inference" : pathname.startsWith( - "/mcp", + "/frontend-eng", ) ? url_tab === - "docs" - ? "mcp_docs" - : "mcp_dashboard" + "components" + ? "frontend_eng_components" + : url_tab === + "data_layer" + ? "frontend_eng_data_layer" + : url_tab === + "performance" + ? "frontend_eng_performance" + : url_tab === + "typescript" + ? "frontend_eng_typescript" + : url_tab === + "testing" + ? "frontend_eng_testing" + : url_tab === + "architecture" + ? "frontend_eng_architecture" + : "frontend_eng_state" : pathname.startsWith( - "/skills", + "/agents", ) - ? "skills" + ? url_tab === + "resources" + ? "agents_resources" + : "agents_roadmap" : pathname.startsWith( - "/gpu-for-ai", + "/tech-radar", ) ? url_tab === - "cuda" - ? "gpu_for_ai_cuda" + "blogs" + ? "tech_radar_blogs" : url_tab === - "distributed" - ? "gpu_for_ai_distributed" - : url_tab === - "memory" - ? "gpu_for_ai_memory" - : url_tab === - "cloud" - ? "gpu_for_ai_cloud" - : url_tab === - "profiling" - ? "gpu_for_ai_profiling" - : url_tab === - "networking" - ? "gpu_for_ai_networking" - : url_tab === - "alternatives" - ? "gpu_for_ai_alternatives" - : "gpu_for_ai_architecture" + "tools" + ? "tech_radar_tools" + : "tech_radar_strategy" : pathname.startsWith( - "/bio-augmentation", + "/mcp", ) ? url_tab === - "neurotech" - ? "bio_augmentation_neurotech" - : url_tab === - "wearables" - ? "bio_augmentation_wearables" - : url_tab === - "biohacking" - ? "bio_augmentation_biohacking" - : url_tab === - "translation" - ? "bio_augmentation_translation" - : url_tab === - "convergence" - ? "bio_augmentation_convergence" - : "bio_augmentation_foundations" + "docs" + ? "mcp_docs" + : "mcp_dashboard" : pathname.startsWith( - "/math-refresh", + "/skills", ) - ? url_track === - "prepa_ml" + ? "skills" + : pathname.startsWith( + "/gpu-for-ai", + ) ? url_tab === - "linear_algebra" - ? "math_refresh_pml_linear_algebra" + "cuda" + ? "gpu_for_ai_cuda" : url_tab === - "analysis" - ? "math_refresh_pml_analysis" + "distributed" + ? "gpu_for_ai_distributed" : url_tab === - "probability" - ? "math_refresh_pml_probability" + "memory" + ? "gpu_for_ai_memory" : url_tab === - "applied_ml" - ? "math_refresh_pml_applied_ml" + "cloud" + ? "gpu_for_ai_cloud" : url_tab === - "geometry_3d" - ? "math_refresh_pml_geometry_3d" + "profiling" + ? "gpu_for_ai_profiling" : url_tab === - "dynamics_physics" - ? "math_refresh_pml_dynamics_physics" + "networking" + ? "gpu_for_ai_networking" : url_tab === - "evaluation" - ? "math_refresh_pml_evaluation" - : "math_refresh_pml_methode" - : url_tab === - "diagnostic" - ? "math_refresh_z2o_diagnostic" - : url_tab === - "college" - ? "math_refresh_z2o_college" - : url_tab === - "lycee" - ? "math_refresh_z2o_lycee" - : url_tab === - "terminale" - ? "math_refresh_z2o_terminale" - : url_tab === - "evaluation" - ? "math_refresh_z2o_evaluation" - : "math_refresh_z2o_methode" - : pathname.startsWith( - "/culture-generale", - ) - ? url_track === - "humanites" - ? url_tab === - "french_philo" - ? "culture_generale_humanites_french_philo" - : url_tab === - "literature" - ? "culture_generale_humanites_literature" - : "culture_generale_humanites_philo_science" - : url_track === - "sciences_sociales" - ? url_tab === - "political_philo" - ? "culture_generale_sciences_sociales_political_philo" - : url_tab === - "history" - ? "culture_generale_sciences_sociales_history" - : "culture_generale_sciences_sociales_economics" - : url_tab === - "information_theory" - ? "culture_generale_sciences_information_theory" - : url_tab === - "biology_neuro" - ? "culture_generale_sciences_biology_neuro" - : "culture_generale_sciences_physics" + "alternatives" + ? "gpu_for_ai_alternatives" + : "gpu_for_ai_architecture" : pathname.startsWith( - "/cognitive-toolkit", + "/bio-augmentation", ) ? url_tab === - "operating_system" - ? "cognitive_toolkit_operating_system" + "neurotech" + ? "bio_augmentation_neurotech" : url_tab === - "techniques" - ? "cognitive_toolkit_techniques" + "wearables" + ? "bio_augmentation_wearables" : url_tab === - "worldview" - ? "cognitive_toolkit_worldview" + "biohacking" + ? "bio_augmentation_biohacking" : url_tab === - "library" - ? "cognitive_toolkit_library" + "translation" + ? "bio_augmentation_translation" : url_tab === - "playbook" - ? "cognitive_toolkit_playbook" + "convergence" + ? "bio_augmentation_convergence" + : "bio_augmentation_foundations" + : pathname.startsWith( + "/math-refresh", + ) + ? url_track === + "prepa_ml" + ? url_tab === + "linear_algebra" + ? "math_refresh_pml_linear_algebra" + : url_tab === + "analysis" + ? "math_refresh_pml_analysis" + : url_tab === + "probability" + ? "math_refresh_pml_probability" : url_tab === - "operators" - ? "cognitive_toolkit_operators" + "applied_ml" + ? "math_refresh_pml_applied_ml" : url_tab === - "social_dynamics" - ? "cognitive_toolkit_social_dynamics" + "geometry_3d" + ? "math_refresh_pml_geometry_3d" : url_tab === - "ai_leverage" - ? "cognitive_toolkit_ai_leverage" - : "cognitive_toolkit_foundation" - : pathname.startsWith( - "/behavioral-design", - ) - ? url_tab === - "feed_design" - ? "behavioral_design_feed_design" + "dynamics_physics" + ? "math_refresh_pml_dynamics_physics" + : url_tab === + "evaluation" + ? "math_refresh_pml_evaluation" + : "math_refresh_pml_methode" : url_tab === - "social_loops" - ? "behavioral_design_social_loops" + "diagnostic" + ? "math_refresh_z2o_diagnostic" : url_tab === - "variable_rewards" - ? "behavioral_design_variable_rewards" + "college" + ? "math_refresh_z2o_college" : url_tab === - "friction" - ? "behavioral_design_friction" + "lycee" + ? "math_refresh_z2o_lycee" : url_tab === - "notifications" - ? "behavioral_design_notifications" + "terminale" + ? "math_refresh_z2o_terminale" : url_tab === - "gamification" - ? "behavioral_design_gamification" - : url_tab === - "case_studies" - ? "behavioral_design_case_studies" - : "behavioral_design_frameworks" + "evaluation" + ? "math_refresh_z2o_evaluation" + : "math_refresh_z2o_methode" : pathname.startsWith( - "/elite-freelance", + "/culture-generale", ) - ? url_tab === - "realtime_systems" - ? "elite_freelance_realtime_systems" - : url_tab === - "apis_at_scale" - ? "elite_freelance_apis_at_scale" + ? url_track === + "humanites" + ? url_tab === + "french_philo" + ? "culture_generale_humanites_french_philo" : url_tab === - "ai_agent_infra" - ? "elite_freelance_ai_agent_infra" + "literature" + ? "culture_generale_humanites_literature" + : "culture_generale_humanites_philo_science" + : url_track === + "sciences_sociales" + ? url_tab === + "political_philo" + ? "culture_generale_sciences_sociales_political_philo" : url_tab === - "production_hardening" - ? "elite_freelance_production_hardening" - : url_tab === - "positioning" - ? "elite_freelance_positioning" - : "elite_freelance_realtime_systems" + "history" + ? "culture_generale_sciences_sociales_history" + : "culture_generale_sciences_sociales_economics" + : url_tab === + "information_theory" + ? "culture_generale_sciences_information_theory" + : url_tab === + "biology_neuro" + ? "culture_generale_sciences_biology_neuro" + : "culture_generale_sciences_physics" : pathname.startsWith( - "/tooling", + "/cognitive-toolkit", ) - ? "tooling" - : pathname === - "/learn" - ? "learn_concepts" - : pathname === - "/learn/tracks" - ? "curriculum_tracks" - : pathname.match( - /^\/learn\/tracks\/[^/]+\/modules\//, + ? url_tab === + "operating_system" + ? "cognitive_toolkit_operating_system" + : url_tab === + "techniques" + ? "cognitive_toolkit_techniques" + : url_tab === + "worldview" + ? "cognitive_toolkit_worldview" + : url_tab === + "library" + ? "cognitive_toolkit_library" + : url_tab === + "playbook" + ? "cognitive_toolkit_playbook" + : url_tab === + "operators" + ? "cognitive_toolkit_operators" + : url_tab === + "social_dynamics" + ? "cognitive_toolkit_social_dynamics" + : url_tab === + "ai_leverage" + ? "cognitive_toolkit_ai_leverage" + : "cognitive_toolkit_foundation" + : pathname.startsWith( + "/behavioral-design", + ) + ? url_tab === + "feed_design" + ? "behavioral_design_feed_design" + : url_tab === + "social_loops" + ? "behavioral_design_social_loops" + : url_tab === + "variable_rewards" + ? "behavioral_design_variable_rewards" + : url_tab === + "friction" + ? "behavioral_design_friction" + : url_tab === + "notifications" + ? "behavioral_design_notifications" + : url_tab === + "gamification" + ? "behavioral_design_gamification" + : url_tab === + "case_studies" + ? "behavioral_design_case_studies" + : "behavioral_design_frameworks" + : pathname.startsWith( + "/elite-freelance", + ) + ? url_tab === + "realtime_systems" + ? "elite_freelance_realtime_systems" + : url_tab === + "apis_at_scale" + ? "elite_freelance_apis_at_scale" + : url_tab === + "ai_agent_infra" + ? "elite_freelance_ai_agent_infra" + : url_tab === + "production_hardening" + ? "elite_freelance_production_hardening" + : url_tab === + "positioning" + ? "elite_freelance_positioning" + : "elite_freelance_realtime_systems" + : pathname.startsWith( + "/tooling", ) - ? "curriculum_module_detail" - : pathname.match( - /^\/learn\/tracks\/[^/]+$/, - ) - ? "curriculum_track_detail" + ? "tooling" + : pathname === + "/learn" + ? "learn_concepts" : pathname === - "/learn/lenses" - ? "learn_lenses" - : pathname === - "/learn/levels" - ? "learn_levels" - : pathname.startsWith( - "/learn/", + "/learn/tracks" + ? "curriculum_tracks" + : pathname.match( + /^\/learn\/tracks\/[^/]+\/modules\//, + ) + ? "curriculum_module_detail" + : pathname.match( + /^\/learn\/tracks\/[^/]+$/, ) - ? "learn_concept_detail" - : "none"; + ? "curriculum_track_detail" + : pathname === + "/learn/lenses" + ? "learn_lenses" + : pathname === + "/learn/levels" + ? "learn_levels" + : pathname.startsWith( + "/learn/", + ) + ? "learn_concept_detail" + : "none"; const current_conversation_id = active_view === "chat" ? (params.conversationId ?? null) : null; @@ -2384,6 +2408,104 @@ export function Sidebar({ onClick={() => navigate({ to: "/chat" })} className="nav-accent-glow-red" /> + {/* Learning */} +
+
+ } + label="Learning" + active={ + active_view.startsWith("learn_") || + active_view.startsWith("curriculum_") || + active_view.startsWith("chinese_") || + active_view.startsWith("cantonese_") || + active_view.startsWith("math_") || + active_view.startsWith("culture_generale_") || + active_view.startsWith("cognitive_toolkit_") || + active_view.startsWith("behavioral_design_") + } + onClick={() => navigate({ to: "/learn/tracks" })} + /> +
+ {sidebarExpanded && ( + toggle_expandable_nav("learning")} + className="p-1 text-[var(--sb-sidebar-text-muted)] hover:text-[var(--sb-text-primary)] transition-colors" + label={ + expandable_nav.learning + ? "Minimize learning tabs" + : "Expand learning tabs" + } + tooltipSide="right" + > + {expandable_nav.learning ? ( + + ) : ( + + )} + + )} +
+ + navigate({ to: "/learn/tracks" })} + /> + navigate({ to: "/learn" })} + /> + navigate({ to: "/learn/lenses" })} + /> + navigate({ to: "/learn/levels" })} + /> + navigate({ to: "/chinese" })} + /> + navigate({ to: "/cantonese" })} + /> + navigate({ to: "/math" })} + /> + navigate({ to: "/culture-generale" })} + /> + navigate({ to: "/cognitive-toolkit" })} + /> + navigate({ to: "/behavioral-design" })} + /> +
navigate({ to: "/career-accelerator" })} /> @@ -2456,6 +2579,12 @@ export function Sidebar({ }) } /> + } + label="Foundations" + active={active_view.startsWith("career_foundations")} + onClick={() => navigate({ to: "/career-foundations" })} + />
@@ -2463,7 +2592,10 @@ export function Sidebar({ icon={} label="Projects" active={ - active_view === "projects" || active_view === "projects_ai" + active_view === "projects" || + active_view === "projects_ai" || + active_view === "oss_projects" || + active_view === "hf_projects" } onClick={() => navigate({ to: "/projects/enterprise-projects" }) @@ -2504,6 +2636,18 @@ export function Sidebar({ navigate({ to: "/projects/ai-generated-projects" }) } /> + } + label="OSS Projects" + active={active_view === "oss_projects"} + onClick={() => navigate({ to: "/oss-projects" })} + /> + } + label="HF Projects" + active={active_view === "hf_projects"} + onClick={() => navigate({ to: "/hf-projects" })} + />
@@ -3977,87 +4121,6 @@ export function Sidebar({ )} - {/* Learning */} -
-
- } - label="Learning" - active={ - active_view.startsWith("learn_") || - active_view.startsWith("curriculum_") || - active_view.startsWith("chinese_") || - active_view.startsWith("cantonese_") || - active_view.startsWith("math_refresh_") || - active_view.startsWith("culture_generale_") - } - onClick={() => navigate({ to: "/learn/tracks" })} - /> -
- {sidebarExpanded && ( - toggle_expandable_nav("learning")} - className="p-1 text-[var(--sb-sidebar-text-muted)] hover:text-[var(--sb-text-primary)] transition-colors" - label={ - expandable_nav.learning - ? "Minimize learning tabs" - : "Expand learning tabs" - } - tooltipSide="right" - > - {expandable_nav.learning ? ( - - ) : ( - - )} - - )} -
- - navigate({ to: "/learn/tracks" })} - /> - navigate({ to: "/learn" })} - /> - navigate({ to: "/learn/lenses" })} - /> - navigate({ to: "/learn/levels" })} - /> - navigate({ to: "/chinese" })} - /> - navigate({ to: "/cantonese" })} - /> - navigate({ to: "/math-refresh" })} - /> - navigate({ to: "/culture-generale" })} - /> - {/* Personal */}
@@ -4162,19 +4225,21 @@ export function Sidebar({ } /> - {/* Side Projects */} + {/* Business */}
} - label="Side Projects" + label="Business" active={ active_view.startsWith("module48_") || active_view.startsWith("linkedin_") || active_view === "shopify_architect" || active_view === "shopify_skills" || active_view === "sonic_dna" || - active_view === "reference_tracks" + active_view === "reference_tracks" || + active_view.startsWith("brand_studio") || + active_view.startsWith("execution_playbook") } onClick={() => navigate({ to: "/module-48" })} /> @@ -4185,8 +4250,8 @@ export function Sidebar({ className="p-1 text-[var(--sb-sidebar-text-muted)] hover:text-[var(--sb-text-primary)] transition-colors" label={ expandable_nav.side_projects - ? "Minimize side projects tabs" - : "Expand side projects tabs" + ? "Minimize business tabs" + : "Expand business tabs" } tooltipSide="right" > @@ -4230,6 +4295,18 @@ export function Sidebar({ active={active_view === "reference_tracks"} onClick={() => navigate({ to: "/reference-tracks" })} /> + } + label="Brand Studio" + active={active_view.startsWith("brand_studio")} + onClick={() => navigate({ to: "/brand-studio" })} + /> + } + label="Execution Playbook" + active={active_view.startsWith("execution_playbook")} + onClick={() => navigate({ to: "/execution-playbook" })} + />
@@ -4451,7 +4528,13 @@ export function Sidebar({ active_view === "how_it_works_architecture" || active_view === "how_it_works_contracts" || active_view === "how_it_works_event_driven" || - active_view === "how_it_works_models" + active_view === "how_it_works_models" || + active_view.startsWith("ingestion_pipeline_") || + active_view.startsWith("chat_pipeline_") || + active_view.startsWith("career_intelligence_") || + active_view.startsWith("observability_") || + active_view.startsWith("architecture_deep_dive_") || + active_view === "mcp_ecosystem" } onClick={() => navigate({ to: "/how-it-works", search: { tab: "overview" } }) @@ -4532,6 +4615,42 @@ export function Sidebar({ }) } /> + } + label="Ingestion Pipeline" + active={active_view.startsWith("ingestion_pipeline_")} + onClick={() => navigate({ to: "/how-ingestion-works" })} + /> + } + label="Chat Pipeline" + active={active_view.startsWith("chat_pipeline_")} + onClick={() => navigate({ to: "/how-chat-works" })} + /> + } + label="Career Intelligence" + active={active_view.startsWith("career_intelligence_")} + onClick={() => navigate({ to: "/how-career-works" })} + /> + } + label="Observability" + active={active_view.startsWith("observability_")} + onClick={() => navigate({ to: "/how-monitor-works" })} + /> + } + label="Architecture Reference" + active={active_view.startsWith("architecture_deep_dive_")} + onClick={() => navigate({ to: "/how-architecture-works" })} + /> + } + label="MCP Ecosystem" + active={active_view === "mcp_ecosystem"} + onClick={() => navigate({ to: "/how-mcp-works" })} + /> diff --git a/frontend/src/router.tsx b/frontend/src/router.tsx index dae15a8..fc35e35 100644 --- a/frontend/src/router.tsx +++ b/frontend/src/router.tsx @@ -93,6 +93,7 @@ import { HowGpuWorksRoute } from "./routes/how-gpu-works"; import { PricingRoute } from "./routes/pricing"; import { CareerFoundationsRoute } from "./routes/career-foundations"; import { MathBridgeRoute } from "./routes/math-bridge"; +import { MathLandingRoute } from "./routes/math"; export type CareerTab = "accelerator" | "opportunities"; @@ -1939,9 +1940,19 @@ const VALID_CULTURE_GENERALE_TABS = new Set([ "history", ]); -const mathRefreshRoute = createRoute({ +/* ── Canonical /math hub ──────────────────────────────────────────── */ +const mathRoute = createRoute({ getParentRoute: () => appRoute, - path: "/math-refresh", + path: "/math", + errorComponent: ({ error, reset }) => ( + + ), + component: MathLandingRoute, +}); + +const mathRefreshCanonicalRoute = createRoute({ + getParentRoute: () => appRoute, + path: "/math/refresh", validateSearch: ( search: Record, ): MathRefreshSearchParams => { @@ -1966,6 +1977,52 @@ const mathRefreshRoute = createRoute({ component: MathRefreshRoute, }); +const mathBridgeCanonicalRoute = createRoute({ + getParentRoute: () => appRoute, + path: "/math/bridge", + validateSearch: (search: Record): MathBridgeSearchParams => { + const result: MathBridgeSearchParams = {}; + if ( + typeof search.tab === "string" && + VALID_MATH_BRIDGE_TABS.has(search.tab) + ) { + result.tab = search.tab as MathBridgeTab; + } + return result; + }, + errorComponent: ({ error, reset }) => ( + + ), + component: MathBridgeRoute, +}); + +/* ── Legacy redirects ────────────────────────────────────────────── */ +const mathRefreshRoute = createRoute({ + getParentRoute: () => appRoute, + path: "/math-refresh", + validateSearch: ( + search: Record, + ): MathRefreshSearchParams => { + const result: MathRefreshSearchParams = {}; + if ( + typeof search.track === "string" && + VALID_MATH_REFRESH_TRACKS.has(search.track) + ) { + result.track = search.track as MathRefreshTrack; + } + if ( + typeof search.tab === "string" && + VALID_MATH_REFRESH_TABS.has(search.tab) + ) { + result.tab = search.tab as MathRefreshTab; + } + return result; + }, + beforeLoad: ({ search }) => { + throw redirect({ to: "/math/refresh", search, replace: true }); + }, +}); + const cultureGeneraleRoute = createRoute({ getParentRoute: () => appRoute, path: "/culture-generale", @@ -2117,10 +2174,9 @@ const mathBridgeRoute = createRoute({ } return result; }, - errorComponent: ({ error, reset }) => ( - - ), - component: MathBridgeRoute, + beforeLoad: ({ search }) => { + throw redirect({ to: "/math/bridge", search, replace: true }); + }, }); const careerFoundationsRoute = createRoute({ @@ -2402,6 +2458,9 @@ const routeTree = rootRoute.addChildren([ harnessDevToolsRoute, gpuForAIRoute, bioAugmentationRoute, + mathRoute, + mathRefreshCanonicalRoute, + mathBridgeCanonicalRoute, mathRefreshRoute, cultureGeneraleRoute, cognitiveToolkitRoute, diff --git a/frontend/src/routes/math.tsx b/frontend/src/routes/math.tsx new file mode 100644 index 0000000..34b813a --- /dev/null +++ b/frontend/src/routes/math.tsx @@ -0,0 +1,23 @@ +import { lazy, Suspense } from "react"; + +const MathLandingView = lazy(() => + import("../views/MathLandingView").then((m) => ({ + default: m.MathLandingView, + })), +); + +function LoadingSpinner() { + return ( +
+
+
+ ); +} + +export function MathLandingRoute() { + return ( + }> + + + ); +} diff --git a/frontend/src/views/MathLandingView.tsx b/frontend/src/views/MathLandingView.tsx new file mode 100644 index 0000000..3331f7a --- /dev/null +++ b/frontend/src/views/MathLandingView.tsx @@ -0,0 +1,64 @@ +import { useNavigate } from "@tanstack/react-router"; +import { motion } from "framer-motion"; + +import { PremiumHero, PremiumPage } from "../components/layout/PremiumShell"; +import { useDocumentTitle } from "../hooks/useDocumentTitle"; + +const ENTRIES = [ + { + key: "refresh", + label: "Math Refresh", + description: + "Study the French math curriculum at your own pace - from arithmetic fundamentals through prepa-level linear algebra and probability.", + to: "/math/refresh" as const, + color: "#55cdff", + }, + { + key: "bridge", + label: "Math Bridge Program", + description: + "Test your skills across four levels, track your readiness, and close gaps with interactive micro-checks.", + to: "/math/bridge" as const, + color: "#ffc47c", + }, +] as const; + +export function MathLandingView() { + useDocumentTitle("Math"); + const navigate = useNavigate(); + + return ( + + +
+ {ENTRIES.map((entry, i) => ( + navigate({ to: entry.to })} + className="text-left rounded-[12px] border border-white/[0.08] bg-white/[0.02] p-6 transition-colors duration-150 hover:border-white/[0.12] hover:bg-white/[0.035]" + style={{ borderLeftWidth: 2, borderLeftColor: entry.color }} + > +

+ {entry.label} +

+

+ {entry.description} +

+
+ ))} +
+
+ ); +}