From f57dab317f3bf90bb61a59ba228f1078e6b6c682 Mon Sep 17 00:00:00 2001 From: selvi Date: Thu, 18 Dec 2025 10:43:03 +0530 Subject: [PATCH] home page contents and channels new structure updated --- app/about/about.module.css | 2 +- app/channels/[slug]/channel-page.module.css | 312 +++++++++++++------- app/channels/[slug]/page.tsx | 106 ++----- app/contact/contact.module.css | 296 +++++++++++-------- app/contact/page.tsx | 259 ++++++++-------- app/globals.css | 4 +- components/AboutSection.tsx | 20 +- components/CTA.module.css | 2 +- components/CTA.tsx | 4 +- components/ChannelFAQ.module.css | 136 +++++++++ components/ChannelFAQ.tsx | 91 ++++++ components/ChannelTestimonialSlider.tsx | 104 +++++++ components/CoreServices.tsx | 30 +- components/FAQ.tsx | 2 +- components/Hero.module.css | 26 +- components/Hero.tsx | 35 ++- components/HowItWorks.tsx | 18 +- components/Pricing.module.css | 2 +- components/Pricing.tsx | 8 +- components/SocialConnect.tsx | 12 +- components/StatsCounter.tsx | 6 +- components/Testimonials.tsx | 63 ++-- 22 files changed, 983 insertions(+), 555 deletions(-) create mode 100644 components/ChannelFAQ.module.css create mode 100644 components/ChannelFAQ.tsx create mode 100644 components/ChannelTestimonialSlider.tsx diff --git a/app/about/about.module.css b/app/about/about.module.css index c7f1318..7f4ad8a 100644 --- a/app/about/about.module.css +++ b/app/about/about.module.css @@ -515,7 +515,7 @@ top: 20%; right: -40px; background: white; - color: #0f172a; + color: #0072b1; padding: 1rem 1.5rem; border-radius: 16px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15); diff --git a/app/channels/[slug]/channel-page.module.css b/app/channels/[slug]/channel-page.module.css index b83c49c..bb0653c 100644 --- a/app/channels/[slug]/channel-page.module.css +++ b/app/channels/[slug]/channel-page.module.css @@ -96,31 +96,37 @@ .aboutImages { position: relative; - min-height: 500px; + display: flex; + justify-content: center; + align-items: center; + min-height: 400px; + padding: 2rem; } .aboutMainImgWrapper { - position: absolute; - top: 0; - left: 0; - width: 80%; - height: 85%; - z-index: 1; - border-radius: 12px; + position: relative; + z-index: 2; + width: 100%; + max-width: 500px; + aspect-ratio: 1; + border-radius: 24px; overflow: hidden; + box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } -.aboutSubImgWrapper { +.aboutImageFrame { position: absolute; - bottom: 0; - right: 0; - width: 55%; - height: 50%; - z-index: 2; - border: 8px solid #fff; - border-radius: 12px; - overflow: hidden; - box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + top: 50%; + left: 50%; + z-index: 1; + width: 100%; + max-width: 500px; + height: auto; + /* Let it match aspect ratio via padding-bottom usually, but here using aspect-ratio property */ + aspect-ratio: 1; + border: 2px solid var(--primary); + border-radius: 24px; + transform: translate(-50%, -50%) translate(-24px, 24px); } .aboutContent { @@ -184,191 +190,291 @@ /* --- Section 2: Benefits --- */ .benefitsSection { - padding: 4rem 0; + padding: 6rem 0; background: var(--background-secondary); } -.benefitsContainer { - display: grid; - grid-template-columns: 1fr; - gap: 4rem; - align-items: center; +.benefitsHeader { + text-align: center; + max-width: 700px; + margin: 0 auto 4rem; } -@media (min-width: 992px) { - .benefitsContainer { - grid-template-columns: 1fr 1.5fr; - } +.sectionDescriptionCentered { + color: var(--text-secondary); + font-size: 1.125rem; + line-height: 1.7; } -.benefitsContent {} - .benefitsGrid { display: grid; grid-template-columns: 1fr; - gap: 1.5rem; + gap: 3rem 1.5rem; } -@media (min-width: 640px) { +@media (min-width: 768px) { .benefitsGrid { grid-template-columns: repeat(2, 1fr); } } +/* Card Styles */ .benefitCard { - background: #fff; - padding: 2rem; - border-radius: 16px; - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); - transition: all 0.3s ease; - text-align: center; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; + position: relative; + padding-left: 40px; + /* Space for the circle */ + transition: transform 0.3s ease; } .benefitCard:hover { - background: var(--primary); transform: translateY(-5px); } -.benefitCard:hover * { - color: #fff !important; +/* Card Theme Colors */ +.benefitCard:nth-child(1) { + --card-theme: var(--primary); } -.benefitIcon { - font-size: 2.5rem; - margin-bottom: 1rem; - color: var(--primary); - transition: color 0.3s ease; +.benefitCard:nth-child(2) { + --card-theme: var(--secondary); +} + +.benefitCard:nth-child(3) { + --card-theme: var(--dark-blue); +} + +.benefitCard:nth-child(4) { + --card-theme: var(--accent); +} + +.benefitNumber { + position: absolute; + left: 0; + top: 50%; + transform: translateY(-50%); + width: 80px; + height: 80px; + background-color: var(--card-theme); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + color: #fff; + font-size: 1.75rem; + font-weight: 800; + z-index: 10; + box-shadow: 0 10px 20px -5px rgba(0, 0, 0, 0.2); + border: 4px solid var(--background-secondary); + /* Matches bg to look like cutout */ +} + +.benefitCardContent { + background: #fff; + padding: 2rem 2rem 2rem 3.5rem; + /* Extra padding left for circle */ + border-radius: 16px; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05); + position: relative; + z-index: 1; + min-height: 160px; + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; +} + +/* Decorative Accent on Right */ +.benefitCardContent::after { + content: ''; + position: absolute; + right: 0; + top: 15%; + bottom: 15%; + width: 6px; + background: var(--card-theme); + border-radius: 4px 0 0 4px; + opacity: 0.7; } .benefitCardTitle { font-size: 1.25rem; font-weight: 700; - margin-bottom: 0.5rem; + margin-bottom: 0.75rem; color: var(--text-primary); - transition: color 0.3s ease; } .benefitCardDesc { - font-size: 0.9rem; + font-size: 0.95rem; color: var(--text-secondary); - transition: color 0.3s ease; + line-height: 1.5; } -/* --- Section 3: Testimonial (Update: Left Images Grid, Right Slider) --- */ +/* --- Section 3: Testimonials (New Split Layout) --- */ .testimonialSection { - padding: 4rem 0; + padding: 6rem 0; background: #fff; overflow: hidden; } -.testimonialGrid { +.testimonialCenteredHeader { + text-align: center; + max-width: 800px; + margin: 0 auto 4rem; +} + +.channelTestimonialContainer { display: grid; grid-template-columns: 1fr; - gap: 4rem; + gap: 3rem; align-items: center; + max-width: 1000px; + margin: 0 auto; } @media (min-width: 992px) { - .testimonialGrid { + .channelTestimonialContainer { grid-template-columns: 0.8fr 1.2fr; - /* Images < Slider */ } } -/* Left side: 2 Image Grid */ -.testimonialImages { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 1rem; +/* Left Side: Large Image */ +.sliderLeftImage { + transition: opacity 0.3s ease-in-out; } -.testImgWrapper { - border-radius: 12px; +.sliderImageWrapper { + width: 100%; + aspect-ratio: 1; + border-radius: 24px; overflow: hidden; - height: 300px; - background: #f0f0f0; + box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.15); } -.testImgWrapper:nth-child(2) { - margin-top: 3rem; - /* Stagger effect */ +.sliderMainImage { + width: 100%; + height: 100%; + object-fit: cover; + display: block; } -/* Right side: Slider Styles (Used by Client Component) */ -.testimonialSliderContainer { +/* Right Side: Content Box */ +.sliderRightContent { + width: 100%; +} + +.testimonialCard { + background: var(--gradient-primary); + /* Pink/Blue Gradient as "Our theme color" */ + border-radius: 24px; + padding: 3rem; + color: #fff; + box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); position: relative; - padding: 2rem; + overflow: hidden; } -.testSliderContent { - min-height: 300px; +/* Subtle background accent for the card if needed, currently gradient is enough */ + +.testCardHeader { display: flex; - flex-direction: column; - justify-content: center; - animation: fadeIn 0.5s ease-in-out; + justify-content: space-between; + align-items: flex-start; + margin-bottom: 2rem; +} + +.quoteIcon { + opacity: 0.6; } .testStars { display: flex; gap: 4px; - margin-bottom: 1.5rem; } -.testQuoteFade { - font-size: clamp(1.25rem, 2.5vw, 1.75rem); +.testQuoteText { + font-size: clamp(1.1rem, 2vw, 1.25rem); + line-height: 1.6; font-weight: 500; - line-height: 1.4; - color: var(--text-primary); - margin-bottom: 2rem; + margin-bottom: 2.5rem; + opacity: 0.95; font-style: italic; + min-height: 100px; + /* Prevent height jump */ } -.testAuthorBlock { +.testAuthorRow { display: flex; align-items: center; gap: 1rem; + padding-top: 1.5rem; + border-top: 1px solid rgba(255, 255, 255, 0.2); } -.testAuthorAvatar { - width: 60px; - height: 60px; +.testAuthorAvatarWrapper { + width: 50px; + height: 50px; border-radius: 50%; + overflow: hidden; + border: 2px solid rgba(255, 255, 255, 0.5); + flex-shrink: 0; +} + +.testSmallAvatar { + width: 100%; + height: 100%; object-fit: cover; } -.testAuthorInfo h4 { +.testAuthorInfoWhite h4 { margin: 0; font-size: 1.1rem; font-weight: 700; + color: #fff; } -.testAuthorInfo span { +.testAuthorInfoWhite span { font-size: 0.9rem; - color: var(--text-secondary); + color: rgba(255, 255, 255, 0.8); + display: block; } -.sliderDots { +/* Slider Controls */ +.sliderDotsWhite { display: flex; gap: 0.5rem; - margin-top: 2rem; + margin-top: 1.5rem; } -.dot { - width: 10px; - height: 10px; - border-radius: 50%; - background: #E2E8F0; +.dotWhite { + width: 24px; + height: 6px; + border-radius: 4px; + background: rgba(255, 255, 255, 0.3); border: none; cursor: pointer; - transition: background 0.3s; + transition: all 0.3s ease; } -.activeDot { - background: var(--primary); +.activeDotWhite { + background: #fff; + width: 36px; +} + +/* Animations */ +.fadeIn { + opacity: 1; +} + +.fadeOut { + opacity: 0.6; +} + +.fadeInText { + animation: fadeIn 0.4s ease-out forwards; +} + +.fadeOutText { + opacity: 0; } diff --git a/app/channels/[slug]/page.tsx b/app/channels/[slug]/page.tsx index 9872361..2114739 100644 --- a/app/channels/[slug]/page.tsx +++ b/app/channels/[slug]/page.tsx @@ -3,7 +3,8 @@ import { notFound } from 'next/navigation'; import styles from './channel-page.module.css'; import SafeImage from '@/components/SafeImage'; import Link from 'next/link'; -import TestimonialSlider from '@/components/TestimonialSlider'; +import ChannelTestimonialSlider from '@/components/ChannelTestimonialSlider'; +import ChannelFAQ from '@/components/ChannelFAQ'; import { Calendar, Eye, BarChart, Trophy, Inbox, ShieldCheck, Palette, Layout, Smartphone, Zap, PenTool, Repeat, @@ -86,6 +87,7 @@ export default async function ChannelPage(props: PageProps) {
+
-
- -
{channel.about.subTitle} @@ -127,27 +121,25 @@ export default async function ChannelPage(props: PageProps) { {/* 3. Benefits / Why Choose */}
-
-
- Why SocialBuddy for {channel.title} -

Tools Built for Growth

-

- We've built specific tools to help you succeed on {channel.title}. - Stop guessing and start growing with data-driven insights. -

- See All Features -
-
- {channel.benefits.slice(0, 4).map((benefit, index) => ( -
-
- {getIcon(benefit.icon)} -
+
+ Why SocialBuddy for {channel.title} +

Tools Built for Growth

+

+ We've built specific tools to help you succeed on {channel.title}. + Stop guessing and start growing with data-driven insights. +

+
+ +
+ {channel.benefits.slice(0, 4).map((benefit, index) => ( +
+
0{index + 1}
+

{benefit.title}

{benefit.description}

- ))} -
+
+ ))}
@@ -156,68 +148,18 @@ export default async function ChannelPage(props: PageProps) { {channel.testimonials && channel.testimonials.length > 0 && (
-
-
-
- -
-
- -
-
-
- Testimonials -

Loved by {channel.title} Creators

- -
+
+ Testimonials +

Loved by {channel.title} Creators

+
)} {/* 5. FAQ */} {channel.faqs && channel.faqs.length > 0 && ( -
-
-
-
- FAQ -

Frequently Asked Questions about {channel.title}

-
- {channel.faqs.map((faq, index) => ( -
- - {faq.question} - + - -
-

{faq.answer}

-
-
- ))} -
-
-
- -
-
-
-
+ )} {/* 6. CTA (Full Width Floating) */} diff --git a/app/contact/contact.module.css b/app/contact/contact.module.css index dc6178b..ec78b04 100644 --- a/app/contact/contact.module.css +++ b/app/contact/contact.module.css @@ -3,9 +3,10 @@ } .hero { - padding: 8rem 0 8rem; + padding: 8rem 0 4rem; text-align: center; background-image: url('/hero-inner-bg.png'); + /* Assuming this exists */ background-size: cover; background-position: center; background-repeat: no-repeat; @@ -60,22 +61,34 @@ font-weight: 600; } +/* Contact Info Cards (Top Section) */ .contactGrid { display: grid; - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + grid-template-columns: repeat(3, 1fr); + /* Force 3 columns */ gap: 2rem; - margin-bottom: 4rem; + /* margin-bottom: 4rem; */ +} + +@media (max-width: 768px) { + .contactGrid { + grid-template-columns: 1fr; + } } .contactCard { background: var(--card-bg); border: 1px solid var(--border-color); border-radius: 20px; - padding: 2rem; + padding: 2.5rem 2rem; text-align: center; transition: all 0.3s ease; text-decoration: none; - display: block; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); } .contactCard:hover { @@ -85,8 +98,11 @@ } .cardIcon { - font-size: 3rem; + color: var(--primary); margin-bottom: 1rem; + display: flex; + align-items: center; + justify-content: center; } .cardTitle { @@ -98,167 +114,219 @@ .cardValue { font-size: 1rem; - color: var(--primary); - font-weight: 600; + color: var(--text-secondary); + font-weight: 500; } +/* Form Section (Get In Touch) */ .formSection { background: var(--bg-primary); + padding: 4rem 0; } .formContainer { display: grid; - grid-template-columns: 1fr; + grid-template-columns: 1fr 1fr; gap: 4rem; - max-width: 1200px; - margin: 0 auto; + align-items: start; } -@media (min-width: 1024px) { +@media (max-width: 992px) { .formContainer { - grid-template-columns: 1fr 1.5fr; + grid-template-columns: 1fr; + gap: 3rem; } } -.formInfo { +/* Left Side: Get In Touch Info */ +.getInTouchInfo { display: flex; flex-direction: column; - gap: 2rem; } -.formTitle { - font-size: clamp(2rem, 4vw, 2.5rem); +.sectionTitle { + font-size: 2.5rem; font-weight: 800; + color: var(--text-primary); + /* Dark text */ margin-bottom: 1rem; - line-height: 1.2; } -.formDescription { - font-size: 1.125rem; +.sectionDesc { color: var(--text-secondary); - line-height: 1.7; + margin-bottom: 2.5rem; + line-height: 1.6; } -.benefits { +.infoGrid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 2rem; + margin-bottom: 3rem; +} + +@media (max-width: 480px) { + .infoGrid { + grid-template-columns: 1fr; + } +} + +.infoItem { display: flex; flex-direction: column; - gap: 1rem; + gap: 0.5rem; } -.benefit { - display: flex; - align-items: center; - gap: 0.75rem; - font-size: 1rem; - color: var(--text-primary); -} - -.checkIcon { - width: 24px; - height: 24px; - background: linear-gradient(135deg, var(--primary), var(--secondary)); - color: white; - border-radius: 50%; +.iconBox { + background: var(--text-primary); + /* Dark background for icon box */ + width: 40px; + height: 40px; + border-radius: 8px; display: flex; align-items: center; justify-content: center; - font-weight: 700; - flex-shrink: 0; -} - -.socialLinks { - padding-top: 2rem; - border-top: 1px solid var(--border-color); -} - -.socialTitle { - font-size: 1.25rem; - font-weight: 700; - margin-bottom: 1rem; - color: var(--text-primary); -} - -.socialIcons { - display: flex; - gap: 1rem; -} - -.socialIcon { - width: 50px; - height: 50px; - background: var(--card-bg); - border: 1px solid var(--border-color); - border-radius: 12px; - display: flex; - align-items: center; - justify-content: center; - font-size: 1.5rem; - text-decoration: none; - transition: all 0.3s ease; -} - -.socialIcon:hover { - transform: translateY(-3px); - border-color: var(--primary); - box-shadow: 0 10px 20px rgba(236, 72, 153, 0.2); -} - -.form { - background: var(--card-bg); - border: 1px solid var(--border-color); - border-radius: 24px; - padding: 2.5rem; -} - -.formGroup { - margin-bottom: 1.5rem; -} - -.label { - display: block; - font-size: 0.9375rem; - font-weight: 600; - color: var(--text-primary); + color: var(--yellow); + /* Yellow/Gold icon color */ margin-bottom: 0.5rem; } +.infoLabel { + font-size: 1.1rem; + font-weight: 700; + color: var(--text-primary); + margin: 0; +} + +.infoValue { + color: var(--text-secondary); + font-size: 0.95rem; + margin: 0; +} + +.socialRow { + display: flex; + align-items: center; + gap: 2rem; + margin-top: auto; +} + +.socialLabel { + font-weight: 700; + color: var(--text-primary); + font-size: 1.1rem; +} + +.socialIconsRow { + display: flex; + gap: 1rem; +} + +.socialIconsRow a { + color: var(--text-primary); + transition: color 0.3s; +} + +.socialIconsRow a:hover { + color: var(--primary); +} + +/* Right Side: Form Wrapper */ +.formWrapper { + background: #eef6f6; + /* Light greenish-blue background as in image */ + padding: 3rem; + border-radius: 20px; +} + +.contactForm { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.formRow { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1.5rem; +} + +@media (max-width: 480px) { + .formRow { + grid-template-columns: 1fr; + } +} + +.formGroup { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.label { + font-weight: 700; + color: var(--text-primary); + font-size: 0.95rem; +} + .input, -.select, .textarea { width: 100%; - padding: 0.875rem 1rem; - font-size: 1rem; - border: 1px solid var(--border-color); - border-radius: 12px; - background: var(--bg-primary); - color: var(--text-primary); - transition: all 0.3s ease; + padding: 0.75rem 1rem; + border-radius: 8px; + border: 1px solid transparent; + background: #ffffff; font-family: inherit; + font-size: 1rem; + color: var(--text-secondary); + transition: all 0.3s; } .input:focus, -.select:focus, .textarea:focus { outline: none; border-color: var(--primary); - box-shadow: 0 0 0 3px rgba(236, 72, 153, 0.1); + box-shadow: 0 0 0 2px rgba(236, 72, 153, 0.1); +} + +.input::placeholder, +.textarea::placeholder { + color: #cbd5e1; } .textarea { resize: vertical; - min-height: 150px; } -.arrow { - margin-left: 0.5rem; - transition: transform 0.3s ease; - display: inline-block; +.submitBtn { + background: var(--text-primary); + /* Dark blue button */ + color: white; + padding: 1rem 2rem; + border: none; + border-radius: 8px; + font-weight: 700; + font-size: 0.9rem; + text-transform: uppercase; + cursor: pointer; + align-self: flex-start; + transition: background 0.3s; + margin-top: 1rem; } -button:hover .arrow { - transform: translateX(5px); +.submitBtn:hover { + background: #1e293b; } +/* Map Section */ +.mapSection { + /* margin-top: 4rem; */ + height: 400px; + width: 100%; + background: #f1f5f9; +} + +/* Quick Links - kept from original if needed, but maybe not */ .quickLinks { padding: 4rem 0; background: linear-gradient(135deg, rgba(236, 72, 153, 0.03), rgba(59, 130, 246, 0.03)); @@ -305,10 +373,4 @@ button:hover .arrow { font-size: 1.125rem; font-weight: 600; color: var(--text-primary); -} - -@media (min-width: 768px) { - .form { - padding: 3rem; - } } \ No newline at end of file diff --git a/app/contact/page.tsx b/app/contact/page.tsx index e2d2112..2bc5c57 100644 --- a/app/contact/page.tsx +++ b/app/contact/page.tsx @@ -2,6 +2,7 @@ import { useState } from 'react'; import type { Metadata } from 'next'; +import { Phone, Mail, MapPin, Instagram, Facebook, Twitter, Youtube } from 'lucide-react'; import styles from './contact.module.css'; export default function ContactPage() { @@ -11,6 +12,7 @@ export default function ContactPage() { company: '', subject: '', message: '', + phone: '', }); const handleChange = (e: React.ChangeEvent) => { @@ -27,30 +29,24 @@ export default function ContactPage() { alert('Thank you for your message! We\'ll get back to you soon.'); }; - const contactInfo = [ + const contactInfoCards = [ { - icon: 'πŸ“§', + icon: , + title: 'Address', + value: 'London Eye, London', + link: '#', + }, + { + icon: , title: 'Email', - value: 'support@socialbuddy.com', - link: 'mailto:support@socialbuddy.com', + value: 'mail@nursee.com', + link: 'mailto:mail@nursee.com', }, { - icon: 'πŸ’¬', - title: 'Live Chat', - value: 'Available 24/7', - link: '#', - }, - { - icon: 'πŸ“ž', + icon: , title: 'Phone', - value: '+1 (555) 123-4567', - link: 'tel:+15551234567', - }, - { - icon: 'πŸ“', - title: 'Office', - value: 'San Francisco, CA', - link: '#', + value: '(+081) 5678 1234', + link: 'tel:+08156781234', }, ]; @@ -72,7 +68,7 @@ export default function ContactPage() {
- {contactInfo.map((info, index) => ( + {contactInfoCards.map((info, index) => (
{info.icon}

{info.title}

@@ -87,134 +83,137 @@ export default function ContactPage() {
-
-

Send Us a Message

-

- Fill out the form and our team will get back to you within 24 hours. + {/* Left Side: Get In Touch Info */} +

+

Get In Touch

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

-
-
- βœ“ - Quick response time +
+
+
+
+

Phone

+

(+081) 5678 1234

+
-
- βœ“ - Expert support team +
+
+
+

Email

+

mail@nursee.com

+
-
- βœ“ - Personalized solutions +
+
+
+

Address

+

London Eye, London

+
+
+
+
+
+

Instagram

+

nursee.com

+
-
-

Follow Us

-
-
-
- - -
+ {/* Right Side: Form */} +
+ +
+
+ + +
+
+ + +
+
-
- - -
+
+ + +
-
- - -
+
+ +