update home page

This commit is contained in:
2026-07-30 12:58:31 +05:30
parent 9768eabe4d
commit af8a9d5de1
80 changed files with 46814 additions and 1535 deletions

164
AGENTS.md
View File

@@ -1,7 +1,9 @@
<!-- BEGIN:nextjs-agent-rules -->
# This is NOT the Next.js you know
This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices.
<!-- END:nextjs-agent-rules -->
# Code Maintainability Rules
@@ -40,14 +42,14 @@ Do NOT hardcode the same values across multiple sections.
Create shared design tokens for:
* Colors
* Typography
* Border Radius
* Shadows
* Container Widths
* Section Spacing
* Button Styles
* Animation Presets
- Colors
- Typography
- Border Radius
- Shadows
- Container Widths
- Section Spacing
- Button Styles
- Animation Presets
## Color System
@@ -55,12 +57,12 @@ All colors must come from a shared theme file.
Examples:
* Primary
* Secondary
* Accent
* Background
* Surface
* Border
- Primary
- Secondary
- Accent
- Background
- Surface
- Border
Do not repeat hex values throughout the project.
@@ -72,11 +74,11 @@ Create shared typography styles.
Examples:
* Hero Title
* Section Title
* Card Title
* Body Text
* Small Text
- Hero Title
- Section Title
- Card Title
- Body Text
- Small Text
Do not redefine font sizes in every section.
@@ -86,12 +88,12 @@ Changing typography tokens should update all matching sections.
If multiple sections use the same UI pattern:
* Card
* Button
* Badge
* Section Header
* CTA Block
* Statistic Counter
- Card
- Button
- Badge
- Section Header
- CTA Block
- Statistic Counter
Create one reusable component.
@@ -105,9 +107,9 @@ Create common section spacing tokens.
Examples:
* sectionPaddingY
* sectionPaddingX
* containerWidth
- sectionPaddingY
- sectionPaddingX
- containerWidth
All sections must use the same spacing system.
@@ -119,9 +121,9 @@ All major sections must use the same container.
Examples:
* Container
* PageContainer
* SectionContainer
- Container
- PageContainer
- SectionContainer
Do not create unique widths for every section.
@@ -131,10 +133,10 @@ Create reusable animation presets.
Examples:
* fadeUp
* staggerChildren
* scaleIn
* slideIn
- fadeUp
- staggerChildren
- scaleIn
- slideIn
Do not redefine animations in every component.
@@ -144,9 +146,9 @@ Common image styles should be reusable.
Examples:
* cardImage
* heroImage
* avatarImage
- cardImage
- heroImage
- avatarImage
Avoid repeating image styling logic.
@@ -156,9 +158,9 @@ If the same pattern exists in multiple sections, do not update only one section.
Examples:
* Hero Title
* About Title
* Feature Title
- Hero Title
- About Title
- Feature Title
Update the shared source.
@@ -170,10 +172,10 @@ Top, Bottom, Left, and Right spacing must follow the same design system.
Avoid random values such as:
* 72px
* 94px
* 113px
* 147px
- 72px
- 94px
- 113px
- 147px
Use predefined spacing tokens only.
@@ -183,16 +185,16 @@ The entire site should feel visually consistent.
## Mission
Recreate the Aiero Home 9 experience with maximum visual fidelity while keeping the codebase maintainable and production-ready.
Recreate the tenext Home 9 experience with maximum visual fidelity while keeping the codebase maintainable and production-ready.
## Agent Behavior
Before making changes:
* Analyze existing component
* Compare against reference
* Identify exact mismatch
* Apply minimal fix
- Analyze existing component
- Compare against reference
- Identify exact mismatch
- Apply minimal fix
Do not perform large rewrites unless explicitly requested.
@@ -210,36 +212,36 @@ Do not perform large rewrites unless explicitly requested.
Verify:
* Hero height
* Hero width
* Artwork scale
* Artwork position
* Heading width
* Heading line breaks
* CTA placement
* Scroll indicator position
* Navbar alignment
- Hero height
- Hero width
- Artwork scale
- Artwork position
- Heading width
- Heading line breaks
- CTA placement
- Scroll indicator position
- Navbar alignment
## Card Analysis Checklist
Verify:
* Border radius
* Padding
* Image crop
* Text spacing
* Card proportions
* Responsive behavior
- Border radius
- Padding
- Image crop
- Text spacing
- Card proportions
- Responsive behavior
## Forbidden Actions
Do NOT:
* Replace sections without approval
* Change color system globally
* Introduce new layouts
* Remove existing functionality
* Rewrite working components
- Replace sections without approval
- Change color system globally
- Introduce new layouts
- Remove existing functionality
- Rewrite working components
## Preferred Workflow
@@ -266,10 +268,10 @@ Target:
Every change should improve:
* Layout
* Alignment
* Proportions
* Visual balance
- Layout
- Alignment
- Proportions
- Visual balance
Avoid subjective redesign decisions.
@@ -277,13 +279,13 @@ Reference fidelity is more important than personal preference.
## Code Quality Rules
* TypeScript strict
* Reusable components
* Clean props
* No duplicated code
* No inline magic values
* Use Tailwind consistently
- TypeScript strict
- Reusable components
- Clean props
- No duplicated code
- No inline magic values
- Use Tailwind consistently
## Final Goal
Build a production-quality Next.js implementation that visually matches Aiero Home 9 as closely as possible while maintaining clean architecture and long-term maintainability.
Build a production-quality Next.js implementation that visually matches tenext Home 9 as closely as possible while maintaining clean architecture and long-term maintainability.

View File

@@ -1,9 +1,10 @@
@AGENTS.md
# CLAUDE.md
## Project Overview
This project is a high-fidelity recreation of the Aiero Home 9 landing page using Next.js App Router, TypeScript, Tailwind CSS, and Framer Motion.
This project is a high-fidelity recreation of the tenext Home 9 landing page using Next.js App Router, TypeScript, Tailwind CSS, and Framer Motion.
The goal is NOT to redesign the page.
@@ -23,15 +24,15 @@ Common design decisions must come from shared sources, not repeated one-off valu
Centralize:
* Colors
* Typography
* Border radius
* Shadows
* Container widths
* Section spacing
* Button styles
* Animation presets
* Image styles
- Colors
- Typography
- Border radius
- Shadows
- Container widths
- Section spacing
- Button styles
- Animation presets
- Image styles
Use reusable components for repeated patterns such as cards, buttons, badges, section headers, CTA blocks, and statistic counters.
@@ -43,20 +44,20 @@ When the same pattern appears in multiple sections, update the shared token, com
The homepage is:
* Editorial
* Card-driven
* Visual-first
* Premium AI agency
* Image-heavy
* Modern but minimal
- Editorial
- Card-driven
- Visual-first
- Premium AI agency
- Image-heavy
- Modern but minimal
Avoid:
* Generic SaaS layouts
* Dashboard-first designs
* Startup template aesthetics
* Excessive gradients
* Excessive glassmorphism
- Generic SaaS layouts
- Dashboard-first designs
- Startup template aesthetics
- Excessive gradients
- Excessive glassmorphism
## Hero Section Requirements
@@ -64,11 +65,11 @@ Hero is the most important section.
Must maintain:
* Large background artwork
* Left aligned content
* Vertical Scroll Down element
* Large heading
* Compact CTA
- Large background artwork
- Left aligned content
- Vertical Scroll Down element
- Large heading
- Compact CTA
Hero artwork should dominate visual composition.
@@ -81,30 +82,30 @@ Target ratio:
Cards should:
* Use large border radii
* Have consistent spacing
* Maintain editorial proportions
* Feel like magazine blocks
- Use large border radii
- Have consistent spacing
- Maintain editorial proportions
- Feel like magazine blocks
Do not:
* Make all cards equal height
* Convert cards into dashboard widgets
* Add unnecessary statistics
- Make all cards equal height
- Convert cards into dashboard widgets
- Add unnecessary statistics
## Typography Rules
Headings:
* Strong
* Bold
* Editorial
- Strong
- Bold
- Editorial
Body text:
* Simple
* Readable
* Secondary
- Simple
- Readable
- Secondary
Avoid oversized line lengths.
@@ -114,16 +115,16 @@ Use subtle animations only.
Allowed:
* Fade up
* Hover lift
* Opacity transitions
* Small parallax
- Fade up
- Hover lift
- Opacity transitions
- Small parallax
Avoid:
* Excessive motion
* Heavy GSAP timelines
* Distracting effects
- Excessive motion
- Heavy GSAP timelines
- Distracting effects
## Responsive Rules

View File

