"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>
  );
}