diff --git a/image.png b/image.png new file mode 100644 index 0000000..52cc677 Binary files /dev/null and b/image.png differ diff --git a/public/video/RIT Video.webm b/public/video/RIT Video.webm deleted file mode 100644 index 7a05640..0000000 Binary files a/public/video/RIT Video.webm and /dev/null differ diff --git a/src/pages/AIAssistant/AIAssistant.tsx b/src/pages/AIAssistant/AIAssistant.tsx index 5a4ca81..9cedd55 100644 --- a/src/pages/AIAssistant/AIAssistant.tsx +++ b/src/pages/AIAssistant/AIAssistant.tsx @@ -1,6 +1,6 @@ import { useState, useRef, useEffect } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; -import { Bot, Send, Sparkles, RefreshCw, Mic, X, ChevronRight } from 'lucide-react'; +import { Bot, Send, Sparkles, RefreshCw, X, ChevronRight, MessageSquare, ShieldCheck, Zap } from 'lucide-react'; import { AI_SUGGESTED_PROMPTS } from '@/constants'; import type { ChatMessage } from '@/types'; import { getChatbotUrl } from '@/lib/utils'; @@ -9,7 +9,7 @@ const INITIAL_MESSAGES: ChatMessage[] = [ { id: '1', role: 'assistant', - content: "👋 Hi there! I'm your **RIT Chatbot**. I have comprehensive knowledge about Rajalakshmi Institute of Technology — from admission procedures to campus facilities.\n\nHow can I help you today?", + content: "👋 Hi there! I'm your **RIT Assistant**. I have comprehensive knowledge about Rajalakshmi Institute of Technology — from admissions to campus facilities, bus routes, and academic details.\n\nHow can I help you today?", timestamp: new Date().toISOString(), }, ]; @@ -42,7 +42,8 @@ export default function AIAssistant() { }; setMessages((prev) => [...prev, userMsg]); setInput(''); - setIsTyping(true); // Call the Go chatbot microservice + setIsTyping(true); + let responseText = ''; try { const res = await fetch(getChatbotUrl('/api/chat'), { @@ -73,7 +74,7 @@ export default function AIAssistant() { } else if (lower.includes('library')) { responseText = responses.library; } else { - responseText = `Thank you for your question about **"${text}"**!\n\nI couldn't reach the chatbot API server. Please make sure the Go service is running on ${getChatbotUrl()}.`; + responseText = `Thank you for your question about **"${text}"**!\n\nI couldn't reach the chatbot API server. Please make sure the Go service is running.`; } } @@ -100,103 +101,103 @@ export default function AIAssistant() { }; return ( -
+
{/* Header */} -
+
-
- +
+
-

RIT Chatbot

-
- - Campus Knowledge Enabled +

RIT Assistant

