+
+
+
+ );
+}
diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx
new file mode 100644
index 0000000..6c19f9d
--- /dev/null
+++ b/src/app/contact/page.tsx
@@ -0,0 +1,117 @@
+"use client";
+
+import type { Metadata } from "next";
+import { ThemeProvider } from "next-themes";
+import { NavbarStyleCentered } from "@/components/navbar/NavbarStyleCentered/NavbarStyleCentered";
+import { ContactForm } from "@/components/form/ContactForm";
+import { FaqSplitText } from "@/components/sections/faq/FaqSplitText";
+import { ContactText } from "@/components/sections/contact/ContactText";
+
+export const metadata: Metadata = {
+ title: "Contact Us | Webild", description: "Get in touch with Webild. Send us a message, find our phone number, email, office address, and view frequently asked questions.", keywords: ["contact", "Webild", "support", "email", "phone", "address", "FAQ"],
+ metadataBase: new URL("https://www.webild.com"),
+ alternates: {
+ canonical: "/contact"
+ },
+ openGraph: {
+ title: "Contact Us | Webild", description: "Get in touch with Webild. Send us a message, find our phone number, email, office address, and view frequently asked questions.", url: "https://www.webild.com/contact", siteName: "Webild", type: "website"
+ },
+ twitter: {
+ card: "summary_large_image", title: "Contact Us | Webild", description: "Get in touch with Webild. Send us a message, find our phone number, email, office address, and view frequently asked questions."
+ },
+ robots: {
+ index: true,
+ follow: true
+ }
+};
+
+export default function ContactPage() {
+ const navItems = [
+ { name: "Home", id: "/" },
+ { name: "Contact", id: "/contact" }
+ ];
+
+ const contactInfoText = `
+
Reach Out to Us
+
We're here to help! Whether you have a question about our products, need assistance, or just want to give us feedback, feel free to reach out. We're dedicated to providing the best possible service.
+
+
Contact Details
+
Phone: +1 (555) 123-4567
+
Email: support@yourcompany.com
+
Office Address: 123 Main Street, Suite 400, Anytown, CA 90210, USA
+
+
Our team is available Monday to Friday, 9 AM - 5 PM EST.
+ `;
+
+ const faqs = [
+ {
+ id: "faq1", title: "What are your business hours?", content: "Our customer service team is available Monday to Friday, from 9 AM to 5 PM EST. You can reach us by phone or email during these hours."
+ },
+ {
+ id: "faq2", title: "How can I track my order?", content: "Once your order has shipped, you will receive an email with a tracking number. You can use this number on our website's 'Track Order' page or the carrier's website."
+ },
+ {
+ id: "faq3", title: "What is your return policy?", content: "We offer a 30-day return policy for most items. Items must be in new, unused condition with original packaging. Please visit our Returns & Refunds page for full details."
+ },
+ {
+ id: "faq4", title: "Do you offer international shipping?", content: "Yes, we ship to many countries worldwide. Shipping costs and delivery times vary by destination. Please see our Shipping Information page for more details."
+ },
+ {
+ id: "faq5", title: "How can I change or cancel my order?", content: "If you need to change or cancel your order, please contact us as soon as possible. We will do our best to accommodate your request, but changes may not be possible if the order has already been processed or shipped."
+ }
+ ];
+
+ return (
+
+
+
+
+
- {/*
- No sections from the plan.sections array are assigned to the /dashboard page.
- The filtered sectionRegistry only contains HeroSplit and ProductCardFour, which are not suitable for a dashboard page.
- Therefore, no content sections are rendered on this page based on the strict selection rules.
- */}
-
-
My Account Dashboard
-
Welcome back! Manage your orders, account settings, and more.
-
- Start Shopping
-
-
- {/*
- No Footer component was provided in the registry or plan.nav.registry.
- Therefore, no footer is rendered on this page based on the strict selection rules.
- */}
);
-}
\ No newline at end of file
+}
diff --git a/src/app/page.tsx b/src/app/page.tsx
index d39d6c0..ac05448 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,5 +1,212 @@
-import { redirect } from 'next/navigation';
+"use client";
+
+import { ThemeProvider } from "@/components/theme-provider";
+import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
+import HeroLogo from '@/components/sections/hero/HeroLogo';
+import FeatureCardSix from '@/components/sections/feature/FeatureCardSix';
+import PricingCardFive from '@/components/sections/pricing/PricingCardFive';
+import TestimonialCardSix from '@/components/sections/testimonial/TestimonialCardSix';
+import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
+import ContactCenter from '@/components/sections/contact/ContactCenter';
+import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
+import { Sparkles, CheckCircle } from 'lucide-react'; // Example icons
export default function Home() {
- redirect('/components');
-}
\ No newline at end of file
+ const navItems = [
+ { name: "Home", id: "hero" },
+ { name: "Features", id: "features" },
+ { name: "Pricing", id: "pricing" },
+ { name: "Testimonials", id: "testimonials" },
+ { name: "FAQ", id: "faq" },
+ { name: "Contact", id: "contact" }
+ ];
+
+ return (
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/app/reviews/page.tsx b/src/app/reviews/page.tsx
new file mode 100644
index 0000000..ccb6078
--- /dev/null
+++ b/src/app/reviews/page.tsx
@@ -0,0 +1,190 @@
+"use client";
+import React, { useState, useMemo } from 'react';
+import { ThemeProvider } from '@/components/ThemeProvider';
+import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple';
+import TestimonialCardThirteen from '@/components/sections/testimonial/TestimonialCardThirteen';
+import Input from '@/components/form/Input';
+import ButtonTextUnderline from '@/components/button/ButtonTextUnderline';
+
+// Dummy data generation
+const generateReviews = (count: number) => {
+ const reviews = [];
+ const names = ["Alice", "Bob", "Charlie", "Diana", "Eve", "Frank", "Grace", "Heidi", "Ivan", "Judy"];
+ const reviewTexts = [
+ "Absolutely love this product! It exceeded my expectations.", "Great quality and very fast shipping. Highly recommend!", "Decent product for the price. Would buy again.", "Not entirely satisfied, but it gets the job done.", "Fantastic experience from start to finish. Five stars!", "The item arrived damaged. Customer service was helpful.", "Works as advertised. No complaints here.", "A bit pricey, but the quality justifies it.", "I've been looking for something like this for ages!", "Could be better, but it's okay.", "Exceptional value and brilliant design. This product truly stands out!", "I was skeptical at first, but now I'm a believer. What an amazing item.", "The best purchase I've made this year. So glad I found it!", "Slight learning curve, but once you get it, it's incredibly powerful.", "My new go-to. It's so versatile and performs perfectly every time.", "Customer support was stellar when I had a question. Very impressed.", "Perfect for daily use, durable, and aesthetically pleasing. A solid 10/10.", "Initially had an issue, but it was resolved quickly and efficiently. Good job.", "Transforms my routine. I can't imagine going back to how things were before.", "A genuinely innovative product that solves a real problem effortlessly.", "Surprisingly robust given its compact size. It handles everything with ease.", "I've recommended this to all my friends. It's that good!", "The attention to detail is evident. Every aspect feels thoughtfully designed.", "Worth every penny. The performance is consistently high.", "Exceeded my expectations in terms of functionality and ease of use."
+ ];
+ const imagePlaceholders = [
+ "https://api.dicebear.com/7.x/pixel-art/svg?seed=1", "https://api.dicebear.com/7.x/pixel-art/svg?seed=2", "https://api.dicebear.com/7.x/pixel-art/svg?seed=3", "https://api.dicebear.com/7.x/pixel-art/svg?seed=4", "https://api.dicebear.com/7.x/pixel-art/svg?seed=5", "https://api.dicebear.com/7.x/pixel-art/svg?seed=6", "https://api.dicebear.com/7.x/pixel-art/svg?seed=7", "https://api.dicebear.com/7.x/pixel-art/svg?seed=8", "https://api.dicebear.com/7.x/pixel-art/svg?seed=9", "https://api.dicebear.com/7.x/pixel-art/svg?seed=10"
+ ];
+
+ for (let i = 1; i <= count; i++) {
+ const name = names[Math.floor(Math.random() * names.length)];
+ const rating = Math.floor(Math.random() * 5) + 1; // 1-5 stars
+ const reviewText = reviewTexts[Math.floor(Math.random() * reviewTexts.length)];
+ const date = new Date(Date.now() - Math.floor(Math.random() * 365 * 24 * 60 * 60 * 1000)).toISOString().split('T')[0];
+ const helpfulVotes = Math.floor(Math.random() * 100);
+ const isVerifiedPurchase = Math.random() > 0.3; // 70% verified
+ const imageSrc = imagePlaceholders[Math.floor(Math.random() * imagePlaceholders.length)];
+
+ reviews.push({
+ id: `review-${i}`,
+ name,
+ rating,
+ reviewText,
+ date,
+ helpfulVotes,
+ isVerifiedPurchase,
+ imageSrc,
+ });
+ }
+ return reviews;
+};
+
+const ALL_REVIEWS = generateReviews(350); // Generate 350 reviews
+
+export default function ReviewsPage() {
+ const [searchTerm, setSearchTerm] = useState('');
+ const [sortCriteria, setSortCriteria] = useState('newest'); // 'newest', 'oldest', 'highestRating', 'lowestRating', 'mostHelpful'
+ const [reviewsPerPage, setReviewsPerPage] = useState(20); // Changed from 10 to 20 for more content per load
+ const [currentPage, setCurrentPage] = useState(1);
+
+ const filteredAndSortedReviews = useMemo(() => {
+ let reviews = [...ALL_REVIEWS];
+
+ // 1. Filter
+ if (searchTerm) {
+ reviews = reviews.filter(review =>
+ review.reviewText.toLowerCase().includes(searchTerm.toLowerCase()) ||
+ review.name.toLowerCase().includes(searchTerm.toLowerCase())
+ );
+ }
+
+ // 2. Sort
+ reviews.sort((a, b) => {
+ switch (sortCriteria) {
+ case 'newest':
+ return new Date(b.date).getTime() - new Date(a.date).getTime();
+ case 'oldest':
+ return new Date(a.date).getTime() - new Date(b.date).getTime();
+ case 'highestRating':
+ return b.rating - a.rating;
+ case 'lowestRating':
+ return a.rating - b.rating;
+ case 'mostHelpful':
+ return b.helpfulVotes - a.helpfulVotes;
+ default:
+ return 0;
+ }
+ });
+
+ return reviews;
+ }, [searchTerm, sortCriteria]);
+
+ const displayedReviews = useMemo(() => {
+ const startIndex = 0;
+ const endIndex = currentPage * reviewsPerPage;
+ return filteredAndSortedReviews.slice(startIndex, endIndex);
+ }, [filteredAndSortedReviews, currentPage, reviewsPerPage]);
+
+ const handleLoadMore = () => {
+ setCurrentPage(prevPage => prevPage + 1);
+ };
+
+ const hasMoreReviews = displayedReviews.length < filteredAndSortedReviews.length;
+
+ const testimonialCardData = displayedReviews.map(review => ({
+ id: review.id,
+ name: review.name,
+ handle: review.isVerifiedPurchase ? "Verified Purchase" : "Customer", testimonial: `${review.reviewText} (Reviewed on ${review.date}). Found helpful by ${review.helpfulVotes} people.`,
+ rating: review.rating,
+ imageSrc: review.imageSrc,
+ imageAlt: `${review.name}'s avatar`,
+ }));
+
+ return (
+
+
+
+
+
+
Customer Reviews
+
+ Read what our amazing customers have to say about our products.
+