@@ -8,15 +8,18 @@ import { PartnerLogosSection } from "@/components/shared/PartnerLogosSection";
import { TeamSection } from "@/components/aiero/about/TeamSection";
export const metadata = {
title: "About us - Aiero",
title: "About us - tenext",
};
export default function AboutPage() {
return (
<>
<Navbar />
<main className="min-h-screen bg-aiero-dark">
<PageTitleBanner title="About us" breadcrumbs={[{ label: "About us" }]} />
<main className="min-h-screen bg-tenext-dark">
<PageTitleBanner
title="About us"
breadcrumbs={[{ label: "About us" }]}
/>
<AboutIntroSection />
<MarqueeStrip text="/ Neural Networks in shaping the future of technology." />
<MissionSection />

View File

@@ -4,15 +4,18 @@ import { ContactFormSection } from "@/components/shared/ContactFormSection";
import { MapSection } from "@/components/aiero/contacts/MapSection";
export const metadata = {
title: "Contacts - Aiero",
title: "Contacts - tenext",
};
export default function ContactsPage() {
return (
<>
<Navbar />
<main className="min-h-screen bg-aiero-dark">
<PageTitleBanner title="Contacts" breadcrumbs={[{ label: "Contacts" }]} />
<main className="min-h-screen bg-tenext-dark">
<PageTitleBanner
title="Contacts"
breadcrumbs={[{ label: "Contacts" }]}
/>
<ContactFormSection />
<MapSection />
</main>

View File

@@ -1,21 +1,22 @@
@import "tailwindcss";
:root {
/* ── Aiero color tokens (extracted from source) ── */
--aiero-bg-dark: #1F1F1F;
--aiero-bg-card-dark: #282828;
--aiero-bg-card-border: #3F3F3F;
--aiero-accent-teal: #45D0BD;
--aiero-accent-blue: #44B6E9;
--aiero-accent-red: #EF6464;
--aiero-accent-red-hover: #F57E7E;
--aiero-purple-start: #8258C8;
--aiero-purple-mid: #6766C8;
--aiero-purple-end: #2C84C8;
--aiero-card-purple: #343F78;
--aiero-card-purple-2: #56619E;
--aiero-card-lavender: #AC8DE0;
--aiero-text-muted: #87899B;
/* ── tenext color tokens (extracted from source) ── */
--tenext-bg-dark: #1f1f1f;
--tenext-bg-card-dark: #282828;
--tenext-bg-card-border: #3f3f3f;
--tenext-accent-teal: #45d0bd;
--tenext-accent-blue: #44b6e9;
--tenext-accent-red: #ef6464;
--tenext-accent-red-hover: #f57e7e;
--tenext-purple-start: #8258c8;
--tenext-purple-mid: #6766c8;
--tenext-purple-end: #2c84c8;
--tenext-card-purple: #343f78;
--tenext-card-purple-2: #56619e;
--tenext-card-lavender: #ac8de0;
--tenext-text-muted: #87899b;
--tenext-surface-muted: #ecf0f4;
/* button gradient angles */
--button-border-gradient-angle: 92deg;
@@ -25,21 +26,22 @@
@theme inline {
--color-background: #ffffff;
--color-foreground: #1F1F1F;
--color-aiero-dark: #1F1F1F;
--color-aiero-card-dark: #282828;
--color-aiero-card-border: #3F3F3F;
--color-aiero-teal: #45D0BD;
--color-aiero-blue: #44B6E9;
--color-aiero-red: #EF6464;
--color-aiero-red-hover: #F57E7E;
--color-aiero-purple-start: #8258C8;
--color-aiero-purple-mid: #6766C8;
--color-aiero-purple-end: #2C84C8;
--color-aiero-card-purple: #343F78;
--color-aiero-card-purple-2: #56619E;
--color-aiero-card-lavender: #AC8DE0;
--color-aiero-text-muted: #87899B;
--color-foreground: #1f1f1f;
--color-tenext-dark: #1f1f1f;
--color-tenext-card-dark: #282828;
--color-tenext-card-border: #3f3f3f;
--color-tenext-teal: #45d0bd;
--color-tenext-blue: #44b6e9;
--color-tenext-red: #ef6464;
--color-tenext-red-hover: #f57e7e;
--color-tenext-purple-start: #8258c8;
--color-tenext-purple-mid: #6766c8;
--color-tenext-purple-end: #2c84c8;
--color-tenext-card-purple: #343f78;
--color-tenext-card-purple-2: #56619e;
--color-tenext-card-lavender: #ac8de0;
--color-tenext-text-muted: #87899b;
--color-tenext-surface-muted: #ecf0f4;
--font-sans: var(--font-manrope), ui-sans-serif, system-ui, sans-serif;
--font-sora: var(--font-sora), sans-serif;
@@ -62,7 +64,7 @@ body {
min-height: 100vh;
overflow-x: hidden;
background: #ffffff;
color: #1F1F1F;
color: #1f1f1f;
font-family: var(--font-manrope), ui-sans-serif, system-ui, sans-serif;
font-size: 16px;
line-height: 1.6;
@@ -73,8 +75,8 @@ button {
-webkit-tap-highlight-color: transparent;
}
/* ── Aiero button base ── */
.aiero-button {
/* ── tenext button base ── */
.tenext-button {
display: inline-flex;
align-items: center;
gap: 8px;
@@ -87,7 +89,7 @@ button {
white-space: nowrap;
}
.aiero-button .button-inner {
.tenext-button .button-inner {
position: absolute;
inset: 0;
border-radius: inherit;
@@ -95,20 +97,20 @@ button {
}
/* Solid variant */
.aiero-button-solid {
.tenext-button-solid {
border-style: solid;
border-width: 1px;
}
/* Gradient border variant */
.aiero-button-gradient-border {
.tenext-button-gradient-border {
background: transparent;
border: none;
position: relative;
z-index: 0;
}
.aiero-button-gradient-border::after {
.tenext-button-gradient-border::after {
content: "";
position: absolute;
inset: 0;
@@ -116,17 +118,19 @@ button {
padding: 1.5px;
background: linear-gradient(
var(--button-border-gradient-angle),
var(--aiero-accent-teal) var(--button-gradient-colorstop-1),
var(--aiero-accent-blue) var(--button-gradient-colorstop-2)
var(--tenext-accent-teal) var(--button-gradient-colorstop-1),
var(--tenext-accent-blue) var(--button-gradient-colorstop-2)
);
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
-webkit-mask:
linear-gradient(#fff 0 0) content-box,
linear-gradient(#fff 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
pointer-events: none;
z-index: -1;
}
.aiero-button-gradient-border .button-inner::before {
.tenext-button-gradient-border .button-inner::before {
content: "";
position: absolute;
inset: 0;
@@ -135,40 +139,40 @@ button {
transition: all 0.3s ease;
}
.aiero-button-gradient-border .button-inner::after {
.tenext-button-gradient-border .button-inner::after {
content: "";
position: absolute;
inset: 0;
border-radius: inherit;
background: linear-gradient(
var(--button-border-gradient-angle),
var(--aiero-accent-teal) var(--button-gradient-colorstop-1),
var(--aiero-accent-blue) var(--button-gradient-colorstop-2)
var(--tenext-accent-teal) var(--button-gradient-colorstop-1),
var(--tenext-accent-blue) var(--button-gradient-colorstop-2)
);
opacity: 0;
transition: opacity 0.3s ease;
}
.aiero-button-gradient-border:hover .button-inner::after {
.tenext-button-gradient-border:hover .button-inner::after {
opacity: 1;
}
.aiero-button-gradient-border:hover {
.tenext-button-gradient-border:hover {
color: #333333;
}
/* Gradient fill variant */
.aiero-button-gradient-fill {
.tenext-button-gradient-fill {
background: linear-gradient(
var(--button-border-gradient-angle),
var(--aiero-accent-teal) var(--button-gradient-colorstop-1),
var(--aiero-accent-blue) var(--button-gradient-colorstop-2)
var(--tenext-accent-teal) var(--button-gradient-colorstop-1),
var(--tenext-accent-blue) var(--button-gradient-colorstop-2)
);
border: none;
color: #ffffff;
}
.aiero-button-gradient-fill::after {
.tenext-button-gradient-fill::after {
content: "";
position: absolute;
inset: 0;
@@ -176,10 +180,12 @@ button {
padding: 1.5px;
background: linear-gradient(
var(--button-border-gradient-angle),
var(--aiero-accent-teal) var(--button-gradient-colorstop-1),
var(--aiero-accent-blue) var(--button-gradient-colorstop-2)
var(--tenext-accent-teal) var(--button-gradient-colorstop-1),
var(--tenext-accent-blue) var(--button-gradient-colorstop-2)
);
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
-webkit-mask:
linear-gradient(#fff 0 0) content-box,
linear-gradient(#fff 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
pointer-events: none;
@@ -188,7 +194,7 @@ button {
/* ── Gradient text ── */
.gradient-text-purple {
background: linear-gradient(103deg, #8258C8 0%, #2C84C8 100%);
background: linear-gradient(103deg, #8258c8 0%, #2c84c8 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
@@ -235,7 +241,7 @@ button {
}
}
/* ── Aiero heading animation ── */
/* ── tenext heading animation ── */
@keyframes headingReveal {
from {
opacity: 0;
@@ -277,14 +283,20 @@ button {
@keyframes heroBgFloat {
0%,
100% {
transform: translate3d(var(--hero-parallax-x, 0), var(--hero-parallax-y, 0), 0) scale(1.02);
transform: translate3d(
var(--hero-parallax-x, 0),
var(--hero-parallax-y, 0),
0
)
scale(1.02);
}
50% {
transform: translate3d(
calc(var(--hero-parallax-x, 0px) + 2px),
calc(var(--hero-parallax-y, 0px) - 3px),
0
) scale(1.025);
calc(var(--hero-parallax-x, 0px) + 2px),
calc(var(--hero-parallax-y, 0px) - 3px),
0
)
scale(1.025);
}
}
@@ -320,7 +332,9 @@ button {
.nav-link-swap > .text-active {
display: inline-block;
transition: opacity 0.3s ease, transform 0.3s ease;
transition:
opacity 0.3s ease,
transform 0.3s ease;
}
.nav-link-swap > span:not(.text-active) {
@@ -329,7 +343,9 @@ button {
top: 14px;
opacity: 0;
transform: translateY(150%);
transition: opacity 0.3s ease, transform 0.3s ease;
transition:
opacity 0.3s ease,
transform 0.3s ease;
}
.nav-link-swap:hover > .text-active {
@@ -386,16 +402,18 @@ button {
transform: translateY(0);
}
.aiero-card {
.tenext-card {
transition:
transform 0.32s ease,
box-shadow 0.32s ease,
border-color 0.32s ease;
}
.aiero-card:hover {
.tenext-card:hover {
transform: translateY(-4px);
box-shadow: 0 22px 55px rgba(31, 31, 31, 0.16), 0 0 0 1px rgba(69, 208, 189, 0.22);
box-shadow:
0 22px 55px rgba(31, 31, 31, 0.16),
0 0 0 1px rgba(69, 208, 189, 0.22);
}
/* ── Scroll down button decoration ── */
@@ -427,7 +445,7 @@ button {
}
/* ── Subheading tag ── */
.aiero-subheading {
.tenext-subheading {
display: inline-flex;
align-items: center;
gap: 10px;
@@ -440,7 +458,7 @@ button {
position: relative;
}
.aiero-subheading::before {
.tenext-subheading::before {
content: "";
width: 30px;
height: 1px;

View File

@@ -22,9 +22,9 @@ const dmSans = DM_Sans({
});
export const metadata: Metadata = {
title: "Home 9 Aiero",
title: "Home 9 tenext",
description:
"Revolutionizing businesses with cutting-edge AI solutions and groundbreaking innovation. Aiero AI agency committed to transforming businesses.",
"Revolutionizing businesses with cutting-edge AI solutions and groundbreaking innovation. tenext AI agency committed to transforming businesses.",
};
export default function RootLayout({

View File

@@ -30,7 +30,7 @@ export default function Home() {
className="relative z-[15] mt-[40px] mb-[-90px] px-[20px] pb-[40px]"
style={{ transform: "rotate(-2.07deg)" }}
>
<div className="h-[130px] w-full rounded-[20px] bg-aiero-dark" />
<div className="h-[130px] w-full rounded-[20px] bg-tenext-dark" />
</section>
<WOWSection />
<FeaturesSection />

View File

@@ -10,15 +10,18 @@ import { TestimonialsSection } from "@/components/aiero/services/TestimonialsSec
import { PricingSection } from "@/components/aiero/services/PricingSection";
export const metadata = {
title: "Services - Aiero",
title: "Services - tenext",
};
export default function ServicesPage() {
return (
<>
<Navbar />
<main className="min-h-screen bg-aiero-dark">
<PageTitleBanner title="Services Page" breadcrumbs={[{ label: "Services Page" }]} />
<main className="min-h-screen bg-tenext-dark">
<PageTitleBanner
title="Services Page"
breadcrumbs={[{ label: "Services Page" }]}
/>
<ServiceCardsGrid />
<MarqueeStrip text="/ Neural Networks in shaping the future of technology." />
<ServiceFeaturesSection />

View File

@@ -4,47 +4,44 @@ export function BenefitsGridSection() {
return (
<section className="relative overflow-hidden bg-white px-[20px] pb-[60px] md:pb-[100px]">
<div className="mx-auto max-w-[1260px]">
<div className="grid grid-cols-1 gap-[30px] md:grid-cols-3">
{/* Card 1 */}
<div className="flex flex-col gap-[20px] rounded-[25px] border border-aiero-card-border p-[40px] transition-transform duration-300 hover:-translate-y-2">
<h4 className="text-[22px] font-bold leading-[1.3] text-aiero-dark font-[var(--font-sora)]">
<div className="flex flex-col gap-[20px] rounded-[25px] border border-tenext-card-border p-[40px] transition-transform duration-300 hover:-translate-y-2">
<h4 className="text-[22px] font-bold leading-[1.3] text-tenext-dark font-[var(--font-sora)]">
AI-Powered Marketing & Personalization
</h4>
<ul className="flex flex-col gap-[15px] mt-[10px]">
<li className="flex items-start gap-[10px] text-[16px] text-aiero-text-muted">
<span className="mt-[5px] h-[6px] w-[6px] rounded-full bg-aiero-accent-teal shrink-0"></span>
<li className="flex items-start gap-[10px] text-[16px] text-tenext-text-muted">
<span className="mt-[5px] h-[6px] w-[6px] rounded-full bg-tenext-accent-teal shrink-0"></span>
Hyper-personalized recommendations
</li>
<li className="flex items-start gap-[10px] text-[16px] text-aiero-text-muted">
<span className="mt-[5px] h-[6px] w-[6px] rounded-full bg-aiero-accent-teal shrink-0"></span>
<li className="flex items-start gap-[10px] text-[16px] text-tenext-text-muted">
<span className="mt-[5px] h-[6px] w-[6px] rounded-full bg-tenext-accent-teal shrink-0"></span>
AI-driven ad targeting & optimization
</li>
</ul>
</div>
{/* Card 2 */}
<div className="flex flex-col gap-[20px] rounded-[25px] border border-aiero-card-border p-[40px] transition-transform duration-300 hover:-translate-y-2">
<h4 className="text-[22px] font-bold leading-[1.3] text-aiero-dark font-[var(--font-sora)]">
<div className="flex flex-col gap-[20px] rounded-[25px] border border-tenext-card-border p-[40px] transition-transform duration-300 hover:-translate-y-2">
<h4 className="text-[22px] font-bold leading-[1.3] text-tenext-dark font-[var(--font-sora)]">
Seamless AI integration for your business success
</h4>
<p className="text-[16px] leading-[1.6] text-aiero-text-muted mt-[10px]">
Seamless integration with existing systems and platforms & Scalable and flexible architecture
<p className="text-[16px] leading-[1.6] text-tenext-text-muted mt-[10px]">
Seamless integration with existing systems and platforms &
Scalable and flexible architecture
</p>
</div>
{/* Card 3 (OpenAI Logo) */}
<div className="flex items-center justify-center rounded-[25px] border border-aiero-card-border bg-[#F8F9FA] p-[40px] transition-transform duration-300 hover:-translate-y-2">
<img
src="https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2024/12/openai-logo-1.png"
alt="OpenAI Logo"
<div className="flex items-center justify-center rounded-[25px] border border-tenext-card-border bg-[#F8F9FA] p-[40px] transition-transform duration-300 hover:-translate-y-2">
<img
src="/images/tenext/openai-logo-1.png"
alt="OpenAI Logo"
className="w-[180px] h-auto object-contain"
/>
</div>
</div>
</div>
</section>
);

View File

@@ -5,21 +5,22 @@ import { SectionHeading } from "@/components/shared/SectionHeading";
const blogPosts = [
{
title: "How to Build a Custom AI Model for Your Business",
image: "https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2024/12/portrait-confident-man.jpg", // Placeholder
image: "/images/tenext/portrait-confident-man.jpg",
category: "AI Technology",
date: "March 15, 2025",
link: "/blog/custom-ai-model",
},
{
title: "The Future of Machine Learning in Enterprise",
image: "https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2025/02/Group-18301.jpg", // Placeholder
image: "/images/tenext/Group-18301.jpg",
category: "Machine Learning",
date: "April 2, 2025",
link: "/blog/machine-learning-enterprise",
},
{
title: "Ethics in AI: What You Need to Know",
image: "https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2024/12/3d-woman-shape-glowing-with-bright-holographic-colors-1-min.png", // Placeholder
image:
"/images/tenext/3d-woman-shape-glowing-with-bright-holographic-colors-1-min.png",
category: "AI Ethics",
date: "April 10, 2025",
link: "/blog/ethics-in-ai",
@@ -32,36 +33,39 @@ export function BlogSection() {
<div className="mx-auto max-w-[1260px]">
<div className="mb-[60px] flex flex-col items-center text-center">
<SectionHeading
subtitle="blog"
title="Exploring the world of artificial intelligence with Aiero blogging"
titleClassName="max-w-[800px] text-aiero-dark"
tag="blog"
title="Exploring the world of artificial intelligence with tenext blogging"
titleClassName="max-w-[800px] text-tenext-dark"
/>
</div>
<div className="grid grid-cols-1 gap-[30px] md:grid-cols-2 lg:grid-cols-3">
{blogPosts.map((post, index) => (
<div key={index} className="group flex flex-col overflow-hidden rounded-[25px] border border-aiero-card-border bg-white transition-shadow duration-300 hover:shadow-xl">
<div
key={index}
className="group flex flex-col overflow-hidden rounded-[25px] border border-tenext-card-border bg-white transition-shadow duration-300 hover:shadow-xl"
>
<div className="relative h-[250px] w-full overflow-hidden">
<img
src={post.image}
alt={post.title}
className="h-full w-full object-cover transition-transform duration-500 group-hover:scale-110"
<img
src={post.image}
alt={post.title}
className="h-full w-full object-cover transition-transform duration-500 group-hover:scale-110"
/>
<div className="absolute left-[20px] top-[20px] rounded-full bg-white px-[15px] py-[5px] text-[12px] font-bold tracking-wide text-aiero-dark uppercase font-[var(--font-sora)]">
<div className="absolute left-[20px] top-[20px] rounded-full bg-white px-[15px] py-[5px] text-[12px] font-bold tracking-wide text-tenext-dark uppercase font-[var(--font-sora)]">
{post.category}
</div>
</div>
<div className="flex flex-col p-[30px]">
<div className="mb-[15px] text-[14px] text-aiero-text-muted">
<div className="mb-[15px] text-[14px] text-tenext-text-muted">
{post.date}
</div>
<h4 className="mb-[20px] text-[22px] font-bold leading-[1.3] text-aiero-dark font-[var(--font-sora)] transition-colors group-hover:text-aiero-accent-teal">
<h4 className="mb-[20px] text-[22px] font-bold leading-[1.3] text-tenext-dark font-[var(--font-sora)] transition-colors group-hover:text-tenext-accent-teal">
<Link href={post.link}>{post.title}</Link>
</h4>
<div className="mt-auto">
<Link
href={post.link}
className="inline-flex items-center gap-[10px] text-[15px] font-bold text-aiero-dark font-[var(--font-sora)] hover:text-aiero-accent-teal"
<Link
href={post.link}
className="inline-flex items-center gap-[10px] text-[15px] font-bold text-tenext-dark font-[var(--font-sora)] hover:text-tenext-accent-teal"
>
Read more
<ArrowUpRight className="h-[18px] w-[18px]" />

View File

@@ -6,25 +6,25 @@ import { RevealOnView } from "@/components/shared/RevealOnView";
const socialIcons = [
{
src: "/images/aiero/messenger-logo-1.png",
src: "/images/tenext/messenger-logo-1.png",
alt: "Messenger",
width: 57,
height: 59,
},
{
src: "/images/aiero/skype-logo.png",
src: "/images/tenext/skype-logo.png",
alt: "Skype",
width: 56,
height: 57,
},
{
src: "/images/aiero/telegram-symbol-1.png",
src: "/images/tenext/telegram-symbol-1.png",
alt: "Telegram",
width: 59,
height: 58,
},
{
src: "/images/aiero/discord-1.png",
src: "/images/tenext/discord-1.png",
alt: "Discord",
width: 54,
height: 54,
@@ -35,136 +35,134 @@ export function CardsGrid() {
return (
<section className="px-[20px] pb-[20px]">
<div className="grid grid-cols-1 gap-[20px] md:grid-cols-2 xl:grid-cols-[1fr_1fr_0.73fr]">
{/* Card 1 */}
<RevealOnView delay={0}>
<div className="aiero-card group relative flex h-full flex-col justify-between overflow-hidden rounded-[25px] bg-aiero-card-purple p-[40px_35px_45px_35px] lg:p-[50px_45px_50px_45px]">
<Image
src="/images/aiero/assistant-artificial-intelligence-min.png"
alt=""
className="pointer-events-none absolute right-[-10px] top-[-10px] h-auto w-[150px] object-contain object-right-top transition-transform duration-500 group-hover:scale-105 lg:w-[190px]"
width={220}
height={274}
/>
<div className="relative z-10 flex gap-[6px]">
<span className="rounded-[15px] border border-white px-[20px] py-[5px] text-[12px] text-white transition-colors hover:border-aiero-teal hover:text-aiero-teal">
Solutions
</span>
<span className="rounded-[15px] border border-white px-[20px] py-[5px] text-[12px] text-white transition-colors hover:border-aiero-teal hover:text-aiero-teal">
Plugins
</span>
</div>
<div className="relative z-10 mt-[66px] max-w-[460px] lg:mt-[110px]">
<CardHeading
title="Transform customer support with intelligent AI chatbots for seamless and effortless service"
titleClassName="text-white"
wrapperClassName="mb-0"
<div className="tenext-card group relative flex h-full flex-col justify-between overflow-hidden rounded-[25px] bg-tenext-card-purple p-[40px_35px_45px_35px] lg:p-[50px_45px_50px_45px]">
<Image
src="/images/tenext/assistant-artificial-intelligence-min.png"
alt=""
className="pointer-events-none absolute right-[-10px] top-[-10px] h-auto w-[150px] object-contain object-right-top transition-transform duration-500 group-hover:scale-105 lg:w-[190px]"
width={220}
height={274}
/>
<div className="mt-[36px] flex items-center gap-[20px]">
{socialIcons.map((icon) => (
<Image
key={icon.alt}
src={icon.src}
alt={icon.alt}
width={icon.width}
height={icon.height}
className="h-auto w-auto"
/>
))}
<div className="relative z-10 flex gap-[6px]">
<span className="rounded-[15px] border border-white px-[20px] py-[5px] text-[12px] text-white transition-colors hover:border-tenext-teal hover:text-tenext-teal">
Solutions
</span>
<span className="rounded-[15px] border border-white px-[20px] py-[5px] text-[12px] text-white transition-colors hover:border-tenext-teal hover:text-tenext-teal">
Plugins
</span>
</div>
<div className="relative z-10 mt-[66px] max-w-[460px] lg:mt-[110px]">
<CardHeading
title="Transform customer support with intelligent AI chatbots for seamless and effortless service"
titleClassName="text-white"
wrapperClassName="mb-0"
/>
<div className="mt-[36px] flex items-center gap-[20px]">
{socialIcons.map((icon) => (
<Image
key={icon.alt}
src={icon.src}
alt={icon.alt}
width={icon.width}
height={icon.height}
className="h-auto w-auto"
/>
))}
</div>
</div>
<IconButton />
</div>
<IconButton />
</div>
</RevealOnView>
{/* Card 2 */}
<RevealOnView delay={110}>
<div className="aiero-card group relative flex h-full flex-col justify-between overflow-hidden rounded-[25px] bg-aiero-card-purple-2 p-[40px_35px_45px_35px] lg:p-[50px_45px_50px_45px]">
<div className="absolute inset-0 bg-aiero-card-purple-2" />
<div className="absolute inset-0 bg-[url('/images/aiero/c0eb2845-min.png')] bg-[length:60%] bg-right-bottom bg-no-repeat transition-transform duration-500 group-hover:scale-105" />
<div className="absolute inset-0 bg-gradient-to-b from-transparent via-transparent to-[#454f88]/16" />
<div className="relative z-10 mb-[54px] max-w-[515px]">
<div className="mb-[24px] inline-flex h-[38px] w-[38px] items-center justify-center">
<ChartIcon className="h-full w-full text-white" />
<div className="tenext-card group relative flex h-full flex-col justify-between overflow-hidden rounded-[25px] bg-tenext-card-purple-2 p-[40px_35px_45px_35px] lg:p-[50px_45px_50px_45px]">
<div className="absolute inset-0 bg-tenext-card-purple-2" />
<div className="absolute inset-0 bg-[url('/images/tenext/c0eb2845-min.png')] bg-[length:60%] bg-right-bottom bg-no-repeat transition-transform duration-500 group-hover:scale-105" />
<div className="absolute inset-0 bg-gradient-to-b from-transparent via-transparent to-[#454f88]/16" />
<div className="relative z-10 mb-[54px] max-w-[515px]">
<div className="mb-[24px] inline-flex h-[38px] w-[38px] items-center justify-center">
<ChartIcon className="h-full w-full text-white" />
</div>
<CardHeading
title="All-in-One AI solutions dashboard for smarter business insights & innovation."
titleClassName="text-white"
wrapperClassName="mb-[18px]"
/>
<p className="max-w-[448px] text-[16px] leading-[1.85] text-white">
Explore our comprehensive AI solutions dashboard designed to
provide actionable business insights and drive innovation
</p>
</div>
<CardHeading
title="All-in-One AI solutions dashboard for smarter business insights & innovation."
titleClassName="text-white"
wrapperClassName="mb-[18px]"
/>
<p className="max-w-[448px] text-[16px] leading-[1.85] text-white">
Explore our comprehensive AI solutions dashboard designed to
provide actionable business insights and drive innovation
</p>
<IconButton />
</div>
<IconButton />
</div>
</RevealOnView>
{/* Card 3 (spans 2 columns) */}
<RevealOnView className="md:col-span-2 xl:col-span-1" delay={220}>
<div className="flex h-full flex-col gap-[20px]">
{/* Card 3 - Top half */}
<div className="aiero-card relative flex min-h-[176px] flex-col justify-center overflow-hidden rounded-[25px] bg-aiero-card-lavender p-[40px] lg:p-[45px_50px]">
<a href="#" className="absolute inset-0 z-20" aria-label="Happy clients" />
<div className="relative z-10 flex flex-col items-start">
<div>
<Counter
target={500}
suffix="K+"
numberClassName="font-[var(--font-manrope)] text-[82px] font-extrabold leading-none tracking-[-0.04em] text-transparent"
style={{
WebkitTextStroke: "1px rgba(255,255,255,0.16)",
backgroundImage:
"linear-gradient(180deg, rgba(255,255,255,0.44) 0%, rgba(255,255,255,0.06) 90%)",
}}
<div className="flex h-full flex-col gap-[20px]">
{/* Card 3 - Top half */}
<div className="tenext-card relative flex min-h-[176px] flex-col justify-center overflow-hidden rounded-[25px] bg-tenext-card-lavender p-[40px] lg:p-[45px_50px]">
<a
href="#"
className="absolute inset-0 z-20"
aria-label="Happy clients"
/>
<div className="relative z-10 flex flex-col items-start">
<div>
<Counter
target={500}
suffix="K+"
numberClassName="font-[var(--font-manrope)] text-[82px] font-extrabold leading-none tracking-[-0.04em] text-transparent"
style={{
WebkitTextStroke: "1px rgba(255,255,255,0.16)",
backgroundImage:
"linear-gradient(180deg, rgba(255,255,255,0.44) 0%, rgba(255,255,255,0.06) 90%)",
}}
/>
</div>
<div className="mt-[4px]">
<h4 className="font-[var(--font-manrope)] text-[16px] font-medium leading-[20px] text-white">
Happy clients
</h4>
</div>
</div>
</div>
{/* Card 3 - Bottom half */}
<div className="tenext-card group relative flex flex-col justify-between overflow-hidden rounded-[25px] bg-tenext-card-dark p-[40px_35px_45px_35px] lg:p-[50px_45px_45px_45px]">
<div className="absolute inset-0 bg-[url('/images/tenext/Layer_2-min.jpg')] bg-cover bg-center transition-all duration-500 group-hover:scale-105" />
<div className="relative z-10 mb-[26px]">
<CardHeading
title="Unlock your full potential with effortless OpenAI integration solutions"
titleClassName="text-white max-w-[80%]"
wrapperClassName="mb-0"
/>
</div>
<div className="mt-[4px]">
<h4 className="font-[var(--font-manrope)] text-[16px] font-medium leading-[20px] text-white">
Happy clients
</h4>
<div className="relative z-10">
<Image
src="/images/tenext/openai-logo-1.png"
alt="OpenAI"
width={272}
height={71}
className="h-auto w-[138px] lg:w-[152px]"
/>
</div>
</div>
</div>
{/* Card 3 - Bottom half */}
<div className="aiero-card group relative flex flex-col justify-between overflow-hidden rounded-[25px] bg-aiero-card-dark p-[40px_35px_45px_35px] lg:p-[50px_45px_45px_45px]">
<div
className="absolute inset-0 bg-[url('/images/aiero/Layer_2-min.jpg')] bg-cover bg-center transition-all duration-500 group-hover:scale-105"
/>
<div className="relative z-10 mb-[26px]">
<CardHeading
title="Unlock your full potential with effortless OpenAI integration solutions"
titleClassName="text-white max-w-[80%]"
wrapperClassName="mb-0"
/>
</div>
<div className="relative z-10">
<Image
src="/images/aiero/openai-logo-1.png"
alt="OpenAI"
width={272}
height={71}
className="h-auto w-[138px] lg:w-[152px]"
/>
</div>
</div>
</div>
</RevealOnView>
</div>
</section>
);

View File

@@ -7,9 +7,9 @@ export function FeaturesSection() {
<div className="mx-auto max-w-[1260px]">
{/* Top text and separator */}
<div className="mb-[70px] pr-[10%]">
<div className="mb-[20px] h-px w-[130px] bg-aiero-card-border" />
<div className="mb-[20px] h-px w-[130px] bg-tenext-card-border" />
<h2
className="max-w-[700px] tracking-[-0.03em] text-white"
className="max-w-[700px] tracking-[-0.03em] text-tenext-dark"
style={{
fontFamily: "var(--font-sora)",
fontSize: "clamp(32px, 4vw, 56px)",
@@ -23,101 +23,107 @@ export function FeaturesSection() {
{/* Feature Cards Grid */}
<div className="grid grid-cols-1 gap-[20px] lg:grid-cols-2">
{/* Card 1 - Left */}
<div className="relative flex flex-col justify-between overflow-hidden rounded-[25px] border border-aiero-card-border bg-aiero-card-dark p-[40px_35px_45px_35px] lg:p-[22%_9%_20%_9%]">
<div className="relative flex flex-col justify-between overflow-hidden rounded-[25px] border border-tenext-card-border bg-tenext-card-dark p-[40px_35px_45px_35px] lg:p-[22%_9%_20%_9%]">
<div
className="absolute inset-0 bg-[url('/images/aiero/home-9-img.png')] bg-bottom bg-no-repeat transition-all duration-300 hover:scale-105"
className="absolute inset-0 bg-[url('/images/tenext/home-9-img.png')] bg-bottom bg-no-repeat transition-all duration-300 hover:scale-105"
style={{ backgroundSize: "100% auto" }}
/>
<div className="absolute inset-0 bg-gradient-to-t from-[#0D0D0D99] to-transparent to-[20%]" />
<div className="relative z-10 mt-auto">
<CardHeading
title="Integrate our API to uncover deep insights"
titleClassName="text-white"
/>
<ul className="mt-[20px] flex flex-col gap-3">
<li className="flex items-center gap-3 text-aiero-text-muted">
<span className="flex h-1 w-1 rounded-full bg-aiero-text-muted" />
<li className="flex items-center gap-3 text-tenext-text-muted">
<span className="flex h-1 w-1 rounded-full bg-tenext-text-muted" />
Advanced analytics processing
</li>
<li className="flex items-center gap-3 text-aiero-text-muted">
<span className="flex h-1 w-1 rounded-full bg-aiero-text-muted" />
<li className="flex items-center gap-3 text-tenext-text-muted">
<span className="flex h-1 w-1 rounded-full bg-tenext-text-muted" />
Real-time data synchronization
</li>
<li className="flex items-center gap-3 text-aiero-text-muted">
<span className="flex h-1 w-1 rounded-full bg-aiero-text-muted" />
<li className="flex items-center gap-3 text-tenext-text-muted">
<span className="flex h-1 w-1 rounded-full bg-tenext-text-muted" />
Secure API endpoints
</li>
</ul>
</div>
<IconButton />
</div>
{/* Card 2 - Right */}
<div className="relative flex flex-col justify-between overflow-hidden rounded-[25px] border border-aiero-card-border bg-aiero-card-dark p-[40px_35px_45px_35px] lg:p-[10%_9%_11%_9%]">
<div
className="absolute inset-0 bg-[url('/images/aiero/Dots.png')] bg-[length:auto] bg-[50%_20px] bg-no-repeat opacity-20"
/>
<div className="relative flex flex-col justify-between overflow-hidden rounded-[25px] border border-tenext-card-border bg-tenext-card-dark p-[40px_35px_45px_35px] lg:p-[10%_9%_11%_9%]">
<div className="absolute inset-0 bg-[url('/images/tenext/Dots.png')] bg-[length:auto] bg-[50%_20px] bg-no-repeat opacity-20" />
<div className="relative z-10 flex h-[42px] w-[42px] items-center justify-center text-white">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="h-full w-full">
<path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/>
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
className="h-full w-full"
>
<path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6" />
</svg>
</div>
<div className="relative z-10 mt-[60px] lg:mt-[100px]">
<CardHeading
title="Data privacy and security with robust measures"
titleClassName="text-white"
/>
<p className="text-[16px] text-aiero-text-muted">
Cobra opaleye gray reef shark bluntnose minnow. Triggerfish bango guppy opah sunfish bluntnose knifefish upside-down catfish.
<p className="text-[16px] text-tenext-text-muted">
Cobra opaleye gray reef shark bluntnose minnow. Triggerfish
bango guppy opah sunfish bluntnose knifefish upside-down
catfish.
</p>
</div>
<IconButton />
</div>
{/* Card 3 - Bottom Full Width */}
<div className="relative col-span-1 overflow-hidden rounded-[25px] border border-aiero-card-border bg-aiero-card-dark lg:col-span-2">
<div className="relative col-span-1 overflow-hidden rounded-[25px] border border-tenext-card-border bg-tenext-card-dark lg:col-span-2">
<div
className="absolute inset-0 bg-[url('/images/aiero/3d-woman-shape-glowing-with-bright-holographic-colors-1-min.png')] bg-right-bottom bg-no-repeat transition-all duration-300 hover:scale-105"
className="absolute inset-0 bg-[url('/images/tenext/3d-woman-shape-glowing-with-bright-holographic-colors-1-min.png')] bg-right-bottom bg-no-repeat transition-all duration-300 hover:scale-105"
style={{ backgroundSize: "83% auto" }}
/>
<div className="relative z-10 grid grid-cols-1 gap-[40px] p-[40px_35px] lg:grid-cols-2 lg:p-[80px_60px]">
<div>
<CardHeading
subtitle="Technology"
title="Tailored solutions specifically to your needs"
titleClassName="text-white"
subtitleClassName="text-aiero-teal"
subtitleClassName="text-tenext-teal"
/>
</div>
<div className="flex flex-col gap-[40px] sm:flex-row sm:gap-[60px] lg:pl-[15%]">
<Counter
target={98}
suffix="%"
numberClassName="text-[60px] font-bold leading-none font-[var(--font-manrope)] text-white"
title="Accuracy rate"
titleClassName="font-[var(--font-sora)] text-[11px] font-semibold tracking-[0.18em] uppercase text-aiero-text-muted mt-2"
titleClassName="font-[var(--font-sora)] text-[11px] font-semibold tracking-[0.18em] uppercase text-tenext-text-muted mt-2"
/>
<Counter
target={24}
suffix="/7"
numberClassName="text-[60px] font-bold leading-none font-[var(--font-manrope)] text-white"
title="Customer support"
titleClassName="font-[var(--font-sora)] text-[11px] font-semibold tracking-[0.18em] uppercase text-aiero-text-muted mt-2"
titleClassName="font-[var(--font-sora)] text-[11px] font-semibold tracking-[0.18em] uppercase text-tenext-text-muted mt-2"
/>
</div>
</div>
</div>
</div>
</div>
</section>

View File

@@ -6,18 +6,18 @@ export function HeroSection() {
<section className="relative px-5 py-5">
{/* Scroll Down button — vertical, left side */}
<div className="scroll-widget absolute left-0 top-[40%] z-20 hidden xl:block">
<ScrollDown />
<ScrollDown />
</div>
{/* Hero container with background */}
<div
className="relative overflow-hidden rounded-[25px] bg-aiero-dark"
className="relative overflow-hidden rounded-[25px] bg-tenext-dark"
style={{
minHeight: "min(858px, calc(100vw * 0.447))",
padding: "14.3% 0 8.1% 0",
}}
>
<HeroImageScene imageSrc="/images/aiero/home-9-top-bg-min.jpg" />
<HeroImageScene imageSrc="/images/tenext/home-9-top-bg-min.jpg" />
{/* Hero content */}
<div className="relative z-10 w-full px-[12.7vw]">
@@ -37,7 +37,10 @@ export function HeroSection() {
</h1>
{/* Subtitle */}
<div className="hero-reveal max-w-[660px]" style={{ animationDelay: "760ms" }}>
<div
className="hero-reveal max-w-[660px]"
style={{ animationDelay: "760ms" }}
>
<p className="text-[16px] font-semibold leading-[1.9] text-white">
Mummichog paradise fish! Triggerfish bango guppy opah sunfish
bluntnose knifefish upside-down catfish cobia spookfish convict
@@ -46,17 +49,26 @@ export function HeroSection() {
</div>
{/* CTA Button */}
<div className="hero-reveal mt-[42px]" style={{ animationDelay: "940ms" }}>
<div
className="hero-reveal mt-[42px]"
style={{ animationDelay: "940ms" }}
>
<a
href="#"
target="_blank"
rel="noopener noreferrer"
className="aiero-button aiero-button-solid inline-flex items-center gap-2 rounded-[25px] border border-aiero-red bg-aiero-red px-[30px] py-[14px] text-[16px] text-white transition-all hover:-translate-y-0.5 hover:border-aiero-red-hover hover:bg-aiero-red-hover hover:shadow-[0_15px_30px_rgba(239,100,100,0.28)]"
className="tenext-button tenext-button-solid inline-flex items-center gap-2 rounded-[25px] border border-tenext-red bg-tenext-red px-[30px] py-[14px] text-[16px] text-white transition-all hover:-translate-y-0.5 hover:border-tenext-red-hover hover:bg-tenext-red-hover hover:shadow-[0_15px_30px_rgba(239,100,100,0.28)]"
style={{ minWidth: "216px", fontFamily: "var(--font-sora)" }}
>
Discover
<svg width="10" height="10" viewBox="0 0 12 12" fill="none">
<path d="M1 11L11 1M11 1H3M11 1V9" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"/>
<path
d="M1 11L11 1M11 1H3M11 1V9"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
/>
</svg>
<span className="button-inner" />
</a>

View File

@@ -6,22 +6,26 @@ export function HowItWorksSection() {
{
number: "01",
title: "Neurons and Layers",
description: "A neural network consists of interconnected nodes called neurons. Neurons are organized into layers.",
description:
"A neural network consists of interconnected nodes called neurons. Neurons are organized into layers.",
},
{
number: "02",
title: "Activation Function",
description: "Each neuron applies an activation function to the weighted sum of its inputs and produces an output",
description:
"Each neuron applies an activation function to the weighted sum of its inputs and produces an output",
},
{
number: "03",
title: "Feedforward Process",
description: "The inputs are multiplied by their respective weights, summed up, and passed through the activation function.",
description:
"The inputs are multiplied by their respective weights, summed up, and passed through the activation function.",
},
{
number: "04",
title: "Activation Function",
description: "The inputs are multiplied by their respective weights, summed up, and passed through the activation function.",
title: "Backpropagation",
description:
"The inputs are multiplied by their respective weights, summed up, and passed through the activation function.",
},
];
@@ -30,30 +34,30 @@ export function HowItWorksSection() {
<div className="mx-auto max-w-[1260px]">
<div className="flex flex-col md:flex-row md:items-end justify-between gap-[30px] mb-[60px]">
<SectionHeading
subtitle="how it works"
tag="how it works"
title="Neural networks are a fundamental component of Artificial Intelligence (AI) systems"
titleClassName="max-w-[700px] text-aiero-dark"
titleClassName="max-w-[700px] text-tenext-dark"
/>
<div className="flex gap-[15px]">
<button className="flex h-[50px] w-[50px] items-center justify-center rounded-full border border-aiero-card-border text-aiero-dark transition-colors hover:bg-aiero-card-border">
<button className="flex h-[50px] w-[50px] items-center justify-center rounded-full border border-tenext-card-border text-tenext-dark transition-colors hover:bg-tenext-card-border">
<ArrowLeft size={20} />
</button>
<button className="flex h-[50px] w-[50px] items-center justify-center rounded-full border border-aiero-card-border text-aiero-dark transition-colors hover:bg-aiero-card-border">
<button className="flex h-[50px] w-[50px] items-center justify-center rounded-full border border-tenext-card-border text-tenext-dark transition-colors hover:bg-tenext-card-border">
<ArrowRight size={20} />
</button>
</div>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-[30px]">
<div className="flex flex-col">
{steps.map((step, index) => (
<div key={index} className="flex flex-col border-t border-aiero-card-border pt-[30px]">
<div className="text-[50px] font-bold text-transparent font-[var(--font-sora)]" style={{ WebkitTextStroke: "1px #3F3F3F" }}>
{step.number}
<div key={index} className="flex flex-col">
<div className="flex flex-wrap items-center gap-[15px] rounded-[15px] bg-gradient-to-r from-tenext-blue to-tenext-purple-start px-[25px] py-[14px] text-white">
<span className="text-[14px] font-bold">{step.number}</span>
<span className="text-[18px] font-bold font-[var(--font-sora)]">
{step.title}
</span>
</div>
<h6 className="mt-[20px] mb-[15px] text-[20px] font-bold text-aiero-dark font-[var(--font-sora)]">
{step.title}
</h6>
<p className="text-[16px] leading-[1.6] text-aiero-text-muted">
<p className="mt-[20px] mb-[25px] max-w-[720px] text-[16px] leading-[1.6] text-tenext-text-muted">
{step.description}
</p>
</div>

View File

@@ -3,20 +3,29 @@ interface MarqueeStripProps {
className?: string;
}
export function MarqueeStrip({
export function MarqueeStrip({
text = "Artificial Intelligence",
className = ""
className = "",
}: MarqueeStripProps) {
const marqueeItems = Array.from({ length: 6 });
return (
<div className={`relative z-10 mx-[-5px] mb-[-20px] mt-0 overflow-hidden bg-gradient-to-r from-aiero-teal to-aiero-blue py-[42px] ${className}`} style={{ transform: "rotate(-2.07deg)" }}>
<div
className={`relative z-10 mx-[-5px] mb-[-20px] mt-0 overflow-hidden bg-gradient-to-r from-tenext-teal to-tenext-blue py-[42px] ${className}`}
style={{ transform: "rotate(-2.07deg)" }}
>
<div className="marquee-track flex w-max whitespace-nowrap">
{[0, 1].map((track) => (
<div key={track} className="flex shrink-0 items-center">
{marqueeItems.map((_, i) => (
<div key={`${track}-${i}`} className="flex items-center gap-8 pr-8">
<span className="marquee-text text-white" style={{ fontFamily: "var(--font-sora)" }}>
<div
key={`${track}-${i}`}
className="flex items-center gap-8 pr-8"
>
<span
className="marquee-text text-white"
style={{ fontFamily: "var(--font-sora)" }}
>
{text}
</span>
<span className="flex h-3 w-3 rounded-full bg-white opacity-50" />

View File

@@ -5,7 +5,6 @@ export function MetricsSection() {
<section className="bg-white px-[20px] py-[60px] md:py-[100px]">
<div className="mx-auto max-w-[1260px]">
<div className="grid grid-cols-1 gap-[50px] md:grid-cols-2 md:gap-[80px]">
{/* Left Metric */}
<div className="flex flex-col gap-[20px]">
<Counter
@@ -14,10 +13,10 @@ export function MetricsSection() {
numberClassName="text-[60px] md:text-[80px] font-bold leading-none text-transparent gradient-text-purple font-[var(--font-sora)]"
title=""
/>
<h3 className="text-[28px] font-bold leading-[1.3] text-aiero-dark font-[var(--font-sora)]">
<h3 className="text-[28px] font-bold leading-[1.3] text-tenext-dark font-[var(--font-sora)]">
Happy & satisfied customers
</h3>
<p className="text-[16px] leading-[1.8] text-aiero-text-muted mt-[10px]">
<p className="text-[16px] leading-[1.8] text-tenext-text-muted mt-[10px]">
Achieved a 95% customer satisfaction rate across all AI solutions.
</p>
</div>
@@ -31,14 +30,14 @@ export function MetricsSection() {
numberClassName="text-[60px] md:text-[80px] font-bold leading-none text-transparent gradient-text-purple font-[var(--font-sora)]"
title=""
/>
<h3 className="text-[28px] font-bold leading-[1.3] text-aiero-dark font-[var(--font-sora)]">
Earns with our Aiero product
<h3 className="text-[28px] font-bold leading-[1.3] text-tenext-dark font-[var(--font-sora)]">
Earns with our tenext product
</h3>
<p className="text-[16px] leading-[1.8] text-aiero-text-muted mt-[10px]">
Delivered over $150 billion in cost savings for clients through optimized AI solutions.
<p className="text-[16px] leading-[1.8] text-tenext-text-muted mt-[10px]">
Delivered over $150 billion in cost savings for clients through
optimized AI solutions.
</p>
</div>
</div>
</div>
</section>

View File

@@ -19,7 +19,7 @@ export function Navbar() {
return (
<header
className={`aiero-navbar z-30 mx-auto grid h-[100px] max-w-[2520px] grid-cols-[280px_1fr_360px] items-center px-[34px] transition-[background-color,border-radius,box-shadow,transform] duration-500 ${
className={`tenext-navbar z-30 mx-auto grid h-[100px] max-w-[2520px] grid-cols-[280px_1fr_360px] items-center px-[34px] transition-[background-color,border-radius,box-shadow,transform] duration-500 ${
isSticky
? "fixed left-5 right-5 top-0 rounded-b-[25px] bg-[#111111] shadow-[0_12px_35px_rgba(0,0,0,0.18)]"
: "relative bg-transparent"
@@ -27,7 +27,7 @@ export function Navbar() {
>
<div className="flex items-center gap-[64px]">
<button
className="navbar-reveal grid h-6 w-6 grid-cols-2 gap-[5px] text-white transition-colors hover:text-aiero-teal"
className="navbar-reveal grid h-6 w-6 grid-cols-2 gap-[5px] text-white transition-colors hover:text-tenext-teal"
aria-label="Open menu"
>
<span className="h-[7px] w-[7px] rounded-[2px] border-2 border-current" />
@@ -37,10 +37,14 @@ export function Navbar() {
</button>
{/* Logo */}
<a href="#" className="navbar-reveal flex items-center" style={{ animationDelay: "120ms" }}>
<a
href="#"
className="navbar-reveal flex items-center"
style={{ animationDelay: "120ms" }}
>
<Image
src="/images/aiero/logo-dark.png"
alt="Aiero"
src="/images/tenext/logo-dark.png"
alt="tenext"
width={109.5}
height={19.5}
className="h-auto w-auto"
@@ -50,7 +54,10 @@ export function Navbar() {
</div>
{/* Navigation */}
<nav className="hidden items-center justify-center gap-[11px] lg:flex" aria-label="Primary navigation">
<nav
className="hidden items-center justify-center gap-[11px] lg:flex"
aria-label="Primary navigation"
>
{navigationData.map((item, index) => (
<div
key={item.label}
@@ -61,28 +68,38 @@ export function Navbar() {
>
<a
href={item.href}
className={`nav-link-swap flex h-10 items-center rounded-[10px] px-[21px] text-[13px] font-bold uppercase leading-none text-white transition-colors hover:bg-aiero-dark ${
item.label === "Home" ? "bg-aiero-dark" : ""
className={`nav-link-swap flex h-10 items-center rounded-[10px] px-[21px] text-[13px] font-bold uppercase leading-none text-white transition-colors hover:bg-tenext-dark ${
item.label === "Home" ? "bg-tenext-dark" : ""
}`}
style={{ fontFamily: "var(--font-sora)" }}
>
<span className="text-active">{item.label}</span>
<span aria-hidden>{item.label}</span>
{item.children && (
<svg className="ml-[12px] h-[5px] w-[5px] opacity-90" viewBox="0 0 5 5" fill="none">
<path d="M4.35 0.9L3.75 4.05L0.65 3.45" stroke="currentColor" strokeWidth="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<svg
className="ml-[12px] h-[5px] w-[5px] opacity-90"
viewBox="0 0 5 5"
fill="none"
>
<path
d="M4.35 0.9L3.75 4.05L0.65 3.45"
stroke="currentColor"
strokeWidth="1.1"
strokeLinecap="round"
strokeLinejoin="round"
/>
</svg>
)}
</a>
{/* Dropdown */}
{item.children && openDropdown === item.label && (
<div className="absolute left-0 top-full z-50 min-w-[286px] origin-top rounded-[20px] border border-aiero-card-border bg-[#111111] px-[45px] py-[30px] shadow-2xl">
<div className="absolute left-0 top-full z-50 min-w-[286px] origin-top rounded-[20px] border border-tenext-card-border bg-[#111111] px-[45px] py-[30px] shadow-2xl">
{item.children.map((child, childIndex) => (
<a
key={child.label}
href={child.href}
className="dropdown-reveal block py-[10px] pr-5 text-[14px] font-medium text-white/80 transition-all hover:pl-5 hover:text-aiero-teal"
className="dropdown-reveal block py-[10px] pr-5 text-[14px] font-medium text-white/80 transition-all hover:pl-5 hover:text-tenext-teal"
style={{
animationDelay: `${childIndex * 45}ms`,
fontFamily: "var(--font-sora)",
@@ -98,26 +115,43 @@ export function Navbar() {
</nav>
{/* Right Icons */}
<div className="navbar-reveal flex items-center justify-end gap-[10px]" style={{ animationDelay: "620ms" }}>
<button className="hidden p-[8px] text-white transition-colors hover:text-aiero-teal md:block" aria-label="Search">
<div
className="navbar-reveal flex items-center justify-end gap-[10px]"
style={{ animationDelay: "620ms" }}
>
<button
className="hidden p-[8px] text-white transition-colors hover:text-tenext-teal md:block"
aria-label="Search"
>
<SearchIcon className="h-[18px] w-[18px]" />
</button>
<a
href="#"
className="hidden items-center gap-[8px] p-[8px] text-[13px] font-bold uppercase leading-none text-white transition-colors hover:text-aiero-teal md:flex"
className="hidden items-center gap-[8px] p-[8px] text-[13px] font-bold uppercase leading-none text-white transition-colors hover:text-tenext-teal md:flex"
style={{ fontFamily: "var(--font-sora)" }}
>
<svg className="h-4 w-4" viewBox="0 0 16 16" fill="none">
<circle cx="8" cy="5" r="3.5" stroke="currentColor" strokeWidth="1.3"/>
<path d="M2 14.5C2 11.5 4.5 9.5 8 9.5C11.5 9.5 14 11.5 14 14.5" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round"/>
<circle
cx="8"
cy="5"
r="3.5"
stroke="currentColor"
strokeWidth="1.3"
/>
<path
d="M2 14.5C2 11.5 4.5 9.5 8 9.5C11.5 9.5 14 11.5 14 14.5"
stroke="currentColor"
strokeWidth="1.3"
strokeLinecap="round"
/>
</svg>
Log in
</a>
<a
href="#"
className="aiero-button aiero-button-gradient-border min-w-[188px] justify-center rounded-full px-[24px] py-[21px] text-[16px] font-semibold leading-none text-white"
className="tenext-button tenext-button-gradient-border min-w-[188px] justify-center rounded-full px-[24px] py-[21px] text-[16px] font-semibold leading-none text-white"
style={{ fontFamily: "var(--font-sora)" }}
>
Get in Touch

View File

@@ -1,24 +1,28 @@
import { AieroButton } from "@/components/shared/AieroButton";
import { tenextButton as TenextButton } from "@/components/shared/AieroButton";
import { Counter } from "@/components/shared/Counter";
import { IconBox } from "@/components/shared/IconBox";
import { OrbitIcon, FanIcon, CirclesIcon, ExpandIcon } from "@/components/shared/icons/PossibilityIcons";
import {
OrbitIcon,
FanIcon,
CirclesIcon,
ExpandIcon,
} from "@/components/shared/icons/PossibilityIcons";
export function PossibilitiesSection() {
return (
<section className="px-[20px] py-[60px] md:py-[100px]">
<div className="mx-auto grid max-w-[1260px] grid-cols-1 gap-[50px] lg:grid-cols-[1fr_1fr]">
{/* Left Column */}
<div className="flex flex-col items-start pr-[10%] pt-[20px]">
<span
className="aiero-subheading mb-[16px] text-aiero-dark uppercase tracking-[0.1em]"
className="tenext-subheading mb-[16px] text-tenext-dark uppercase tracking-[0.1em]"
style={{ fontFamily: "var(--font-sora)" }}
>
[ possibilities ]
</span>
<h2
className="mb-[24px] max-w-[500px] tracking-[-0.03em] text-aiero-dark"
className="mb-[24px] max-w-[500px] tracking-[-0.03em] text-tenext-dark"
style={{
fontFamily: "var(--font-dm-sans)",
fontSize: "clamp(32px, 4vw, 56px)",
@@ -28,18 +32,22 @@ export function PossibilitiesSection() {
>
Explore limitless possibilities with our intelligent solutions
</h2>
<p className="mb-[40px] max-w-[480px] text-[16px] leading-[1.8] text-aiero-text-muted">
AIERO is a leading AI agency committed to transforming businesses through cutting-edge artificial intelligence solutions. We specialize in delivering tailored AI strategies that drive innovation, optimize processes, and unlock new opportunities for growth.
<p className="mb-[40px] max-w-[480px] text-[16px] leading-[1.8] text-tenext-text-muted">
tenext is a leading AI agency committed to transforming businesses
through cutting-edge artificial intelligence solutions. We
specialize in delivering tailored AI strategies that drive
innovation, optimize processes, and unlock new opportunities for
growth.
</p>
<AieroButton
<TenextButton
variant="gradient-border"
className="rounded-[25px] px-[35px] py-[15px] text-[15px] font-medium"
showArrow={true}
>
Explore more
</AieroButton>
</TenextButton>
<div className="mt-[80px]">
<Counter
@@ -48,12 +56,13 @@ export function PossibilitiesSection() {
numberClassName="text-[60px] md:text-[100px] font-extrabold leading-none font-[var(--font-manrope)] text-transparent"
style={{
WebkitTextStroke: "1px #E2D7F8",
backgroundImage: "linear-gradient(180deg, rgba(226, 215, 248, 0.44) 0%, rgba(226, 215, 248, 0.06) 90%)",
backgroundImage:
"linear-gradient(180deg, rgba(226, 215, 248, 0.44) 0%, rgba(226, 215, 248, 0.06) 90%)",
backgroundClip: "text",
WebkitBackgroundClip: "text",
}}
title="AI Solutions for our clients"
titleClassName="font-[var(--font-manrope)] text-[16px] font-bold leading-[1.4] text-aiero-dark max-w-[120px]"
titleClassName="font-[var(--font-manrope)] text-[16px] font-bold leading-[1.4] text-tenext-dark max-w-[120px]"
layout="row-reverse"
gap="30px"
/>
@@ -91,7 +100,6 @@ export function PossibilitiesSection() {
theme="light"
/>
</div>
</div>
</section>
);

View File

@@ -1,28 +1,29 @@
import Image from "next/image";
export function TinkerSection() {
return (
<section className="relative px-[20px] py-[60px] md:py-[100px] overflow-hidden">
<div className="mx-auto flex max-w-[1340px] flex-col gap-[50px] lg:flex-row lg:items-center lg:gap-0">
{/* Left Column - Images */}
<div className="relative flex w-full flex-col lg:mt-[30px] lg:w-[22%]">
{/* Background Glow (elementor-absolute) */}
<div className="absolute left-0 top-0 z-0 pointer-events-none min-[576px]:left-[-40vw] min-[576px]:top-[-19.252vw]">
<img
src="https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2025/02/Group-18433.svg"
alt=""
<Image
src="/images/tenext/Group-18433.png"
alt=""
width={1283}
height={1471}
className="h-auto w-auto max-w-[100vw] object-contain opacity-80"
aria-hidden="true"
unoptimized
/>
</div>
{/* Main Vector Image */}
<div className="relative z-10 min-[576px]:ml-[-26vw]">
<img
src="https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2025/01/Vector-13.png"
alt="Neural Network Visualization"
<Image
src="/images/tenext/Vector-13.png"
alt="Neural Network Visualization"
width={670}
height={694}
className="w-full h-auto max-w-[800px] object-contain"
@@ -33,8 +34,8 @@ export function TinkerSection() {
{/* Right Column - Text & Partners */}
<div className="relative z-10 flex w-full flex-col lg:w-[78%]">
<div className="min-[576px]:mr-[-4%]">
<h2
className="mb-[60px] text-aiero-dark tracking-[-0.03em]"
<h2
className="mb-[60px] text-tenext-dark tracking-[-0.03em]"
style={{
fontFamily: "var(--font-dm-sans)",
fontSize: "clamp(36px, 4.5vw, 58px)",
@@ -42,30 +43,42 @@ export function TinkerSection() {
lineHeight: 1.1,
}}
>
Tinker with a <span className="gradient-text-purple">Neural Network right here</span> in your browser. Dont worry, you cant break it. We Promise.
Tinker with a{" "}
<span className="gradient-text-purple">
Neural Network right here
</span>{" "}
in your browser. Don't worry, you can't break it. We Promise.
</h2>
</div>
{/* Partners row */}
<div className="flex flex-wrap items-center justify-start gap-x-[40px] gap-y-[30px]">
<img
src="https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2024/12/partners-1.png"
alt="Partner 1"
<Image
src="/images/tenext/partners-1.png"
alt="Partner 1"
width={140}
height={40}
className="h-auto w-[140px] object-contain"
/>
<img
src="https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2024/12/partners-2.png"
alt="Partner 2"
<Image
src="/images/tenext/partners-2.png"
alt="Partner 2"
width={130}
height={40}
className="h-auto w-[130px] object-contain"
/>
<img
src="https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2024/12/partners-3.png"
alt="Partner 3"
<Image
src="/images/tenext/partners-3.png"
alt="Partner 3"
width={100}
height={40}
className="h-auto w-[100px] object-contain"
/>
<img
src="https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2024/12/partners-4.png"
alt="Partner 4"
<Image
src="/images/tenext/partners-4.png"
alt="Partner 4"
width={140}
height={40}
className="h-auto w-[140px] object-contain"
/>
</div>

View File

@@ -5,7 +5,7 @@ import { PageContainer } from "@/components/shared/PageContainer";
export function WOWSection() {
return (
<section className="relative z-20 px-[20px]">
<div className="relative z-20 mx-auto max-w-[1340px] overflow-hidden rounded-t-[20px] bg-aiero-dark pt-[30px] pb-[60px] md:pt-[40px] md:pb-[80px]">
<div className="relative z-20 mx-auto max-w-[1340px] overflow-hidden rounded-t-[20px] bg-tenext-dark pt-[30px] pb-[60px] md:pt-[40px] md:pb-[80px]">
<PageContainer>
<div className="grid grid-cols-1 gap-[40px] lg:grid-cols-2 lg:gap-[60px]">
<div className="flex flex-col justify-between">
@@ -30,7 +30,7 @@ export function WOWSection() {
</div>
<img
src="/images/aiero/home-9-img.png"
src="/images/tenext/home-9-img.png"
alt="Aiiero"
width={632}
height={158}
@@ -59,7 +59,7 @@ export function WOWSection() {
<div className="mt-[40px] md:mt-[60px]">
<Link
href="/services"
className="aiero-button aiero-button-gradient-border group rounded-full px-[35px] py-[15px] font-[var(--font-sora)] text-[15px] font-semibold tracking-wide text-white transition-all"
className="tenext-button tenext-button-gradient-border group rounded-full px-[35px] py-[15px] font-[var(--font-sora)] text-[15px] font-semibold tracking-wide text-white transition-all"
>
<span className="button-inner" />
Explore more

View File

@@ -1,4 +1,3 @@
import { PageContainer } from "@/components/shared/PageContainer";
import { SectionContainer } from "@/components/shared/SectionContainer";
@@ -9,7 +8,7 @@ export function AboutIntroSection() {
{/* Left: Text Content */}
<div className="flex flex-col items-start justify-center pt-5">
<span
className="aiero-subheading mb-4 text-aiero-teal"
className="tenext-subheading mb-4 text-tenext-teal"
style={{ fontFamily: "var(--font-sora)" }}
>
about
@@ -23,28 +22,28 @@ export function AboutIntroSection() {
lineHeight: 1.1,
}}
>
Awesome things in working with Aiero WordPress theme
Awesome things in working with tenext WordPress theme
</h2>
<p className="mb-8 text-base leading-relaxed text-aiero-text-muted">
<p className="mb-8 text-base leading-relaxed text-tenext-text-muted">
At XXLando, we are a leading AI services provider dedicated to
delivering innovative solutions that leverage artificial
intelligence to transform businesses.
</p>
<p className="text-base leading-relaxed text-aiero-text-muted">
<p className="text-base leading-relaxed text-tenext-text-muted">
Our team of experts specializes in developing cutting-edge AI
technologies, such as machine learning, natural language
processing, and computer vision, to help our clients streamline
operations, enhance decision-making.
technologies, such as machine learning, natural language processing,
and computer vision, to help our clients streamline operations,
enhance decision-making.
</p>
</div>
{/* Right: Images */}
<div className="relative">
<div className="relative aspect-[4/5] w-full overflow-hidden rounded-[25px] bg-aiero-card-dark">
<div className="relative aspect-[4/5] w-full overflow-hidden rounded-[25px] bg-tenext-card-dark">
<div
className="absolute inset-0 bg-cover bg-center"
style={{
backgroundImage: "url(/images/aiero/home-9-img.png)",
backgroundImage: "url(/images/tenext/home-9-img.png)",
}}
/>
</div>

View File

@@ -1,4 +1,3 @@
import { PageContainer } from "@/components/shared/PageContainer";
import { SectionContainer } from "@/components/shared/SectionContainer";
import { Counter } from "@/components/shared/Counter";
@@ -9,19 +8,19 @@ export function MissionSection() {
<PageContainer className="grid grid-cols-1 gap-12 lg:grid-cols-[1fr_1.2fr] lg:gap-[60px] xl:gap-[100px]">
{/* Left: Images */}
<div className="relative aspect-square w-full md:aspect-[4/3] lg:aspect-square">
<div className="absolute bottom-0 left-0 h-[85%] w-[85%] overflow-hidden rounded-[25px] bg-aiero-card-dark">
<div className="absolute bottom-0 left-0 h-[85%] w-[85%] overflow-hidden rounded-[25px] bg-tenext-card-dark">
<div
className="absolute inset-0 bg-cover bg-center"
style={{
backgroundImage: "url(/images/aiero/home-9-img.png)",
backgroundImage: "url(/images/tenext/home-9-img.png)",
}}
/>
</div>
<div className="absolute right-0 top-0 h-[50%] w-[50%] overflow-hidden rounded-[25px] border-[8px] border-aiero-dark bg-aiero-card-purple">
<div className="absolute right-0 top-0 h-[50%] w-[50%] overflow-hidden rounded-[25px] border-[8px] border-tenext-dark bg-tenext-card-purple">
<div
className="absolute inset-0 bg-cover bg-center"
style={{
backgroundImage: "url(/images/aiero/home-9-img.png)",
backgroundImage: "url(/images/tenext/home-9-img.png)",
}}
/>
</div>
@@ -30,7 +29,7 @@ export function MissionSection() {
{/* Right: Text and Stats */}
<div className="flex flex-col items-start justify-center pt-5">
<span
className="aiero-subheading mb-4 text-aiero-teal"
className="tenext-subheading mb-4 text-tenext-teal"
style={{ fontFamily: "var(--font-sora)" }}
>
Mission
@@ -46,19 +45,19 @@ export function MissionSection() {
>
we create a professional product using artificial intelligence
</h2>
<p className="mb-10 text-base leading-relaxed text-aiero-text-muted">
<p className="mb-10 text-base leading-relaxed text-tenext-text-muted">
Certainly, crafting a clear and inspiring mission statement is
essential for a development company. It should reflect your
company&apos;s values, purpose, and commitment to innovation.
</p>
<div className="w-full rounded-[25px] border border-aiero-card-border bg-aiero-card-dark p-8 md:p-10">
<div className="w-full rounded-[25px] border border-tenext-card-border bg-tenext-card-dark p-8 md:p-10">
<Counter
target={1250}
suffix="+"
numberClassName="text-[60px] md:text-[80px] font-bold leading-none font-[var(--font-manrope)] gradient-text-purple"
title="Created projects"
titleClassName="font-[var(--font-sora)] text-[11px] font-semibold tracking-[0.18em] uppercase text-aiero-text-muted mt-2"
titleClassName="font-[var(--font-sora)] text-[11px] font-semibold tracking-[0.18em] uppercase text-tenext-text-muted mt-2"
/>
</div>
</div>

View File

@@ -3,27 +3,34 @@
import { PageContainer } from "@/components/shared/PageContainer";
import { SectionContainer } from "@/components/shared/SectionContainer";
import { SectionHeading } from "@/components/shared/SectionHeading";
import { tenextButton as TenextButton } from "@/components/shared/AieroButton";
import { Counter } from "@/components/shared/Counter";
const teamMembers = [
{
name: "Dan Smith",
role: "Manager",
image: "/images/aiero/portrait-confident-man.jpg",
},
{
name: "Alan Begham",
role: "CEO",
image: "/images/aiero/waist-up-shot-handsome-calm.jpg",
},
{
name: "Brandon Adams",
role: "HR",
image: "/images/aiero/confident-ginger-man-with-trendy.jpg",
image: "/images/tenext/waist-up-shot-handsome-calm.jpg",
},
{
name: "Arthur Dowson",
role: "AI Programmer",
image: "/images/aiero/funny-curious-man-makes.jpg",
image: "/images/tenext/funny-curious-man-makes.jpg",
},
{
name: "Dan Smith",
role: "Manager",
image: "/images/tenext/portrait-confident-man.jpg",
},
{
name: "Brandon Adams",
role: "HR",
image: "/images/tenext/confident-ginger-man-with-trendy.jpg",
},
{
name: "Alan Begham",
role: "CEO Neuro",
image: "/images/tenext/waist-up-shot-handsome-calm.jpg",
},
];
@@ -31,24 +38,42 @@ export function TeamSection() {
return (
<SectionContainer paddingY="lg">
<PageContainer>
<div className="mb-12 flex flex-col items-center justify-between gap-6 md:flex-row md:items-end">
<SectionHeading
tag="team"
title="The Neural Network experts: uniting talent for intelligent solutions"
titleClassName="text-white max-w-[600px]"
/>
<div className="flex flex-col items-start gap-4 md:items-end">
<p className="max-w-[200px] text-[16px] text-aiero-text-muted md:text-right">
Awesome team members + 0 Explore more
</p>
<div className="columns-1 gap-6 sm:columns-2 lg:columns-4">
<div className="mb-6 flex break-inside-avoid flex-col">
<SectionHeading
tag="team"
title="The Neural Network experts: uniting talent for intelligent solutions"
titleClassName="text-tenext-dark"
/>
<div className="mt-[40px]">
<Counter
target={500}
prefix="+"
numberClassName="text-[60px] font-extrabold leading-none font-[var(--font-manrope)] text-transparent"
style={{
WebkitTextStroke: "1px #E2D7F8",
backgroundImage:
"linear-gradient(180deg, rgba(226, 215, 248, 0.44) 0%, rgba(226, 215, 248, 0.06) 90%)",
backgroundClip: "text",
WebkitBackgroundClip: "text",
}}
title="Awesome team members"
titleClassName="mt-[15px] text-[16px] font-bold text-tenext-dark"
/>
</div>
<TenextButton
variant="simple"
className="mt-[25px] text-[15px] font-medium text-tenext-dark"
showArrow={true}
>
Explore more
</TenextButton>
</div>
</div>
<div className="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-4">
{teamMembers.map((member, i) => (
<div
key={i}
className="group relative overflow-hidden rounded-[25px] bg-aiero-card-dark"
className="group relative mb-6 break-inside-avoid overflow-hidden rounded-[25px] bg-tenext-card-dark"
>
<div className="relative aspect-[3/4] w-full">
<img
@@ -57,7 +82,7 @@ export function TeamSection() {
className="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"
onError={(e) => {
(e.target as HTMLImageElement).src =
"/images/aiero/home-9-img.png"; // Fallback image
"/images/tenext/home-9-img.png";
}}
/>
<div className="absolute inset-0 bg-gradient-to-t from-black/80 via-transparent to-transparent opacity-80" />
@@ -69,7 +94,9 @@ export function TeamSection() {
>
{member.name}
</h4>
<p className="text-[14px] text-aiero-teal">{member.role}</p>
<p className="text-[14px] text-tenext-teal">
/ {member.role} /
</p>
</div>
</div>
))}

View File

@@ -7,21 +7,36 @@ export function PricingSection() {
{
name: "Basic",
target: "Great for private individuals",
features: ["1 User", "Unlimited Projects", "Download prototypes", "1 Gb workspace"],
features: [
"1 User",
"Unlimited Projects",
"Download prototypes",
"1 Gb workspace",
],
price: "Free",
isPopular: false,
},
{
name: "Premium",
target: "14 days free period",
features: ["15 Users", "Unlimited Projects", "Download prototypes", "15 Gb workspace"],
features: [
"15 Users",
"Unlimited Projects",
"Download prototypes",
"15 Gb workspace",
],
price: "$ 59 /mo",
isPopular: true,
},
{
name: "Unlimited",
target: "Great for private individuals",
features: ["100 Users", "Unlimited Projects", "Download prototypes", "100 Gb workspace"],
features: [
"100 Users",
"Unlimited Projects",
"Download prototypes",
"100 Gb workspace",
],
price: "$ 199 /mo",
isPopular: false,
},
@@ -43,24 +58,46 @@ export function PricingSection() {
<div
key={i}
className={`relative flex flex-col overflow-hidden rounded-[25px] border ${
plan.isPopular ? "border-aiero-teal bg-aiero-card-dark" : "border-aiero-card-border bg-aiero-dark"
plan.isPopular
? "border-tenext-teal bg-tenext-card-dark"
: "border-tenext-card-border bg-tenext-dark"
} p-10`}
>
{plan.isPopular && (
<div className="absolute right-6 top-6 rounded-full bg-aiero-teal px-4 py-1 text-[12px] font-bold uppercase text-aiero-dark" style={{ fontFamily: "var(--font-sora)" }}>
<div
className="absolute right-6 top-6 rounded-full bg-tenext-teal px-4 py-1 text-[12px] font-bold uppercase text-tenext-dark"
style={{ fontFamily: "var(--font-sora)" }}
>
Popular
</div>
)}
<h3 className="mb-2 text-[24px] font-bold text-white" style={{ fontFamily: "var(--font-dm-sans)" }}>
<h3
className="mb-2 text-[24px] font-bold text-white"
style={{ fontFamily: "var(--font-dm-sans)" }}
>
{plan.name}
</h3>
<p className="mb-8 text-[14px] text-aiero-text-muted">{plan.target}</p>
<p className="mb-8 text-[14px] text-tenext-text-muted">
{plan.target}
</p>
<ul className="mb-10 flex flex-col gap-4">
{plan.features.map((feat, j) => (
<li key={j} className="flex items-center gap-3 text-white">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" className="text-aiero-teal">
<path d="M20 6L9 17l-5-5" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
<svg
width="18"
height="18"
viewBox="0 0 24 24"
fill="none"
className="text-tenext-teal"
>
<path
d="M20 6L9 17l-5-5"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
/>
</svg>
{feat}
</li>
@@ -68,15 +105,18 @@ export function PricingSection() {
</ul>
<div className="mt-auto">
<div className="mb-6 text-[36px] font-bold text-white" style={{ fontFamily: "var(--font-dm-sans)" }}>
<div
className="mb-6 text-[36px] font-bold text-white"
style={{ fontFamily: "var(--font-dm-sans)" }}
>
{plan.price}
</div>
<a
href="#"
className={`flex w-full items-center justify-center rounded-[12px] py-4 text-[16px] font-bold transition-all ${
plan.isPopular
? "bg-aiero-teal text-aiero-dark hover:bg-white"
: "border border-aiero-card-border text-white hover:border-aiero-teal hover:text-aiero-teal"
? "bg-tenext-teal text-tenext-dark hover:bg-white"
: "border border-tenext-card-border text-white hover:border-tenext-teal hover:text-tenext-teal"
}`}
style={{ fontFamily: "var(--font-sora)" }}
>

View File

@@ -27,11 +27,11 @@ export function ServiceCardsGrid() {
{services.map((svc, i) => (
<div
key={i}
className="group relative flex h-full min-h-[340px] flex-col justify-between overflow-hidden rounded-[25px] border border-aiero-card-border bg-aiero-card-dark p-10 transition-all hover:bg-aiero-card-purple"
className="group relative flex h-full min-h-[340px] flex-col justify-between overflow-hidden rounded-[25px] border border-tenext-card-border bg-tenext-card-dark p-10 transition-all hover:bg-tenext-card-purple"
>
<div className="mb-6 h-[60px] w-[60px] rounded-full bg-aiero-card-purple2 p-4">
<div className="mb-6 h-[60px] w-[60px] rounded-full bg-tenext-card-purple2 p-4">
<img
src="/images/aiero/3x.png"
src="/images/tenext/3x.png"
alt="Icon"
className="h-full w-full object-contain"
onError={(e) => {
@@ -43,15 +43,15 @@ export function ServiceCardsGrid() {
<div>
<h4
className="mb-4 text-[22px] font-bold text-white transition-colors group-hover:text-aiero-teal"
className="mb-4 text-[22px] font-bold text-white transition-colors group-hover:text-tenext-teal"
style={{ fontFamily: "var(--font-dm-sans)" }}
>
{svc.title}
</h4>
<p className="text-[16px] text-aiero-text-muted">{svc.desc}</p>
<p className="text-[16px] text-tenext-text-muted">{svc.desc}</p>
</div>
<div className="absolute bottom-0 right-0 flex h-[60px] w-[60px] items-center justify-center rounded-tl-[25px] bg-white text-aiero-dark transition-all duration-300 group-hover:bg-aiero-teal group-hover:text-white">
<div className="absolute bottom-0 right-0 flex h-[60px] w-[60px] items-center justify-center rounded-tl-[25px] bg-white text-tenext-dark transition-all duration-300 group-hover:bg-tenext-teal group-hover:text-white">
<ArrowIcon className="h-4 w-4" />
</div>
</div>

View File

@@ -32,9 +32,21 @@ export function ServiceFeaturesSection() {
];
const DefaultIcon = () => (
<div className="flex h-full w-full items-center justify-center rounded-[18px] bg-aiero-card-purple">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" className="text-white">
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
<div className="flex h-full w-full items-center justify-center rounded-[18px] bg-tenext-card-purple">
<svg
width="32"
height="32"
viewBox="0 0 24 24"
fill="none"
className="text-white"
>
<path
d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
/>
</svg>
</div>
);

View File

@@ -4,65 +4,84 @@ import { PageContainer } from "@/components/shared/PageContainer";
import { SectionContainer } from "@/components/shared/SectionContainer";
import { SectionHeading } from "@/components/shared/SectionHeading";
export function TestimonialsSection() {
const testimonials = [
{
text: "Working with Aiero has been a game-changer for our business. Their AI solutions have revolutionized our operations, enabling us to automate repetitive tasks and make data-driven decisions. The level of efficiency we've achieved is unprecedented.",
author: "David Smith",
role: "CEO Company",
},
{
text: "Aiero has been a game-changer for our business. Their AI solutions have revolutionized our operations, enabling us to automate repetitive tasks and make data-driven decisions. The level of efficiency we've achieved is unprecedented.",
author: "Mark Dowson",
role: "Manager",
},
];
const testimonials = [
{
author: "Daniel Cross",
text: "Working with tenext has been a game-changer for our business. Their AI solutions automated our repetitive tasks and let us make data-driven decisions fast.",
},
{
author: "Marta Wolfe",
text: "The onboarding was smooth and the support team responded within a day for every request we had. Genuinely impressed with the attention to detail.",
},
{
author: "Rajiv Patel",
text: "tenext's dashboard gave us actionable insights we didn't have before. Setup was fast and the documentation made customization painless.",
},
{
author: "Daniel Cross",
text: "Working with tenext has been a game-changer for our business. Their AI solutions automated our repetitive tasks and let us make data-driven decisions fast.",
},
{
author: "Elena Novak",
text: "Excellent customer support from the whole team. All of our integration questions were resolved within a day.",
},
{
author: "Sam Okafor",
text: "A perfect solution in every respect. The team is especially strong on support — we recommend it without hesitation.",
},
{
author: "Priya Chandran",
text: "Fast, reliable support and an API that's genuinely easy to customize. Great work all around.",
},
{
author: "Marta Wolfe",
text: "The onboarding was smooth and the support team responded within a day for every request we had. Genuinely impressed with the attention to detail.",
},
{
author: "Tom Bennett",
text: "Great platform and even better support. The team always found a solution even when the request was out of scope.",
},
{
author: "Lucia Fernandez",
text: "High quality documentation and a codebase that's genuinely easy to extend. Our developers picked it up in a day.",
},
{
author: "Rajiv Patel",
text: "tenext's dashboard gave us actionable insights we didn't have before. Setup was fast and the documentation made customization painless.",
},
{
author: "Owen Marsh",
text: "We evaluated several AI vendors and tenext stood out for speed of support and clarity of their onboarding process.",
},
];
export function TestimonialsSection() {
return (
<SectionContainer paddingY="lg" className="bg-aiero-card-dark">
<SectionContainer paddingY="lg" className="bg-tenext-surface-muted">
<PageContainer>
<div className="mb-16">
<div className="mb-12 max-w-[650px]">
<SectionHeading
tag="testimonials"
title="Discover what our clients have to say about our AI solutions"
titleClassName="text-white max-w-[650px]"
title="User stories: hear what others love about our AI solutions"
titleClassName="text-tenext-dark"
/>
</div>
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
<div className="columns-1 gap-6 sm:columns-2 lg:columns-4">
{testimonials.map((t, i) => (
<div
key={i}
className="flex flex-col justify-between rounded-[25px] border border-aiero-card-border bg-[#1A1A1A] p-10 lg:p-12"
className="mb-6 break-inside-avoid rounded-[20px] bg-white p-8"
>
<div className="mb-8">
<div className="mb-6 flex gap-1 text-aiero-teal">
{[...Array(5)].map((_, index) => (
<svg key={index} width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
<path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"/>
</svg>
))}
</div>
<p className="text-[18px] leading-[1.8] text-white">&quot;{t.text}&quot;</p>
</div>
<div className="flex items-center gap-4">
<div className="h-[60px] w-[60px] overflow-hidden rounded-full bg-aiero-dark">
<img
src={`/images/aiero/client-${i + 1}.jpg`}
alt={t.author}
className="h-full w-full object-cover"
onError={(e) => {
(e.target as HTMLImageElement).src = "/images/aiero/home-9-img.png";
}}
/>
</div>
<div>
<h5 className="text-[18px] font-bold text-white" style={{ fontFamily: "var(--font-dm-sans)" }}>
{t.author}
</h5>
<p className="text-[14px] text-aiero-teal">{t.role}</p>
</div>
</div>
<h5
className="mb-4 text-[18px] font-bold text-tenext-dark"
style={{ fontFamily: "var(--font-dm-sans)" }}
>
{t.author}
</h5>
<p className="text-[15px] leading-[1.7] text-tenext-text-muted">
{t.text}
</p>
</div>
))}
</div>

View File

@@ -1,8 +1,13 @@
import { ArrowIcon } from "@/components/shared/icons/ArrowIcon";
type ButtonVariant = "solid" | "outline" | "gradient-border" | "gradient-fill" | "simple";
type ButtonVariant =
| "solid"
| "outline"
| "gradient-border"
| "gradient-fill"
| "simple";
interface AieroButtonProps {
interface tenextButtonProps {
href?: string;
variant?: ButtonVariant;
children: React.ReactNode;
@@ -12,7 +17,7 @@ interface AieroButtonProps {
onClick?: () => void;
}
export function AieroButton({
export function tenextButton({
href = "#",
variant = "solid",
children,
@@ -20,14 +25,14 @@ export function AieroButton({
showArrow = true,
target,
onClick,
}: AieroButtonProps) {
const baseClasses = "aiero-button";
}: tenextButtonProps) {
const baseClasses = "tenext-button";
const variantClasses: Record<ButtonVariant, string> = {
solid: "aiero-button-solid",
outline: "aiero-button-solid",
"gradient-border": "aiero-button-gradient-border",
"gradient-fill": "aiero-button-gradient-fill",
solid: "tenext-button-solid",
outline: "tenext-button-solid",
"gradient-border": "tenext-button-gradient-border",
"gradient-fill": "tenext-button-gradient-fill",
simple: "",
};

View File

@@ -2,7 +2,7 @@
position: absolute;
bottom: 0;
right: 0;
background-color: #FFFFFF;
background-color: #ffffff;
border-top-left-radius: 30px;
border-bottom-right-radius: 25px;
padding: 10px 10px 0 10px;
@@ -46,6 +46,6 @@
}
.iconSlideAslant:hover .iconSlideAslantInner,
:global(.aiero-card:hover) .iconSlideAslantInner {
:global(.tenext-card:hover) .iconSlideAslantInner {
transform: translate3d(12px, -12px, 0);
}

View File

@@ -19,9 +19,7 @@ export function CardHeading({
return (
<div className={`mb-5 ${wrapperClassName}`}>
{subtitle && (
<div
className={`aiero-subheading font-sora ${subtitleClassName}`}
>
<div className={`tenext-subheading font-sora ${subtitleClassName}`}>
{subtitle}
</div>
)}
@@ -39,7 +37,7 @@ export function IconButton({ className = "" }: { className?: string }) {
<div className={`${styles.iconWrapper} ${className}`}>
<a
href="#"
className={`${styles.iconSlideAslant} flex h-[52px] w-[52px] items-center justify-center rounded-[15px] bg-aiero-card-dark text-white transition-all duration-300 hover:bg-aiero-teal hover:text-aiero-dark`}
className={`${styles.iconSlideAslant} flex h-[52px] w-[52px] items-center justify-center rounded-[15px] bg-tenext-card-dark text-white transition-all duration-300 hover:bg-tenext-teal hover:text-tenext-dark`}
aria-label="Open details"
>
<span className={styles.iconSlideAslantInner} aria-hidden="true">

View File

@@ -30,14 +30,14 @@ export function ContactFormSection() {
}
function handleChange(
e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>
e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,
) {
setFormState((prev) => ({ ...prev, [e.target.name]: e.target.value }));
}
return (
<SectionContainer paddingY="lg" className="bg-aiero-dark px-5">
<div className="overflow-hidden rounded-[25px] bg-aiero-card-dark">
<SectionContainer paddingY="lg" className="bg-tenext-dark px-5">
<div className="overflow-hidden rounded-[25px] bg-tenext-card-dark">
<PageContainer className="grid grid-cols-1 gap-12 py-16 md:py-20 lg:grid-cols-2 lg:gap-16 lg:py-24">
{/* ── Left: Info column ── */}
<div className="flex flex-col">
@@ -58,13 +58,13 @@ export function ContactFormSection() {
<div className="flex flex-col gap-1">
<a
href={`tel:${siteConfig.phoneRaw}`}
className="text-[15px] text-aiero-text-muted transition-colors hover:text-aiero-teal"
className="text-[15px] text-tenext-text-muted transition-colors hover:text-tenext-teal"
>
{siteConfig.phone}
</a>
<a
href="tel:+11800234567"
className="text-[15px] text-aiero-text-muted transition-colors hover:text-aiero-teal"
className="text-[15px] text-tenext-text-muted transition-colors hover:text-tenext-teal"
>
+ (123) 1800-234-5678
</a>
@@ -76,7 +76,7 @@ export function ContactFormSection() {
<h6 className="mb-3 font-sora text-sm font-semibold text-white">
Our Location
</h6>
<p className="text-[15px] leading-relaxed text-aiero-text-muted">
<p className="text-[15px] leading-relaxed text-tenext-text-muted">
{siteConfig.address.line1}
<br />
{siteConfig.address.line2}
@@ -90,7 +90,7 @@ export function ContactFormSection() {
</h6>
<a
href={`mailto:${siteConfig.email}`}
className="text-[15px] text-aiero-text-muted underline transition-colors hover:text-aiero-teal"
className="text-[15px] text-tenext-text-muted underline transition-colors hover:text-tenext-teal"
>
{siteConfig.email}
</a>
@@ -109,7 +109,7 @@ export function ContactFormSection() {
{/* ── Right: Form column ── */}
<div className="rounded-[25px] bg-white p-8 md:p-10">
<h4
className="mb-8 text-aiero-dark"
className="mb-8 text-tenext-dark"
style={{
fontFamily: "var(--font-sora)",
fontSize: "28px",
@@ -127,7 +127,7 @@ export function ContactFormSection() {
placeholder="Full name"
value={formState.fullName}
onChange={handleChange}
className="rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-aiero-dark outline-none transition-colors focus:border-aiero-teal"
className="rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-tenext-dark outline-none transition-colors focus:border-tenext-teal"
/>
<input
type="email"
@@ -136,7 +136,7 @@ export function ContactFormSection() {
required
value={formState.email}
onChange={handleChange}
className="rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-aiero-dark outline-none transition-colors focus:border-aiero-teal"
className="rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-tenext-dark outline-none transition-colors focus:border-tenext-teal"
/>
<input
type="text"
@@ -144,7 +144,7 @@ export function ContactFormSection() {
placeholder="Subject"
value={formState.subject}
onChange={handleChange}
className="rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-aiero-dark outline-none transition-colors focus:border-aiero-teal"
className="rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-tenext-dark outline-none transition-colors focus:border-tenext-teal"
/>
<textarea
name="message"
@@ -152,11 +152,11 @@ export function ContactFormSection() {
rows={4}
value={formState.message}
onChange={handleChange}
className="resize-none rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-aiero-dark outline-none transition-colors focus:border-aiero-teal"
className="resize-none rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-tenext-dark outline-none transition-colors focus:border-tenext-teal"
/>
<button
type="submit"
className="aiero-button aiero-button-gradient-border mt-2 self-start rounded-full px-8 py-4 font-sora text-base font-semibold text-aiero-dark"
className="tenext-button tenext-button-gradient-border mt-2 self-start rounded-full px-8 py-4 font-sora text-base font-semibold text-tenext-dark"
>
Send message
<ArrowIcon className="h-3 w-3" />

View File

@@ -17,7 +17,7 @@ import { PageContainer } from "@/components/shared/PageContainer";
*/
export function Footer() {
return (
<footer className="bg-aiero-dark px-5 pb-10 pt-16 md:pt-20">
<footer className="bg-tenext-dark px-5 pb-10 pt-16 md:pt-20">
<PageContainer>
{/* ── Top row: Logo + link columns ── */}
<div className="grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-[1.5fr_1fr_1fr]">
@@ -25,7 +25,7 @@ export function Footer() {
<div className="flex flex-col items-start gap-8">
<Link href="/" aria-label="Home">
<Image
src="/images/aiero/logo-dark.png"
src="/images/tenext/logo-dark.png"
alt={siteConfig.name}
width={146}
height={26}
@@ -57,7 +57,7 @@ export function Footer() {
<li key={link.label}>
<a
href={link.href}
className="text-[15px] text-aiero-text-muted transition-colors duration-300 hover:text-aiero-teal"
className="text-[15px] text-tenext-text-muted transition-colors duration-300 hover:text-tenext-teal"
>
{link.label}
</a>
@@ -76,7 +76,7 @@ export function Footer() {
<li key={link.label}>
<a
href={link.href}
className="text-[15px] text-aiero-text-muted transition-colors duration-300 hover:text-aiero-teal"
className="text-[15px] text-tenext-text-muted transition-colors duration-300 hover:text-tenext-teal"
>
{link.label}
</a>
@@ -87,8 +87,8 @@ export function Footer() {
</div>
{/* ── Bottom bar ── */}
<div className="mt-14 flex flex-col items-center justify-between gap-4 border-t border-aiero-card-border pt-8 md:flex-row">
<p className="text-sm text-aiero-text-muted">
<div className="mt-14 flex flex-col items-center justify-between gap-4 border-t border-tenext-card-border pt-8 md:flex-row">
<p className="text-sm text-tenext-text-muted">
{siteConfig.copyright}
</p>
<div className="flex gap-6">
@@ -96,7 +96,7 @@ export function Footer() {
<a
key={link.label}
href={link.href}
className="text-sm text-aiero-text-muted transition-colors duration-300 hover:text-aiero-teal"
className="text-sm text-tenext-text-muted transition-colors duration-300 hover:text-tenext-teal"
>
{link.label}
</a>

View File

@@ -8,31 +8,35 @@ interface IconBoxProps {
theme?: "dark" | "light";
}
export function IconBox({ icon, title, description, hasBorder = true, theme = "dark" }: IconBoxProps) {
export function IconBox({
icon,
title,
description,
hasBorder = true,
theme = "dark",
}: IconBoxProps) {
const isLight = theme === "light";
return (
<div className="aiero-icon-box-widget w-full">
<div className="tenext-icon-box-widget w-full">
<div className="icon-box-item flex flex-col items-start gap-[20px] sm:flex-row sm:gap-[40px]">
{icon && (
<div className="icon-container background-type-none flex h-[88px] w-[88px] shrink-0 items-center justify-center">
<span className="icon block h-full w-full">
{icon}
</span>
<span className="icon block h-full w-full">{icon}</span>
</div>
)}
<div
className={`content-container flex-1 pb-[30px] pt-[5px] ${
hasBorder
? isLight
? "border-b border-gray-200"
: "border-b border-aiero-card-border"
hasBorder
? isLight
? "border-b border-gray-200"
: "border-b border-tenext-card-border"
: ""
}`}
>
<h5
className={`icon-box-title mb-[15px] ${isLight ? "text-aiero-dark" : "text-white"}`}
className={`icon-box-title mb-[15px] ${isLight ? "text-tenext-dark" : "text-white"}`}
style={{
fontFamily: "var(--font-manrope)",
fontSize: "25px",
@@ -43,7 +47,7 @@ export function IconBox({ icon, title, description, hasBorder = true, theme = "d
{title}
</h5>
<div className="icon-box-info">
<p className="text-[16px] leading-[1.6] text-aiero-text-muted">
<p className="text-[16px] leading-[1.6] text-tenext-text-muted">
{description}
</p>
</div>

View File

@@ -19,31 +19,31 @@ interface PageTitleBannerProps {
* - Full-width rounded card with gradient background
* - Centered "/ Title /" text
* - Breadcrumbs bottom-left
* - Decorative "Aiero" outline text right side
* - Decorative "tenext" outline text right side
* - Top-left and bottom-right rounded corner decorations
*/
export function PageTitleBanner({ title, breadcrumbs }: PageTitleBannerProps) {
return (
<div className="relative mx-5 overflow-hidden rounded-[25px] bg-aiero-dark">
<div className="relative mx-5 overflow-hidden rounded-[25px] bg-tenext-dark">
{/* Background image */}
<div
className="absolute inset-0 bg-cover bg-center opacity-80"
style={{
backgroundImage: "url(/images/aiero/page-top-bg-min.png)",
backgroundImage: "url(/images/tenext/page-top-bg-min.png)",
}}
/>
{/* Gradient overlay */}
<div className="absolute inset-0 bg-gradient-to-b from-transparent via-transparent to-aiero-dark/60" />
<div className="absolute inset-0 bg-gradient-to-b from-transparent via-transparent to-tenext-dark/60" />
{/* Top-left corner decoration */}
<div className="absolute left-0 top-0 h-20 w-20">
<div className="absolute left-0 top-0 h-full w-full rounded-br-[25px] bg-white" />
<div className="absolute left-0 top-0 h-full w-full rounded-tl-[25px] bg-aiero-dark">
<div className="absolute left-0 top-0 h-full w-full rounded-tl-[25px] bg-tenext-dark">
<div
className="absolute inset-0 bg-cover bg-center opacity-80"
style={{
backgroundImage: "url(/images/aiero/page-top-bg-min.png)",
backgroundImage: "url(/images/tenext/page-top-bg-min.png)",
}}
/>
</div>
@@ -52,11 +52,11 @@ export function PageTitleBanner({ title, breadcrumbs }: PageTitleBannerProps) {
{/* Bottom-right corner decoration */}
<div className="absolute bottom-0 right-0 h-20 w-20">
<div className="absolute bottom-0 right-0 h-full w-full rounded-tl-[25px] bg-white" />
<div className="absolute bottom-0 right-0 h-full w-full rounded-br-[25px] bg-aiero-dark">
<div className="absolute bottom-0 right-0 h-full w-full rounded-br-[25px] bg-tenext-dark">
<div
className="absolute inset-0 bg-cover bg-center opacity-80"
style={{
backgroundImage: "url(/images/aiero/page-top-bg-min.png)",
backgroundImage: "url(/images/tenext/page-top-bg-min.png)",
}}
/>
</div>
@@ -74,23 +74,26 @@ export function PageTitleBanner({ title, breadcrumbs }: PageTitleBannerProps) {
lineHeight: 1.1,
}}
>
<span className="mr-3 text-aiero-text-muted">/</span>
<span className="mr-3 text-tenext-text-muted">/</span>
{title}
<span className="ml-3 text-aiero-text-muted">/</span>
<span className="ml-3 text-tenext-text-muted">/</span>
</h1>
{/* Breadcrumbs */}
<nav className="absolute bottom-8 left-8 md:bottom-10 md:left-12" aria-label="Breadcrumb">
<nav
className="absolute bottom-8 left-8 md:bottom-10 md:left-12"
aria-label="Breadcrumb"
>
<ol className="flex items-center gap-2 text-sm text-white/70">
{breadcrumbs.map((crumb, index) => (
<li key={crumb.label} className="flex items-center gap-2">
{index > 0 && (
<span className="mx-1 inline-block h-1 w-1 rounded-full bg-aiero-teal" />
<span className="mx-1 inline-block h-1 w-1 rounded-full bg-tenext-teal" />
)}
{index < breadcrumbs.length - 1 && crumb.href ? (
<a
href={crumb.href}
className="transition-colors hover:text-aiero-teal"
className="transition-colors hover:text-tenext-teal"
>
{crumb.label}
</a>
@@ -102,7 +105,7 @@ export function PageTitleBanner({ title, breadcrumbs }: PageTitleBannerProps) {
</ol>
</nav>
{/* Decorative vertical "Aiero" text */}
{/* Decorative vertical "tenext" text */}
<div
className="absolute bottom-8 right-8 hidden select-none lg:block"
style={{
@@ -117,7 +120,7 @@ export function PageTitleBanner({ title, breadcrumbs }: PageTitleBannerProps) {
WebkitTextFillColor: "transparent",
}}
>
Aiero
tenext
</span>
</div>
</div>

View File

@@ -5,16 +5,19 @@ import { SectionContainer } from "@/components/shared/SectionContainer";
export function PartnerLogosSection() {
const logos = [
"/images/aiero/partners-1.png",
"/images/aiero/partners-2.png",
"/images/aiero/partners-1.png",
"/images/aiero/partners-2.png",
"/images/aiero/partners-1.png",
"/images/aiero/partners-2.png",
"/images/tenext/partners-1.png",
"/images/tenext/partners-2.png",
"/images/tenext/partners-1.png",
"/images/tenext/partners-2.png",
"/images/tenext/partners-1.png",
"/images/tenext/partners-2.png",
];
return (
<SectionContainer paddingY="lg" className="border-t border-aiero-card-border bg-aiero-dark">
<SectionContainer
paddingY="lg"
className="border-t border-tenext-card-border bg-tenext-dark"
>
<PageContainer className="flex flex-col items-center">
<h3
className="mb-16 max-w-[800px] text-center text-white"
@@ -25,18 +28,22 @@ export function PartnerLogosSection() {
lineHeight: 1.2,
}}
>
Tinker with a Neural Network right here in your browser. Dont worry, you cant break it. We Promise.
Our trusted collaborators in progress and success
</h3>
<div className="flex flex-wrap justify-center gap-8 md:gap-16 lg:gap-24 opacity-60">
{logos.map((src, index) => (
<div key={index} className="flex h-12 items-center justify-center grayscale transition-all hover:grayscale-0">
<div
key={index}
className="flex h-12 items-center justify-center grayscale transition-all hover:grayscale-0"
>
<img
src={src}
alt={`Partner ${index + 1}`}
className="h-full w-auto object-contain"
onError={(e) => {
(e.target as HTMLImageElement).src = "/images/aiero/logo-dark.png";
(e.target as HTMLImageElement).src =
"/images/tenext/logo-dark.png";
}}
/>
</div>

View File

@@ -1,45 +1,42 @@
import { AieroButton } from "@/components/shared/AieroButton";
import { tenextButton as TenextButton } from "@/components/shared/AieroButton";
import { PageContainer } from "@/components/shared/PageContainer";
/**
* PreFooterCTA — "It's blow your mind! Meet Neural Networks" banner.
* PreFooterCTA — "Elevate your business with our innovative solutions" banner.
*
* Shared across: Home, About, Services, Contacts.
*
* Structure (from reference):
* - Dark grey rounded card
* - Large teal gradient heading
* - "Get a Quote" button with arrow
* - Plain white section
* - Large dark heading, left aligned
* - "Get in touch" text link, right aligned
*/
export function PreFooterCTA() {
return (
<section className="px-5 pb-5">
<div className="overflow-hidden rounded-[25px] bg-aiero-card-dark">
<PageContainer className="flex flex-col items-center gap-8 py-16 text-center md:flex-row md:justify-between md:py-20 md:text-left lg:py-24">
{/* Heading */}
<h2
className="max-w-[700px]"
style={{
fontFamily: "var(--font-sora)",
fontSize: "clamp(28px, 3.5vw, 48px)",
fontWeight: 700,
lineHeight: 1.15,
}}
>
<span className="text-white">{"It's blow your mind! "}</span>
<span className="gradient-text-purple">Meet Neural Networks</span>
</h2>
<section className="bg-white px-5 py-[60px] md:py-[80px]">
<PageContainer className="flex flex-col items-center gap-8 text-center md:flex-row md:justify-between md:text-left">
{/* Heading */}
<h2
className="max-w-[700px] text-tenext-dark"
style={{
fontFamily: "var(--font-sora)",
fontSize: "clamp(28px, 3.5vw, 48px)",
fontWeight: 700,
lineHeight: 1.15,
}}
>
Elevate your business with our innovative solutions
</h2>
{/* CTA */}
<AieroButton
href="/contacts"
variant="gradient-border"
className="shrink-0 rounded-full px-8 py-4 text-base font-semibold text-white"
>
Get a Quote
</AieroButton>
</PageContainer>
</div>
{/* CTA */}
<TenextButton
href="/contacts"
variant="simple"
className="shrink-0 text-[15px] font-semibold text-tenext-teal"
>
Get in touch
</TenextButton>
</PageContainer>
</section>
);
}

View File

@@ -1,4 +1,3 @@
import { ArrowIcon } from "./icons/ArrowIcon";
interface ScrollDownProps {
@@ -10,7 +9,7 @@ interface ScrollDownProps {
/**
* ScrollDown — interactive scroll indicator.
* Matches original Aiero reference animation and styling.
* Matches original tenext reference animation and styling.
*/
export function ScrollDown({
href = "#scroll-down",
@@ -23,8 +22,8 @@ export function ScrollDown({
<a
href={href}
className={`inline-flex h-[78px] w-[190px] items-center justify-center gap-2 rounded-b-[25px] ${
light ? "bg-white text-aiero-dark" : "bg-aiero-dark text-white"
} text-[14px] font-semibold no-underline transition-all hover:text-aiero-teal hover:shadow-scroll-btn`}
light ? "bg-white text-tenext-dark" : "bg-tenext-dark text-white"
} text-[14px] font-semibold no-underline transition-all hover:text-tenext-teal hover:shadow-scroll-btn`}
style={{ fontFamily: "var(--font-sora)" }}
>
{text}

View File

@@ -41,7 +41,7 @@ export function SectionHeading({
<div className={className}>
{tag && (
<span
className={`aiero-subheading mb-4 text-aiero-teal ${tagClassName}`}
className={`tenext-subheading mb-4 text-tenext-teal ${tagClassName}`}
style={{ fontFamily: "var(--font-sora)" }}
>
{tag}
@@ -62,7 +62,7 @@ export function SectionHeading({
{description && (
<p
className={`mt-6 text-base leading-relaxed text-aiero-text-muted ${descriptionClassName}`}
className={`mt-6 text-base leading-relaxed text-tenext-text-muted ${descriptionClassName}`}
>
{description}
</p>

View File

@@ -25,7 +25,7 @@ export function SocialIcons({
rel="noopener noreferrer"
role="listitem"
aria-label={link.platform}
className={`flex h-10 w-10 items-center justify-center rounded-full border border-aiero-card-border text-aiero-text-muted transition-all duration-300 hover:border-aiero-teal hover:text-aiero-teal ${iconClassName}`}
className={`flex h-10 w-10 items-center justify-center rounded-full border border-tenext-card-border text-tenext-text-muted transition-all duration-300 hover:border-tenext-teal hover:text-tenext-teal ${iconClassName}`}
>
<SocialSvg icon={link.icon} />
</a>

View File

@@ -4,7 +4,7 @@
// CSS custom properties in globals.css mirror these for Tailwind usage.
// ─────────────────────────────────────────────────────────────────────
/** Color palette — use Tailwind classes (e.g. `bg-aiero-dark`) when possible */
/** Color palette — use Tailwind classes (e.g. `bg-tenext-dark`) when possible */
export const colors = {
// Backgrounds
bgDark: "#1F1F1F",
@@ -30,6 +30,9 @@ export const colors = {
textMuted: "#87899B",
textWhite: "#FFFFFF",
textDark: "#1F1F1F",
// Surfaces
surfaceMuted: "#ECF0F4",
} as const;
/** Spacing tokens — predefined values only, no arbitrary px */

View File

@@ -15,13 +15,13 @@ export interface FooterLink {
}
export const siteConfig = {
name: "Aiero",
name: "tenext",
tagline: "AI Agency",
// Contact
phone: "+1 800 529 10 37",
phoneRaw: "+18005291037",
email: "aiero@mail.co",
email: "tenext@mail.co",
address: {
line1: "USA, New York 1060",
line2: "Str. First Avenue 1",
@@ -29,9 +29,17 @@ export const siteConfig = {
// Social
socials: [
{ platform: "Facebook", url: "https://www.facebook.com/", icon: "facebook" },
{
platform: "Facebook",
url: "https://www.facebook.com/",
icon: "facebook",
},
{ platform: "X", url: "https://twitter.com/", icon: "x-twitter" },
{ platform: "LinkedIn", url: "https://www.linkedin.com/", icon: "linkedin" },
{
platform: "LinkedIn",
url: "https://www.linkedin.com/",
icon: "linkedin",
},
{ platform: "Youtube", url: "https://www.youtube.com/", icon: "youtube" },
] as SocialLink[],
@@ -52,7 +60,7 @@ export const siteConfig = {
},
// Legal
copyright: Aiero 2025. All rights reserved.",
copyright: tenext 2025. All rights reserved.",
legalLinks: [
{ label: "Terms of use", href: "#" },
{ label: "Privacy Policy", href: "#" },

View File

@@ -1,7 +1,14 @@
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
/* config options here */
images: {
remotePatterns: [
{
protocol: "https",
hostname: "8ded8880.delivery.rocketcdn.me",
},
],
},
};
export default nextConfig;

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

BIN
public/images/tenext/3x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

File diff suppressed because one or more lines are too long

View File

@@ -39,7 +39,7 @@ mouse.set(e.x/gl.renderer.width,1.0-e.y/gl.renderer.height);if(!lastTime){lastTi
const deltaX=e.x-lastMouse.x;const deltaY=e.y-lastMouse.y;lastMouse.set(e.x,e.y);let time=performance.now();let delta=Math.max(10.4,time-lastTime);lastTime=time;velocity.x=deltaX/delta;velocity.y=deltaY/delta;velocity.needsUpdate=!0}
requestAnimationFrame(update);function update(t){requestAnimationFrame(update);if(!velocity.needsUpdate){mouse.set(-1);velocity.set(0)}
velocity.needsUpdate=!1;flowmap.aspect=aspect;flowmap.mouse.copy(mouse);flowmap.velocity.lerp(velocity,velocity.len?0.15:0.1);flowmap.update();program.uniforms.uTime.value=t*0.01;renderer.render({scene:mesh})}}})}
jQuery(window).on('elementor/frontend/init',function(){elementorFrontend.hooks.addAction('frontend/element_ready/icon.default',function($scope){if($scope.hasClass('aiero-icon-decoration-on')){$scope.find('.elementor-icon-wrapper').wrapInner('<div class="elementor-icon-inner"></div>')}
jQuery(window).on('elementor/frontend/init',function(){elementorFrontend.hooks.addAction('frontend/element_ready/icon.default',function($scope){if($scope.hasClass('tenext-icon-decoration-on')){$scope.find('.elementor-icon-wrapper').wrapInner('<div class="elementor-icon-inner"></div>')}
if($scope.find('.elementor-icon').hasClass('elementor-animation-slide-aslant')){$scope.find('.elementor-icon i, .elementor-icon svg').clone().appendTo($scope.find('.elementor-icon'));$scope.find('.elementor-animation-slide-aslant').wrapInner('<span class="elementor-icon-slide-aslant-inner"></span>')}});elementorFrontend.hooks.addAction('frontend/element_ready/global',function($scope){if(jQuery('body').hasClass('elementor-editor-active')){if($scope.hasClass('elementor-section')&&!$scope.children('.elementor-container').children('.elementor-row').length){$scope.children('.elementor-container').wrapInner('<div class="elementor-row ui-sortable"></div>')}else if($scope.hasClass('elementor-column')&&!$scope.parent('.elementor-row').length){$scope.siblings('.elementor-row').children().unwrap();$scope.parent('.elementor-container').wrapInner('<div class="elementor-row ui-sortable"></div>')}}});elementorFrontend.hooks.addAction('frontend/element_ready/section',function($scope){if(!jQuery('body').hasClass('elementor-editor-active')){if(!$scope.children('.elementor-container').children('.elementor-row').length){$scope.children('.elementor-container').wrapInner('<div class="elementor-row"></div>');if($scope.data('parallax')=='scroll'){background_image_parallax($scope,0.7)}}else{if($scope.data('parallax')=='scroll'){background_image_parallax($scope,0.7)}}
if($scope.hasClass('elementor-section-scroll-animation-on')){jQuery('.body-container').css('overflow','visible');$scope.css({position:'sticky',top:jQuery('.sticky-header').length>0?'140px':'0px'});$scope.closest('.elementor-widget-wrap').height(1.2*$scope.height());jQuery(window).on('resize',function(){$scope.closest('.elementor-widget-wrap').height(1.2*$scope.height())});const{ScrollObserver,valueAtPercentage}=aat;$scope.each(function(index){ScrollObserver.Element(jQuery(this)[0],{offsetTop:jQuery('.sticky-header').length>0?140:0,offsetBottom:0}).onScroll(({percentageY})=>{const clipPath=`inset(${valueAtPercentage({
from: 350,

View File

@@ -1,8 +1,8 @@
'use strict';function animateHeading($scope){if($scope.data('settings')&&$scope.data('settings')._animation&&$scope.data('settings')._animation=='aiero_heading_animation'){$scope.find('.aiero-heading-content').html($scope.find('.aiero-heading-content').html().replace(/(^|<\/?[^>]+>|\s+)([^\s<]+)/g,'$1<span class="word">$2</span>'));$scope.find('.aiero-heading-content .word').contents().each(function(){if(this.nodeType===3){jQuery(this).parent().html(jQuery(this).text().replace(/\S/g,'<span class="letter">$&</span>'))}});$scope.find('.aiero-heading-content .letter').each(function(index){jQuery(this).css('animation-delay',index/50+'s')})}}
'use strict';function animateHeading($scope){if($scope.data('settings')&&$scope.data('settings')._animation&&$scope.data('settings')._animation=='tenext_heading_animation'){$scope.find('.tenext-heading-content').html($scope.find('.tenext-heading-content').html().replace(/(^|<\/?[^>]+>|\s+)([^\s<]+)/g,'$1<span class="word">$2</span>'));$scope.find('.tenext-heading-content .word').contents().each(function(){if(this.nodeType===3){jQuery(this).parent().html(jQuery(this).text().replace(/\S/g,'<span class="letter">$&</span>'))}});$scope.find('.tenext-heading-content .letter').each(function(index){jQuery(this).css('animation-delay',index/50+'s')})}}
function initModernProjects($el){$el.find('.project-modern-listing .project-item-wrapper').first().addClass('active');$el.find('.project-modern-listing .project-item-modern-header').on('click',function(){var $projectItem=jQuery(this).closest('.project-item-wrapper');$projectItem.addClass('active');$projectItem.find('.project-item-modern-content').slideDown(400);$projectItem.siblings().removeClass('active');$projectItem.siblings().find('.project-item-modern-content').slideUp(400)})}
function playProjectsSliderAudio($el){$el.find('.project-listing-wrapper.project-slider-listing.content-type-audio').on('click','.play-audio',function(){jQuery(this).closest('.owl-item').siblings().find('.project-audio-wrapper audio').each(function(){jQuery(this)[0].pause();jQuery(this)[0].currentTime=0;jQuery(this).siblings('.play-audio').removeClass('active')});var audioElement=jQuery(this).siblings('audio')[0];if(audioElement.paused){jQuery(this).addClass('active');audioElement.play()}else{audioElement.pause();audioElement.currentTime=0;jQuery(this).removeClass('active')}
var $this=jQuery(this);audioElement.addEventListener('ended',function(){$this.removeClass('active')})})}
function playListingAudio($el){$el.find('.aiero-audio-listing').on('click','.audio-item',function(){jQuery(this).closest('.audio-item-wrapper').siblings().find('.audio-item').each(function(){jQuery(this).removeClass('active');jQuery(this).find('audio')[0].pause();jQuery(this).find('audio')[0].currentTime=0});var audioElement=jQuery(this).find('audio')[0];if(audioElement.paused){jQuery(this).addClass('active');audioElement.play()}else{audioElement.pause();audioElement.currentTime=0;jQuery(this).removeClass('active')}
function playListingAudio($el){$el.find('.tenext-audio-listing').on('click','.audio-item',function(){jQuery(this).closest('.audio-item-wrapper').siblings().find('.audio-item').each(function(){jQuery(this).removeClass('active');jQuery(this).find('audio')[0].pause();jQuery(this).find('audio')[0].currentTime=0});var audioElement=jQuery(this).find('audio')[0];if(audioElement.paused){jQuery(this).addClass('active');audioElement.play()}else{audioElement.pause();audioElement.currentTime=0;jQuery(this).removeClass('active')}
var $this=jQuery(this);audioElement.addEventListener('ended',function(){$this.removeClass('active')})})}
function handleProjectsExcerptHeight(){jQuery('.project-listing-wrapper.project-slider-listing:not(.content-type-audio) .project-item').each(function(){const item=jQuery(this);const excerpt=jQuery(this).find('.post-excerpt-wrapper');excerpt.hide();item.on('mouseenter',function(){excerpt.delay(300).slideDown(300)});item.on('mouseleave',function(){excerpt.slideUp(300)})})}
function handleProjectsGridExcerptHeight($scope){if(!$scope.find('.project-grid-listing').hasClass('text-position-inside')){return}
@@ -13,27 +13,27 @@ const card=jQuery(this);const toScale=1-(cards.length-1-index)*0.05;const nextCa
to: 0.6,
percentage: percentageY
})})`;cardInner.css('filter',filter)})})}
function initMovingList($scope){gsap.defaults({overwrite:"auto"});gsap.registerPlugin(ScrollTrigger);gsap.config({nullTargetWarn:!1});$scope.find('.aiero-moving-list-widget').each(function(index){const movingList=jQuery(this).find('.moving-list');const[x,xEnd]=(index%2)?[(jQuery(this)[0].offsetWidth-movingList[0].scrollWidth)/3,5/2]:[5/2,(jQuery(this)[0].offsetWidth-movingList[0].scrollWidth)/3];gsap.fromTo(movingList[0],{x},{x:xEnd,scrollTrigger:{trigger:jQuery(this)[0],scrub:0.5,}})})}
function initMovingList($scope){gsap.defaults({overwrite:"auto"});gsap.registerPlugin(ScrollTrigger);gsap.config({nullTargetWarn:!1});$scope.find('.tenext-moving-list-widget').each(function(index){const movingList=jQuery(this).find('.moving-list');const[x,xEnd]=(index%2)?[(jQuery(this)[0].offsetWidth-movingList[0].scrollWidth)/3,5/2]:[5/2,(jQuery(this)[0].offsetWidth-movingList[0].scrollWidth)/3];gsap.fromTo(movingList[0],{x},{x:xEnd,scrollTrigger:{trigger:jQuery(this)[0],scrub:0.5,}})})}
function initServicesButton($scope){const items=$scope.find('.service-item');items.each(function(){const item=jQuery(this);item.on('mouseenter',function(){item.find('.button-container').slideDown(300)});item.on('mouseleave',function(){item.find('.button-container').slideUp(300)})})}
function initParallaxButton($scope){let adv_button_wrapper=$scope.find('.aiero_adv_button_wrapper');adv_button_wrapper.mouseleave(function(e){TweenMax.to(this,0.6,{scale:1});TweenMax.to(adv_button_wrapper.find('.aiero_adv_button'),0.6,{scale:1,x:0,y:0});TweenMax.to(adv_button_wrapper.find('.aiero_adv_button_circle'),0.6,{scale:1,x:0,y:0,delay:0.1});TweenMax.to(adv_button_wrapper.find('.aiero_adv_button_text'),0.6,{scale:1,x:0,y:0})});adv_button_wrapper.mouseenter(function(e){TweenMax.to(this,0.6,{transformOrigin:'0 0',scale:1});TweenMax.to(adv_button_wrapper.find('.aiero_adv_button'),0.6,{scale:1});TweenMax.to(adv_button_wrapper.find('.aiero_adv_button_circle'),0.6,{scale:1});TweenMax.to(adv_button_wrapper.find('.aiero_adv_button_text'),0.6,{scale:1})});adv_button_wrapper.mousemove(function(e){callParallax(e)});function callParallax(e){parallaxIt(e,'.aiero_adv_button',40);parallaxIt2(e,'.aiero_adv_button_circle',40);parallaxIt(e,'.aiero_adv_button_text',10)}
function initParallaxButton($scope){let adv_button_wrapper=$scope.find('.tenext_adv_button_wrapper');adv_button_wrapper.mouseleave(function(e){TweenMax.to(this,0.6,{scale:1});TweenMax.to(adv_button_wrapper.find('.tenext_adv_button'),0.6,{scale:1,x:0,y:0});TweenMax.to(adv_button_wrapper.find('.tenext_adv_button_circle'),0.6,{scale:1,x:0,y:0,delay:0.1});TweenMax.to(adv_button_wrapper.find('.tenext_adv_button_text'),0.6,{scale:1,x:0,y:0})});adv_button_wrapper.mouseenter(function(e){TweenMax.to(this,0.6,{transformOrigin:'0 0',scale:1});TweenMax.to(adv_button_wrapper.find('.tenext_adv_button'),0.6,{scale:1});TweenMax.to(adv_button_wrapper.find('.tenext_adv_button_circle'),0.6,{scale:1});TweenMax.to(adv_button_wrapper.find('.tenext_adv_button_text'),0.6,{scale:1})});adv_button_wrapper.mousemove(function(e){callParallax(e)});function callParallax(e){parallaxIt(e,'.tenext_adv_button',40);parallaxIt2(e,'.tenext_adv_button_circle',40);parallaxIt(e,'.tenext_adv_button_text',10)}
function parallaxIt(e,target,movement){var boundingRect=adv_button_wrapper[0].getBoundingClientRect();var relX=e.pageX-boundingRect.left;var relY=e.pageY-boundingRect.top;var scrollTop=window.pageYOffset||document.documentElement.scrollTop;var targetEl=adv_button_wrapper.find(target);TweenMax.to(targetEl,0.5,{x:(relX-boundingRect.width/2)/boundingRect.width*movement,y:(relY-boundingRect.height/2-scrollTop)/boundingRect.width*movement,ease:Power3.easeOut})}
function parallaxIt2(e,target,movement){var boundingRect=adv_button_wrapper[0].getBoundingClientRect();var relX=e.pageX-boundingRect.left;var relY=e.pageY-boundingRect.top;var scrollTop=window.pageYOffset||document.documentElement.scrollTop;var targetEl=adv_button_wrapper.find(target);TweenMax.to(targetEl,0.5,{x:(relX-boundingRect.width/2)/boundingRect.width*movement,y:(relY-boundingRect.height/2-scrollTop)/boundingRect.width*movement,ease:Power3.easeOut,delay:0.1})}}
jQuery(window).on('elementor/frontend/init',function(){elementorFrontend.hooks.addAction('frontend/element_ready/aiero_button.default',function($scope){if($scope.find('.button-widget').hasClass('aiero-button-type-parallax')){initParallaxButton($scope)}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_audio_listing.default',function($scope){playListingAudio($scope)});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_blog_listing.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(fix_responsive_iframe,600);setTimeout(custom_video_play_button,800)}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_gallery.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(isotope_init,2500)}
jQuery(window).on('elementor/frontend/init',function(){elementorFrontend.hooks.addAction('frontend/element_ready/tenext_button.default',function($scope){if($scope.find('.button-widget').hasClass('tenext-button-type-parallax')){initParallaxButton($scope)}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_audio_listing.default',function($scope){playListingAudio($scope)});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_blog_listing.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(fix_responsive_iframe,600);setTimeout(custom_video_play_button,800)}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_gallery.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(isotope_init,2500)}
if(jQuery('.cursor_drag',$scope).length>0&&jQuery(window).width()>=992){const $slider=$scope.find('.gallery-wrapper');const cursor=jQuery('.cursor_drag',$scope);function showCustomCursor(event){cursor.css('left',event.clientX-5).css('top',event.clientY-5)}
$slider.mousemove(showCustomCursor);$slider.mouseleave(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'auto'});jQuery('.gallery-item-link',$scope).css({cursor:'auto'});cursor.removeClass('active');setTimeout(function(){if(!cursor.hasClass('active')){cursor.hide()}},300)}});$slider.mouseenter(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'none'});jQuery('.gallery-item-link',$scope).css({cursor:'none'});cursor.show();setTimeout(function(){cursor.addClass('active')},10)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_projects_listing.default',function($scope){animateHeading($scope);setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(isotope_init,2500)}
$slider.mousemove(showCustomCursor);$slider.mouseleave(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'auto'});jQuery('.gallery-item-link',$scope).css({cursor:'auto'});cursor.removeClass('active');setTimeout(function(){if(!cursor.hasClass('active')){cursor.hide()}},300)}});$slider.mouseenter(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'none'});jQuery('.gallery-item-link',$scope).css({cursor:'none'});cursor.show();setTimeout(function(){cursor.addClass('active')},10)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_projects_listing.default',function($scope){animateHeading($scope);setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(isotope_init,2500)}
setTimeout(handleProjectsExcerptHeight,500);if($scope.find('.project-grid-listing').length>0){setTimeout(function(){handleProjectsGridExcerptHeight($scope)},500)}
if($scope.find('.project-modern-listing').length>0){var scopeID=$scope.attr('data-id');initModernProjects($scope);jQuery('body').on('genre_get_posts_success',function(e,classes,id){if(classes.indexOf('project-modern-listing')!==-1&&id===scopeID){initModernProjects($scope)}})}
if($scope.find('.content-type-audio').length>0){playProjectsSliderAudio($scope)}
if($scope.find('.project-cards-listing').length>0){initCardsProjects($scope);var scopeID=$scope.attr('data-id');jQuery('body').on('genre_get_posts_success',function(e,classes,id){if(classes.indexOf('project-cards-listing')!==-1&&id===scopeID){initCardsProjects($scope)}})}
if($scope.find('.project-grid-listing').length>0){var scopeID=$scope.attr('data-id');jQuery('body').on('genre_get_posts_success',function(e,classes,id){if(classes.indexOf('project-grid-listing')!==-1&&id===scopeID){handleProjectsGridExcerptHeight($scope)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_services_listing.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);animateHeading($scope);initServicesButton($scope);var scopeID=$scope.attr('data-id');jQuery('body').on('genre_get_posts_success',function(e,classes,id){if(classes.indexOf('service-grid-listing')!==-1&&id===scopeID){initServicesButton($scope)}})});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_testimonial_carousel.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('.cursor_drag',$scope).length>0&&jQuery(window).width()>=992){const $slider=$scope.find('.testimonials-slider-container');const cursor=jQuery('.cursor_drag',$scope);function showCustomCursor(event){cursor.css('left',event.clientX-5).css('top',event.clientY-5)}
$slider.mousemove(showCustomCursor);$slider.mouseleave(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'auto'});cursor.removeClass('active');setTimeout(function(){if(!cursor.hasClass('active')){cursor.hide()}},300)}});$slider.mouseenter(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'none'});cursor.show();setTimeout(function(){cursor.addClass('active')},10)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_image_carousel.default',function($scope){animateHeading($scope);setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('.cursor_drag',$scope).length>0&&jQuery(window).width()>=992){const $slider=$scope.find('.slider-wrapper');const cursor=jQuery('.cursor_drag',$scope);function showCustomCursor(event){cursor.css('left',event.clientX-5).css('top',event.clientY-5)}
$slider.mousemove(showCustomCursor);$slider.mouseleave(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'auto'});cursor.removeClass('active');setTimeout(function(){if(!cursor.hasClass('active')){cursor.hide()}},300)}});$slider.mouseenter(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'none'});cursor.show();setTimeout(function(){cursor.addClass('active')},10)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_content_slider.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300)});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_wpforms.default',function(){if(jQuery('body').hasClass('elementor-editor-active')){initFloatPlaceholderInput();initWPFormsSubmitButton()}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_mailchimp.default',function(){if(jQuery('body').hasClass('elementor-editor-active')){initFloatPlaceholderInput();initWPFormsSubmitButton()}});elementorFrontend.hooks.addAction('frontend/element_ready/section.default',function(){if(jQuery('body').hasClass('elementor-editor-active')){background_image_parallax(jQuery('[data-parallax="scroll"]'),0.7)}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_heading.default',function($scope){animateHeading($scope)});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_step_carousel.default',function($scope){animateHeading($scope);setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300)});elementorFrontend.hooks.addAction('frontend/element_ready/image.default',function($scope){if(jQuery(window).width()>=1025){const cursor=jQuery('.hovered-text',$scope);function showCustomCursor(event){cursor.css('left',event.clientX).css('top',event.clientY)}
if($scope.find('.project-grid-listing').length>0){var scopeID=$scope.attr('data-id');jQuery('body').on('genre_get_posts_success',function(e,classes,id){if(classes.indexOf('project-grid-listing')!==-1&&id===scopeID){handleProjectsGridExcerptHeight($scope)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_services_listing.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);animateHeading($scope);initServicesButton($scope);var scopeID=$scope.attr('data-id');jQuery('body').on('genre_get_posts_success',function(e,classes,id){if(classes.indexOf('service-grid-listing')!==-1&&id===scopeID){initServicesButton($scope)}})});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_testimonial_carousel.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('.cursor_drag',$scope).length>0&&jQuery(window).width()>=992){const $slider=$scope.find('.testimonials-slider-container');const cursor=jQuery('.cursor_drag',$scope);function showCustomCursor(event){cursor.css('left',event.clientX-5).css('top',event.clientY-5)}
$slider.mousemove(showCustomCursor);$slider.mouseleave(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'auto'});cursor.removeClass('active');setTimeout(function(){if(!cursor.hasClass('active')){cursor.hide()}},300)}});$slider.mouseenter(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'none'});cursor.show();setTimeout(function(){cursor.addClass('active')},10)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_image_carousel.default',function($scope){animateHeading($scope);setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('.cursor_drag',$scope).length>0&&jQuery(window).width()>=992){const $slider=$scope.find('.slider-wrapper');const cursor=jQuery('.cursor_drag',$scope);function showCustomCursor(event){cursor.css('left',event.clientX-5).css('top',event.clientY-5)}
$slider.mousemove(showCustomCursor);$slider.mouseleave(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'auto'});cursor.removeClass('active');setTimeout(function(){if(!cursor.hasClass('active')){cursor.hide()}},300)}});$slider.mouseenter(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'none'});cursor.show();setTimeout(function(){cursor.addClass('active')},10)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_content_slider.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300)});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_wpforms.default',function(){if(jQuery('body').hasClass('elementor-editor-active')){initFloatPlaceholderInput();initWPFormsSubmitButton()}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_mailchimp.default',function(){if(jQuery('body').hasClass('elementor-editor-active')){initFloatPlaceholderInput();initWPFormsSubmitButton()}});elementorFrontend.hooks.addAction('frontend/element_ready/section.default',function(){if(jQuery('body').hasClass('elementor-editor-active')){background_image_parallax(jQuery('[data-parallax="scroll"]'),0.7)}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_heading.default',function($scope){animateHeading($scope)});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_step_carousel.default',function($scope){animateHeading($scope);setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300)});elementorFrontend.hooks.addAction('frontend/element_ready/image.default',function($scope){if(jQuery(window).width()>=1025){const cursor=jQuery('.hovered-text',$scope);function showCustomCursor(event){cursor.css('left',event.clientX).css('top',event.clientY)}
if(cursor.length>0){$scope.find('img').mousemove(showCustomCursor);$scope.find('img').mouseleave(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('a',$scope).css({cursor:'auto'});$scope.css({cursor:'auto'});cursor.removeClass('active')}});$scope.find('img').mouseenter(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('a',$scope).css({cursor:'none'});$scope.css({cursor:'none'});cursor.addClass('active')}})}}
if($scope.hasClass('elementor-image-scroll-animation-on')){const{ScrollObserver,valueAtPercentage}=aat;const image=$scope.find('img');image.each(function(index){ScrollObserver.Element(jQuery(this)[0],{offsetTop:250,offsetBottom:0}).onScroll(({percentageY})=>{const transform=`perspective(1200px) rotateX(${valueAtPercentage({
from: 15,
to: 0,
percentage: percentageY
})}deg)`;jQuery(this).css('transform',transform)})})}});elementorFrontend.hooks.addAction("frontend/element_ready/tabs.default",function($scope){var image_ids=$scope.data('image-ids');if(image_ids&&image_ids.length){image_ids.forEach(function(e){jQuery('#'+e).addClass('hidden')});jQuery('#'+image_ids[0]).removeClass('hidden');jQuery('.elementor-tab-title.elementor-tab-desktop-title',$scope).each(function(index,el){jQuery(this).on('click',function(e){if(image_ids[index]){image_ids.forEach(function(e){jQuery('#'+e).addClass('hidden')});jQuery('#'+image_ids[index]).removeClass('hidden')}})});jQuery('.elementor-tab-title.elementor-tab-mobile-title',$scope).each(function(index,el){jQuery(this).on('click',function(e){if(image_ids[index]){image_ids.forEach(function(e){jQuery('#'+e).addClass('hidden')});jQuery('#'+image_ids[index]).removeClass('hidden')}})})}});elementorFrontend.hooks.addAction("frontend/element_ready/aiero_tabs.default",function(e){let d=e.find(".aiero_tabs_titles_container"),s=e.find(".aiero_tabs_content_container");jQuery(d).find(".aiero_tab_title_item").first().addClass("active");if(jQuery('body').hasClass('elementor-editor-active')){return}
var tab_content_first_class=jQuery(d).find(".aiero_tab_title_item").first().attr("data-id");jQuery(d).find(".aiero_tab_title_item").each(function(){let e=jQuery(this).attr("data-id");if(e){jQuery('.elementor #'+e).removeClass("active").addClass("hidden")}});if(tab_content_first_class){jQuery('.elementor #'+tab_content_first_class).addClass("active").removeClass("hidden")}
jQuery(s).find(".aiero_tab_content_item").first().addClass("active");e.find(".aiero_tab_title_item a").on("click",function(){let e=jQuery(this).parent().attr("data-id");if(!jQuery(this).parent().is(".active")){d.find(".active").removeClass("active");s.find(".active").removeClass("active");if(e){var all_ids=[];jQuery(d).find(".aiero_tab_title_item").each(function(){let e=jQuery(this).attr("data-id");if(e){all_ids.push('.elementor #'+e);var swiper=jQuery('.elementor #'+e).find('.swiper-container');if(swiper.length){setTimeout(function(){window.dispatchEvent(new Event('resize'))},500)}}});var all_ids_str=all_ids.join();jQuery(all_ids_str).removeClass("active").addClass("hidden")}
jQuery(this).parent().addClass("active");if(e){jQuery('.elementor #'+e).addClass("active").removeClass("hidden");s.find("#"+e).addClass("active")}}})});elementorFrontend.hooks.addAction("frontend/element_ready/aiero_moving_list.default",function(e){initMovingList(e)});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_case_study_listing.default',function(){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(isotope_init,500)}})})
})}deg)`;jQuery(this).css('transform',transform)})})}});elementorFrontend.hooks.addAction("frontend/element_ready/tabs.default",function($scope){var image_ids=$scope.data('image-ids');if(image_ids&&image_ids.length){image_ids.forEach(function(e){jQuery('#'+e).addClass('hidden')});jQuery('#'+image_ids[0]).removeClass('hidden');jQuery('.elementor-tab-title.elementor-tab-desktop-title',$scope).each(function(index,el){jQuery(this).on('click',function(e){if(image_ids[index]){image_ids.forEach(function(e){jQuery('#'+e).addClass('hidden')});jQuery('#'+image_ids[index]).removeClass('hidden')}})});jQuery('.elementor-tab-title.elementor-tab-mobile-title',$scope).each(function(index,el){jQuery(this).on('click',function(e){if(image_ids[index]){image_ids.forEach(function(e){jQuery('#'+e).addClass('hidden')});jQuery('#'+image_ids[index]).removeClass('hidden')}})})}});elementorFrontend.hooks.addAction("frontend/element_ready/tenext_tabs.default",function(e){let d=e.find(".tenext_tabs_titles_container"),s=e.find(".tenext_tabs_content_container");jQuery(d).find(".tenext_tab_title_item").first().addClass("active");if(jQuery('body').hasClass('elementor-editor-active')){return}
var tab_content_first_class=jQuery(d).find(".tenext_tab_title_item").first().attr("data-id");jQuery(d).find(".tenext_tab_title_item").each(function(){let e=jQuery(this).attr("data-id");if(e){jQuery('.elementor #'+e).removeClass("active").addClass("hidden")}});if(tab_content_first_class){jQuery('.elementor #'+tab_content_first_class).addClass("active").removeClass("hidden")}
jQuery(s).find(".tenext_tab_content_item").first().addClass("active");e.find(".tenext_tab_title_item a").on("click",function(){let e=jQuery(this).parent().attr("data-id");if(!jQuery(this).parent().is(".active")){d.find(".active").removeClass("active");s.find(".active").removeClass("active");if(e){var all_ids=[];jQuery(d).find(".tenext_tab_title_item").each(function(){let e=jQuery(this).attr("data-id");if(e){all_ids.push('.elementor #'+e);var swiper=jQuery('.elementor #'+e).find('.swiper-container');if(swiper.length){setTimeout(function(){window.dispatchEvent(new Event('resize'))},500)}}});var all_ids_str=all_ids.join();jQuery(all_ids_str).removeClass("active").addClass("hidden")}
jQuery(this).parent().addClass("active");if(e){jQuery('.elementor #'+e).addClass("active").removeClass("hidden");s.find("#"+e).addClass("active")}}})});elementorFrontend.hooks.addAction("frontend/element_ready/tenext_moving_list.default",function(e){initMovingList(e)});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_case_study_listing.default',function(){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(isotope_init,500)}})})

View File

@@ -1 +1,18 @@
@font-face{font-display:swap;font-family:'fontello';src:url(../../../../../../../../../themes/aiero/fonts/fontello.eot);src:url('../../../../../../../../../themes/aiero/fonts/fontello.eot#iefix') format('embedded-opentype'),url(../../../../../../../../../themes/aiero/fonts/fontello.woff2) format('woff2'),url(../../../../../../../../../themes/aiero/fonts/fontello.woff) format('woff'),url(../../../../../../../../../themes/aiero/fonts/fontello.ttf) format('truetype'),url('../../../../../../../../../themes/aiero/fonts/fontello.svg#fontello') format('svg');font-weight:400;font-style:normal}
@font-face {
font-display: swap;
font-family: "fontello";
src: url(../../../../../../../../../themes/tenext/fonts/fontello.eot);
src:
url("../../../../../../../../../themes/tenext/fonts/fontello.eot#iefix")
format("embedded-opentype"),
url(../../../../../../../../../themes/tenext/fonts/fontello.woff2)
format("woff2"),
url(../../../../../../../../../themes/tenext/fonts/fontello.woff)
format("woff"),
url(../../../../../../../../../themes/tenext/fonts/fontello.ttf)
format("truetype"),
url("../../../../../../../../../themes/tenext/fonts/fontello.svg#fontello")
format("svg");
font-weight: 400;
font-style: normal;
}

View File

@@ -13,7 +13,7 @@ function menu_text_animate(){jQuery('.header .main-menu > li > a').wrapInner('<s
function mobile_menu_open(){jQuery('.menu-trigger').on('click',function(){jQuery('.mobile-header-menu-container, .body-overlay').addClass('active')});jQuery('.menu-close, .body-overlay').on('click',function(){jQuery('.mobile-header-menu-container, .body-overlay').removeClass('active')})}
function compact_menu_open(){jQuery('.compact-menu-trigger').on('click',function(){jQuery('.alter-menu-wrapper, .body-overlay').addClass('active')});jQuery('.alter-menu-close, .body-overlay').on('click',function(){jQuery('.alter-menu-wrapper, .body-overlay').removeClass('active')})}
function simple_sidebar_open(){jQuery('.simple-sidebar-trigger').on('click',function(){if(jQuery(window).width()<992){jQuery('.simple-sidebar, .body-overlay').addClass('active')}});jQuery('.shop-hidden-sidebar-close, .body-overlay').on('click',function(){jQuery('.simple-sidebar, .body-overlay').removeClass('active')})}
function widget_list_hierarchy_init(){widget_archives_hierarchy_controller('.widget .wp-block-page-list li','ul.wp-block-navigation__submenu-container','parent-archive','widget-archive-trigger');widget_archives_hierarchy_controller('.widget ul li','ul.children','parent-archive','widget-archive-trigger');widget_archives_hierarchy_controller('.widget_nav_menu .menu li','ul.sub-menu','parent-archive','widget-menu-trigger');widget_archives_hierarchy_controller('.widget_aiero_nav_menu_widget .menu li','ul.sub-menu','parent-archive','widget-menu-trigger')}
function widget_list_hierarchy_init(){widget_archives_hierarchy_controller('.widget .wp-block-page-list li','ul.wp-block-navigation__submenu-container','parent-archive','widget-archive-trigger');widget_archives_hierarchy_controller('.widget ul li','ul.children','parent-archive','widget-archive-trigger');widget_archives_hierarchy_controller('.widget_nav_menu .menu li','ul.sub-menu','parent-archive','widget-menu-trigger');widget_archives_hierarchy_controller('.widget_tenext_nav_menu_widget .menu li','ul.sub-menu','parent-archive','widget-menu-trigger')}
function widget_archives_hierarchy_controller(list_item_selector,sublist_item_selector,parent_class,trigger_class){jQuery(list_item_selector).has(sublist_item_selector).each(function(){jQuery(this).addClass(parent_class);jQuery(this).append("<span class='"+trigger_class+"'></span>")});jQuery(list_item_selector+">"+sublist_item_selector).css("display","none");jQuery(list_item_selector+">.item-wrapper>"+sublist_item_selector).css("display","none");jQuery(document).on("click",list_item_selector+" ."+trigger_class,function(){var el=jQuery(this);var sublist=el.siblings(sublist_item_selector);var sublist_alt=el.siblings('.item-wrapper').children(sublist_item_selector);if(!sublist.length&&!sublist_alt.length)return;sublist=sublist.first();sublist_alt=sublist_alt.first();if(!el.hasClass('active')){var currentParents=el.parents('.menu-item');el.parents().siblings('.menu-item').find("."+trigger_class).removeClass('active');el.parents().siblings('.menu-item').find('.sub-menu').slideUp(300)}
el.toggleClass('active');sublist.slideToggle(300);sublist_alt.slideToggle(300)})}
function fix_responsive_iframe(){jQuery('.video-embed > div').each(function(){jQuery(this).unwrap('.video-embed')})}

View File

@@ -8,17 +8,17 @@ input.val(newVal);input.trigger('change')});btnDown.on('click',function(){if(inp
if(oldValue<=min){var newVal=oldValue}else{var newVal=oldValue-1}
input.val(newVal);input.trigger('change')})}})}
function single_product_thumb_slider(){jQuery('.woocommerce-product-gallery--with-images').find('.flex-control-nav').slick({mobileFirst:!0,prevArrow:'<div class="slick-button slick-prev"></div>',nextArrow:'<div class="slick-button slick-next"></div>',infinite:!1,responsive:[{breakpoint:120,settings:{slidesToShow:3,vertical:!1,verticalSwiping:!1}},{breakpoint:400,settings:{slidesToShow:4,vertical:!1,verticalSwiping:!1}},{breakpoint:576,settings:{slidesToShow:5,vertical:!1,verticalSwiping:!1}},{breakpoint:768,settings:{slidesToShow:4,vertical:!1,verticalSwiping:!1}},{breakpoint:992,settings:{slidesToShow:4,vertical:!0,verticalSwiping:!0}}]})}
function initWoocommerceAieroButton(){if(jQuery('#payment #place_order').find('.icon-button-arrow').length<1){jQuery('#payment #place_order').append('<span class="icon-button-arrow"></span>')}
function initWoocommercetenextButton(){if(jQuery('#payment #place_order').find('.icon-button-arrow').length<1){jQuery('#payment #place_order').append('<span class="icon-button-arrow"></span>')}
if(jQuery('#payment #place_order').find('.button-inner').length<1){jQuery('#payment #place_order').append('<span class="button-inner"></span>')}}
jQuery(document).ready(function(){product_filters_open();custom_quantity();setTimeout(single_product_thumb_slider,500);if(jQuery(document.body).hasClass('woocommerce-account')){setTimeout(function(){initFloatPlaceholderInput('.woocommerce form .woocommerce-Input[type="password"][placeholder]:not([placeholder=""])');jQuery('.input-floating-wrap ~ .show-password-input').on('click',function(){if(jQuery(this).hasClass('display-password')){jQuery(this).siblings('.input-floating-wrap').find('input[type="password"]').prop('type','text')}else{jQuery(this).siblings('.input-floating-wrap').find('input[type="text"]').prop('type','password')}})},300)}
jQuery('.sidebar .wc-block-grid__product-add-to-cart .add_to_cart_button, .slide-sidebar-wrapper .wc-block-grid__product-add-to-cart .add_to_cart_button, .footer .wc-block-grid__product-add-to-cart .add_to_cart_button').append('<span class="button-inner"></span>');jQuery('.woocommerce-cart-form .actions .button').append('<span class="icon-button-arrow"></span><span class="button-inner"></span>');jQuery(document.body).on('updated_shipping_method',function(){initFloatPlaceholderInput();initWoocommerceAieroButton()});jQuery(document.body).on('updated_wc_div',function(){initFloatPlaceholderInput();initWoocommerceAieroButton();if(jQuery('.woocommerce-cart-form .actions .button').find('.icon-button-arrow').length<1){jQuery('.woocommerce-cart-form .actions .button').append('<span class="icon-button-arrow"></span>')}
if(jQuery('.woocommerce-cart-form .actions .button').find('.button-inner').length<1){jQuery('.woocommerce-cart-form .actions .button').append('<span class="button-inner"></span>')}});jQuery(document.body).on('country_to_state_changed',function(){initFloatPlaceholderInput();initWoocommerceAieroButton()});jQuery(document.body).on('init_checkout',function(){initWoocommerceAieroButton()});jQuery(document.body).on('updated_checkout',function(){initFloatPlaceholderInput();initWoocommerceAieroButton()});jQuery(document.body).on('payment_method_selected',function(){initWoocommerceAieroButton()});jQuery('.single-product .single_add_to_cart_button').append('<span class="button-inner"></span>');jQuery('.single-product .added_to_cart').append('<span class="button-inner"></span>');jQuery(document.body).on('wc_cart_button_updated',function(){if(jQuery('.single-product .added_to_cart').find('.button-inner').length<1){jQuery('.single-product .added_to_cart').append('<span class="button-inner"></span>')}})});function is_mobile(){if(window.innerWidth<768){return!0}else{return!1}}
jQuery('.sidebar .wc-block-grid__product-add-to-cart .add_to_cart_button, .slide-sidebar-wrapper .wc-block-grid__product-add-to-cart .add_to_cart_button, .footer .wc-block-grid__product-add-to-cart .add_to_cart_button').append('<span class="button-inner"></span>');jQuery('.woocommerce-cart-form .actions .button').append('<span class="icon-button-arrow"></span><span class="button-inner"></span>');jQuery(document.body).on('updated_shipping_method',function(){initFloatPlaceholderInput();initWoocommercetenextButton()});jQuery(document.body).on('updated_wc_div',function(){initFloatPlaceholderInput();initWoocommercetenextButton();if(jQuery('.woocommerce-cart-form .actions .button').find('.icon-button-arrow').length<1){jQuery('.woocommerce-cart-form .actions .button').append('<span class="icon-button-arrow"></span>')}
if(jQuery('.woocommerce-cart-form .actions .button').find('.button-inner').length<1){jQuery('.woocommerce-cart-form .actions .button').append('<span class="button-inner"></span>')}});jQuery(document.body).on('country_to_state_changed',function(){initFloatPlaceholderInput();initWoocommercetenextButton()});jQuery(document.body).on('init_checkout',function(){initWoocommercetenextButton()});jQuery(document.body).on('updated_checkout',function(){initFloatPlaceholderInput();initWoocommercetenextButton()});jQuery(document.body).on('payment_method_selected',function(){initWoocommercetenextButton()});jQuery('.single-product .single_add_to_cart_button').append('<span class="button-inner"></span>');jQuery('.single-product .added_to_cart').append('<span class="button-inner"></span>');jQuery(document.body).on('wc_cart_button_updated',function(){if(jQuery('.single-product .added_to_cart').find('.button-inner').length<1){jQuery('.single-product .added_to_cart').append('<span class="button-inner"></span>')}})});function is_mobile(){if(window.innerWidth<768){return!0}else{return!1}}
function is_mobile_device(){if(navigator.userAgent.match(/(Android|iPhone|iPod|iPad|Phone|DROID|webOS|BlackBerry|Windows Phone|ZuneWP7|IEMobile|Tablet|Kindle|Playbook|Nexus|Xoom|SM-N900T|GT-N7100|SAMSUNG-SGH-I717|SM-T330NU)/)){return!0}else{return!1}}
function not_desktop(){if((window.innerWidth<1367&&is_mobile_device())||window.innerWidth<1200){return!0}else{return!1}}
jQuery(document.body).on('updated_cart_totals',function(){custom_quantity()});jQuery('.woocommerce,.woocommerce-page').on('click','.shop-mode-buttons a',function(e){var mode=jQuery(this).hasClass('woocommerce-grid')?'grid':'list';var mode_old=jQuery(this).siblings('input').val();if(mode!=mode_old){jQuery.cookie('shop_mode',mode,{expires:365,path:'/'});jQuery(this).siblings('input').val(mode).parents('form').get(0).submit()}
e.preventDefault();return!1});window.addEventListener("load",function(){aiero_ajax_add_to_cart();aiero_trigger_mini_cart()});function aiero_trigger_mini_cart(){var cart=jQuery('.mini-cart-panel');cart.off();if(window.innerWidth>=992){jQuery('.header .mini-cart-trigger').on('click',function(e){e.preventDefault();cart.addClass('active');jQuery('.close-mini-cart').off();aiero_close_mini_cart()})}}
function aiero_close_mini_cart(){jQuery('.close-mini-cart').on('click',function(){jQuery('.mini-cart').removeClass('active')})}
function aiero_ajax_add_to_cart(){if(typeof wc_add_to_cart_params!=='undefined'){if(jQuery('.single_add_to_cart_button').closest('.product').hasClass('product-type-external')){return}
e.preventDefault();return!1});window.addEventListener("load",function(){tenext_ajax_add_to_cart();tenext_trigger_mini_cart()});function tenext_trigger_mini_cart(){var cart=jQuery('.mini-cart-panel');cart.off();if(window.innerWidth>=992){jQuery('.header .mini-cart-trigger').on('click',function(e){e.preventDefault();cart.addClass('active');jQuery('.close-mini-cart').off();tenext_close_mini_cart()})}}
function tenext_close_mini_cart(){jQuery('.close-mini-cart').on('click',function(){jQuery('.mini-cart').removeClass('active')})}
function tenext_ajax_add_to_cart(){if(typeof wc_add_to_cart_params!=='undefined'){if(jQuery('.single_add_to_cart_button').closest('.product').hasClass('product-type-external')){return}
jQuery('.single_add_to_cart_button').off().on('click',function(e){if(!(jQuery(this).hasClass('single_add_to_cart_button')&&wc_add_to_cart_params.cart_redirect_after_add==='yes')){e.preventDefault();var button=jQuery(this);var form=button.closest('form.cart');var product_id=form.find('input[name=add-to-cart]').val()||button.val()||form.find('.variation_id').val();if(!product_id)
return;if(button.is('.disabled'))
return;var data={action:'aiero_ajax_add_to_cart','add-to-cart':product_id,};form.serializeArray().forEach(function(element){data[element.name]=element.value});jQuery(document.body).trigger('adding_to_cart',[button,data]);jQuery.ajax({type:'POST','url':wc_add_to_cart_params.ajax_url,data:data,beforeSend:function(response){button.removeClass('added').addClass('loading')},complete:function(response){button.addClass('added').removeClass('loading')},success:function(response){if(response.error&response.product_url){window.location=response.product_url;return}else{jQuery(document.body).trigger('added_to_cart',[response.fragments,response.cart_hash,button])}}});return!1}})}}}).call(this,jQuery)
return;var data={action:'tenext_ajax_add_to_cart','add-to-cart':product_id,};form.serializeArray().forEach(function(element){data[element.name]=element.value});jQuery(document.body).trigger('adding_to_cart',[button,data]);jQuery.ajax({type:'POST','url':wc_add_to_cart_params.ajax_url,data:data,beforeSend:function(response){button.removeClass('added').addClass('loading')},complete:function(response){button.addClass('added').removeClass('loading')},success:function(response){if(response.error&response.product_url){window.location=response.product_url;return}else{jQuery(document.body).trigger('added_to_cart',[response.fragments,response.cart_hash,button])}}});return!1}})}}}).call(this,jQuery)

View File

@@ -1,11 +1,11 @@
/*
Theme Name: Aiero
Theme URI: http://oFF4zrF29WwW.com/themes/aiero/
Theme Name: tenext
Theme URI: http://oFF4zrF29WwW.com/themes/tenext/
Author: Artureanec
Author URI: https://oFF4zrF29WwW.com/
Description: Meet WordPress Theme by Artureanec - really amazing, powerful, clean and ultramodern product, that created with love and attention to details. We know it's difficult to represent yourself on the web in the right way, that's why we spent a lot of time trying to make our Theme more effective. It's flexible, easy customizable, high-quality and really easy to use! So everyone can make awesome website with it. Hope you'll like it. Enjoy!
Version: 2.0
License: GNU General Public License version 3.0
License URI: http://www.gnu.org/licenses/gpl-3.0.html
Text Domain: aiero
Text Domain: tenext
*/