diff --git a/components/PostHeaderAuthors.tsx b/components/PostHeaderAuthors.tsx index a67b22e8..fd1cdd34 100644 --- a/components/PostHeaderAuthors.tsx +++ b/components/PostHeaderAuthors.tsx @@ -142,22 +142,22 @@ const PostHeaderAuthors = ({ blogwriter, blogreviewer, timetoRead }) => {

Share this

- - - + - +
@@ -556,23 +602,23 @@ export default function FloatingNavbarClient({ techLatest = [], communityLatest {/* Nested sub-items with visual hierarchy */}
- setMobileMenuOpen(false)} - className="flex items-center justify-between w-full px-4 py-3 rounded-xl bg-white/60 ring-1 ring-neutral-200/50 hover:bg-white/80 hover:ring-orange-400/60 transition-all duration-200 shadow-sm hover:shadow-md min-h-[48px]" + setMobileMenuOpen(false)} + className="flex items-center justify-between w-full px-4 py-3 rounded-xl bg-white/60 ring-1 ring-neutral-200/50 hover:bg-white/80 hover:ring-orange-400/60 transition-all duration-200 shadow-sm hover:shadow-md min-h-[48px]" > Tags - setMobileMenuOpen(false)} - className="flex items-center justify-between w-full px-4 py-3 rounded-xl bg-white/60 ring-1 ring-neutral-200/50 hover:bg-white/80 hover:ring-orange-400/60 transition-all duration-200 shadow-sm hover:shadow-md min-h-[48px]" + setMobileMenuOpen(false)} + className="flex items-center justify-between w-full px-4 py-3 rounded-xl bg-white/60 ring-1 ring-neutral-200/50 hover:bg-white/80 hover:ring-orange-400/60 transition-all duration-200 shadow-sm hover:shadow-md min-h-[48px]" > Authors - Keploy Integration Testing - - + Keploy API Testing Console - - + Keploy Unit Testing Extension - - + Keploy Test Recorder - - + Keploy Documentation - + {/* Writers Program CTA - desktop-like card styling */}
- Enroll →
- + {/* Bottom compact 1x4 row */}
@@ -650,7 +696,7 @@ export default function FloatingNavbarClient({ techLatest = [], communityLatest { href: "https://keploy.io/privacy-policy", label: "Privacy" }, { href: "https://keploy.io/about#careers", label: "Careers" }, ].map((l, i) => ( - {l.label} - + ))}
@@ -680,7 +726,7 @@ export default function FloatingNavbarClient({ techLatest = [], communityLatest {/* Fixed Bottom Section - Sign In Button */}
- Sign in - +
diff --git a/components/navbar/github-stars.tsx b/components/navbar/github-stars.tsx index 6696f9d6..bc9c7673 100644 --- a/components/navbar/github-stars.tsx +++ b/components/navbar/github-stars.tsx @@ -8,7 +8,7 @@ export function GitHubStars({ className = "" }) { return (
- {stars}
- +
); } diff --git a/components/navbar/main-nav.tsx b/components/navbar/main-nav.tsx index f738dd0e..aa532999 100644 --- a/components/navbar/main-nav.tsx +++ b/components/navbar/main-nav.tsx @@ -1,6 +1,6 @@ import Link from "next/link"; import { ChevronRight } from "lucide-react"; -import { cn } from "../../lib/utils/utils"; +import { cn, isExternal } from "../../lib/utils/utils"; import { NavigationMenu, NavigationMenuContent, @@ -50,93 +50,171 @@ const ResponsiveBlock = ({ item, className = "", }: BlockProps & { className?: string }) => ( - -
- {" "} - {/* Gradient border, scale/transition moved here */} - - -
+ isExternal(item.href) ? ( + + + + ) ); const FeaturedCard = ({ content }: { content: FeaturedCardContent }) => ( // Outer div for gradient border -
+
{" "} {/* Gradient border */} {/* Inner Link/Content Area */} - -
- {" "} - {/* Flex container for logo and text */} - {/* Logo container */} -
- {/* Logo */} + {isExternal(content.href) ? ( + +
+ {" "} + {/* Flex container for logo and text */} + {/* Logo container */} +
+ {/* Logo */} +
+ {/* Text container */} +
+

+ {" "} + {/* Title */} + {content.title} +

+ {/* Subtitle (conditionally rendered) */} + {content.subtitle && ( +

+ {" "} + {/* Subtitle styling */} + {content.subtitle} +

+ )} +
- {/* Text container */} -
-

- {" "} - {/* Title */} - {content.title} -

- {/* Subtitle (conditionally rendered) */} - {content.subtitle && ( -

+ + ) : ( + +

+ {" "} + {/* Flex container for logo and text */} + {/* Logo container */} +
+ {/* Logo */} +
+ {/* Text container */} +
+

{" "} - {/* Subtitle styling */} - {content.subtitle} + {/* Title */} + {content.title}

- )} + {/* Subtitle (conditionally rendered) */} + {content.subtitle && ( +

+ {" "} + {/* Subtitle styling */} + {content.subtitle} +

+ )} +
-
- + + )}
); @@ -153,7 +231,7 @@ const QuickLinks = ({ )}
{links.map((link, index) => ( - {link.title} - + ))}
@@ -259,14 +337,14 @@ export function MainNav() { {/* Pricing */} - Pricing - + {/* Resources */} diff --git a/components/navbar/mobile-nav.tsx b/components/navbar/mobile-nav.tsx index 0d1be68a..47e3dfe8 100644 --- a/components/navbar/mobile-nav.tsx +++ b/components/navbar/mobile-nav.tsx @@ -13,7 +13,7 @@ import { AccordionTrigger, } from "../../components/ui/accordion"; import Link from "next/link"; -import { cn } from "../../lib/utils/utils"; +import { cn, isExternal } from "../../lib/utils/utils"; import { productsNav, solutionsNav, @@ -41,14 +41,23 @@ const MobileNavSection = ({
{column.isClickable ? ( - - {column.title} - + isExternal(column.href) ? ( + + {column.title} + + ) : ( + + {column.title} + + ) ) : (

{" "} @@ -58,25 +67,45 @@ const MobileNavSection = ({

{column.items.map((item: any, itemIdx: number) => ( - - + + + + + {item.title} + + + ) : ( + - - - - {item.title} - - + + + + + {item.title} + + + ) ))}
@@ -86,26 +115,47 @@ const MobileNavSection = ({

{featuredContent.title}

- -
- - + + ) : ( + +
+
+ +
+

+ {featuredContent.featuredCard.title} +

+
+ + )}
)}
@@ -150,14 +200,23 @@ export function MobileNav() { />
- - Pricing - + {isExternal("https://keploy.io/pricing") ? ( + + Pricing + + ) : ( + + Pricing + + )}
@@ -167,15 +226,22 @@ export function MobileNav() { asChild className="w-full text-white px-6 py-2 bg-gradient-to-r from-orange-500 to-red-500 hover:from-red-500 hover:to-orange-500 rounded-full shadow-lg hover:shadow-xl transition-all duration-300 ease-in-out items-center justify-center relative overflow-hidden" > - - Sign In -
- + {isExternal("https://app.keploy.io") ? ( + + Sign In +
+ + ) : ( + + Sign In +
+ + )}
diff --git a/components/navbar/vscode-number.tsx b/components/navbar/vscode-number.tsx index 56242798..076fe7c0 100644 --- a/components/navbar/vscode-number.tsx +++ b/components/navbar/vscode-number.tsx @@ -20,7 +20,7 @@ export function Vscode({ className = "" }) { return (
-
- +
); } diff --git a/components/testimonials.tsx b/components/testimonials.tsx index 662d8fb3..346da1c1 100644 --- a/components/testimonials.tsx +++ b/components/testimonials.tsx @@ -1,7 +1,9 @@ import React from "react"; +import Link from "next/link"; import { useRouter } from "next/router"; import { Marquee } from "./Marquee"; import Tweets from "../services/Tweets"; +import { isExternal } from "../lib/utils/utils"; const firstRow = Tweets.slice(0, Tweets.length / 2); const secondRow = Tweets.slice(Tweets.length / 2); @@ -19,27 +21,48 @@ const ReviewCard = ({ content: string; }) => { const { basePath } = useRouter(); - const isExternal = typeof avatar === "string" && /^https?:\/\//i.test(avatar); - const proxiedAvatar = isExternal ? `${basePath}/api/proxy-image?url=${encodeURIComponent(avatar)}` : avatar; + const isAvatarExternal = typeof avatar === "string" && /^https?:\/\//i.test(avatar); + const proxiedAvatar = isAvatarExternal ? `${basePath}/api/proxy-image?url=${encodeURIComponent(avatar)}` : avatar; return ( - -
-
- +
{content}
+ + + ) : ( + +
+
+ +
+
{name}
+

{id}

+
+
+
{content}
+
+ + ) ); }; @@ -49,7 +72,7 @@ const TwitterTestimonials = () => {

What our community thinks

-
+
{firstRow.map((tweet) => ( diff --git a/components/waitlistBanner.jsx b/components/waitlistBanner.jsx index fc17f438..a84be893 100644 --- a/components/waitlistBanner.jsx +++ b/components/waitlistBanner.jsx @@ -4,18 +4,18 @@ import Link from "next/link"; const waitlistBanner = () => { return (
- - {" "} - + Description of Image - +
); }; diff --git a/lib/utils/utils.ts b/lib/utils/utils.ts index a5ef1935..cf25f694 100644 --- a/lib/utils/utils.ts +++ b/lib/utils/utils.ts @@ -4,3 +4,6 @@ import { twMerge } from "tailwind-merge"; export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } + +export const isExternal = (url: string) => url.startsWith("http"); + diff --git a/pages/index.tsx b/pages/index.tsx index 70c33ff9..002ea1a2 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -24,7 +24,6 @@ export default function Index({ communityPosts, technologyPosts, preview }) { ]; return ( -