design: update login page grid, remove terms and conditions, generalize description, and fix typescript errors
This commit is contained in:
@@ -1649,15 +1649,16 @@ export const EventProposalForm: React.FC<EventProposalFormProps> = ({ initialDat
|
||||
(async () => {
|
||||
setIsSubmitting(true);
|
||||
const groupRequestId = crypto.randomUUID();
|
||||
const { earliestStart, latestEnd } = calculateEventDateTimes();
|
||||
const earliestStart = new Date(formData.startDate);
|
||||
const latestEnd = new Date(formData.endDate);
|
||||
const payload = {
|
||||
...formData,
|
||||
startDate: earliestStart ? earliestStart.toISOString() : formData.startDate,
|
||||
endDate: latestEnd ? latestEnd.toISOString() : formData.endDate,
|
||||
startDate: earliestStart.toISOString(),
|
||||
endDate: latestEnd.toISOString(),
|
||||
deptLimits,
|
||||
deptSectionLimits,
|
||||
maxParticipants: formData.maxParticipants === '' ? null : Number(formData.maxParticipants),
|
||||
durationDays: Number(formData.durationDays),
|
||||
durationDays: 1,
|
||||
refreshment_expense: Number(formData.refreshment_expense) || 0,
|
||||
transportation_expense: Number(formData.transportation_expense) || 0,
|
||||
session_coverage_fee: Number(formData.session_coverage_fee) || 0,
|
||||
|
||||
@@ -339,14 +339,8 @@ const EventCard: React.FC<EventCardProps> = ({ event, isBooked, onToggle, onTrac
|
||||
<button disabled className="w-full py-5 rounded-[2rem] bg-rose-50 border border-rose-100 text-rose-400 font-black uppercase tracking-[0.3em] text-xs cursor-not-allowed">
|
||||
{admissionStatus === 'EVENT_ENDED'
|
||||
? 'EVENT ENDED'
|
||||
: admissionStatus === 'DEPT_FULL'
|
||||
? 'THE SEATS ARE FULL'
|
||||
: admissionStatus === 'DEADLINE_PASSED'
|
||||
? 'Deadline Over'
|
||||
: admissionStatus === 'SECTION_FULL'
|
||||
? 'SEC SEATS FULL'
|
||||
: admissionStatus === 'SECTION_NOT_ALLOWED'
|
||||
? 'SEC RESTRICTED'
|
||||
: admissionStatus === 'DEPT_RESTRICTED'
|
||||
? 'DEPT RESTRICTED'
|
||||
: admissionStatus === 'YEAR_RESTRICTED'
|
||||
|
||||
@@ -260,29 +260,60 @@ export const LoginPage: React.FC = () => {
|
||||
</div>
|
||||
|
||||
{/* Top: Brand Header */}
|
||||
<div className="flex items-center z-10">
|
||||
<img src={ritLogo} alt="RIT Logo" className="h-20 w-auto object-contain bg-white/95 p-3 rounded-2xl shadow-sm" />
|
||||
</div>
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: -20 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, ease: "easeOut" }}
|
||||
className="flex items-center z-10"
|
||||
>
|
||||
<img src={ritLogo} alt="RIT Logo" className="h-20 w-auto object-contain bg-white/95 p-3 rounded-2xl shadow-sm hover:scale-105 transition-transform duration-300 cursor-pointer" />
|
||||
</motion.div>
|
||||
|
||||
{/* Middle: Feature list / value proposition */}
|
||||
<div className="space-y-8 z-10 my-auto">
|
||||
<div className="space-y-4">
|
||||
<motion.div
|
||||
initial="hidden"
|
||||
animate="visible"
|
||||
variants={{
|
||||
hidden: { opacity: 0 },
|
||||
visible: {
|
||||
opacity: 1,
|
||||
transition: {
|
||||
staggerChildren: 0.15,
|
||||
delayChildren: 0.2
|
||||
}
|
||||
}
|
||||
}}
|
||||
className="space-y-8 z-10 my-auto"
|
||||
>
|
||||
<motion.div
|
||||
variants={{
|
||||
hidden: { opacity: 0, x: -30 },
|
||||
visible: { opacity: 1, x: 0, transition: { type: "spring", stiffness: 100 } }
|
||||
}}
|
||||
className="space-y-4"
|
||||
>
|
||||
<span className="px-3 py-1 bg-white/10 rounded-full text-[9px] font-black uppercase tracking-widest text-slate-200">Centralized Portal</span>
|
||||
<h1 className="text-5xl font-black tracking-tight leading-tight uppercase">
|
||||
RIT EVENT HUB
|
||||
</h1>
|
||||
<p className="text-sm font-medium text-slate-200/80 max-w-lg leading-relaxed">
|
||||
Schedule, approve, and track academic, placement, and cultural events across Rajalakshmi Institute of Technology with an automated conflict engine.
|
||||
Your central hub to discover, register, and track all institutional activities, workshops, seminars, and campus events at Rajalakshmi Institute of Technology.
|
||||
</p>
|
||||
</div>
|
||||
</motion.div>
|
||||
|
||||
<div className="space-y-4 pt-6 border-t border-white/10 max-w-md">
|
||||
<motion.div
|
||||
variants={{
|
||||
hidden: { opacity: 0, y: 20 },
|
||||
visible: { opacity: 1, y: 0, transition: { duration: 0.5 } }
|
||||
}}
|
||||
className="space-y-4 pt-6 border-t border-white/10 max-w-md"
|
||||
>
|
||||
{[
|
||||
{ title: "Smart Scheduling", desc: "Conflict audit for auditoriums, seminar halls, and computer centers in real-time." },
|
||||
{ title: "Multi-tier Approvals", desc: "Digital verification chain routing proposals through departments, HoDs, and the Principal." },
|
||||
{ title: "Student Passports", desc: "Secure digital passes, attendance tracking, and automated OD verification." }
|
||||
{ title: "Campus Calendar", desc: "Discover upcoming workshops, technical symposiums, and cultural events easily." },
|
||||
{ title: "Student Passports", desc: "Access your registrations, entry passes, and event certificates in one place." },
|
||||
{ title: "Stay Connected", desc: "Get real-time announcements on departmental activities and club schedules." }
|
||||
].map((f, i) => (
|
||||
<div key={i} className="flex gap-4 items-start">
|
||||
<div key={i} className="flex gap-4 items-start hover:translate-x-1 transition-transform duration-200">
|
||||
<div className="w-6 h-6 rounded-lg bg-white/10 flex items-center justify-center text-xs font-black text-white shrink-0 mt-0.5">✓</div>
|
||||
<div>
|
||||
<h4 className="text-xs font-black uppercase tracking-wider text-white">{f.title}</h4>
|
||||
@@ -290,18 +321,25 @@ export const LoginPage: React.FC = () => {
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</motion.div>
|
||||
</motion.div>
|
||||
|
||||
{/* Bottom: Institutional footer */}
|
||||
<div className="z-10 flex items-center justify-between text-[10px] font-bold text-slate-400 uppercase tracking-widest">
|
||||
{/* Bottom: Institutional footer (Terms & Conditions removed) */}
|
||||
<motion.div
|
||||
initial={{ opacity: 0 }}
|
||||
animate={{ opacity: 1 }}
|
||||
transition={{ delay: 0.8, duration: 0.5 }}
|
||||
className="z-10 flex items-center text-[10px] font-bold text-slate-400 uppercase tracking-widest"
|
||||
>
|
||||
<span>RIT Event Hub © {new Date().getFullYear()}</span>
|
||||
<span>Terms & Conditions</span>
|
||||
</div>
|
||||
</motion.div>
|
||||
</div>
|
||||
|
||||
{/* Right Column: Form (100% on mobile, 45% on desktop) */}
|
||||
<div className="w-full lg:w-[45%] flex items-center justify-center p-8 md:p-16 bg-white relative">
|
||||
{/* Light overlay grid pattern */}
|
||||
<div className="absolute inset-0 pointer-events-none opacity-[0.04]" style={{ backgroundImage: 'linear-gradient(to right, #004a99 1px, transparent 1px), linear-gradient(to bottom, #004a99 1px, transparent 1px)', backgroundSize: '48px 48px' }} />
|
||||
|
||||
{/* Decorative radial accents on the white side to retain look */}
|
||||
<div className="absolute top-[10%] right-[10%] w-[300px] h-[300px] bg-brand-glow rounded-full blur-[100px] opacity-30 pointer-events-none" />
|
||||
<div className="absolute bottom-[10%] left-[10%] w-[300px] h-[300px] bg-indigo-50 rounded-full blur-[100px] opacity-30 pointer-events-none" />
|
||||
|
||||
Reference in New Issue
Block a user