SYMBOL INDEX (250 symbols across 99 files) FILE: src/app/(auth)/layout.tsx function AuthLayout (line 1) | async function AuthLayout({ FILE: src/app/(auth)/sign-in/[[...sign-in]]/page.tsx function Page (line 3) | function Page() { FILE: src/app/(auth)/sign-up/[[...sign-up]]/page.tsx function Page (line 3) | function Page() { FILE: src/app/(consumer)/courses/[courseId]/_client.tsx function CoursePageClient (line 15) | function CoursePageClient({ FILE: src/app/(consumer)/courses/[courseId]/layout.tsx function CoursePageLayout (line 21) | async function CoursePageLayout({ function getCourse (line 48) | async function getCourse(id: string) { function SuspenseBoundary (line 79) | async function SuspenseBoundary({ function getCompletedLessonIds (line 102) | async function getCompletedLessonIds(userId: string) { function mapCourse (line 114) | function mapCourse( FILE: src/app/(consumer)/courses/[courseId]/lessons/[lessonId]/page.tsx function LessonPage (line 29) | async function LessonPage({ function LoadingSkeleton (line 46) | function LoadingSkeleton() { function SuspenseBoundary (line 50) | async function SuspenseBoundary({ function ToLessonButton (line 150) | async function ToLessonButton({ function getPreviousLesson (line 181) | async function getPreviousLesson(lesson: { function getNextLesson (line 229) | async function getNextLesson(lesson: { function getLesson (line 274) | async function getLesson(id: string) { function getIsLessonComplete (line 292) | async function getIsLessonComplete({ FILE: src/app/(consumer)/courses/[courseId]/page.tsx function CoursePage (line 9) | async function CoursePage({ function getCourse (line 27) | async function getCourse(id: string) { FILE: src/app/(consumer)/courses/page.tsx function CoursesPage (line 38) | function CoursesPage() { function CourseGrid (line 57) | async function CourseGrid() { function SkeletonCourseCard (line 109) | function SkeletonCourseCard() { function getUserCourses (line 130) | async function getUserCourses(userId: string) { FILE: src/app/(consumer)/layout.tsx function ConsumerLayout (line 8) | function ConsumerLayout({ function Navbar (line 19) | function Navbar() { function AdminLink (line 67) | async function AdminLink() { FILE: src/app/(consumer)/page.tsx function HomePage (line 9) | async function HomePage() { function getPublicProducts (line 23) | async function getPublicProducts() { FILE: src/app/(consumer)/products/[productId]/page.tsx function ProductPage (line 38) | async function ProductPage({ function PurchaseButton (line 160) | async function PurchaseButton({ productId }: { productId: string }) { function Price (line 176) | async function Price({ price }: { price: number }) { function getPublicProduct (line 194) | async function getPublicProduct(id: string) { FILE: src/app/(consumer)/products/[productId]/purchase/page.tsx function PurchasePage (line 16) | function PurchasePage({ function SuspendedComponent (line 30) | async function SuspendedComponent({ function getPublicProduct (line 78) | async function getPublicProduct(id: string) { FILE: src/app/(consumer)/products/[productId]/purchase/success/page.tsx function ProductPurchaseSuccessPage (line 11) | async function ProductPurchaseSuccessPage({ function getPublicProduct (line 46) | async function getPublicProduct(id: string) { FILE: src/app/(consumer)/products/purchase-failure/page.tsx function ProductPurchaseFailurePage (line 4) | async function ProductPurchaseFailurePage() { FILE: src/app/(consumer)/purchases/[purchaseId]/page.tsx function PurchasePage (line 27) | async function PurchasePage({ function SuspenseBoundary (line 43) | async function SuspenseBoundary({ purchaseId }: { purchaseId: string }) { function getPurchase (line 116) | async function getPurchase({ userId, id }: { userId: string; id: string ... function getStripeDetails (line 132) | async function getStripeDetails( function getReceiptUrl (line 163) | function getReceiptUrl(paymentIntent: Stripe.PaymentIntent | string | nu... function getPricingRows (line 174) | function getPricingRows( FILE: src/app/(consumer)/purchases/page.tsx function PurchasesPage (line 16) | function PurchasesPage() { function SuspenseBoundary (line 27) | async function SuspenseBoundary() { function getPurchases (line 47) | async function getPurchases(userId: string) { FILE: src/app/admin/courses/[courseId]/edit/page.tsx function EditCoursePage (line 22) | async function EditCoursePage({ function getCourse (line 103) | async function getCourse(id: string) { FILE: src/app/admin/courses/new/page.tsx function NewCoursePage (line 4) | function NewCoursePage() { FILE: src/app/admin/courses/page.tsx function CoursesPage (line 19) | async function CoursesPage() { function getCourses (line 35) | async function getCourses() { FILE: src/app/admin/layout.tsx function AdminLayout (line 6) | function AdminLayout({ function Navbar (line 17) | function Navbar() { FILE: src/app/admin/page.tsx function AdminPage (line 27) | async function AdminPage() { function StatCard (line 72) | function StatCard({ title, children }: { title: string; children: ReactN... function getPurchaseDetails (line 83) | async function getPurchaseDetails() { function getTotalStudents (line 120) | async function getTotalStudents() { function getTotalCourses (line 132) | async function getTotalCourses() { function getTotalProducts (line 144) | async function getTotalProducts() { function getTotalLessons (line 155) | async function getTotalLessons() { function getTotalCourseSections (line 166) | async function getTotalCourseSections() { FILE: src/app/admin/products/[productId]/edit/page.tsx function EditProductPage (line 11) | async function EditProductPage({ function getCourses (line 35) | async function getCourses() { function getProduct (line 45) | async function getProduct(id: string) { FILE: src/app/admin/products/new/page.tsx function NewProductPage (line 9) | async function NewProductPage() { function getCourses (line 18) | async function getCourses() { FILE: src/app/admin/products/page.tsx function ProductsPage (line 15) | async function ProductsPage() { function getProducts (line 31) | async function getProducts() { FILE: src/app/admin/sales/page.tsx function PurchasesPage (line 10) | async function PurchasesPage() { function getPurchases (line 22) | async function getPurchases() { FILE: src/app/api/clerk/syncUsers/route.ts function GET (line 6) | async function GET(request: Request) { FILE: src/app/api/webhooks/clerk/route.ts function POST (line 8) | async function POST(req: Request) { FILE: src/app/api/webhooks/stripe/route.ts function GET (line 12) | async function GET(request: NextRequest) { function POST (line 32) | async function POST(request: NextRequest) { function processStripeCheckout (line 52) | async function processStripeCheckout(checkoutSession: Stripe.Checkout.Se... function getProduct (line 92) | function getProduct(id: string) { function getUser (line 108) | function getUser(id: string) { FILE: src/app/layout.tsx function RootLayout (line 11) | function RootLayout({ FILE: src/components/ActionButton.tsx function ActionButton (line 20) | function ActionButton({ function LoadingTextSwap (line 72) | function LoadingTextSwap({ FILE: src/components/LoadingSpinner.tsx function LoadingSpinner (line 5) | function LoadingSpinner({ FILE: src/components/PageHeader.tsx function PageHeader (line 4) | function PageHeader({ FILE: src/components/RequiredLabelIcon.tsx function RequiredLabelIcon (line 5) | function RequiredLabelIcon({ FILE: src/components/Skeleton.tsx function SkeletonButton (line 5) | function SkeletonButton({ className }: { className?: string }) { function SkeletonArray (line 19) | function SkeletonArray({ function SkeletonText (line 29) | function SkeletonText({ FILE: src/components/SortableList.tsx function SortableList (line 16) | function SortableList({ function SortableItem (line 65) | function SortableItem({ FILE: src/components/ui/badge.tsx type BadgeProps (line 26) | interface BadgeProps function Badge (line 30) | function Badge({ className, variant, ...props }: BadgeProps) { FILE: src/components/ui/button.tsx type ButtonProps (line 39) | interface ButtonProps FILE: src/components/ui/custom/multi-select.tsx function MultiSelect (line 23) | function MultiSelect