import {
  AlertCircle,
  ArrowRight,
  Book,
  CheckCircle,
  Clock,
  Download,
  ExternalLink,
  FileText,
  Globe,
  Headphones,
  HelpCircle,
  Mail,
  MessageSquare,
  Phone,
  Search,
  Send,
  Shield,
  User,
  Zap,
} from "lucide-react";
import React, { useState } from "react";
import { Footer } from "../components/Footer";
import { Navigation } from "../components/Navigation";
import { Badge } from "../components/ui/badge";
import { Button } from "../components/ui/button";
import { Card, CardContent } from "../components/ui/card";
import { Input } from "../components/ui/input";
import {
  Select,
  SelectContent,
  SelectItem,
  SelectTrigger,
  SelectValue,
} from "../components/ui/select";
import {
  Tabs,
  TabsContent,
  TabsList,
  TabsTrigger,
} from "../components/ui/tabs";
import { Textarea } from "../components/ui/textarea";

export const ClientSupport = () => {
  const [ticketForm, setTicketForm] = useState({
    subject: "",
    priority: "",
    category: "",
    description: "",
    projectId: "",
  });

  const [isSubmitting, setIsSubmitting] = useState(false);

  const supportChannels = [
    {
      icon: User,
      title: "Direct Contact",
      description:
        "Reach out to your assigned Project Manager or Account Manager",
      action: "Contact Your PM",
      highlight: true,
    },
    {
      icon: MessageSquare,
      title: "Support Ticket System",
      description: "Submit technical issues, bug reports, or service requests",
      action: "Create Ticket",
      monitored: "24/5 monitoring",
    },
    {
      icon: Mail,
      title: "Support Email",
      description: "support@wdi.com",
      action: "Send Email",
      response: "< 4 hours",
    },
    {
      icon: Phone,
      title: "Support Phone",
      description: "+1 (555) 123-HELP",
      action: "Call Now",
      availability: "Mon-Fri, 9 AM - 6 PM EST",
    },
  ];

  const severityLevels = [
    {
      level: "Critical",
      icon: AlertCircle,
      color: "text-red-400",
      bgColor: "bg-red-500/20",
      description: "System down, business-critical functionality unavailable",
      sla: "< 1 hour response",
    },
    {
      level: "High",
      icon: Zap,
      color: "text-orange-400",
      bgColor: "bg-orange-500/20",
      description: "Major functionality impaired, significant business impact",
      sla: "< 4 hours response",
    },
    {
      level: "Medium",
      icon: Clock,
      color: "text-yellow-400",
      bgColor: "bg-yellow-500/20",
      description: "Minor functionality issues, workaround available",
      sla: "< 24 hours response",
    },
    {
      level: "Low",
      icon: CheckCircle,
      color: "text-green-400",
      bgColor: "bg-green-500/20",
      description: "Feature requests, documentation, general questions",
      sla: "< 48 hours response",
    },
  ];

  const selfHelpResources = [
    {
      icon: Book,
      title: "Knowledge Base",
      description: "Self-help articles and troubleshooting guides",
      items: "200+ articles",
      action: "Browse Articles",
    },
    {
      icon: FileText,
      title: "Documentation Portal",
      description: "Project-specific documentation and API references",
      items: "Project docs",
      action: "Access Portal",
      protected: true,
    },
    {
      icon: HelpCircle,
      title: "FAQ Section",
      description: "Frequently asked questions and common solutions",
      items: "50+ FAQs",
      action: "View FAQs",
    },
    {
      icon: Download,
      title: "Downloads Center",
      description: "Software updates, patches, and resources",
      items: "Latest releases",
      action: "Download Center",
    },
  ];

  const recentTickets = [
    {
      id: "WDI-2024-001",
      subject: "API rate limiting issue on production",
      status: "In Progress",
      priority: "High",
      created: "2 hours ago",
      assignee: "Technical Team",
    },
    {
      id: "WDI-2024-002",
      subject: "User authentication module enhancement",
      status: "Resolved",
      priority: "Medium",
      created: "1 day ago",
      assignee: "Development Team",
    },
    {
      id: "WDI-2024-003",
      subject: "Database performance optimization",
      status: "Under Review",
      priority: "Medium",
      created: "3 days ago",
      assignee: "DevOps Team",
    },
  ];

  const supportStats = [
    { number: "< 1hr", label: "Average Response Time" },
    { number: "98%", label: "First Contact Resolution" },
    { number: "24/5", label: "Support Coverage" },
    { number: "99.9%", label: "Client Satisfaction" },
  ];

  const handleTicketSubmit = async (e: React.FormEvent) => {
    e.preventDefault();
    setIsSubmitting(true);

    // Simulate ticket submission
    await new Promise((resolve) => setTimeout(resolve, 2000));

    const ticketId = `WDI-2024-${Math.floor(Math.random() * 1000)
      .toString()
      .padStart(3, "0")}`;
    alert(
      `Support ticket ${ticketId} has been created successfully. You'll receive updates via email.`
    );

    // Reset form
    setTicketForm({
      subject: "",
      priority: "",
      category: "",
      description: "",
      projectId: "",
    });
    setIsSubmitting(false);
  };

  const getStatusColor = (status: string) => {
    switch (status) {
      case "Resolved":
        return "text-green-400 bg-green-500/20";
      case "In Progress":
        return "text-blue-400 bg-blue-500/20";
      case "Under Review":
        return "text-yellow-400 bg-yellow-500/20";
      default:
        return "text-gray-400 bg-gray-500/20";
    }
  };

  const getPriorityColor = (priority: string) => {
    switch (priority) {
      case "Critical":
        return "text-red-400";
      case "High":
        return "text-orange-400";
      case "Medium":
        return "text-yellow-400";
      case "Low":
        return "text-green-400";
      default:
        return "text-gray-400";
    }
  };

  return (
    <div className="dark min-h-screen bg-background">
      <Navigation />

      {/* Hero Section */}
      <section className="pt-24 pb-16 bg-background">
        <div className="container mx-auto px-6 lg:px-8">
          <div className="max-w-4xl mx-auto text-center">
            <div className="flex items-center justify-center gap-2 mb-6">
              <Headphones className="w-6 h-6 text-[#E5195E]" />
              <Badge
                variant="outline"
                className="border-[#E5195E]/20 text-[#E5195E]"
              >
                Client Support
              </Badge>
            </div>
            <h1 className="text-4xl md:text-6xl font-bold mb-6 bg-gradient-to-r from-white via-white to-white/80 bg-clip-text text-transparent">
              Client Support: Dedicated Assistance for Our Valued Partners
            </h1>
            <p className="text-lg text-muted-foreground mb-8 max-w-3xl mx-auto">
              At WDI, our commitment to your success extends far beyond project
              delivery. Our dedicated Client Support team is here to provide
              prompt assistance, answer your questions, and ensure the ongoing
              performance and smooth operation of your solutions.
            </p>
          </div>
        </div>
      </section>

      {/* Support Stats */}
      <section className="py-16 bg-card/50">
        <div className="container mx-auto px-6 lg:px-8">
          <div className="grid grid-cols-2 md:grid-cols-4 gap-8 text-center">
            {supportStats.map((stat, index) => (
              <div key={index}>
                <div className="text-4xl font-bold bg-gradient-to-r from-[#E5195E] to-[#FF6B9D] bg-clip-text text-transparent mb-2">
                  {stat.number}
                </div>
                <div className="text-muted-foreground">{stat.label}</div>
              </div>
            ))}
          </div>
        </div>
      </section>

      {/* Main Content */}
      <section className="py-16 bg-background">
        <div className="container mx-auto px-6 lg:px-8">
          <Tabs defaultValue="support-channels" className="max-w-6xl mx-auto">
            <TabsList className="grid w-full grid-cols-4 bg-card/50 border border-white/10">
              <TabsTrigger
                value="support-channels"
                className="data-[state=active]:bg-[#E5195E] data-[state=active]:text-white"
              >
                Support Channels
              </TabsTrigger>
              <TabsTrigger
                value="create-ticket"
                className="data-[state=active]:bg-[#E5195E] data-[state=active]:text-white"
              >
                Create Ticket
              </TabsTrigger>
              <TabsTrigger
                value="my-tickets"
                className="data-[state=active]:bg-[#E5195E] data-[state=active]:text-white"
              >
                My Tickets
              </TabsTrigger>
              <TabsTrigger
                value="resources"
                className="data-[state=active]:bg-[#E5195E] data-[state=active]:text-white"
              >
                Resources
              </TabsTrigger>
            </TabsList>

            {/* Support Channels Tab */}
            <TabsContent value="support-channels" className="mt-8">
              <div className="space-y-8">
                <div className="text-center">
                  <h2 className="text-2xl font-bold text-white mb-4">
                    How to Get Support
                  </h2>
                  <p className="text-muted-foreground">
                    Multiple ways to reach our support team based on your needs
                  </p>
                </div>

                <div className="grid md:grid-cols-2 gap-6">
                  {supportChannels.map((channel, index) => {
                    const Icon = channel.icon;
                    return (
                      <Card
                        key={index}
                        className={`border-white/10 ${
                          channel.highlight
                            ? "bg-[#E5195E]/10 border-[#E5195E]/30"
                            : "bg-card/50"
                        } hover:border-[#E5195E]/30 transition-all duration-300`}
                      >
                        <CardContent className="p-6">
                          <div className="flex items-start gap-4">
                            <div
                              className={`w-12 h-12 rounded-xl ${
                                channel.highlight
                                  ? "bg-[#E5195E]"
                                  : "bg-[#E5195E]/20"
                              } flex items-center justify-center`}
                            >
                              <Icon
                                className={`w-6 h-6 ${
                                  channel.highlight
                                    ? "text-white"
                                    : "text-[#E5195E]"
                                }`}
                              />
                            </div>
                            <div className="flex-1">
                              <h3 className="text-lg font-semibold text-white mb-2">
                                {channel.title}
                              </h3>
                              <p className="text-muted-foreground mb-3">
                                {channel.description}
                              </p>

                              {channel.monitored && (
                                <div className="flex items-center gap-2 mb-3">
                                  <Clock className="w-4 h-4 text-green-400" />
                                  <span className="text-sm text-green-400">
                                    {channel.monitored}
                                  </span>
                                </div>
                              )}

                              {channel.response && (
                                <div className="flex items-center gap-2 mb-3">
                                  <CheckCircle className="w-4 h-4 text-blue-400" />
                                  <span className="text-sm text-blue-400">
                                    Response time: {channel.response}
                                  </span>
                                </div>
                              )}

                              {channel.availability && (
                                <div className="flex items-center gap-2 mb-3">
                                  <Globe className="w-4 h-4 text-yellow-400" />
                                  <span className="text-sm text-yellow-400">
                                    {channel.availability}
                                  </span>
                                </div>
                              )}

                              <Button
                                className={`${
                                  channel.highlight
                                    ? "bg-[#E5195E] hover:bg-[#E5195E]/90 text-white"
                                    : "bg-white/10 hover:bg-white/20 text-white"
                                }`}
                              >
                                {channel.action}
                                <ArrowRight className="ml-2 w-4 h-4" />
                              </Button>
                            </div>
                          </div>
                        </CardContent>
                      </Card>
                    );
                  })}
                </div>

                {/* Severity Levels */}
                <div className="mt-12">
                  <h3 className="text-xl font-semibold text-white mb-6 text-center">
                    Support Priority Levels
                  </h3>
                  <div className="grid md:grid-cols-2 lg:grid-cols-4 gap-4">
                    {severityLevels.map((level, index) => {
                      const Icon = level.icon;
                      return (
                        <Card
                          key={index}
                          className="bg-card/50 border-white/10"
                        >
                          <CardContent className="p-4 text-center">
                            <div
                              className={`w-12 h-12 rounded-xl ${level.bgColor} flex items-center justify-center mx-auto mb-3`}
                            >
                              <Icon className={`w-6 h-6 ${level.color}`} />
                            </div>
                            <h4 className={`font-semibold mb-2 ${level.color}`}>
                              {level.level}
                            </h4>
                            <p className="text-muted-foreground text-sm mb-2">
                              {level.description}
                            </p>
                            <div className="text-xs text-white/70">
                              {level.sla}
                            </div>
                          </CardContent>
                        </Card>
                      );
                    })}
                  </div>
                </div>
              </div>
            </TabsContent>

            {/* Create Ticket Tab */}
            <TabsContent value="create-ticket" className="mt-8">
              <Card className="bg-card/50 border-white/10">
                <CardContent className="p-8">
                  <h2 className="text-2xl font-bold text-white mb-6">
                    Submit a Support Ticket
                  </h2>

                  <form onSubmit={handleTicketSubmit} className="space-y-6">
                    <div className="grid md:grid-cols-2 gap-6">
                      <div>
                        <label className="block text-sm font-medium text-white mb-2">
                          Subject *
                        </label>
                        <Input
                          required
                          value={ticketForm.subject}
                          onChange={(e) =>
                            setTicketForm((prev) => ({
                              ...prev,
                              subject: e.target.value,
                            }))
                          }
                          placeholder="Brief description of the issue"
                          className="bg-background/50 border-white/10"
                        />
                      </div>

                      <div>
                        <label className="block text-sm font-medium text-white mb-2">
                          Priority *
                        </label>
                        <Select
                          value={ticketForm.priority}
                          onValueChange={(value) =>
                            setTicketForm((prev) => ({
                              ...prev,
                              priority: value,
                            }))
                          }
                        >
                          <SelectTrigger className="bg-background/50 border-white/10">
                            <SelectValue placeholder="Select priority level" />
                          </SelectTrigger>
                          <SelectContent>
                            <SelectItem value="critical">
                              Critical - System Down
                            </SelectItem>
                            <SelectItem value="high">
                              High - Major Functionality Impaired
                            </SelectItem>
                            <SelectItem value="medium">
                              Medium - Minor Issues
                            </SelectItem>
                            <SelectItem value="low">
                              Low - Questions/Requests
                            </SelectItem>
                          </SelectContent>
                        </Select>
                      </div>

                      <div>
                        <label className="block text-sm font-medium text-white mb-2">
                          Category *
                        </label>
                        <Select
                          value={ticketForm.category}
                          onValueChange={(value) =>
                            setTicketForm((prev) => ({
                              ...prev,
                              category: value,
                            }))
                          }
                        >
                          <SelectTrigger className="bg-background/50 border-white/10">
                            <SelectValue placeholder="Select category" />
                          </SelectTrigger>
                          <SelectContent>
                            <SelectItem value="bug">Bug Report</SelectItem>
                            <SelectItem value="feature">
                              Feature Request
                            </SelectItem>
                            <SelectItem value="performance">
                              Performance Issue
                            </SelectItem>
                            <SelectItem value="security">
                              Security Concern
                            </SelectItem>
                            <SelectItem value="integration">
                              Integration Support
                            </SelectItem>
                            <SelectItem value="maintenance">
                              Maintenance Request
                            </SelectItem>
                            <SelectItem value="other">Other</SelectItem>
                          </SelectContent>
                        </Select>
                      </div>

                      <div>
                        <label className="block text-sm font-medium text-white mb-2">
                          Project ID
                        </label>
                        <Input
                          value={ticketForm.projectId}
                          onChange={(e) =>
                            setTicketForm((prev) => ({
                              ...prev,
                              projectId: e.target.value,
                            }))
                          }
                          placeholder="e.g., WDI-PROJ-001"
                          className="bg-background/50 border-white/10"
                        />
                      </div>
                    </div>

                    <div>
                      <label className="block text-sm font-medium text-white mb-2">
                        Description *
                      </label>
                      <Textarea
                        required
                        value={ticketForm.description}
                        onChange={(e) =>
                          setTicketForm((prev) => ({
                            ...prev,
                            description: e.target.value,
                          }))
                        }
                        placeholder="Please provide detailed information about the issue, including steps to reproduce, expected vs actual behavior, and any error messages..."
                        rows={6}
                        className="bg-background/50 border-white/10"
                      />
                    </div>

                    <Button
                      type="submit"
                      disabled={isSubmitting}
                      className="bg-[#E5195E] hover:bg-[#E5195E]/90 text-white"
                    >
                      {isSubmitting ? (
                        "Creating Ticket..."
                      ) : (
                        <>
                          Submit Support Ticket
                          <Send className="ml-2 w-4 h-4" />
                        </>
                      )}
                    </Button>
                  </form>
                </CardContent>
              </Card>
            </TabsContent>

            {/* My Tickets Tab */}
            <TabsContent value="my-tickets" className="mt-8">
              <Card className="bg-card/50 border-white/10">
                <CardContent className="p-8">
                  <div className="flex items-center justify-between mb-6">
                    <h2 className="text-2xl font-bold text-white">
                      My Support Tickets
                    </h2>
                    <Button className="bg-[#E5195E] hover:bg-[#E5195E]/90 text-white">
                      View All Tickets
                      <ExternalLink className="ml-2 w-4 h-4" />
                    </Button>
                  </div>

                  <div className="space-y-4">
                    {recentTickets.map((ticket, index) => (
                      <Card
                        key={index}
                        className="bg-background/30 border-white/10 hover:border-[#E5195E]/30 transition-all duration-300"
                      >
                        <CardContent className="p-6">
                          <div className="flex items-start justify-between">
                            <div className="flex-1">
                              <div className="flex items-center gap-3 mb-2">
                                <h3 className="text-white font-medium">
                                  {ticket.subject}
                                </h3>
                                <Badge
                                  className={`text-xs ${getStatusColor(
                                    ticket.status
                                  )}`}
                                >
                                  {ticket.status}
                                </Badge>
                              </div>
                              <div className="flex items-center gap-4 text-sm text-muted-foreground">
                                <span>ID: {ticket.id}</span>
                                <span
                                  className={getPriorityColor(ticket.priority)}
                                >
                                  Priority: {ticket.priority}
                                </span>
                                <span>Created: {ticket.created}</span>
                                <span>Assigned to: {ticket.assignee}</span>
                              </div>
                            </div>
                            <Button
                              variant="outline"
                              size="sm"
                              className="border-white/20 text-white hover:bg-white/10"
                            >
                              View Details
                            </Button>
                          </div>
                        </CardContent>
                      </Card>
                    ))}
                  </div>
                </CardContent>
              </Card>
            </TabsContent>

            {/* Resources Tab */}
            <TabsContent value="resources" className="mt-8">
              <div className="space-y-8">
                <div className="text-center">
                  <h2 className="text-2xl font-bold text-white mb-4">
                    Self-Help Resources
                  </h2>
                  <p className="text-muted-foreground">
                    Find answers and resources to help resolve common issues
                  </p>
                </div>

                <div className="grid md:grid-cols-2 gap-6">
                  {selfHelpResources.map((resource, index) => {
                    const Icon = resource.icon;
                    return (
                      <Card
                        key={index}
                        className="bg-card/50 border-white/10 hover:border-[#E5195E]/30 transition-all duration-300"
                      >
                        <CardContent className="p-6">
                          <div className="flex items-start gap-4">
                            <div className="w-12 h-12 rounded-xl bg-[#E5195E]/20 flex items-center justify-center">
                              <Icon className="w-6 h-6 text-[#E5195E]" />
                            </div>
                            <div className="flex-1">
                              <div className="flex items-center gap-2 mb-2">
                                <h3 className="text-lg font-semibold text-white">
                                  {resource.title}
                                </h3>
                                {resource.protected && (
                                  <Shield
                                    className="w-4 h-4 text-yellow-400"
                                    aria-label="Protected Content"
                                  />
                                )}
                              </div>
                              <p className="text-muted-foreground mb-3">
                                {resource.description}
                              </p>
                              <div className="flex items-center justify-between">
                                <span className="text-sm text-[#E5195E]">
                                  {resource.items}
                                </span>
                                <Button
                                  variant="outline"
                                  size="sm"
                                  className="border-white/20 text-white hover:bg-white/10"
                                >
                                  {resource.action}
                                  <ArrowRight className="ml-2 w-3 h-3" />
                                </Button>
                              </div>
                            </div>
                          </div>
                        </CardContent>
                      </Card>
                    );
                  })}
                </div>

                {/* Quick Search */}
                <Card className="bg-card/50 border-white/10">
                  <CardContent className="p-6">
                    <h3 className="text-lg font-semibold text-white mb-4">
                      Quick Search
                    </h3>
                    <div className="relative">
                      <Search className="absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground w-5 h-5" />
                      <Input
                        placeholder="Search documentation, FAQs, and knowledge base..."
                        className="pl-12 bg-background/50 border-white/10"
                      />
                    </div>
                  </CardContent>
                </Card>
              </div>
            </TabsContent>
          </Tabs>
        </div>
      </section>

      {/* CTA Section */}
      <section className="py-16 bg-card/50">
        <div className="container mx-auto px-6 lg:px-8">
          <div className="max-w-4xl mx-auto text-center">
            <h2 className="text-3xl font-bold text-white mb-6">
              Need Immediate Assistance?
            </h2>
            <p className="text-lg text-muted-foreground mb-8">
              Our support team is standing by to help you resolve any issues and
              ensure your systems run smoothly.
            </p>
            <div className="flex flex-col sm:flex-row gap-4 justify-center">
              <Button
                size="lg"
                className="bg-[#E5195E] hover:bg-[#E5195E]/90 text-white"
              >
                Access Support Portal
                <ArrowRight className="ml-2 w-4 h-4" />
              </Button>
              <Button
                size="lg"
                variant="outline"
                className="border-white/20 text-white hover:bg-white/10"
              >
                Contact Your Project Manager
              </Button>
            </div>
          </div>
        </div>
      </section>

      <Footer />
    </div>
  );
};
