"use client"; // External dependencies import * as React from "react"; import { Suspense } from "react"; // Internal component imports import ChatBotGrid from "@/app/(audiences)/components/chat-bot-grid"; import { SubjectFilter } from "@/app/(audiences)/components/subject-filter"; import SearchBar from "@/app/(audiences)/components/search-bar"; import ChatBotGridSkeleton from "@/app/(audiences)/components/chat-bot-grid-skeleton"; import { getPopularBots, getTrendingBots, getAllBots } from "./data/chatbots"; /** * ForStudentsPage Component * Main page component for the student-focused section of the application. * Provides a searchable and filterable interface for students to discover AI chatbots. */ export default function ForStudentsPage() { // State management for filters and search const [selectedCategories, setSelectedCategories] = React.useState<string[]>( [], ); const [selectedSubjects, setSelectedSubjects] = React.useState<string[]>([]); const [searchQuery, setSearchQuery] = React.useState<string>(""); // Handler for search input updates const handleSearch = (query: string) => { setSearchQuery(query); }; return ( <main className="min-h-screen bg-background-primary"> {/* Hero Section - Main title and description */} <section className="mb-12 pt-16 text-center"> <h1 className="mb-4 text-5xl font-bold bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent"> PlayGO for Students </h1> {/* Description in Traditional Chinese: "Explore AI chatbots suitable for learning and improve learning efficiency!" */} <p className="mx-auto max-w-2xl text-lg text-text-secondary"> 探索適合學習的 AI 聊天機器人,提升學習效率! </p> </section> {/* Interactive Controls Section */} <div className="container mx-auto px-4"> {/* Search functionality */} <div className="mb-8"> <SearchBar onSearch={handleSearch} /> </div> {/* Category and subject filtering system */} <div className="mb-12"> <SubjectFilter selectedCategories={selectedCategories} setSelectedCategories={setSelectedCategories} selectedSubjects={selectedSubjects} setSelectedSubjects={setSelectedSubjects} /> </div> {/* Chatbot Display Section with loading state handling */} <Suspense fallback={<ChatBotGridSkeleton />}> <ChatBotGrid selectedCategories={selectedCategories} selectedSubjects={selectedSubjects} searchQuery={searchQuery} getPopularBots={getPopularBots} getTrendingBots={getTrendingBots} getAllBots={getAllBots} /> </Suspense> </div> </main> ); }