Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7de4e9c51d | |||
| 443d603adc | |||
| 01c7be9346 | |||
| 24b86df9c3 | |||
| 2d93995c74 | |||
| e78775b3b6 | |||
| f866f4edc4 | |||
| dd87203262 | |||
| d7ccd5de76 | |||
| 9c5d63a45f | |||
| 43547218d8 | |||
| 61c06f3288 | |||
| 4c6db65985 | |||
| c11e13c6e2 | |||
| cc28b71959 |
@@ -1,46 +1,24 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import { Open_Sans } from "next/font/google";
|
import { Inter } from "next/font/google";
|
||||||
import "./globals.css";
|
import "./globals.css";
|
||||||
import { ServiceWrapper } from "@/components/ServiceWrapper";
|
import "./styles/variables.css";
|
||||||
import Tag from "@/tag/Tag";
|
import "./styles/base.css";
|
||||||
|
|
||||||
const openSans = Open_Sans({
|
const inter = Inter({
|
||||||
variable: "--font-open-sans", subsets: ["latin"],
|
variable: "--font-inter", subsets: ["latin"],
|
||||||
});
|
});
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Follow Trade - Expert Trading Recommendations & Signals", description: "Get real-time trading recommendations from professional traders. 76% accuracy rate, 10,000+ active traders, and proven performance. Start your free trial today.", keywords: "trading signals, investment recommendations, stock trading, forex trading, technical analysis, market insights", metadataBase: new URL("https://followtrade.com"),
|
title: "Follow Trade", description: "Expert trading recommendations and market signals"};
|
||||||
alternates: {
|
|
||||||
canonical: "https://followtrade.com"
|
|
||||||
},
|
|
||||||
openGraph: {
|
|
||||||
title: "Follow Trade - Expert Trading Signals", description: "Professional trading recommendations with 76% accuracy. Real-time signals, expert analysis, and proven results.", type: "website", siteName: "Follow Trade", images: [{
|
|
||||||
url: "https://img.b2bpic.net/free-photo/close-up-with-businessman-patching-something-keyboard-graphics-monitor_482257-32827.jpg", alt: "Follow Trade Trading Dashboard"
|
|
||||||
}]
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: "summary_large_image", title: "Follow Trade - Expert Trading Recommendations", description: "Real-time trading signals with 76% accuracy. Join 10,000+ successful traders.", images: ["https://img.b2bpic.net/free-photo/close-up-with-businessman-patching-something-keyboard-graphics-monitor_482257-32827.jpg"]
|
|
||||||
},
|
|
||||||
robots: {
|
|
||||||
index: true,
|
|
||||||
follow: true
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function RootLayout({
|
export default function RootLayout({
|
||||||
children,
|
children,
|
||||||
}: Readonly<{
|
}: {
|
||||||
children: React.ReactNode;
|
children: React.ReactNode;
|
||||||
}>) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<html lang="en" suppressHydrationWarning>
|
<html lang="en">
|
||||||
<ServiceWrapper>
|
<body className={inter.variable}>{children}
|
||||||
<body
|
|
||||||
className={openSans.variable}
|
|
||||||
>
|
|
||||||
<Tag />
|
|
||||||
{children}
|
|
||||||
|
|
||||||
<script
|
<script
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{
|
||||||
__html: `
|
__html: `
|
||||||
@@ -434,6 +412,20 @@ export default function RootLayout({
|
|||||||
|
|
||||||
originalContent = element.textContent;
|
originalContent = element.textContent;
|
||||||
element.contentEditable = 'true';
|
element.contentEditable = 'true';
|
||||||
|
|
||||||
|
if (!element.dataset.webildOriginalWhiteSpace) {
|
||||||
|
const computedStyle = window.getComputedStyle(element);
|
||||||
|
element.dataset.webildOriginalWhiteSpace = computedStyle.whiteSpace;
|
||||||
|
element.dataset.webildOriginalWordWrap = computedStyle.wordWrap;
|
||||||
|
element.dataset.webildOriginalOverflowWrap = computedStyle.overflowWrap;
|
||||||
|
element.dataset.webildOriginalOverflow = computedStyle.overflow;
|
||||||
|
}
|
||||||
|
|
||||||
|
element.style.whiteSpace = 'pre-wrap';
|
||||||
|
element.style.wordWrap = 'break-word';
|
||||||
|
element.style.overflowWrap = 'break-word';
|
||||||
|
element.style.overflow = 'visible';
|
||||||
|
|
||||||
element.focus();
|
element.focus();
|
||||||
isEditing = true;
|
isEditing = true;
|
||||||
|
|
||||||
@@ -543,6 +535,23 @@ export default function RootLayout({
|
|||||||
element.contentEditable = 'false';
|
element.contentEditable = 'false';
|
||||||
isEditing = false;
|
isEditing = false;
|
||||||
|
|
||||||
|
if (element.dataset.webildOriginalWhiteSpace) {
|
||||||
|
element.style.whiteSpace = element.dataset.webildOriginalWhiteSpace === 'normal' ? '' : element.dataset.webildOriginalWhiteSpace;
|
||||||
|
delete element.dataset.webildOriginalWhiteSpace;
|
||||||
|
}
|
||||||
|
if (element.dataset.webildOriginalWordWrap) {
|
||||||
|
element.style.wordWrap = element.dataset.webildOriginalWordWrap === 'normal' ? '' : element.dataset.webildOriginalWordWrap;
|
||||||
|
delete element.dataset.webildOriginalWordWrap;
|
||||||
|
}
|
||||||
|
if (element.dataset.webildOriginalOverflowWrap) {
|
||||||
|
element.style.overflowWrap = element.dataset.webildOriginalOverflowWrap === 'normal' ? '' : element.dataset.webildOriginalOverflowWrap;
|
||||||
|
delete element.dataset.webildOriginalOverflowWrap;
|
||||||
|
}
|
||||||
|
if (element.dataset.webildOriginalOverflow) {
|
||||||
|
element.style.overflow = element.dataset.webildOriginalOverflow === 'visible' ? '' : element.dataset.webildOriginalOverflow;
|
||||||
|
delete element.dataset.webildOriginalOverflow;
|
||||||
|
}
|
||||||
|
|
||||||
if (element.dataset.beforeInputHandler === 'true') {
|
if (element.dataset.beforeInputHandler === 'true') {
|
||||||
element.removeEventListener('beforeinput', () => {});
|
element.removeEventListener('beforeinput', () => {});
|
||||||
delete element.dataset.beforeInputHandler;
|
delete element.dataset.beforeInputHandler;
|
||||||
@@ -848,6 +857,9 @@ export default function RootLayout({
|
|||||||
|
|
||||||
const handleScroll = () => {
|
const handleScroll = () => {
|
||||||
if (!isActive) return;
|
if (!isActive) return;
|
||||||
|
|
||||||
|
if (isEditing) return;
|
||||||
|
|
||||||
if (selectedElement) {
|
if (selectedElement) {
|
||||||
makeUneditable(selectedElement, false);
|
makeUneditable(selectedElement, false);
|
||||||
selectedElement.classList.remove(selectedClass);
|
selectedElement.classList.remove(selectedClass);
|
||||||
@@ -1259,7 +1271,6 @@ export default function RootLayout({
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</body>
|
</body>
|
||||||
</ServiceWrapper>
|
|
||||||
</html>
|
</html>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client"
|
"use client";
|
||||||
|
|
||||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||||
import HeroLogoBillboard from '@/components/sections/hero/HeroLogoBillboard';
|
import HeroSplitKpi from '@/components/sections/hero/HeroSplitKpi';
|
||||||
import TestimonialAboutCard from '@/components/sections/about/TestimonialAboutCard';
|
import TestimonialAboutCard from '@/components/sections/about/TestimonialAboutCard';
|
||||||
import FeatureCardTwelve from '@/components/sections/feature/FeatureCardTwelve';
|
import FeatureCardTwelve from '@/components/sections/feature/FeatureCardTwelve';
|
||||||
import PricingCardEight from '@/components/sections/pricing/PricingCardEight';
|
import PricingCardEight from '@/components/sections/pricing/PricingCardEight';
|
||||||
@@ -31,7 +31,7 @@ export default function LandingPage() {
|
|||||||
<NavbarLayoutFloatingOverlay
|
<NavbarLayoutFloatingOverlay
|
||||||
brandName="Follow Trade"
|
brandName="Follow Trade"
|
||||||
navItems={[
|
navItems={[
|
||||||
{ name: "Home", id: "hero" },
|
{ name: "Home", id: "/" },
|
||||||
{ name: "About", id: "about" },
|
{ name: "About", id: "about" },
|
||||||
{ name: "Features", id: "features" },
|
{ name: "Features", id: "features" },
|
||||||
{ name: "Pricing", id: "pricing" },
|
{ name: "Pricing", id: "pricing" },
|
||||||
@@ -44,18 +44,25 @@ export default function LandingPage() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="hero" data-section="hero">
|
<div id="hero" data-section="hero">
|
||||||
<HeroLogoBillboard
|
<HeroSplitKpi
|
||||||
logoText="Follow Trade"
|
title="The Future of Supply Chain"
|
||||||
description="Get expert trading recommendations and signals designed to maximize your investment returns. Join thousands of successful traders using Follow Trade for actionable market insights."
|
description="Ship globally within 3 days post-production with smart fulfillment"
|
||||||
|
background={{ variant: "animated-grid" }}
|
||||||
|
kpis={[
|
||||||
|
{ value: "4-10 Days", label: "Worldwide Delivery" },
|
||||||
|
{ value: "99.8%", label: "Order Accuracy" },
|
||||||
|
{ value: "10x", label: "Faster Lead Times" }
|
||||||
|
]}
|
||||||
|
enableKpiAnimation={true}
|
||||||
|
tag="Trusted by 150+ Brands"
|
||||||
buttons={[
|
buttons={[
|
||||||
{ text: "Start Trading", href: "#pricing" },
|
{ text: "Get Started", href: "#pricing" },
|
||||||
{ text: "Learn More", href: "#features" }
|
{ text: "Learn More", href: "#features" }
|
||||||
]}
|
]}
|
||||||
background={{ variant: "animated-grid" }}
|
|
||||||
imageSrc="https://img.b2bpic.net/free-photo/close-up-with-businessman-patching-something-keyboard-graphics-monitor_482257-32827.jpg"
|
imageSrc="https://img.b2bpic.net/free-photo/close-up-with-businessman-patching-something-keyboard-graphics-monitor_482257-32827.jpg"
|
||||||
imageAlt="Trading dashboard with real-time market data"
|
imageAlt="Supply chain and fulfillment"
|
||||||
mediaAnimation="opacity"
|
mediaAnimation="opacity"
|
||||||
frameStyle="card"
|
imagePosition="right"
|
||||||
buttonAnimation="opacity"
|
buttonAnimation="opacity"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -89,8 +89,7 @@ export default function ProductPage({ params }: ProductPageProps) {
|
|||||||
{ name: "About", id: "about" },
|
{ name: "About", id: "about" },
|
||||||
{ name: "Features", id: "features" },
|
{ name: "Features", id: "features" },
|
||||||
{ name: "Pricing", id: "pricing" },
|
{ name: "Pricing", id: "pricing" },
|
||||||
{ name: "FAQ", id: "faq" },
|
{ name: "FAQ", id: "faq" }
|
||||||
{ name: "Shop", id: "/shop" }
|
|
||||||
]}
|
]}
|
||||||
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
||||||
/>
|
/>
|
||||||
@@ -161,8 +160,7 @@ export default function ProductPage({ params }: ProductPageProps) {
|
|||||||
{ name: "About", id: "about" },
|
{ name: "About", id: "about" },
|
||||||
{ name: "Features", id: "features" },
|
{ name: "Features", id: "features" },
|
||||||
{ name: "Pricing", id: "pricing" },
|
{ name: "Pricing", id: "pricing" },
|
||||||
{ name: "FAQ", id: "faq" },
|
{ name: "FAQ", id: "faq" }
|
||||||
{ name: "Shop", id: "/shop" }
|
|
||||||
]}
|
]}
|
||||||
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
||||||
/>
|
/>
|
||||||
@@ -240,8 +238,7 @@ export default function ProductPage({ params }: ProductPageProps) {
|
|||||||
{ name: "About", id: "about" },
|
{ name: "About", id: "about" },
|
||||||
{ name: "Features", id: "features" },
|
{ name: "Features", id: "features" },
|
||||||
{ name: "Pricing", id: "pricing" },
|
{ name: "Pricing", id: "pricing" },
|
||||||
{ name: "FAQ", id: "faq" },
|
{ name: "FAQ", id: "faq" }
|
||||||
{ name: "Shop", id: "/shop" }
|
|
||||||
]}
|
]}
|
||||||
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
button={{ text: "Cart", onClick: () => setCartOpen(true) }}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -39,8 +39,7 @@ export default function ShopPage() {
|
|||||||
{ name: "About", id: "about" },
|
{ name: "About", id: "about" },
|
||||||
{ name: "Features", id: "features" },
|
{ name: "Features", id: "features" },
|
||||||
{ name: "Pricing", id: "pricing" },
|
{ name: "Pricing", id: "pricing" },
|
||||||
{ name: "FAQ", id: "faq" },
|
{ name: "FAQ", id: "faq" }
|
||||||
{ name: "Shop", id: "/shop" }
|
|
||||||
]}
|
]}
|
||||||
button={{ text: "Cart", onClick: () => console.log("cart") }}
|
button={{ text: "Cart", onClick: () => console.log("cart") }}
|
||||||
/>
|
/>
|
||||||
@@ -110,8 +109,7 @@ export default function ShopPage() {
|
|||||||
{ name: "About", id: "about" },
|
{ name: "About", id: "about" },
|
||||||
{ name: "Features", id: "features" },
|
{ name: "Features", id: "features" },
|
||||||
{ name: "Pricing", id: "pricing" },
|
{ name: "Pricing", id: "pricing" },
|
||||||
{ name: "FAQ", id: "faq" },
|
{ name: "FAQ", id: "faq" }
|
||||||
{ name: "Shop", id: "/shop" }
|
|
||||||
]}
|
]}
|
||||||
button={{ text: "Cart", onClick: () => console.log("cart") }}
|
button={{ text: "Cart", onClick: () => console.log("cart") }}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -2,21 +2,21 @@
|
|||||||
/* Base units */
|
/* Base units */
|
||||||
/* --vw is set by ThemeProvider */
|
/* --vw is set by ThemeProvider */
|
||||||
|
|
||||||
/* --background: #f5f5f5;;
|
/* --background: #0a0a0a;;
|
||||||
--card: #ffffff;;
|
--card: #000000;;
|
||||||
--foreground: #1c1c1c;;
|
--foreground: #ff0000;;
|
||||||
--primary-cta: #1f514c;;
|
--primary-cta: #ff0000;;
|
||||||
--secondary-cta: #ffffff;;
|
--secondary-cta: #000000;;
|
||||||
--accent: #159c49;;
|
--accent: #ff0000;;
|
||||||
--background-accent: #a8e8ba;; */
|
--background-accent: #000000;; */
|
||||||
|
|
||||||
--background: #f5f5f5;;
|
--background: #000000;;
|
||||||
--card: #ffffff;;
|
--card: #000000;;
|
||||||
--foreground: #1c1c1c;;
|
--foreground: #ff0000;;
|
||||||
--primary-cta: #1f514c;;
|
--primary-cta: #ff0000;;
|
||||||
--secondary-cta: #ffffff;;
|
--secondary-cta: #000000;;
|
||||||
--accent: #159c49;;
|
--accent: #ff0000;;
|
||||||
--background-accent: #a8e8ba;;
|
--background-accent: #000000;;
|
||||||
|
|
||||||
/* text sizing - set by ThemeProvider */
|
/* text sizing - set by ThemeProvider */
|
||||||
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);
|
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);
|
||||||
|
|||||||
Reference in New Issue
Block a user