7 Commits

Author SHA1 Message Date
24b86df9c3 Update src/app/styles/variables.css 2026-02-17 17:15:43 +00:00
2d93995c74 Update src/app/shop/page.tsx 2026-02-17 17:15:42 +00:00
e78775b3b6 Update src/app/shop/[id]/page.tsx 2026-02-17 17:15:42 +00:00
f866f4edc4 Update src/app/page.tsx 2026-02-17 17:15:41 +00:00
dd87203262 Update src/app/layout.tsx 2026-02-17 17:15:40 +00:00
d7ccd5de76 Update src/app/blog/page.tsx 2026-02-17 17:15:39 +00:00
9c5d63a45f Merge version_2 into main
Merge version_2 into main
2026-02-17 17:06:56 +00:00
6 changed files with 71 additions and 60 deletions

View File

@@ -28,7 +28,7 @@ export default function BlogPage() {
<NavbarLayoutFloatingOverlay
brandName="Follow Trade"
navItems={[
{ name: "Home", id: "hero" },
{ name: "Home", id: "/" },
{ name: "About", id: "about" },
{ name: "Features", id: "features" },
{ name: "Pricing", id: "pricing" },
@@ -98,4 +98,4 @@ export default function BlogPage() {
</ReactLenis>
</ThemeProvider>
);
}
}

View File

@@ -1,46 +1,24 @@
import type { Metadata } from "next";
import { Open_Sans } from "next/font/google";
import { Inter } from "next/font/google";
import "./globals.css";
import { ServiceWrapper } from "@/components/ServiceWrapper";
import Tag from "@/tag/Tag";
import "./styles/variables.css";
import "./styles/base.css";
const openSans = Open_Sans({
variable: "--font-open-sans", subsets: ["latin"],
const inter = Inter({
variable: "--font-inter", subsets: ["latin"],
});
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"),
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
}
};
title: "Follow Trade", description: "Expert trading recommendations and market signals"};
export default function RootLayout({
children,
}: Readonly<{
}: {
children: React.ReactNode;
}>) {
}) {
return (
<html lang="en" suppressHydrationWarning>
<ServiceWrapper>
<body
className={openSans.variable}
>
<Tag />
{children}
<html lang="en">
<body className={inter.variable}>{children}
<script
dangerouslySetInnerHTML={{
__html: `
@@ -434,6 +412,20 @@ export default function RootLayout({
originalContent = element.textContent;
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();
isEditing = true;
@@ -543,6 +535,23 @@ export default function RootLayout({
element.contentEditable = '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') {
element.removeEventListener('beforeinput', () => {});
delete element.dataset.beforeInputHandler;
@@ -848,6 +857,9 @@ export default function RootLayout({
const handleScroll = () => {
if (!isActive) return;
if (isEditing) return;
if (selectedElement) {
makeUneditable(selectedElement, false);
selectedElement.classList.remove(selectedClass);
@@ -1259,7 +1271,6 @@ export default function RootLayout({
}}
/>
</body>
</ServiceWrapper>
</html>
);
}
}

View File

@@ -1,4 +1,4 @@
"use client"
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
@@ -31,7 +31,7 @@ export default function LandingPage() {
<NavbarLayoutFloatingOverlay
brandName="Follow Trade"
navItems={[
{ name: "Home", id: "hero" },
{ name: "Home", id: "/" },
{ name: "About", id: "about" },
{ name: "Features", id: "features" },
{ name: "Pricing", id: "pricing" },
@@ -307,4 +307,4 @@ export default function LandingPage() {
</div>
</ThemeProvider>
);
}
}

View File

@@ -85,7 +85,7 @@ export default function ProductPage({ params }: ProductPageProps) {
<NavbarLayoutFloatingOverlay
brandName="Follow Trade"
navItems={[
{ name: "Home", id: "hero" },
{ name: "Home", id: "/" },
{ name: "About", id: "about" },
{ name: "Features", id: "features" },
{ name: "Pricing", id: "pricing" },
@@ -156,7 +156,7 @@ export default function ProductPage({ params }: ProductPageProps) {
<NavbarLayoutFloatingOverlay
brandName="Follow Trade"
navItems={[
{ name: "Home", id: "hero" },
{ name: "Home", id: "/" },
{ name: "About", id: "about" },
{ name: "Features", id: "features" },
{ name: "Pricing", id: "pricing" },
@@ -234,7 +234,7 @@ export default function ProductPage({ params }: ProductPageProps) {
<NavbarLayoutFloatingOverlay
brandName="Follow Trade"
navItems={[
{ name: "Home", id: "hero" },
{ name: "Home", id: "/" },
{ name: "About", id: "about" },
{ name: "Features", id: "features" },
{ name: "Pricing", id: "pricing" },
@@ -317,4 +317,4 @@ export default function ProductPage({ params }: ProductPageProps) {
</ReactLenis>
</ThemeProvider>
);
}
}

View File

@@ -35,7 +35,7 @@ export default function ShopPage() {
<NavbarLayoutFloatingOverlay
brandName="Follow Trade"
navItems={[
{ name: "Home", id: "hero" },
{ name: "Home", id: "/" },
{ name: "About", id: "about" },
{ name: "Features", id: "features" },
{ name: "Pricing", id: "pricing" },
@@ -105,7 +105,7 @@ export default function ShopPage() {
<NavbarLayoutFloatingOverlay
brandName="Follow Trade"
navItems={[
{ name: "Home", id: "hero" },
{ name: "Home", id: "/" },
{ name: "About", id: "about" },
{ name: "Features", id: "features" },
{ name: "Pricing", id: "pricing" },
@@ -163,4 +163,4 @@ export default function ShopPage() {
</ReactLenis>
</ThemeProvider>
);
}
}

View File

@@ -2,21 +2,21 @@
/* Base units */
/* --vw is set by ThemeProvider */
/* --background: #f5f5f5;;
--card: #ffffff;;
--foreground: #1c1c1c;;
--primary-cta: #1f514c;;
--secondary-cta: #ffffff;;
--accent: #159c49;;
--background-accent: #a8e8ba;; */
/* --background: #0a0a0a;;
--card: #1a1a1a;;
--foreground: #ffffffe6;;
--primary-cta: #e63946;;
--secondary-cta: #1a1a1a;;
--accent: #737373;;
--background-accent: #737373;; */
--background: #f5f5f5;;
--card: #ffffff;;
--foreground: #1c1c1c;;
--primary-cta: #1f514c;;
--secondary-cta: #ffffff;;
--accent: #159c49;;
--background-accent: #a8e8ba;;
--background: #0a0a0a;;
--card: #1a1a1a;;
--foreground: #ffffffe6;;
--primary-cta: #e63946;;
--secondary-cta: #1a1a1a;;
--accent: #737373;;
--background-accent: #737373;;
/* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);