tenext redesign
This commit is contained in:
@@ -1,30 +1,101 @@
|
||||
import { Navbar } from "@/components/aiero/Navbar";
|
||||
import { PageTitleBanner } from "@/components/shared/PageTitleBanner";
|
||||
import { MarqueeStrip } from "@/components/aiero/MarqueeStrip";
|
||||
import { Navbar } from "@/components/sections/Navbar";
|
||||
import { ContactFormSection } from "@/components/shared/ContactFormSection";
|
||||
import { AboutIntroSection } from "@/components/aiero/about/AboutIntroSection";
|
||||
import { MissionSection } from "@/components/aiero/about/MissionSection";
|
||||
import { PartnerLogosSection } from "@/components/shared/PartnerLogosSection";
|
||||
import { TeamSection } from "@/components/aiero/about/TeamSection";
|
||||
import { AboutHero } from "@/components/sections/about/AboutHero";
|
||||
import { WhoWeAre } from "@/components/sections/about/WhoWeAre";
|
||||
import { OurStory } from "@/components/sections/about/OurStory";
|
||||
import { IconCardGrid } from "@/components/sections/about/IconCardGrid";
|
||||
import { DeliveryModel } from "@/components/sections/about/DeliveryModel";
|
||||
import { AboutPracticeTeams } from "@/components/sections/about/AboutPracticeTeams";
|
||||
import { AboutIndustries } from "@/components/sections/about/AboutIndustries";
|
||||
import { AboutCTA } from "@/components/sections/about/AboutCTA";
|
||||
import {
|
||||
pillars,
|
||||
whyTenext,
|
||||
capabilities,
|
||||
techEcosystem,
|
||||
trustPrinciples,
|
||||
} from "@/data/about";
|
||||
|
||||
export const metadata = {
|
||||
title: "About us - tenext",
|
||||
title: "About Us",
|
||||
description:
|
||||
"Tenext Technologies helps enterprises turn digital transformation into predictable business outcomes across cloud, data, AI, and product engineering.",
|
||||
};
|
||||
|
||||
export default function AboutPage() {
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main className="min-h-screen bg-tenext-dark">
|
||||
<PageTitleBanner
|
||||
title="About us"
|
||||
breadcrumbs={[{ label: "About us" }]}
|
||||
<main className="bg-white">
|
||||
{/* 1 — Hero */}
|
||||
<AboutHero />
|
||||
|
||||
{/* 2 — Who we are */}
|
||||
<WhoWeAre />
|
||||
|
||||
{/* 3 — Our story */}
|
||||
<OurStory />
|
||||
|
||||
{/* 4 — Mission / Vision / Values */}
|
||||
<IconCardGrid
|
||||
eyebrow="what drives us"
|
||||
title="Mission, vision, and the values behind our work"
|
||||
items={pillars}
|
||||
columns={3}
|
||||
theme="dark"
|
||||
/>
|
||||
<AboutIntroSection />
|
||||
<MarqueeStrip text="/ Neural Networks in shaping the future of technology." />
|
||||
<MissionSection />
|
||||
<PartnerLogosSection />
|
||||
<TeamSection />
|
||||
|
||||
{/* 5 — Why Tenext */}
|
||||
<IconCardGrid
|
||||
eyebrow="why tenext"
|
||||
title="What sets our engineering apart"
|
||||
items={whyTenext}
|
||||
columns={3}
|
||||
theme="light"
|
||||
/>
|
||||
|
||||
{/* 6 — Capabilities */}
|
||||
<IconCardGrid
|
||||
eyebrow="capabilities"
|
||||
title="Engineering capabilities across the enterprise"
|
||||
items={capabilities}
|
||||
columns={3}
|
||||
theme="surface"
|
||||
/>
|
||||
|
||||
{/* 7 — Industries */}
|
||||
<AboutIndustries />
|
||||
|
||||
{/* 8 — Delivery model */}
|
||||
<DeliveryModel />
|
||||
|
||||
{/* 9 — Practice teams */}
|
||||
<AboutPracticeTeams />
|
||||
|
||||
{/* 10 — Technology ecosystem */}
|
||||
<IconCardGrid
|
||||
eyebrow="technology ecosystem"
|
||||
title="The technologies we build with"
|
||||
description="We work across the modern enterprise stack — matched to your landscape, not to a single vendor."
|
||||
items={techEcosystem}
|
||||
columns={4}
|
||||
theme="surface"
|
||||
/>
|
||||
|
||||
{/* 11 — Enterprise trust */}
|
||||
<IconCardGrid
|
||||
eyebrow="enterprise trust"
|
||||
title="Why enterprises rely on Tenext"
|
||||
description="Not testimonials — the principles, standards, and culture that make delivery dependable."
|
||||
items={trustPrinciples}
|
||||
columns={4}
|
||||
theme="dark"
|
||||
/>
|
||||
|
||||
{/* 12 — Final CTA */}
|
||||
<AboutCTA />
|
||||
|
||||
{/* 13 — Contact */}
|
||||
<ContactFormSection />
|
||||
</main>
|
||||
</>
|
||||
|
||||
67
app/careers/page.tsx
Normal file
67
app/careers/page.tsx
Normal file
@@ -0,0 +1,67 @@
|
||||
import { Navbar } from "@/components/sections/Navbar";
|
||||
import { PageTitleBanner } from "@/components/shared/PageTitleBanner";
|
||||
import { SectionContainer } from "@/components/shared/SectionContainer";
|
||||
import { PageContainer } from "@/components/shared/PageContainer";
|
||||
import { SectionHeading } from "@/components/shared/SectionHeading";
|
||||
import { RevealOnView } from "@/components/shared/RevealOnView";
|
||||
import { tenextButton as TenextButton } from "@/components/shared/Button";
|
||||
import { PreFooterCTA } from "@/components/shared/PreFooterCTA";
|
||||
import { openRoles } from "@/data/site-pages";
|
||||
|
||||
export const metadata = {
|
||||
title: "Careers",
|
||||
description:
|
||||
"Build the digital backbone for enterprises. Explore open roles at Tenext Technologies in Coimbatore.",
|
||||
};
|
||||
|
||||
export default function CareersPage() {
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main className="bg-white">
|
||||
<PageTitleBanner
|
||||
title="Careers"
|
||||
breadcrumbs={[{ label: "Home", href: "/" }, { label: "Careers" }]}
|
||||
/>
|
||||
<SectionContainer paddingY="lg" className="px-[20px]">
|
||||
<PageContainer>
|
||||
<SectionHeading
|
||||
tag="[ join us ]"
|
||||
title="Build the digital backbone for enterprises"
|
||||
description="We are engineers, designers, and problem-solvers who care about outcomes. These are the disciplines we hire for — introduce yourself and we will be in touch when a role opens."
|
||||
titleClassName="text-tenext-dark max-w-[720px]"
|
||||
descriptionClassName="max-w-[620px]"
|
||||
className="mb-[50px]"
|
||||
/>
|
||||
|
||||
<div className="flex flex-col gap-[16px]">
|
||||
{openRoles.map((role, index) => (
|
||||
<RevealOnView key={role.id} delay={index * 70}>
|
||||
<div className="flex flex-col gap-[20px] rounded-[25px] border border-tenext-card-border p-[30px_40px] transition-transform duration-300 hover:-translate-y-1 md:flex-row md:items-center md:justify-between">
|
||||
<div>
|
||||
<h3 className="font-[var(--font-sora)] text-[22px] font-bold leading-[1.3] text-tenext-dark">
|
||||
{role.title}
|
||||
</h3>
|
||||
<p className="mt-[6px] text-[15px] text-tenext-text-muted">
|
||||
{role.location} · {role.type}
|
||||
</p>
|
||||
</div>
|
||||
<TenextButton
|
||||
href="/contacts"
|
||||
variant="gradient-border"
|
||||
className="shrink-0 rounded-[25px] px-[30px] py-[14px] text-[15px] font-medium"
|
||||
showArrow={true}
|
||||
>
|
||||
Get in touch
|
||||
</TenextButton>
|
||||
</div>
|
||||
</RevealOnView>
|
||||
))}
|
||||
</div>
|
||||
</PageContainer>
|
||||
</SectionContainer>
|
||||
<PreFooterCTA />
|
||||
</main>
|
||||
</>
|
||||
);
|
||||
}
|
||||
59
app/case-studies/page.tsx
Normal file
59
app/case-studies/page.tsx
Normal file
@@ -0,0 +1,59 @@
|
||||
import { Navbar } from "@/components/sections/Navbar";
|
||||
import { PageTitleBanner } from "@/components/shared/PageTitleBanner";
|
||||
import { SectionContainer } from "@/components/shared/SectionContainer";
|
||||
import { PageContainer } from "@/components/shared/PageContainer";
|
||||
import { SectionHeading } from "@/components/shared/SectionHeading";
|
||||
import { RevealOnView } from "@/components/shared/RevealOnView";
|
||||
import { PreFooterCTA } from "@/components/shared/PreFooterCTA";
|
||||
import { caseStudies } from "@/data/site-pages";
|
||||
|
||||
export const metadata = {
|
||||
title: "Case Studies",
|
||||
description:
|
||||
"How Tenext helps enterprises transform — representative engagements across retail, financial services, and manufacturing.",
|
||||
};
|
||||
|
||||
export default function CaseStudiesPage() {
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main className="bg-white">
|
||||
<PageTitleBanner
|
||||
title="Case Studies"
|
||||
breadcrumbs={[{ label: "Home", href: "/" }, { label: "Case Studies" }]}
|
||||
/>
|
||||
<SectionContainer paddingY="lg" className="px-[20px]">
|
||||
<PageContainer>
|
||||
<SectionHeading
|
||||
tag="[ our work ]"
|
||||
title="How we deliver across industries"
|
||||
description="Named client case studies will be published here as they are approved. In the meantime, here is how Tenext approaches engagements in the industries it serves."
|
||||
titleClassName="text-tenext-dark max-w-[720px]"
|
||||
descriptionClassName="max-w-[620px]"
|
||||
className="mb-[50px]"
|
||||
/>
|
||||
|
||||
<div className="grid grid-cols-1 gap-[20px] md:grid-cols-2 lg:grid-cols-3">
|
||||
{caseStudies.map((item, index) => (
|
||||
<RevealOnView key={item.id} delay={index * 90}>
|
||||
<article className="flex h-full flex-col gap-[15px] rounded-[25px] border border-tenext-card-border p-[40px] transition-transform duration-300 hover:-translate-y-2">
|
||||
<span className="tenext-subheading text-tenext-teal" style={{ fontFamily: "var(--font-sora)" }}>
|
||||
{item.industry}
|
||||
</span>
|
||||
<h3 className="font-[var(--font-sora)] text-[22px] font-bold leading-[1.3] text-tenext-dark">
|
||||
{item.title}
|
||||
</h3>
|
||||
<p className="text-[16px] leading-[1.7] text-tenext-text-muted">
|
||||
{item.description}
|
||||
</p>
|
||||
</article>
|
||||
</RevealOnView>
|
||||
))}
|
||||
</div>
|
||||
</PageContainer>
|
||||
</SectionContainer>
|
||||
<PreFooterCTA />
|
||||
</main>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
import { Navbar } from "@/components/aiero/Navbar";
|
||||
import { Navbar } from "@/components/sections/Navbar";
|
||||
import { PageTitleBanner } from "@/components/shared/PageTitleBanner";
|
||||
import { ContactFormSection } from "@/components/shared/ContactFormSection";
|
||||
import { MapSection } from "@/components/aiero/contacts/MapSection";
|
||||
import { MapSection } from "@/components/sections/contacts/MapSection";
|
||||
|
||||
export const metadata = {
|
||||
title: "Contacts - tenext",
|
||||
title: "Contact",
|
||||
description:
|
||||
"Talk to Tenext Technologies about cloud, data, AI, and product engineering for your enterprise.",
|
||||
};
|
||||
|
||||
export default function ContactsPage() {
|
||||
@@ -13,8 +15,8 @@ export default function ContactsPage() {
|
||||
<Navbar />
|
||||
<main className="min-h-screen bg-tenext-dark">
|
||||
<PageTitleBanner
|
||||
title="Contacts"
|
||||
breadcrumbs={[{ label: "Contacts" }]}
|
||||
title="Contact"
|
||||
breadcrumbs={[{ label: "Home", href: "/" }, { label: "Contact" }]}
|
||||
/>
|
||||
<ContactFormSection />
|
||||
<MapSection />
|
||||
|
||||
BIN
app/favicon.ico
BIN
app/favicon.ico
Binary file not shown.
|
Before Width: | Height: | Size: 25 KiB |
@@ -478,8 +478,21 @@ button {
|
||||
.navbar-reveal,
|
||||
.hero-reveal,
|
||||
.scroll-widget,
|
||||
.dropdown-reveal,
|
||||
.reveal-on-view {
|
||||
opacity: 1;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
/* Stop looping / decorative motion entirely */
|
||||
.marquee-track,
|
||||
.hero-bg-motion,
|
||||
.scroll-widget .scroll-btn-decoration {
|
||||
animation: none !important;
|
||||
}
|
||||
|
||||
/* Neutralize hover-lift so pointer movement doesn't shift layout */
|
||||
.tenext-card:hover {
|
||||
transform: none;
|
||||
}
|
||||
}
|
||||
|
||||
29
app/icon.tsx
Normal file
29
app/icon.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
import { ImageResponse } from "next/og";
|
||||
|
||||
// Generated Tenext favicon — replaces the framework's default icon.
|
||||
export const size = { width: 32, height: 32 };
|
||||
export const contentType = "image/png";
|
||||
|
||||
export default function Icon() {
|
||||
return new ImageResponse(
|
||||
(
|
||||
<div
|
||||
style={{
|
||||
width: "100%",
|
||||
height: "100%",
|
||||
display: "flex",
|
||||
alignItems: "center",
|
||||
justifyContent: "center",
|
||||
background: "#1F1F1F",
|
||||
color: "#45D0BD",
|
||||
fontSize: 22,
|
||||
fontWeight: 700,
|
||||
fontFamily: "sans-serif",
|
||||
}}
|
||||
>
|
||||
T
|
||||
</div>
|
||||
),
|
||||
{ ...size }
|
||||
);
|
||||
}
|
||||
34
app/industries/page.tsx
Normal file
34
app/industries/page.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
import { Navbar } from "@/components/sections/Navbar";
|
||||
import { PageTitleBanner } from "@/components/shared/PageTitleBanner";
|
||||
import { MarqueeStrip } from "@/components/sections/MarqueeStrip";
|
||||
import { AnchoredCardGrid } from "@/components/shared/AnchoredCardGrid";
|
||||
import { PreFooterCTA } from "@/components/shared/PreFooterCTA";
|
||||
import { industries } from "@/data/site-pages";
|
||||
|
||||
export const metadata = {
|
||||
title: "Industries",
|
||||
description:
|
||||
"Enterprise technology solutions for retail, financial services, healthcare, manufacturing, and education.",
|
||||
};
|
||||
|
||||
export default function IndustriesPage() {
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main className="bg-white">
|
||||
<PageTitleBanner
|
||||
title="Industries"
|
||||
breadcrumbs={[{ label: "Home", href: "/" }, { label: "Industries" }]}
|
||||
/>
|
||||
<AnchoredCardGrid
|
||||
tag="[ industries ]"
|
||||
title="Depth across the industries you operate in"
|
||||
description="We bring domain understanding and engineering rigor to the sectors where Tenext delivers transformation."
|
||||
items={industries}
|
||||
/>
|
||||
<MarqueeStrip text="/ Building the digital backbone for enterprises across industries." />
|
||||
<PreFooterCTA />
|
||||
</main>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
import type { Metadata } from "next";
|
||||
import { Manrope, Sora, DM_Sans } from "next/font/google";
|
||||
import { Footer } from "@/components/shared/Footer";
|
||||
import { siteConfig } from "@/data/site-config";
|
||||
import "./globals.css";
|
||||
|
||||
const manrope = Manrope({
|
||||
@@ -21,10 +22,47 @@ const dmSans = DM_Sans({
|
||||
weight: ["400", "500", "600", "700"],
|
||||
});
|
||||
|
||||
const title =
|
||||
"Tenext Technologies — Enterprise Digital Transformation, Cloud, Data & AI";
|
||||
const description =
|
||||
"Tenext Technologies helps enterprises transform with cloud, data, AI, and product engineering — delivering predictable outcomes, lower total cost of ownership, and accelerated time to value.";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Tenext Technologies — Enterprise Digital Transformation, Cloud, Data & AI",
|
||||
description:
|
||||
"Tenext Technologies helps enterprises transform with cloud, data, AI, and product engineering — delivering predictable outcomes, lower total cost of ownership, and accelerated time to value.",
|
||||
metadataBase: new URL(siteConfig.url),
|
||||
title: {
|
||||
default: title,
|
||||
template: "%s | Tenext Technologies",
|
||||
},
|
||||
description,
|
||||
alternates: { canonical: "/" },
|
||||
openGraph: {
|
||||
type: "website",
|
||||
siteName: siteConfig.legalName,
|
||||
url: siteConfig.url,
|
||||
title,
|
||||
description,
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title,
|
||||
description,
|
||||
},
|
||||
};
|
||||
|
||||
const organizationJsonLd = {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
name: siteConfig.legalName,
|
||||
url: siteConfig.url,
|
||||
email: siteConfig.email,
|
||||
telephone: siteConfig.phoneRaw,
|
||||
address: {
|
||||
"@type": "PostalAddress",
|
||||
streetAddress: siteConfig.address.line1,
|
||||
addressLocality: "Coimbatore",
|
||||
addressCountry: "IN",
|
||||
},
|
||||
sameAs: siteConfig.socials.map((s) => s.url),
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
@@ -38,6 +76,12 @@ export default function RootLayout({
|
||||
className={`${manrope.variable} ${sora.variable} ${dmSans.variable}`}
|
||||
>
|
||||
<body suppressHydrationWarning>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: JSON.stringify(organizationJsonLd),
|
||||
}}
|
||||
/>
|
||||
{children}
|
||||
<Footer />
|
||||
</body>
|
||||
|
||||
49
app/not-found.tsx
Normal file
49
app/not-found.tsx
Normal file
@@ -0,0 +1,49 @@
|
||||
import { Navbar } from "@/components/sections/Navbar";
|
||||
import { tenextButton as TenextButton } from "@/components/shared/Button";
|
||||
import { PageContainer } from "@/components/shared/PageContainer";
|
||||
|
||||
export const metadata = {
|
||||
title: "Page not found",
|
||||
};
|
||||
|
||||
export default function NotFound() {
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main className="bg-white">
|
||||
<section className="flex min-h-[70vh] items-center px-[20px] py-[100px]">
|
||||
<PageContainer className="flex flex-col items-center text-center">
|
||||
<span className="gradient-text-purple font-[var(--font-manrope)] text-[clamp(90px,18vw,200px)] font-extrabold leading-none">
|
||||
404
|
||||
</span>
|
||||
<h1 className="mt-[10px] max-w-[620px] font-[var(--font-sora)] text-[clamp(28px,4vw,48px)] font-bold leading-[1.15] text-tenext-dark">
|
||||
We couldn't find that page
|
||||
</h1>
|
||||
<p className="mt-[20px] max-w-[520px] text-[16px] leading-[1.8] text-tenext-text-muted">
|
||||
The page you're looking for may have moved or no longer
|
||||
exists. Let's get you back on track.
|
||||
</p>
|
||||
<div className="mt-[40px] flex flex-wrap items-center justify-center gap-[16px]">
|
||||
<TenextButton
|
||||
href="/"
|
||||
variant="gradient-fill"
|
||||
className="rounded-[25px] px-[35px] py-[15px] text-[15px] font-semibold"
|
||||
showArrow={false}
|
||||
>
|
||||
Back to home
|
||||
</TenextButton>
|
||||
<TenextButton
|
||||
href="/contacts"
|
||||
variant="gradient-border"
|
||||
className="rounded-[25px] px-[35px] py-[15px] text-[15px] font-medium"
|
||||
showArrow={true}
|
||||
>
|
||||
Contact us
|
||||
</TenextButton>
|
||||
</div>
|
||||
</PageContainer>
|
||||
</section>
|
||||
</main>
|
||||
</>
|
||||
);
|
||||
}
|
||||
65
app/opengraph-image.tsx
Normal file
65
app/opengraph-image.tsx
Normal file
@@ -0,0 +1,65 @@
|
||||
import { ImageResponse } from "next/og";
|
||||
|
||||
// Static social-share image for the site (1200×630).
|
||||
// Next.js exposes this as og:image and twitter:image automatically.
|
||||
export const alt = "Tenext Technologies — Enterprise Digital Transformation";
|
||||
export const size = { width: 1200, height: 630 };
|
||||
export const contentType = "image/png";
|
||||
|
||||
export default function OpengraphImage() {
|
||||
return new ImageResponse(
|
||||
(
|
||||
<div
|
||||
style={{
|
||||
width: "100%",
|
||||
height: "100%",
|
||||
display: "flex",
|
||||
flexDirection: "column",
|
||||
justifyContent: "space-between",
|
||||
background: "#1F1F1F",
|
||||
padding: "80px",
|
||||
fontFamily: "sans-serif",
|
||||
}}
|
||||
>
|
||||
<div style={{ display: "flex", alignItems: "center", gap: "16px" }}>
|
||||
<div
|
||||
style={{
|
||||
width: "20px",
|
||||
height: "20px",
|
||||
borderRadius: "9999px",
|
||||
background: "#45D0BD",
|
||||
}}
|
||||
/>
|
||||
<div
|
||||
style={{
|
||||
color: "#FFFFFF",
|
||||
fontSize: "34px",
|
||||
fontWeight: 700,
|
||||
letterSpacing: "-0.02em",
|
||||
}}
|
||||
>
|
||||
Tenext Technologies
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
style={{
|
||||
color: "#FFFFFF",
|
||||
fontSize: "68px",
|
||||
fontWeight: 800,
|
||||
lineHeight: 1.1,
|
||||
letterSpacing: "-0.03em",
|
||||
maxWidth: "900px",
|
||||
}}
|
||||
>
|
||||
Engineering predictable outcomes from your digital investments
|
||||
</div>
|
||||
|
||||
<div style={{ color: "#87899B", fontSize: "30px", fontWeight: 500 }}>
|
||||
Cloud · Data · AI · Product Engineering · Digital Commerce
|
||||
</div>
|
||||
</div>
|
||||
),
|
||||
{ ...size }
|
||||
);
|
||||
}
|
||||
32
app/page.tsx
32
app/page.tsx
@@ -1,17 +1,17 @@
|
||||
import { Navbar } from "@/components/aiero/Navbar";
|
||||
import { HeroSection } from "@/components/aiero/HeroSection";
|
||||
import { CardsGrid } from "@/components/aiero/CardsGrid";
|
||||
import { PossibilitiesSection } from "@/components/aiero/PossibilitiesSection";
|
||||
import { TinkerSection } from "@/components/aiero/TinkerSection";
|
||||
import { MarqueeStrip } from "@/components/aiero/MarqueeStrip";
|
||||
import { FeaturesSection } from "@/components/aiero/FeaturesSection";
|
||||
import { WOWSection } from "@/components/aiero/WOWSection";
|
||||
import { BenefitsGridSection } from "@/components/aiero/BenefitsGridSection";
|
||||
import { MetricsSection } from "@/components/aiero/MetricsSection";
|
||||
import { HowItWorksSection } from "@/components/aiero/HowItWorksSection";
|
||||
import { TeamSection } from "@/components/aiero/about/TeamSection";
|
||||
import { TestimonialsSection } from "@/components/aiero/services/TestimonialsSection";
|
||||
import { BlogSection } from "@/components/aiero/BlogSection";
|
||||
import { Navbar } from "@/components/sections/Navbar";
|
||||
import { HeroSection } from "@/components/sections/HeroSection";
|
||||
import { CardsGrid } from "@/components/sections/CardsGrid";
|
||||
import { PossibilitiesSection } from "@/components/sections/PossibilitiesSection";
|
||||
import { TinkerSection } from "@/components/sections/TinkerSection";
|
||||
import { MarqueeStrip } from "@/components/sections/MarqueeStrip";
|
||||
import { FeaturesSection } from "@/components/sections/FeaturesSection";
|
||||
import { WOWSection } from "@/components/sections/WOWSection";
|
||||
import { BenefitsGridSection } from "@/components/sections/BenefitsGridSection";
|
||||
import { MetricsSection } from "@/components/sections/MetricsSection";
|
||||
import { HowItWorksSection } from "@/components/sections/HowItWorksSection";
|
||||
import { TeamSection } from "@/components/sections/about/TeamSection";
|
||||
import { DeliveryPrinciplesSection } from "@/components/sections/services/DeliveryPrinciplesSection";
|
||||
import { BlogSection } from "@/components/sections/BlogSection";
|
||||
import { PartnerLogosSection } from "@/components/shared/PartnerLogosSection";
|
||||
import { PreFooterCTA } from "@/components/shared/PreFooterCTA";
|
||||
|
||||
@@ -19,7 +19,7 @@ export default function Home() {
|
||||
return (
|
||||
<main className="bg-white">
|
||||
<div className="absolute left-5 right-5 top-0 z-50">
|
||||
<Navbar />
|
||||
<Navbar variant="overlay" />
|
||||
</div>
|
||||
<HeroSection />
|
||||
<CardsGrid />
|
||||
@@ -38,7 +38,7 @@ export default function Home() {
|
||||
<MetricsSection />
|
||||
<HowItWorksSection />
|
||||
<TeamSection />
|
||||
<TestimonialsSection />
|
||||
<DeliveryPrinciplesSection />
|
||||
<BlogSection />
|
||||
<PartnerLogosSection />
|
||||
<PreFooterCTA />
|
||||
|
||||
27
app/privacy/page.tsx
Normal file
27
app/privacy/page.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
import { Navbar } from "@/components/sections/Navbar";
|
||||
import { PageTitleBanner } from "@/components/shared/PageTitleBanner";
|
||||
import { LegalContent } from "@/components/shared/LegalContent";
|
||||
import { PreFooterCTA } from "@/components/shared/PreFooterCTA";
|
||||
import { privacyPolicy } from "@/data/legal";
|
||||
|
||||
export const metadata = {
|
||||
title: "Privacy Policy",
|
||||
description:
|
||||
"How Tenext Technologies collects, uses, and protects information you share through this website.",
|
||||
};
|
||||
|
||||
export default function PrivacyPage() {
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main className="bg-white">
|
||||
<PageTitleBanner
|
||||
title="Privacy Policy"
|
||||
breadcrumbs={[{ label: "Home", href: "/" }, { label: "Privacy Policy" }]}
|
||||
/>
|
||||
<LegalContent sections={privacyPolicy} />
|
||||
<PreFooterCTA />
|
||||
</main>
|
||||
</>
|
||||
);
|
||||
}
|
||||
59
app/resources/page.tsx
Normal file
59
app/resources/page.tsx
Normal file
@@ -0,0 +1,59 @@
|
||||
import { Navbar } from "@/components/sections/Navbar";
|
||||
import { PageTitleBanner } from "@/components/shared/PageTitleBanner";
|
||||
import { SectionContainer } from "@/components/shared/SectionContainer";
|
||||
import { PageContainer } from "@/components/shared/PageContainer";
|
||||
import { SectionHeading } from "@/components/shared/SectionHeading";
|
||||
import { RevealOnView } from "@/components/shared/RevealOnView";
|
||||
import { PreFooterCTA } from "@/components/shared/PreFooterCTA";
|
||||
import { resources } from "@/data/site-pages";
|
||||
|
||||
export const metadata = {
|
||||
title: "Resources",
|
||||
description:
|
||||
"Ideas for the digital enterprise — perspectives on cloud, data, AI, and modern engineering.",
|
||||
};
|
||||
|
||||
export default function ResourcesPage() {
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main className="bg-white">
|
||||
<PageTitleBanner
|
||||
title="Resources"
|
||||
breadcrumbs={[{ label: "Home", href: "/" }, { label: "Resources" }]}
|
||||
/>
|
||||
<SectionContainer paddingY="lg" className="px-[20px]">
|
||||
<PageContainer>
|
||||
<SectionHeading
|
||||
tag="[ insights ]"
|
||||
title="The areas we help enterprises navigate"
|
||||
description="Articles and guides will be published here. These are the domains Tenext advises on across cloud, data, AI, and product engineering."
|
||||
titleClassName="text-tenext-dark max-w-[720px]"
|
||||
descriptionClassName="max-w-[620px]"
|
||||
className="mb-[50px]"
|
||||
/>
|
||||
|
||||
<div className="grid grid-cols-1 gap-[20px] md:grid-cols-2 lg:grid-cols-3">
|
||||
{resources.map((item, index) => (
|
||||
<RevealOnView key={item.id} delay={index * 90}>
|
||||
<article className="flex h-full flex-col gap-[15px] rounded-[25px] border border-tenext-card-border p-[40px] transition-transform duration-300 hover:-translate-y-2">
|
||||
<div className="text-[13px] font-semibold uppercase tracking-[0.1em] text-tenext-teal">
|
||||
{item.category}
|
||||
</div>
|
||||
<h3 className="font-[var(--font-sora)] text-[22px] font-bold leading-[1.3] text-tenext-dark">
|
||||
{item.title}
|
||||
</h3>
|
||||
<p className="text-[16px] leading-[1.7] text-tenext-text-muted">
|
||||
{item.description}
|
||||
</p>
|
||||
</article>
|
||||
</RevealOnView>
|
||||
))}
|
||||
</div>
|
||||
</PageContainer>
|
||||
</SectionContainer>
|
||||
<PreFooterCTA />
|
||||
</main>
|
||||
</>
|
||||
);
|
||||
}
|
||||
13
app/robots.ts
Normal file
13
app/robots.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { MetadataRoute } from "next";
|
||||
import { siteConfig } from "@/data/site-config";
|
||||
|
||||
export default function robots(): MetadataRoute.Robots {
|
||||
return {
|
||||
rules: {
|
||||
userAgent: "*",
|
||||
allow: "/",
|
||||
},
|
||||
sitemap: `${siteConfig.url}/sitemap.xml`,
|
||||
host: siteConfig.url,
|
||||
};
|
||||
}
|
||||
@@ -1,16 +1,18 @@
|
||||
import { Navbar } from "@/components/aiero/Navbar";
|
||||
import { Navbar } from "@/components/sections/Navbar";
|
||||
import { PageTitleBanner } from "@/components/shared/PageTitleBanner";
|
||||
import { MarqueeStrip } from "@/components/aiero/MarqueeStrip";
|
||||
import { MarqueeStrip } from "@/components/sections/MarqueeStrip";
|
||||
import { ContactFormSection } from "@/components/shared/ContactFormSection";
|
||||
import { PartnerLogosSection } from "@/components/shared/PartnerLogosSection";
|
||||
|
||||
import { ServiceCardsGrid } from "@/components/aiero/services/ServiceCardsGrid";
|
||||
import { ServiceFeaturesSection } from "@/components/aiero/services/ServiceFeaturesSection";
|
||||
import { TestimonialsSection } from "@/components/aiero/services/TestimonialsSection";
|
||||
import { PricingSection } from "@/components/aiero/services/PricingSection";
|
||||
import { ServiceCardsGrid } from "@/components/sections/services/ServiceCardsGrid";
|
||||
import { ServiceFeaturesSection } from "@/components/sections/services/ServiceFeaturesSection";
|
||||
import { DeliveryPrinciplesSection } from "@/components/sections/services/DeliveryPrinciplesSection";
|
||||
import { EngagementModelsSection } from "@/components/sections/services/EngagementModelsSection";
|
||||
|
||||
export const metadata = {
|
||||
title: "Services - tenext",
|
||||
title: "Services",
|
||||
description:
|
||||
"Technology engineering, cloud, AI & data science, enterprise mobility, and digital commerce services for enterprises.",
|
||||
};
|
||||
|
||||
export default function ServicesPage() {
|
||||
@@ -19,14 +21,14 @@ export default function ServicesPage() {
|
||||
<Navbar />
|
||||
<main className="min-h-screen bg-tenext-dark">
|
||||
<PageTitleBanner
|
||||
title="Services Page"
|
||||
breadcrumbs={[{ label: "Services Page" }]}
|
||||
title="Services"
|
||||
breadcrumbs={[{ label: "Home", href: "/" }, { label: "Services" }]}
|
||||
/>
|
||||
<ServiceCardsGrid />
|
||||
<MarqueeStrip text="/ Neural Networks in shaping the future of technology." />
|
||||
<MarqueeStrip text="/ Building the digital backbone for enterprises across industries." />
|
||||
<ServiceFeaturesSection />
|
||||
<TestimonialsSection />
|
||||
<PricingSection />
|
||||
<DeliveryPrinciplesSection />
|
||||
<EngagementModelsSection />
|
||||
<PartnerLogosSection />
|
||||
<ContactFormSection />
|
||||
</main>
|
||||
|
||||
25
app/sitemap.ts
Normal file
25
app/sitemap.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import type { MetadataRoute } from "next";
|
||||
import { siteConfig } from "@/data/site-config";
|
||||
|
||||
/** Top-level routes, highest priority first. */
|
||||
const routes = [
|
||||
{ path: "/", priority: 1.0 },
|
||||
{ path: "/about", priority: 0.8 },
|
||||
{ path: "/services", priority: 0.9 },
|
||||
{ path: "/solutions", priority: 0.9 },
|
||||
{ path: "/industries", priority: 0.8 },
|
||||
{ path: "/case-studies", priority: 0.7 },
|
||||
{ path: "/resources", priority: 0.6 },
|
||||
{ path: "/careers", priority: 0.6 },
|
||||
{ path: "/contacts", priority: 0.7 },
|
||||
{ path: "/privacy", priority: 0.3 },
|
||||
{ path: "/terms", priority: 0.3 },
|
||||
];
|
||||
|
||||
export default function sitemap(): MetadataRoute.Sitemap {
|
||||
return routes.map(({ path, priority }) => ({
|
||||
url: `${siteConfig.url}${path}`,
|
||||
changeFrequency: "monthly",
|
||||
priority,
|
||||
}));
|
||||
}
|
||||
34
app/solutions/page.tsx
Normal file
34
app/solutions/page.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
import { Navbar } from "@/components/sections/Navbar";
|
||||
import { PageTitleBanner } from "@/components/shared/PageTitleBanner";
|
||||
import { MarqueeStrip } from "@/components/sections/MarqueeStrip";
|
||||
import { AnchoredCardGrid } from "@/components/shared/AnchoredCardGrid";
|
||||
import { PreFooterCTA } from "@/components/shared/PreFooterCTA";
|
||||
import { solutions } from "@/data/site-pages";
|
||||
|
||||
export const metadata = {
|
||||
title: "Solutions",
|
||||
description:
|
||||
"Digital transformation, product development, IoT, SMAC, DevOps, and blockchain solutions engineered for enterprise outcomes.",
|
||||
};
|
||||
|
||||
export default function SolutionsPage() {
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main className="bg-white">
|
||||
<PageTitleBanner
|
||||
title="Solutions"
|
||||
breadcrumbs={[{ label: "Home", href: "/" }, { label: "Solutions" }]}
|
||||
/>
|
||||
<AnchoredCardGrid
|
||||
tag="[ solutions ]"
|
||||
title="Mapping capability to your business problems"
|
||||
description="We pair engineering depth with a diagnostic approach, so every solution fits your existing systems and delivers measurable value."
|
||||
items={solutions}
|
||||
/>
|
||||
<MarqueeStrip text="/ Building the digital backbone for enterprises across industries." />
|
||||
<PreFooterCTA />
|
||||
</main>
|
||||
</>
|
||||
);
|
||||
}
|
||||
27
app/terms/page.tsx
Normal file
27
app/terms/page.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
import { Navbar } from "@/components/sections/Navbar";
|
||||
import { PageTitleBanner } from "@/components/shared/PageTitleBanner";
|
||||
import { LegalContent } from "@/components/shared/LegalContent";
|
||||
import { PreFooterCTA } from "@/components/shared/PreFooterCTA";
|
||||
import { termsOfUse } from "@/data/legal";
|
||||
|
||||
export const metadata = {
|
||||
title: "Terms of Use",
|
||||
description:
|
||||
"The terms that govern your use of the Tenext Technologies website.",
|
||||
};
|
||||
|
||||
export default function TermsPage() {
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main className="bg-white">
|
||||
<PageTitleBanner
|
||||
title="Terms of Use"
|
||||
breadcrumbs={[{ label: "Home", href: "/" }, { label: "Terms of Use" }]}
|
||||
/>
|
||||
<LegalContent sections={termsOfUse} />
|
||||
<PreFooterCTA />
|
||||
</main>
|
||||
</>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user