403Webshell
Server IP : 10.200.247.200  /  Your IP : 216.73.217.19
Web Server : Apache
System : Linux synergy-usa-sites 6.8.0-138-generic #138-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 31 22:41:49 UTC 2026 x86_64
User : jeremy ( 1001)
PHP Version : 8.4.25
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/react_apps_dev/lovable-project-08290a92/src/pages/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/react_apps_dev/lovable-project-08290a92/src/pages/Calendar.tsx
import { Calendar as CalendarIcon, Clock, AlertTriangle, CheckCircle } from "lucide-react";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import { Badge } from "@/components/ui/badge";

const Calendar = () => {
  const upcomingDeadlines = [
    {
      title: "Small Business Innovation Research Grant",
      deadline: "March 15, 2024",
      daysRemaining: 12,
      category: "Business",
      amount: "$150,000",
      status: "urgent"
    },
    {
      title: "Community Development Block Grant",
      deadline: "April 30, 2024",
      daysRemaining: 58,
      category: "Community", 
      amount: "$75,000",
      status: "warning"
    },
    {
      title: "Education Innovation Grant",
      deadline: "May 20, 2024",
      daysRemaining: 78,
      category: "Education",
      amount: "$25,000", 
      status: "normal"
    },
    {
      title: "Veteran Business Development Grant",
      deadline: "June 1, 2024",
      daysRemaining: 90,
      category: "Veterans",
      amount: "$100,000",
      status: "normal"
    }
  ];

  const getStatusIcon = (status: string) => {
    switch (status) {
      case "urgent":
        return <AlertTriangle className="h-5 w-5 text-red-500" />;
      case "warning":
        return <Clock className="h-5 w-5 text-yellow-500" />;
      case "normal":
        return <CheckCircle className="h-5 w-5 text-green-500" />;
      default:
        return <CalendarIcon className="h-5 w-5 text-muted-foreground" />;
    }
  };

  const getStatusBadge = (status: string, days: number) => {
    if (days <= 14) {
      return <Badge className="bg-red-100 text-red-800">Urgent - {days} days left</Badge>;
    } else if (days <= 30) {
      return <Badge className="bg-yellow-100 text-yellow-800">Due Soon - {days} days left</Badge>;
    } else {
      return <Badge className="bg-green-100 text-green-800">{days} days left</Badge>;
    }
  };

  return (
    <div className="max-w-6xl mx-auto">
      <div className="flex items-center gap-3 mb-6">
        <CalendarIcon className="h-8 w-8 text-orange-600" />
        <h1 className="text-3xl font-bold">Deadline Calendar</h1>
      </div>
      
      <Card className="mb-8">
        <CardHeader>
          <CardTitle>Never Miss a Deadline</CardTitle>
          <CardDescription>
            Track all your grant application deadlines in one place
          </CardDescription>
        </CardHeader>
        <CardContent>
          <div className="grid md:grid-cols-3 gap-6">
            <div className="text-center">
              <div className="flex items-center justify-center w-16 h-16 bg-red-100 rounded-full mx-auto mb-3">
                <AlertTriangle className="h-8 w-8 text-red-600" />
              </div>
              <h3 className="font-semibold mb-2">Urgent Deadlines</h3>
              <p className="text-sm text-muted-foreground">Applications due within 14 days</p>
            </div>
            <div className="text-center">
              <div className="flex items-center justify-center w-16 h-16 bg-yellow-100 rounded-full mx-auto mb-3">
                <Clock className="h-8 w-8 text-yellow-600" />
              </div>
              <h3 className="font-semibold mb-2">Due Soon</h3>
              <p className="text-sm text-muted-foreground">Applications due within 30 days</p>
            </div>
            <div className="text-center">
              <div className="flex items-center justify-center w-16 h-16 bg-green-100 rounded-full mx-auto mb-3">
                <CheckCircle className="h-8 w-8 text-green-600" />
              </div>
              <h3 className="font-semibold mb-2">Plenty of Time</h3>
              <p className="text-sm text-muted-foreground">Applications due in 30+ days</p>
            </div>
          </div>
        </CardContent>
      </Card>

      <Card className="mb-6">
        <CardHeader>
          <CardTitle className="flex items-center gap-2">
            <CalendarIcon className="h-5 w-5" />
            Upcoming Deadlines
          </CardTitle>
          <CardDescription>
            Your tracked grant application deadlines sorted by urgency
          </CardDescription>
        </CardHeader>
        <CardContent>
          <div className="space-y-4">
            {upcomingDeadlines.map((deadline, index) => (
              <div key={index} className="border rounded-lg p-4 hover:bg-accent/50 transition-colors">
                <div className="flex justify-between items-start mb-3">
                  <div className="flex items-start gap-3">
                    {getStatusIcon(deadline.status)}
                    <div className="flex-1">
                      <h3 className="font-semibold text-lg mb-1">{deadline.title}</h3>
                      <div className="flex items-center gap-4 text-sm text-muted-foreground mb-2">
                        <Badge variant="outline">{deadline.category}</Badge>
                        <span>Amount: {deadline.amount}</span>
                        <span className="flex items-center gap-1">
                          <CalendarIcon className="h-4 w-4" />
                          {deadline.deadline}
                        </span>
                      </div>
                    </div>
                  </div>
                  {getStatusBadge(deadline.status, deadline.daysRemaining)}
                </div>
                
                <div className="flex gap-2">
                  <Button size="sm">View Application</Button>
                  <Button size="sm" variant="outline">Set Reminder</Button>
                  <Button size="sm" variant="outline">Add to Organizer</Button>
                </div>
              </div>
            ))}
          </div>
        </CardContent>
      </Card>

      <div className="grid md:grid-cols-2 gap-6">
        <Card>
          <CardHeader>
            <CardTitle>Calendar View</CardTitle>
            <CardDescription>Monthly calendar with deadline highlights</CardDescription>
          </CardHeader>
          <CardContent>
            <div className="text-center py-8 text-muted-foreground">
              <CalendarIcon className="h-16 w-16 mx-auto mb-4" />
              <p>Interactive calendar view coming soon</p>
            </div>
          </CardContent>
        </Card>

        <Card>
          <CardHeader>
            <CardTitle>Reminder Settings</CardTitle>
            <CardDescription>Configure deadline notifications</CardDescription>
          </CardHeader>
          <CardContent>
            <div className="space-y-4">
              <div className="flex items-center justify-between py-2">
                <span>Email reminders</span>
                <Button size="sm" variant="outline">Configure</Button>
              </div>
              <div className="flex items-center justify-between py-2">
                <span>Push notifications</span>
                <Button size="sm" variant="outline">Enable</Button>
              </div>
              <div className="flex items-center justify-between py-2">
                <span>Weekly digest</span>
                <Button size="sm" variant="outline">Setup</Button>
              </div>
            </div>
          </CardContent>
        </Card>
      </div>
    </div>
  );
};

export default Calendar;

Youez - 2016 - github.com/yon3zu
LinuXploit