Merge version_1 into main #3

Merged
bender merged 4 commits from version_1 into main 2026-03-11 08:19:32 +00:00
4 changed files with 157 additions and 318 deletions

View File

@@ -2,13 +2,14 @@
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen";
import HeroCentered from "@/components/sections/hero/HeroCentered";
import FeatureCardMedia from "@/components/sections/feature/FeatureCardMedia";
import InlineImageSplitTextAbout from "@/components/sections/about/InlineImageSplitTextAbout";
import MetricCardThree from "@/components/sections/metrics/MetricCardThree";
import TestimonialCardFifteen from "@/components/sections/testimonial/TestimonialCardFifteen";
import ContactCTA from "@/components/sections/contact/ContactCTA";
import FooterBase from "@/components/sections/footer/FooterBase";
import Link from "next/link";
import { Heart, Users, Zap, Shield } from "lucide-react";
import { Users, CheckCircle, Star, TrendingUp } from "lucide-react";
export default function AboutPage() {
return (
@@ -18,7 +19,7 @@ export default function AboutPage() {
borderRadius="pill"
contentWidth="smallMedium"
sizing="medium"
background="fluid"
background="circleGradient"
cardStyle="gradient-radial"
primaryButtonStyle="flat"
secondaryButtonStyle="radial-glow"
@@ -39,96 +40,93 @@ export default function AboutPage() {
/>
</div>
<div id="about-mission" data-section="about-mission">
<InlineImageSplitTextAbout
heading={[
{
type: "text",
content: "Our Mission: Connecting Communities Through Quality Services"
}
<div id="hero" data-section="hero">
<HeroCentered
background={{ variant: "plain" }}
avatars={[
{ src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/professional-headshot-of-a-satisfied-cus-1773216989649-13d1ab0e.png", alt: "Customer profile" },
{ src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/diverse-professional-portrait-showing-co-1773216990905-b21808e3.png", alt: "Service provider profile" },
{ src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/professional-service-provider-portrait-e-1773216991756-704181ab.png", alt: "Verified tasker profile" }
]}
useInvertedBackground={false}
avatarText="Trusted by 50,000+ users"
title="About TaskHub"
description="Our mission is to connect people with trusted local service providers, making it easy and affordable to get things done."
buttons={[
{
text: "Join Us",
href: "/services"
},
{
text: "Become a Partner",
href: "/become-tasker"
}
{ text: "Our Story", href: "#story" },
{ text: "Get Started", href: "/services" }
]}
buttonAnimation="slide-up"
/>
</div>
<div id="about-metrics" data-section="about-metrics">
<MetricCardThree
metrics={[
<div id="story" data-section="story">
<InlineImageSplitTextAbout
heading={[
{ type: "text", content: "Founded on the principle that quality service shouldn't be complicated" }
]}
useInvertedBackground={false}
buttons={[
{ text: "Learn More", href: "#values" },
{ text: "Join Us", href: "/become-tasker" }
]}
buttonAnimation="slide-up"
/>
</div>
<div id="values" data-section="values">
<FeatureCardMedia
features={[
{
id: "users",
icon: Users,
title: "Active Users",
value: "50,000+"
id: "trust", title: "Trust & Safety", description: "Every tasker is verified and rated. We handle disputes and protect both customers and service providers with secure payments and insurance.", tag: "Core Value", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/secure-payment-gateway-interface-shows-m-1773216991217-490181fe.png", imageAlt: "Secure payment confirmation"
},
{
id: "tasks",
icon: Zap,
title: "Tasks Completed",
value: "150,000+"
id: "transparency", title: "Transparent Pricing", description: "No hidden fees. Know exactly what you'll pay before confirming a task. Fair pricing that rewards quality service providers.", tag: "Core Value", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/clean-intuitive-task-posting-form-interf-1773216991310-086e73a5.png", imageAlt: "Task posting interface"
},
{
id: "providers",
icon: Heart,
title: "Verified Taskers",
value: "8,000+"
id: "community", title: "Strong Community", description: "We're building a community where skilled individuals can grow their business and customers get reliable help. Everyone thrives together.", tag: "Core Value", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/a-vibrant-modern-marketplace-interface-s-1773216991531-1682959e.png", imageAlt: "TaskHub marketplace community"
},
{
id: "rating",
icon: Shield,
title: "Avg. Rating",
value: "4.8/5"
id: "innovation", title: "Continuous Innovation", description: "We're always improving the platform based on user feedback. New features, better matching, and enhanced safety are priorities.", tag: "Core Value", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/real-time-messaging-chat-interface-betwe-1773216993321-669574a8.png", imageAlt: "In-app messaging interface"
}
]}
title="TaskHub Impact"
description="Building trust and delivering quality in every transaction"
tag="Our Success"
title="Our Core Values"
description="What drives everything we do at TaskHub"
tag="About Us"
animationType="slide-up"
textboxLayout="default"
useInvertedBackground={false}
/>
</div>
<div id="metrics" data-section="metrics">
<MetricCardThree
metrics={[
{ id: "users", icon: Users, title: "Active Users", value: "50,000+" },
{ id: "tasks", icon: CheckCircle, title: "Tasks Completed", value: "150,000+" },
{ id: "providers", icon: Star, title: "Verified Taskers", value: "8,000+" },
{ id: "rating", icon: TrendingUp, title: "Avg. Rating", value: "4.8/5" }
]}
title="TaskHub by the Numbers"
description="Join thousands of satisfied customers and service providers"
tag="Impact"
animationType="scale-rotate"
textboxLayout="default"
useInvertedBackground={false}
/>
</div>
<div id="about-testimonial" data-section="about-testimonial">
<div id="testimonials" data-section="testimonials">
<TestimonialCardFifteen
testimonial="TaskHub has transformed not just how I find help, but how I think about our community. The platform makes it easy to connect with trusted, verified professionals who genuinely care about quality work. It's more than a marketplace—it's a movement toward supporting local talent."
testimonial="TaskHub saved me hours of searching for reliable help. The entire process was smooth, the tasker was professional, and the pricing was transparent. I've already recommended it to friends!"
rating={5}
author="Sarah Mitchell, Community Leader"
author="Jessica Chen, Busy Professional"
avatars={[
{
src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/professional-headshot-of-a-satisfied-cus-1773216989649-13d1ab0e.png",
alt: "Sarah Mitchell"
},
{
src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/diverse-professional-portrait-showing-co-1773216990905-b21808e3.png",
alt: "Community member"
},
{
src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/professional-service-provider-portrait-e-1773216991756-704181ab.png",
alt: "Service provider"
},
{
src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/satisfied-customer-portrait-warm-friendl-1773216990379-5933941e.png",
alt: "Happy customer"
},
{
src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/professional-expert-portrait-confident-e-1773216992344-ca991088.png",
alt: "Expert professional"
},
{
src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/diverse-professional-portrait-friendly-a-1773216989776-4b07605b.png",
alt: "Friendly professional"
}
{ src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/professional-headshot-of-a-satisfied-cus-1773216989649-13d1ab0e.png", alt: "Jessica Chen" },
{ src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/diverse-professional-portrait-showing-co-1773216990905-b21808e3.png", alt: "Customer testimonial" },
{ src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/professional-service-provider-portrait-e-1773216991756-704181ab.png", alt: "Satisfied customer" },
{ src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/satisfied-customer-portrait-warm-friendl-1773216990379-5933941e.png", alt: "Happy user" },
{ src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/professional-expert-portrait-confident-e-1773216992344-ca991088.png", alt: "Verified customer" },
{ src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/diverse-professional-portrait-friendly-a-1773216989776-4b07605b.png", alt: "TaskHub user" }
]}
ratingAnimation="slide-up"
avatarsAnimation="slide-up"
@@ -136,93 +134,31 @@ export default function AboutPage() {
/>
</div>
<div id="about-cta" data-section="about-cta">
<ContactCTA
tag="Be Part of Something Bigger"
tagIcon={Heart}
tagAnimation="slide-up"
title="Help Us Build the Future of Local Services"
description="Whether you need services or want to provide them, TaskHub is your platform for meaningful connections and quality work."
buttons={[
{
text: "Post Your First Task",
href: "/services"
},
{
text: "Start Earning Today",
href: "/become-tasker"
}
]}
buttonAnimation="slide-up"
background={{ variant: "fluid" }}
useInvertedBackground={false}
/>
</div>
<div id="footer" data-section="footer">
<FooterBase
columns={[
{
title: "Platform",
items: [
{
label: "Post a Task",
href: "/services"
},
{
label: "Find Taskers",
href: "/services"
},
{
label: "Become a Tasker",
href: "/become-tasker"
},
{
label: "Browse All Services",
href: "/services"
}
title: "Platform", items: [
{ label: "Post a Task", href: "/services" },
{ label: "Find Taskers", href: "/services" },
{ label: "Become a Tasker", href: "/become-tasker" },
{ label: "Browse All Services", href: "/services" }
]
},
{
title: "Company",
items: [
{
label: "About Us",
href: "/about"
},
{
label: "How It Works",
href: "/how-it-works"
},
{
label: "Pricing",
href: "/pricing"
},
{
label: "Contact",
href: "/contact"
}
title: "Company", items: [
{ label: "About Us", href: "/about" },
{ label: "How It Works", href: "/how-it-works" },
{ label: "Pricing", href: "/pricing" },
{ label: "Contact", href: "/contact" }
]
},
{
title: "Legal",
items: [
{
label: "Privacy Policy",
href: "#"
},
{
label: "Terms of Service",
href: "#"
},
{
label: "Security",
href: "#"
},
{
label: "Trust & Safety",
href: "#"
}
title: "Legal", items: [
{ label: "Privacy Policy", href: "#" },
{ label: "Terms of Service", href: "#" },
{ label: "Security", href: "#" },
{ label: "Trust & Safety", href: "#" }
]
}
]}

View File

@@ -18,7 +18,7 @@ export default function BecomeTaskerPage() {
borderRadius="pill"
contentWidth="smallMedium"
sizing="medium"
background="fluid"
background="circleGradient"
cardStyle="gradient-radial"
primaryButtonStyle="flat"
secondaryButtonStyle="radial-glow"
@@ -135,7 +135,7 @@ export default function BecomeTaskerPage() {
}
]}
buttonAnimation="slide-up"
background={{ variant: "fluid" }}
background={{ variant: "plain" }}
useInvertedBackground={false}
/>
</div>

View File

@@ -3,50 +3,11 @@
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen";
import ContactCTA from "@/components/sections/contact/ContactCTA";
import FaqSplitMedia from "@/components/sections/faq/FaqSplitMedia";
import FooterBase from "@/components/sections/footer/FooterBase";
import Link from "next/link";
import { Mail, Phone, MapPin } from "lucide-react";
import { Mail } from "lucide-react";
export default function ContactPage() {
const navItems = [
{ name: "Home", id: "/" },
{ name: "How It Works", id: "/" },
{ name: "Services", id: "/" },
{ name: "Pricing", id: "/" },
{ name: "Contact", id: "/contact" }
];
const footerColumns = [
{
title: "Platform",
items: [
{ label: "Post a Task", href: "/" },
{ label: "Find Taskers", href: "/" },
{ label: "Become a Tasker", href: "/" },
{ label: "Browse All Services", href: "/" }
]
},
{
title: "Company",
items: [
{ label: "About Us", href: "/" },
{ label: "How It Works", href: "/" },
{ label: "Pricing", href: "/" },
{ label: "Contact", href: "/contact" }
]
},
{
title: "Legal",
items: [
{ label: "Privacy Policy", href: "#" },
{ label: "Terms of Service", href: "#" },
{ label: "Security", href: "#" },
{ label: "Trust & Safety", href: "#" }
]
}
];
return (
<ThemeProvider
defaultButtonVariant="text-stagger"
@@ -54,7 +15,7 @@ export default function ContactPage() {
borderRadius="pill"
contentWidth="smallMedium"
sizing="medium"
background="fluid"
background="circleGradient"
cardStyle="gradient-radial"
primaryButtonStyle="flat"
secondaryButtonStyle="radial-glow"
@@ -62,119 +23,64 @@ export default function ContactPage() {
>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={navItems}
navItems={[
{ name: "Home", id: "/" },
{ name: "How It Works", id: "/how-it-works" },
{ name: "Services", id: "/services" },
{ name: "Pricing", id: "/pricing" },
{ name: "Contact", id: "/contact" }
]}
brandName="TaskHub"
bottomLeftText="Local Services, Global Standards"
bottomRightText="hello@taskhub.com"
/>
</div>
<div id="contact-cta" data-section="contact-cta">
<div id="contact" data-section="contact">
<ContactCTA
tag="Get in Touch"
tagIcon={Mail}
tagAnimation="slide-up"
title="Ready to Connect?"
description="Have questions about TaskHub? Our support team is here to help. Reach out anytime, and we'll get back to you within 24 hours."
title="Contact TaskHub Support"
description="Have questions? Our support team is here to help. Reach out to us and we'll get back to you as soon as possible."
buttons={[
{ text: "Send us an Email", href: "mailto:hello@taskhub.com" },
{ text: "Return to Home", href: "/" }
{ text: "Send Message", href: "#" },
{ text: "Schedule Call", href: "#" }
]}
buttonAnimation="slide-up"
background={{ variant: "fluid" }}
background={{ variant: "plain" }}
useInvertedBackground={false}
/>
</div>
<div id="contact-info" data-section="contact-info" className="mx-auto px-4 md:px-6 py-16 md:py-24">
<div className="max-w-4xl mx-auto">
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
<div className="text-center">
<div className="flex justify-center mb-4">
<div className="w-12 h-12 rounded-full bg-[#c68a62] flex items-center justify-center">
<Mail className="w-6 h-6 text-white" />
</div>
</div>
<h3 className="text-lg font-semibold text-[#27231f] mb-2">Email</h3>
<p className="text-[#27231f] opacity-70">hello@taskhub.com</p>
<p className="text-sm text-[#27231f] opacity-50 mt-2">We respond within 24 hours</p>
</div>
<div className="text-center">
<div className="flex justify-center mb-4">
<div className="w-12 h-12 rounded-full bg-[#c68a62] flex items-center justify-center">
<Phone className="w-6 h-6 text-white" />
</div>
</div>
<h3 className="text-lg font-semibold text-[#27231f] mb-2">Phone</h3>
<p className="text-[#27231f] opacity-70">1-800-TASKHUB</p>
<p className="text-sm text-[#27231f] opacity-50 mt-2">Available 9 AM - 6 PM EST</p>
</div>
<div className="text-center">
<div className="flex justify-center mb-4">
<div className="w-12 h-12 rounded-full bg-[#c68a62] flex items-center justify-center">
<MapPin className="w-6 h-6 text-white" />
</div>
</div>
<h3 className="text-lg font-semibold text-[#27231f] mb-2">Office</h3>
<p className="text-[#27231f] opacity-70">123 Main Street</p>
<p className="text-sm text-[#27231f] opacity-50 mt-2">New York, NY 10001</p>
</div>
</div>
</div>
</div>
<div id="faq" data-section="faq">
<FaqSplitMedia
faqs={[
{
id: "faq-1",
title: "How do I contact customer support?",
content: "You can reach our support team via email at hello@taskhub.com, phone at 1-800-TASKHUB, or use the contact form on this page. We typically respond within 24 hours."
},
{
id: "faq-2",
title: "What are your business hours?",
content: "Our customer support team is available Monday through Friday, 9 AM to 6 PM EST. For urgent issues, you can submit a support ticket anytime, and we'll prioritize your request."
},
{
id: "faq-3",
title: "Can I cancel or modify a posted task?",
content: "Yes, you can cancel or modify a task before any taskers have accepted it. If taskers have already bid on your task, you'll need to contact support for assistance with modifications."
},
{
id: "faq-4",
title: "How do I dispute a payment?",
content: "If you have an issue with a payment or the work completed, contact our support team within 7 days. We'll review the case and work with both parties to find a fair resolution."
},
{
id: "faq-5",
title: "Is there a warranty on completed work?",
content: "TaskHub offers a satisfaction guarantee for all services. If you're unhappy with the completed work, you can request a refund within 24 hours of task completion."
},
{
id: "faq-6",
title: "How can I provide feedback about my experience?",
content: "We'd love to hear from you! After each completed task, you'll receive a survey to rate your experience. You can also email us directly with detailed feedback."
}
]}
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3An8K9MhOlyvHgqUR2heo9q9H1O/a-vibrant-modern-marketplace-interface-s-1773216991531-1682959e.png?_wi=3"
imageAlt="TaskHub marketplace community"
mediaAnimation="slide-up"
faqsAnimation="slide-up"
textboxLayout="default"
title="Common Questions"
description="Answers to questions customers and taskers frequently ask"
tag="Support"
useInvertedBackground={false}
mediaPosition="left"
/>
</div>
<div id="footer" data-section="footer">
<FooterBase
columns={footerColumns}
columns={[
{
title: "Platform", items: [
{ label: "Post a Task", href: "/services" },
{ label: "Find Taskers", href: "/services" },
{ label: "Become a Tasker", href: "/become-tasker" },
{ label: "Browse All Services", href: "/services" }
]
},
{
title: "Company", items: [
{ label: "About Us", href: "/about" },
{ label: "How It Works", href: "/how-it-works" },
{ label: "Pricing", href: "/pricing" },
{ label: "Contact", href: "/contact" }
]
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "#" },
{ label: "Terms of Service", href: "#" },
{ label: "Security", href: "#" },
{ label: "Trust & Safety", href: "#" }
]
}
]}
logoText="TaskHub"
copyrightText="© 2025 TaskHub. All rights reserved."
/>

View File

@@ -1,51 +1,48 @@
"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;
textClassName?: string;
size?: number;
weight?: number | string;
}
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 = '',
textClassName = '',
size = 32,
weight = 'bold',
}) => {
const padding = size * 0.4;
const lineHeight = size * 1.2;
const textWidth = text.length * size * 0.6;
const viewBoxWidth = textWidth + padding * 2;
const viewBoxHeight = lineHeight + padding * 2;
return (
<svg
ref={svgRef}
viewBox={viewBox}
className={cls("w-full", className)}
style={{ aspectRatio: aspectRatio }}
preserveAspectRatio="none"
role="img"
aria-label={`${logoText} logo`}
viewBox={`0 0 ${viewBoxWidth} ${viewBoxHeight}`}
width={viewBoxWidth}
height={viewBoxHeight}
className={className}
xmlns="http://www.w3.org/2000/svg"
preserveAspectRatio="xMidYMid meet"
>
<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={padding}
y={padding + size}
fontSize={size}
fontWeight={weight}
fill="currentColor"
dominantBaseline="middle"
className={textClassName}
>
{logoText}
{text}
</text>
</svg>
);
});
};
SvgTextLogo.displayName = "SvgTextLogo";
export default SvgTextLogo;
export default SvgTextLogo;