- Implemented "click-outside-to-close" functionality for both the Challenge Modal and User Dropdown - Added protocol-specific action buttons for challenges: "Open in new tab" for HTTP and "Copy to clipboard" for NC - Enhanced Scoreboard rankings with significantly larger, consistent font sizes (text-2xl) for better readability - Rebranded "TEAM_IDENTIFIER" to "PLAYER" and "TOTAL_POINTS" to "POINTS" across the platform (Scoreboard, Matrix, User Menu) - Updated navigation: Renamed "SCOREBOARD" to "SCORES" in the nav bar and dynamic page titles - Modernized User Dropdown menu with a dedicated "PLAYER" header and "LOGOUT" action - Improved Score Matrix and Score Graph titles for consistency with the new "Player" terminology - Added CAPTCHA human verification (svg-captcha) to Login and Registration flows for enhanced security - Optimized frontend assets by migrating Tailwind and JetBrains Mono to local hosting - Refactored Admin panel: Renamed "Operators" to "Users" and improved layout alignment
22 lines
865 B
TypeScript
22 lines
865 B
TypeScript
|
|
import React from 'react';
|
|
import { Newspaper } from 'lucide-react';
|
|
import { useCTF } from './CTFContext';
|
|
|
|
export const Blog: React.FC = () => {
|
|
const { state } = useCTF();
|
|
return (
|
|
<div className="max-w-4xl mx-auto py-12 px-6">
|
|
<div className="space-y-12">
|
|
{state.blogs.map((post) => (
|
|
<div key={post.id} className="hxp-border-purple bg-white/5 p-8 relative group">
|
|
<div className="absolute top-0 right-0 bg-[#bf00ff] text-black text-[10px] font-black px-4 py-1">{new Date(post.timestamp).toLocaleString()}</div>
|
|
<h3 className="text-3xl font-black text-white italic mb-4">{post.title}</h3>
|
|
<div className="text-slate-400 font-bold text-sm leading-relaxed whitespace-pre-wrap border-l-4 border-[#333] pl-6 py-2">{post.content}</div>
|
|
</div>
|
|
))}
|
|
</div>
|
|
</div>
|
|
);
|
|
};
|