import { ImageResponse } from 'next/og'; import { NextRequest } from 'next/server'; import { join } from 'path'; import { readFileSync } from 'fs'; export async function GET(req: NextRequest) { try { const { searchParams } = new URL(req.url); // Read metrics const score = searchParams.get('score') || '0 / 0'; const accuracy = searchParams.get('accuracy') || '0%'; const qs = searchParams.get('qs') || '0'; const rank = searchParams.get('rank') || '#--'; // Read user info const name = searchParams.get('name') || 'Student'; const target = searchParams.get('target') || 'JEE'; const plan = searchParams.get('plan') || 'Free'; // Read date (if passed, otherwise use current date/time) const exportDate = searchParams.get('date') || new Intl.DateTimeFormat('en-IN', { dateStyle: 'medium', timeStyle: 'short', timeZone: 'Asia/Kolkata', }).format(new Date()); // Read theme const theme = searchParams.get('theme') || 'dark'; const isDark = theme === 'dark'; // Theme Variables const bgColor = isDark ? 'linear-gradient(145deg, #050505 0%, #111111 50%, #0a0a0a 100%)' : 'linear-gradient(145deg, #f8fafc 0%, #ffffff 50%, #f1f5f9 100%)'; const textColor = isDark ? '#ffffff' : '#0f172a'; const gridColor = isDark ? 'rgba(255,255,255,0.05)' : 'rgba(0,0,0,0.05)'; const cardBg = isDark ? 'linear-gradient(145deg, rgba(255,255,255,0.05) 0%, rgba(255,255,255,0.01) 100%)' : 'linear-gradient(145deg, #ffffff 0%, #f8fafc 100%)'; const cardBorder = isDark ? '1px solid rgba(255,255,255,0.1)' : '1px solid rgba(0,0,0,0.05)'; const textSec = isDark ? 'rgba(255,255,255,0.5)' : 'rgba(15,23,42,0.5)'; const textTert = isDark ? 'rgba(255,255,255,0.7)' : 'rgba(15,23,42,0.7)'; const dividerColor = isDark ? 'rgba(255,255,255,0.1)' : 'rgba(0,0,0,0.1)'; const logoName = isDark ? 'Rectangular_dark_background.png' : 'Rectangular_light_background.png'; // Load logo from disk and convert to base64 const logoPath = join(process.cwd(), 'public', 'PragatiVeer_Logo', 'PNG_Logos', logoName); let logoUrl = ''; try { const logoData = readFileSync(logoPath); logoUrl = `data:image/png;base64,${logoData.toString('base64')}`; } catch (e) { console.error('Failed to load logo', e); } return new ImageResponse( (