Merge version_1 into main #1

Merged
bender merged 2 commits from version_1 into main 2026-03-10 19:24:13 +00:00
2 changed files with 45 additions and 51 deletions

View File

@@ -20,7 +20,7 @@ export default function LandingPage() {
borderRadius="pill"
contentWidth="medium"
sizing="medium"
background="grid"
background="circleGradient"
cardStyle="gradient-radial"
primaryButtonStyle="primary-glow"
secondaryButtonStyle="layered"
@@ -44,15 +44,15 @@ export default function LandingPage() {
<HeroBillboardGallery
title="Master the Skills Top Law Students Use to Excel"
description="Classes with Mr Nate is a structured academic training programme designed to help first-year and second-year law students master legal reasoning, exam technique, and case analysis from the very beginning of their legal journey"
background={{ variant: "grid" }}
background={{ variant: "plain" }}
tag="Intensive Coaching"
tagIcon={BookOpen}
tagAnimation="entrance-slide"
tagAnimation="blur-reveal"
buttons={[
{ text: "Join Classes with Mr Nate", href: "contact" },
{ text: "Learn More", href: "about" }
]}
buttonAnimation="entrance-slide"
buttonAnimation="blur-reveal"
mediaItems={[
{
imageSrc: "http://img.b2bpic.net/free-photo/people-working-together-animation-studio_23-2149208003.jpg", imageAlt: "Law students in intensive coaching classroom"
@@ -64,7 +64,7 @@ export default function LandingPage() {
imageSrc: "http://img.b2bpic.net/free-photo/modern-office-composition-with-businessman_23-2147900145.jpg", imageAlt: "Successful law student achievement"
}
]}
mediaAnimation="entrance-slide"
mediaAnimation="blur-reveal"
ariaLabel="Hero section showcasing Classes with Mr Nate"
/>
</div>
@@ -73,14 +73,14 @@ export default function LandingPage() {
<TestimonialAboutCard
tag="About The Programme"
tagIcon={Award}
tagAnimation="entrance-slide"
tagAnimation="blur-reveal"
title="Structured Excellence for Serious Law Students"
description="Mr Nate"
subdescription="Legal Training Coach & Educator"
icon={BookMarked}
imageSrc="http://img.b2bpic.net/free-photo/senior-business-man-with-raised-thumb-up-smiling_1262-755.jpg"
imageAlt="Mr Nate, experienced legal mentor and coach"
mediaAnimation="entrance-slide"
mediaAnimation="blur-reveal"
useInvertedBackground={false}
ariaLabel="About Classes with Mr Nate programme"
/>
@@ -92,7 +92,7 @@ export default function LandingPage() {
description="Our intensive programme focuses on three core pillars that transform law student performance"
tag="Core Competencies"
tagIcon={Target}
tagAnimation="entrance-slide"
tagAnimation="blur-reveal"
features={[
{
id: "1", title: "Legal Reasoning Mastery", author: "Foundation Skill", description: "Develop critical analytical thinking to deconstruct complex legal problems, identify key issues, and construct compelling legal arguments that showcase deep understanding of legal principles.", tags: ["Analytical", "Strategic"],
@@ -107,7 +107,7 @@ export default function LandingPage() {
imageSrc: "http://img.b2bpic.net/free-photo/smiling-lady-with-pens-table_23-2147953160.jpg", imageAlt: "Exam preparation and technique"
}
]}
animationType="entrance-slide"
animationType="blur-reveal"
textboxLayout="default"
useInvertedBackground={false}
ariaLabel="Core features and competencies"
@@ -120,7 +120,7 @@ export default function LandingPage() {
description="Choose the intensity level that fits your academic goals. All plans include personalized attention and proven results."
tag="Limited Slots Available"
tagIcon={Clock}
tagAnimation="entrance-slide"
tagAnimation="blur-reveal"
plans={[
{
id: "1", price: "GH₵2,500", name: "Foundation Track", badge: "Perfect for Beginners", badgeIcon: Star,
@@ -153,7 +153,7 @@ export default function LandingPage() {
]
}
]}
animationType="entrance-slide"
animationType="blur-reveal"
textboxLayout="default"
useInvertedBackground={false}
ariaLabel="Pricing plans and options"
@@ -166,7 +166,7 @@ export default function LandingPage() {
description="Hear directly from first and second-year law students who transformed their performance through Classes with Mr Nate"
tag="Student Results"
tagIcon={ThumbsUp}
tagAnimation="entrance-slide"
tagAnimation="blur-reveal"
textboxLayout="default"
useInvertedBackground={false}
testimonials={[
@@ -189,7 +189,7 @@ export default function LandingPage() {
id: "6", name: "Kofi Adjei", handle: "@kofi.adjei.law", testimonial: "The quality of instruction, personalized feedback, and supportive learning environment made this the best academic decision of my law school journey. Highly recommended.", imageSrc: "http://img.b2bpic.net/free-photo/low-angle-non-binary-person-posing-outside_23-2148760546.jpg", imageAlt: "Kofi Adjei"
}
]}
animationType="entrance-slide"
animationType="blur-reveal"
speed={40}
/>
</div>
@@ -200,7 +200,7 @@ export default function LandingPage() {
description="Find answers to common questions about the programme structure, enrollment, and what to expect"
tag="Programme Info"
tagIcon={HelpCircle}
tagAnimation="entrance-slide"
tagAnimation="blur-reveal"
faqs={[
{
id: "1", title: "Who is Classes with Mr Nate designed for?", content: "This programme is specifically designed for first-year and second-year law students seeking to strengthen their legal reasoning, case analysis skills, and exam performance. Students should be committed to intensive learning and eager to achieve competitive advantage in their studies."
@@ -227,7 +227,7 @@ export default function LandingPage() {
id: "8", title: "How do I enroll and when can I start?", content: "Contact us through our enrollment form to discuss your goals and determine the best track for your needs. We accept students on a rolling basis with new cohorts starting monthly. Early enrollment is recommended due to limited class sizes."
}
]}
faqsAnimation="entrance-slide"
faqsAnimation="blur-reveal"
textboxLayout="default"
useInvertedBackground={false}
animationType="smooth"
@@ -255,7 +255,7 @@ export default function LandingPage() {
}
]}
useInvertedBackground={false}
animationType="entrance-slide"
animationType="blur-reveal"
accordionAnimationType="smooth"
/>
</div>

View File

@@ -1,51 +1,45 @@
"use client";
import { memo } from "react";
import useSvgTextLogo from "./useSvgTextLogo";
import { cls } from "@/lib/utils";
import React from 'react';
interface SvgTextLogoProps {
logoText: string;
adjustHeightFactor?: number;
verticalAlign?: "top" | "center";
text: string;
className?: string;
fontSize?: number;
fontWeight?: number | string;
fontFamily?: string;
fill?: string;
dominantBaseline?: 'auto' | 'text-bottom' | 'alphabetic' | 'ideographic' | 'middle' | 'central' | 'mathematical' | 'hanging' | 'text-top';
}
const SvgTextLogo = memo<SvgTextLogoProps>(function SvgTextLogo({
logoText,
adjustHeightFactor,
verticalAlign = "top",
className = "",
}) {
const { svgRef, textRef, viewBox, aspectRatio } = useSvgTextLogo(logoText, false, adjustHeightFactor);
const SvgTextLogo: React.FC<SvgTextLogoProps> = ({
text,
className = '',
fontSize = 24,
fontWeight = 700,
fontFamily = 'system-ui, -apple-system, sans-serif',
fill = 'currentColor',
dominantBaseline = 'middle',
}) => {
return (
<svg
ref={svgRef}
viewBox={viewBox}
className={cls("w-full", className)}
style={{ aspectRatio: aspectRatio }}
preserveAspectRatio="none"
viewBox="0 0 200 50"
className={className}
role="img"
aria-label={`${logoText} logo`}
aria-label={text}
>
<text
ref={textRef}
x="0"
y={verticalAlign === "center" ? "50%" : "0"}
className="font-bold fill-current"
style={{
fontSize: "20px",
letterSpacing: "-0.02em",
dominantBaseline: verticalAlign === "center" ? "middle" : "text-before-edge"
}}
x="50%"
y="50%"
fontSize={fontSize}
fontWeight={fontWeight}
fontFamily={fontFamily}
fill={fill}
textAnchor="middle"
dominantBaseline={dominantBaseline}
>
{logoText}
{text}
</text>
</svg>
);
});
SvgTextLogo.displayName = "SvgTextLogo";
};
export default SvgTextLogo;