+
+ + Campus Knowledge Engine Online
-
- {/* Features strip */} + {/* Sleek Badge Strip */} {[ - { icon: Sparkles, label: 'Gemini AI' }, - { icon: Bot, label: 'RAG Enabled' }, - { icon: ChevronRight, label: 'Campus Knowledge' }, + { icon: Zap, label: 'Instant Responses' }, + { icon: ShieldCheck, label: 'Verified Campus Info' }, + { icon: MessageSquare, label: '24/7 Assistance' }, ].map((item, i) => ( -
+
{item.label}
))} - {/* Messages */} + {/* Chat Container */}
{messages.map((msg) => ( {msg.role === 'assistant' && ( -
+
)}
))} - {/* Typing */} + {/* Typing Indicator */} {isTyping && ( -
+
-
+
{[0, 1, 2].map((i) => ( ))}
@@ -240,10 +241,10 @@ export default function AIAssistant() { {AI_SUGGESTED_PROMPTS.slice(0, 4).map((prompt, i) => ( sendMessage(prompt)} - className="px-3.5 py-2 rounded-xl border border-[#E5E7EB] text-xs text-[#475569] bg-white transition-all hover:border-[#F97316] hover:text-[#F97316]" + className="px-3.5 py-2 rounded-xl border border-[#E5E7EB] text-xs text-[#475569] bg-white transition-all hover:text-[#F97316] shadow-2xs font-medium" style={{ fontFamily: 'Inter, sans-serif' }} > {prompt} @@ -251,16 +252,16 @@ export default function AIAssistant() { ))}
- {/* Input */} -
+ {/* Input Field */} +
setInput(e.target.value)} onKeyDown={handleKeyDown} - placeholder="Ask anything about RIT..." - className="flex-1 text-sm text-[#1E293B] placeholder-[#94A3B8] focus:outline-none bg-transparent" + placeholder="Ask anything about RIT campus, routes, hostel, or exams..." + className="flex-1 text-sm text-[#1E293B] placeholder-[#94A3B8] focus:outline-none bg-transparent pl-2" style={{ fontFamily: 'Inter, sans-serif' }} /> {input && ( @@ -274,22 +275,20 @@ export default function AIAssistant() { )} - sendMessage(input)} disabled={!input.trim()} - className="w-10 h-10 rounded-xl flex items-center justify-center text-white transition-all disabled:opacity-50" + className="w-10 h-10 rounded-xl flex items-center justify-center text-white transition-all disabled:opacity-40 shadow-xs cursor-pointer" style={{ background: 'linear-gradient(135deg, #F97316, #FB923C)' }} >
-

- ⚠️ Chatbot responses may not always be accurate. Please cross-reference critical academic or administrative details with official sources. + +

+ RIT Assistant provides official campus guidance. For administrative requests, visit the department block.

diff --git a/src/pages/Home/Home.tsx b/src/pages/Home/Home.tsx index 806146b..c4a76fb 100644 --- a/src/pages/Home/Home.tsx +++ b/src/pages/Home/Home.tsx @@ -1,12 +1,11 @@ import { motion, useScroll, useTransform } from 'framer-motion'; import { Link } from 'react-router-dom'; import { - ArrowRight, Sparkles, BookOpen, Bot, GraduationCap, - CheckCircle, Zap, Shield, Brain, Trophy, Award, Cpu, Users + ArrowRight, BookOpen, Bot, GraduationCap, + CheckCircle, Zap, Shield, Trophy, Award, Cpu, Users, MapPin, Sparkles } from 'lucide-react'; import SectionTitle from '@/components/SectionTitle/SectionTitle'; import FeatureCard from '@/components/FeatureCard/FeatureCard'; -import FloatingCard from '@/components/FloatingCard/FloatingCard'; import { StaggerContainer, StaggerItem } from '@/components/AnimatedContainer/AnimatedContainer'; import AnimatedContainer from '@/components/AnimatedContainer/AnimatedContainer'; import { FEATURES, CAMPUS_LOCATIONS } from '@/constants'; @@ -15,59 +14,54 @@ import * as LucideIcons from 'lucide-react'; export default function Home() { const { scrollY } = useScroll(); const heroOpacity = useTransform(scrollY, [0, 450], [1, 0]); - const heroY = useTransform(scrollY, [0, 450], [0, -80]); + const heroY = useTransform(scrollY, [0, 450], [0, -60]); return ( -
- {/* Sticky Background Video */} -
- - {/* Dark Overlay (40-50%) */} +
+ {/* ─── Ultra-Sleek Mesh Background Effect (Lightweight - Zero Video Load) ─── */} +
+
+
{/* ─── Hero Section ─────────────────────────────────────────────────────── */} -
- {/* Center Content */} +
+ {/* Badge */} - - OUR LEGACY & FUTURE - + + OFFICIAL STUDENT PORTAL + {/* Heading */} Welcome to @@ -76,8 +70,8 @@ export default function Home() { initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.7, delay: 0.2 }} - className="text-5xl md:text-7xl font-extrabold leading-tight mb-6 bg-gradient-to-r from-[#F97316] via-[#FB923C] to-[#F97316] bg-clip-text text-transparent" - style={{ fontFamily: 'Playfair Display, serif', color: 'transparent', WebkitTextFillColor: 'transparent', filter: 'drop-shadow(0 4px 12px rgba(249, 115, 22, 0.45))' }} + className="text-5xl md:text-7xl font-black leading-tight mb-6 bg-gradient-to-r from-[#F97316] via-[#EA580C] to-[#F97316] bg-clip-text text-transparent" + style={{ fontFamily: 'Playfair Display, serif', filter: 'drop-shadow(0 2px 8px rgba(249, 115, 22, 0.2))' }} > RIT Freshers Hub @@ -86,24 +80,24 @@ export default function Home() { initial={{ opacity: 0, y: 15 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.7, delay: 0.3 }} - className="max-w-2xl text-slate-200 text-sm md:text-base leading-relaxed mb-8" + className="max-w-2xl text-[#475569] text-base md:text-lg leading-relaxed mb-8" style={{ fontFamily: 'Inter, sans-serif' }} > - The RIT Freshers Hub is your centralized gateway to campus life, academic resources, AI assistance, clubs, events, bus routes, notes, and student services. + Your centralized gateway to campus life at Rajalakshmi Institute of Technology — academic notes, AI assistant, bus routes, faculty directory, and campus navigation. - {/* Buttons */} + {/* Call to Actions */} Explore Hub - + - - Ask Chatbot + + Ask Assistant - {/* Badges */} + {/* Trust Badges */} {[ { icon: CheckCircle, text: 'Official Portal' }, @@ -149,53 +143,35 @@ export default function Home() {
- {/* Floating Glassmorphic Stats Section */} -
+ {/* Sleek Stats Card Section */} +
- -
{[ { value: '20+', label: 'SPORTS', icon: Trophy }, { value: '100+', label: 'FACULTY', icon: GraduationCap }, { value: '18', label: 'CLUBS', icon: Award }, - { value: '24/7', label: 'CHATBOT', icon: Cpu }, + { value: '24/7', label: 'ASSISTANT', icon: Cpu }, { value: '5000+', label: 'STUDENTS', icon: Users }, ].map((stat, i) => ( -
- {/* Icon */} -
+
+
- {/* Value */}
{stat.value}
- {/* Label */}
{stat.label} @@ -208,7 +184,7 @@ export default function Home() {
{/* ─── Features Section ─────────────────────────────────────────────────── */} -
+
- + {FEATURES.map((feature) => ( @@ -227,61 +203,47 @@ export default function Home() {
- - {/* ─── Campus Quick Nav ─────────────────────────────────────────────────── */} -
+
-
- {/* Map placeholder */} +
+ {/* Map Teaser Header */}
- {/* Location pins */} - {[ - { label: 'CSE Block', x: '25%', y: '30%' }, - { label: 'Library', x: '55%', y: '45%' }, - { label: 'Canteen', x: '70%', y: '65%' }, - { label: 'Hostel', x: '20%', y: '65%' }, - ].map((pin, i) => ( - -
-
-
- - {pin.label} - - - ))} -
-
Interactive Campus Map
+ +
+
+ +
+

+ Interactive Campus Map +

+

+ Locate all major campus blocks, labs, library & amenities. +

Open Full Map @@ -289,20 +251,20 @@ export default function Home() {
- {/* Quick nav buttons */} -
+ {/* Quick Nav Grid */} +
{CAMPUS_LOCATIONS.map((loc) => { const Icon = (LucideIcons as unknown as Record>)[loc.icon]; return ( -
+
{Icon && }
- + {loc.name} @@ -314,44 +276,6 @@ export default function Home() {
- - {/* ─── Community Teaser ─────────────────────────────────────────────────── */} -
-
- {/* Q&A teaser */} - -
-
-
- -
-
-

Freshers Q&A

-

Get answers from seniors

-
-
-
- {['How is hostel life at RIT?', 'Best clubs to join as a fresher?', 'Tips for first semester survival'].map((q, i) => ( -
- Q - {q} -
- ))} -
- - - Join the Discussion - - -
-
-
-
); }