import { getQuestion } from "@/lib/api"; import { Badge } from "@/components/ui/badge"; import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"; import { CodeBlock } from "@/components/ui/code-block"; import { Markdown } from "@/components/ui/markdown"; import { Callout, ApproachBox } from "@/components/ui/callout"; import { Collapsible } from "@/components/ui/collapsible"; import { getDifficultyVariant, getDifficultyLabel, capitalize } from "@/lib/utils"; import { FileText, AlertCircle, BookOpen, Code, Clock, HardDrive, } from "lucide-react"; import Link from "next/link"; import { notFound } from "next/navigation"; export default async function QuestionDetailPage({ params, }: { params: Promise<{ slug: string }>; }) { const { slug } = await params; let question; try { question = await getQuestion(slug); } catch { notFound(); } const optimalSolutions = question.solutions.filter((s) => s.is_optimal); const otherSolutions = question.solutions.filter((s) => !s.is_optimal); return (

{question.title}

{capitalize(question.difficulty)}
{question.categories.map((cat) => ( {cat.name} ))} {question.patterns.map((pat) => ( {pat.name} ))}
{question.leetcode_url && ( View on LeetCode )}
{question.description} {question.constraints && ( {question.constraints} )} {question.examples && question.examples.length > 0 && ( {question.examples.map((example, i) => (
Input: {example.input}
Output: {example.output}
{example.explanation && (
{example.explanation}
)}
))}
)} {question.explanation && ( <>
{question.explanation.approach}
{question.explanation.intuition}
{question.explanation.common_pitfalls && question.explanation.common_pitfalls.length > 0 && (
{question.explanation.common_pitfalls.map((pitfall, i) => (

{pitfall.title}

{pitfall.description}
{(pitfall.wrong_approach || pitfall.correct_approach) && (
{pitfall.wrong_approach && ( {pitfall.wrong_approach} )} {pitfall.correct_approach && ( {pitfall.correct_approach} )}
)}
))}
)} {question.explanation.key_takeaways && question.explanation.key_takeaways.length > 0 && ( )} )} {question.solutions.length > 0 && (