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 --> <!-- BEGIN:nextjs-agent-rules -->
# This is NOT the Next.js you know # 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. 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 --> <!-- END:nextjs-agent-rules -->
# Code Maintainability Rules # Code Maintainability Rules
@@ -40,14 +42,14 @@ Do NOT hardcode the same values across multiple sections.
Create shared design tokens for: Create shared design tokens for:
* Colors - Colors
* Typography - Typography
* Border Radius - Border Radius
* Shadows - Shadows
* Container Widths - Container Widths
* Section Spacing - Section Spacing
* Button Styles - Button Styles
* Animation Presets - Animation Presets
## Color System ## Color System
@@ -55,12 +57,12 @@ All colors must come from a shared theme file.
Examples: Examples:
* Primary - Primary
* Secondary - Secondary
* Accent - Accent
* Background - Background
* Surface - Surface
* Border - Border
Do not repeat hex values throughout the project. Do not repeat hex values throughout the project.
@@ -72,11 +74,11 @@ Create shared typography styles.
Examples: Examples:
* Hero Title - Hero Title
* Section Title - Section Title
* Card Title - Card Title
* Body Text - Body Text
* Small Text - Small Text
Do not redefine font sizes in every section. 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: If multiple sections use the same UI pattern:
* Card - Card
* Button - Button
* Badge - Badge
* Section Header - Section Header
* CTA Block - CTA Block
* Statistic Counter - Statistic Counter
Create one reusable component. Create one reusable component.
@@ -105,9 +107,9 @@ Create common section spacing tokens.
Examples: Examples:
* sectionPaddingY - sectionPaddingY
* sectionPaddingX - sectionPaddingX
* containerWidth - containerWidth
All sections must use the same spacing system. All sections must use the same spacing system.
@@ -119,9 +121,9 @@ All major sections must use the same container.
Examples: Examples:
* Container - Container
* PageContainer - PageContainer
* SectionContainer - SectionContainer
Do not create unique widths for every section. Do not create unique widths for every section.
@@ -131,10 +133,10 @@ Create reusable animation presets.
Examples: Examples:
* fadeUp - fadeUp
* staggerChildren - staggerChildren
* scaleIn - scaleIn
* slideIn - slideIn
Do not redefine animations in every component. Do not redefine animations in every component.
@@ -144,9 +146,9 @@ Common image styles should be reusable.
Examples: Examples:
* cardImage - cardImage
* heroImage - heroImage
* avatarImage - avatarImage
Avoid repeating image styling logic. Avoid repeating image styling logic.
@@ -156,9 +158,9 @@ If the same pattern exists in multiple sections, do not update only one section.
Examples: Examples:
* Hero Title - Hero Title
* About Title - About Title
* Feature Title - Feature Title
Update the shared source. 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: Avoid random values such as:
* 72px - 72px
* 94px - 94px
* 113px - 113px
* 147px - 147px
Use predefined spacing tokens only. Use predefined spacing tokens only.
@@ -183,16 +185,16 @@ The entire site should feel visually consistent.
## Mission ## 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 ## Agent Behavior
Before making changes: Before making changes:
* Analyze existing component - Analyze existing component
* Compare against reference - Compare against reference
* Identify exact mismatch - Identify exact mismatch
* Apply minimal fix - Apply minimal fix
Do not perform large rewrites unless explicitly requested. Do not perform large rewrites unless explicitly requested.
@@ -210,36 +212,36 @@ Do not perform large rewrites unless explicitly requested.
Verify: Verify:
* Hero height - Hero height
* Hero width - Hero width
* Artwork scale - Artwork scale
* Artwork position - Artwork position
* Heading width - Heading width
* Heading line breaks - Heading line breaks
* CTA placement - CTA placement
* Scroll indicator position - Scroll indicator position
* Navbar alignment - Navbar alignment
## Card Analysis Checklist ## Card Analysis Checklist
Verify: Verify:
* Border radius - Border radius
* Padding - Padding
* Image crop - Image crop
* Text spacing - Text spacing
* Card proportions - Card proportions
* Responsive behavior - Responsive behavior
## Forbidden Actions ## Forbidden Actions
Do NOT: Do NOT:
* Replace sections without approval - Replace sections without approval
* Change color system globally - Change color system globally
* Introduce new layouts - Introduce new layouts
* Remove existing functionality - Remove existing functionality
* Rewrite working components - Rewrite working components
## Preferred Workflow ## Preferred Workflow
@@ -266,10 +268,10 @@ Target:
Every change should improve: Every change should improve:
* Layout - Layout
* Alignment - Alignment
* Proportions - Proportions
* Visual balance - Visual balance
Avoid subjective redesign decisions. Avoid subjective redesign decisions.
@@ -277,13 +279,13 @@ Reference fidelity is more important than personal preference.
## Code Quality Rules ## Code Quality Rules
* TypeScript strict - TypeScript strict
* Reusable components - Reusable components
* Clean props - Clean props
* No duplicated code - No duplicated code
* No inline magic values - No inline magic values
* Use Tailwind consistently - Use Tailwind consistently
## Final Goal ## 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 @AGENTS.md
# CLAUDE.md # CLAUDE.md
## Project Overview ## 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. 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: Centralize:
* Colors - Colors
* Typography - Typography
* Border radius - Border radius
* Shadows - Shadows
* Container widths - Container widths
* Section spacing - Section spacing
* Button styles - Button styles
* Animation presets - Animation presets
* Image styles - Image styles
Use reusable components for repeated patterns such as cards, buttons, badges, section headers, CTA blocks, and statistic counters. 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: The homepage is:
* Editorial - Editorial
* Card-driven - Card-driven
* Visual-first - Visual-first
* Premium AI agency - Premium AI agency
* Image-heavy - Image-heavy
* Modern but minimal - Modern but minimal
Avoid: Avoid:
* Generic SaaS layouts - Generic SaaS layouts
* Dashboard-first designs - Dashboard-first designs
* Startup template aesthetics - Startup template aesthetics
* Excessive gradients - Excessive gradients
* Excessive glassmorphism - Excessive glassmorphism
## Hero Section Requirements ## Hero Section Requirements
@@ -64,11 +65,11 @@ Hero is the most important section.
Must maintain: Must maintain:
* Large background artwork - Large background artwork
* Left aligned content - Left aligned content
* Vertical Scroll Down element - Vertical Scroll Down element
* Large heading - Large heading
* Compact CTA - Compact CTA
Hero artwork should dominate visual composition. Hero artwork should dominate visual composition.
@@ -81,30 +82,30 @@ Target ratio:
Cards should: Cards should:
* Use large border radii - Use large border radii
* Have consistent spacing - Have consistent spacing
* Maintain editorial proportions - Maintain editorial proportions
* Feel like magazine blocks - Feel like magazine blocks
Do not: Do not:
* Make all cards equal height - Make all cards equal height
* Convert cards into dashboard widgets - Convert cards into dashboard widgets
* Add unnecessary statistics - Add unnecessary statistics
## Typography Rules ## Typography Rules
Headings: Headings:
* Strong - Strong
* Bold - Bold
* Editorial - Editorial
Body text: Body text:
* Simple - Simple
* Readable - Readable
* Secondary - Secondary
Avoid oversized line lengths. Avoid oversized line lengths.
@@ -114,16 +115,16 @@ Use subtle animations only.
Allowed: Allowed:
* Fade up - Fade up
* Hover lift - Hover lift
* Opacity transitions - Opacity transitions
* Small parallax - Small parallax
Avoid: Avoid:
* Excessive motion - Excessive motion
* Heavy GSAP timelines - Heavy GSAP timelines
* Distracting effects - Distracting effects
## Responsive Rules ## Responsive Rules

View File

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

View File

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

View File

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

View File

@@ -22,9 +22,9 @@ const dmSans = DM_Sans({
}); });
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Home 9 Aiero", title: "Home 9 tenext",
description: 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({ 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]" className="relative z-[15] mt-[40px] mb-[-90px] px-[20px] pb-[40px]"
style={{ transform: "rotate(-2.07deg)" }} 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> </section>
<WOWSection /> <WOWSection />
<FeaturesSection /> <FeaturesSection />

View File

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

View File

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

View File

@@ -5,21 +5,22 @@ import { SectionHeading } from "@/components/shared/SectionHeading";
const blogPosts = [ const blogPosts = [
{ {
title: "How to Build a Custom AI Model for Your Business", 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", category: "AI Technology",
date: "March 15, 2025", date: "March 15, 2025",
link: "/blog/custom-ai-model", link: "/blog/custom-ai-model",
}, },
{ {
title: "The Future of Machine Learning in Enterprise", 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", category: "Machine Learning",
date: "April 2, 2025", date: "April 2, 2025",
link: "/blog/machine-learning-enterprise", link: "/blog/machine-learning-enterprise",
}, },
{ {
title: "Ethics in AI: What You Need to Know", 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", category: "AI Ethics",
date: "April 10, 2025", date: "April 10, 2025",
link: "/blog/ethics-in-ai", link: "/blog/ethics-in-ai",
@@ -32,36 +33,39 @@ export function BlogSection() {
<div className="mx-auto max-w-[1260px]"> <div className="mx-auto max-w-[1260px]">
<div className="mb-[60px] flex flex-col items-center text-center"> <div className="mb-[60px] flex flex-col items-center text-center">
<SectionHeading <SectionHeading
subtitle="blog" tag="blog"
title="Exploring the world of artificial intelligence with Aiero blogging" title="Exploring the world of artificial intelligence with tenext blogging"
titleClassName="max-w-[800px] text-aiero-dark" titleClassName="max-w-[800px] text-tenext-dark"
/> />
</div> </div>
<div className="grid grid-cols-1 gap-[30px] md:grid-cols-2 lg:grid-cols-3"> <div className="grid grid-cols-1 gap-[30px] md:grid-cols-2 lg:grid-cols-3">
{blogPosts.map((post, index) => ( {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"> <div className="relative h-[250px] w-full overflow-hidden">
<img <img
src={post.image} src={post.image}
alt={post.title} alt={post.title}
className="h-full w-full object-cover transition-transform duration-500 group-hover:scale-110" 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} {post.category}
</div> </div>
</div> </div>
<div className="flex flex-col p-[30px]"> <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} {post.date}
</div> </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> <Link href={post.link}>{post.title}</Link>
</h4> </h4>
<div className="mt-auto"> <div className="mt-auto">
<Link <Link
href={post.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" 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 Read more
<ArrowUpRight className="h-[18px] w-[18px]" /> <ArrowUpRight className="h-[18px] w-[18px]" />

View File

@@ -6,25 +6,25 @@ import { RevealOnView } from "@/components/shared/RevealOnView";
const socialIcons = [ const socialIcons = [
{ {
src: "/images/aiero/messenger-logo-1.png", src: "/images/tenext/messenger-logo-1.png",
alt: "Messenger", alt: "Messenger",
width: 57, width: 57,
height: 59, height: 59,
}, },
{ {
src: "/images/aiero/skype-logo.png", src: "/images/tenext/skype-logo.png",
alt: "Skype", alt: "Skype",
width: 56, width: 56,
height: 57, height: 57,
}, },
{ {
src: "/images/aiero/telegram-symbol-1.png", src: "/images/tenext/telegram-symbol-1.png",
alt: "Telegram", alt: "Telegram",
width: 59, width: 59,
height: 58, height: 58,
}, },
{ {
src: "/images/aiero/discord-1.png", src: "/images/tenext/discord-1.png",
alt: "Discord", alt: "Discord",
width: 54, width: 54,
height: 54, height: 54,
@@ -35,136 +35,134 @@ export function CardsGrid() {
return ( return (
<section className="px-[20px] pb-[20px]"> <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]"> <div className="grid grid-cols-1 gap-[20px] md:grid-cols-2 xl:grid-cols-[1fr_1fr_0.73fr]">
{/* Card 1 */} {/* Card 1 */}
<RevealOnView delay={0}> <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]"> <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 <Image
src="/images/aiero/assistant-artificial-intelligence-min.png" src="/images/tenext/assistant-artificial-intelligence-min.png"
alt="" 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]" 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} width={220}
height={274} 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="mt-[36px] flex items-center gap-[20px]"> <div className="relative z-10 flex gap-[6px]">
{socialIcons.map((icon) => ( <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">
<Image Solutions
key={icon.alt} </span>
src={icon.src} <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">
alt={icon.alt} Plugins
width={icon.width} </span>
height={icon.height}
className="h-auto w-auto"
/>
))}
</div> </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> </div>
<IconButton />
</div>
</RevealOnView> </RevealOnView>
{/* Card 2 */} {/* Card 2 */}
<RevealOnView delay={110}> <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="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-aiero-card-purple-2" /> <div className="absolute inset-0 bg-tenext-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-[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="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="relative z-10 mb-[54px] max-w-[515px]">
<div className="mb-[24px] inline-flex h-[38px] w-[38px] items-center justify-center"> <div className="mb-[24px] inline-flex h-[38px] w-[38px] items-center justify-center">
<ChartIcon className="h-full w-full text-white" /> <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> </div>
<CardHeading <IconButton />
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> </div>
<IconButton />
</div>
</RevealOnView> </RevealOnView>
{/* Card 3 (spans 2 columns) */} {/* Card 3 (spans 2 columns) */}
<RevealOnView className="md:col-span-2 xl:col-span-1" delay={220}> <RevealOnView className="md:col-span-2 xl:col-span-1" delay={220}>
<div className="flex h-full flex-col gap-[20px]"> <div className="flex h-full flex-col gap-[20px]">
{/* Card 3 - Top half */}
{/* 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]">
<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
<a href="#" className="absolute inset-0 z-20" aria-label="Happy clients" /> href="#"
<div className="relative z-10 flex flex-col items-start"> className="absolute inset-0 z-20"
<div> aria-label="Happy clients"
<Counter />
target={500} <div className="relative z-10 flex flex-col items-start">
suffix="K+" <div>
numberClassName="font-[var(--font-manrope)] text-[82px] font-extrabold leading-none tracking-[-0.04em] text-transparent" <Counter
style={{ target={500}
WebkitTextStroke: "1px rgba(255,255,255,0.16)", suffix="K+"
backgroundImage: numberClassName="font-[var(--font-manrope)] text-[82px] font-extrabold leading-none tracking-[-0.04em] text-transparent"
"linear-gradient(180deg, rgba(255,255,255,0.44) 0%, rgba(255,255,255,0.06) 90%)", 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>
<div className="mt-[4px]">
<h4 className="font-[var(--font-manrope)] text-[16px] font-medium leading-[20px] text-white"> <div className="relative z-10">
Happy clients <Image
</h4> src="/images/tenext/openai-logo-1.png"
alt="OpenAI"
width={272}
height={71}
className="h-auto w-[138px] lg:w-[152px]"
/>
</div> </div>
</div> </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> </RevealOnView>
</div> </div>
</section> </section>
); );

View File

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

View File

@@ -6,18 +6,18 @@ export function HeroSection() {
<section className="relative px-5 py-5"> <section className="relative px-5 py-5">
{/* Scroll Down button — vertical, left side */} {/* Scroll Down button — vertical, left side */}
<div className="scroll-widget absolute left-0 top-[40%] z-20 hidden xl:block"> <div className="scroll-widget absolute left-0 top-[40%] z-20 hidden xl:block">
<ScrollDown /> <ScrollDown />
</div> </div>
{/* Hero container with background */} {/* Hero container with background */}
<div <div
className="relative overflow-hidden rounded-[25px] bg-aiero-dark" className="relative overflow-hidden rounded-[25px] bg-tenext-dark"
style={{ style={{
minHeight: "min(858px, calc(100vw * 0.447))", minHeight: "min(858px, calc(100vw * 0.447))",
padding: "14.3% 0 8.1% 0", 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 */} {/* Hero content */}
<div className="relative z-10 w-full px-[12.7vw]"> <div className="relative z-10 w-full px-[12.7vw]">
@@ -37,7 +37,10 @@ export function HeroSection() {
</h1> </h1>
{/* Subtitle */} {/* 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"> <p className="text-[16px] font-semibold leading-[1.9] text-white">
Mummichog paradise fish! Triggerfish bango guppy opah sunfish Mummichog paradise fish! Triggerfish bango guppy opah sunfish
bluntnose knifefish upside-down catfish cobia spookfish convict bluntnose knifefish upside-down catfish cobia spookfish convict
@@ -46,17 +49,26 @@ export function HeroSection() {
</div> </div>
{/* CTA Button */} {/* CTA Button */}
<div className="hero-reveal mt-[42px]" style={{ animationDelay: "940ms" }}> <div
className="hero-reveal mt-[42px]"
style={{ animationDelay: "940ms" }}
>
<a <a
href="#" href="#"
target="_blank" target="_blank"
rel="noopener noreferrer" 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)" }} style={{ minWidth: "216px", fontFamily: "var(--font-sora)" }}
> >
Discover Discover
<svg width="10" height="10" viewBox="0 0 12 12" fill="none"> <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> </svg>
<span className="button-inner" /> <span className="button-inner" />
</a> </a>

View File

@@ -6,22 +6,26 @@ export function HowItWorksSection() {
{ {
number: "01", number: "01",
title: "Neurons and Layers", 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", number: "02",
title: "Activation Function", 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", number: "03",
title: "Feedforward Process", 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", number: "04",
title: "Activation Function", title: "Backpropagation",
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.",
}, },
]; ];
@@ -30,30 +34,30 @@ export function HowItWorksSection() {
<div className="mx-auto max-w-[1260px]"> <div className="mx-auto max-w-[1260px]">
<div className="flex flex-col md:flex-row md:items-end justify-between gap-[30px] mb-[60px]"> <div className="flex flex-col md:flex-row md:items-end justify-between gap-[30px] mb-[60px]">
<SectionHeading <SectionHeading
subtitle="how it works" tag="how it works"
title="Neural networks are a fundamental component of Artificial Intelligence (AI) systems" 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]"> <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} /> <ArrowLeft size={20} />
</button> </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} /> <ArrowRight size={20} />
</button> </button>
</div> </div>
</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) => ( {steps.map((step, index) => (
<div key={index} className="flex flex-col border-t border-aiero-card-border pt-[30px]"> <div key={index} className="flex flex-col">
<div className="text-[50px] font-bold text-transparent font-[var(--font-sora)]" style={{ WebkitTextStroke: "1px #3F3F3F" }}> <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">
{step.number} <span className="text-[14px] font-bold">{step.number}</span>
<span className="text-[18px] font-bold font-[var(--font-sora)]">
{step.title}
</span>
</div> </div>
<h6 className="mt-[20px] mb-[15px] text-[20px] font-bold text-aiero-dark font-[var(--font-sora)]"> <p className="mt-[20px] mb-[25px] max-w-[720px] text-[16px] leading-[1.6] text-tenext-text-muted">
{step.title}
</h6>
<p className="text-[16px] leading-[1.6] text-aiero-text-muted">
{step.description} {step.description}
</p> </p>
</div> </div>

View File

@@ -3,20 +3,29 @@ interface MarqueeStripProps {
className?: string; className?: string;
} }
export function MarqueeStrip({ export function MarqueeStrip({
text = "Artificial Intelligence", text = "Artificial Intelligence",
className = "" className = "",
}: MarqueeStripProps) { }: MarqueeStripProps) {
const marqueeItems = Array.from({ length: 6 }); const marqueeItems = Array.from({ length: 6 });
return ( 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"> <div className="marquee-track flex w-max whitespace-nowrap">
{[0, 1].map((track) => ( {[0, 1].map((track) => (
<div key={track} className="flex shrink-0 items-center"> <div key={track} className="flex shrink-0 items-center">
{marqueeItems.map((_, i) => ( {marqueeItems.map((_, i) => (
<div key={`${track}-${i}`} className="flex items-center gap-8 pr-8"> <div
<span className="marquee-text text-white" style={{ fontFamily: "var(--font-sora)" }}> key={`${track}-${i}`}
className="flex items-center gap-8 pr-8"
>
<span
className="marquee-text text-white"
style={{ fontFamily: "var(--font-sora)" }}
>
{text} {text}
</span> </span>
<span className="flex h-3 w-3 rounded-full bg-white opacity-50" /> <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]"> <section className="bg-white px-[20px] py-[60px] md:py-[100px]">
<div className="mx-auto max-w-[1260px]"> <div className="mx-auto max-w-[1260px]">
<div className="grid grid-cols-1 gap-[50px] md:grid-cols-2 md:gap-[80px]"> <div className="grid grid-cols-1 gap-[50px] md:grid-cols-2 md:gap-[80px]">
{/* Left Metric */} {/* Left Metric */}
<div className="flex flex-col gap-[20px]"> <div className="flex flex-col gap-[20px]">
<Counter <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)]" numberClassName="text-[60px] md:text-[80px] font-bold leading-none text-transparent gradient-text-purple font-[var(--font-sora)]"
title="" 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 Happy & satisfied customers
</h3> </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. Achieved a 95% customer satisfaction rate across all AI solutions.
</p> </p>
</div> </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)]" numberClassName="text-[60px] md:text-[80px] font-bold leading-none text-transparent gradient-text-purple font-[var(--font-sora)]"
title="" 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)]">
Earns with our Aiero product Earns with our tenext product
</h3> </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]">
Delivered over $150 billion in cost savings for clients through optimized AI solutions. Delivered over $150 billion in cost savings for clients through
optimized AI solutions.
</p> </p>
</div> </div>
</div> </div>
</div> </div>
</section> </section>

View File

@@ -19,7 +19,7 @@ export function Navbar() {
return ( return (
<header <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 isSticky
? "fixed left-5 right-5 top-0 rounded-b-[25px] bg-[#111111] shadow-[0_12px_35px_rgba(0,0,0,0.18)]" ? "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" : "relative bg-transparent"
@@ -27,7 +27,7 @@ export function Navbar() {
> >
<div className="flex items-center gap-[64px]"> <div className="flex items-center gap-[64px]">
<button <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" aria-label="Open menu"
> >
<span className="h-[7px] w-[7px] rounded-[2px] border-2 border-current" /> <span className="h-[7px] w-[7px] rounded-[2px] border-2 border-current" />
@@ -37,10 +37,14 @@ export function Navbar() {
</button> </button>
{/* Logo */} {/* Logo */}
<a href="#" className="navbar-reveal flex items-center" style={{ animationDelay: "120ms" }}> <a
href="#"
className="navbar-reveal flex items-center"
style={{ animationDelay: "120ms" }}
>
<Image <Image
src="/images/aiero/logo-dark.png" src="/images/tenext/logo-dark.png"
alt="Aiero" alt="tenext"
width={109.5} width={109.5}
height={19.5} height={19.5}
className="h-auto w-auto" className="h-auto w-auto"
@@ -50,7 +54,10 @@ export function Navbar() {
</div> </div>
{/* Navigation */} {/* 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) => ( {navigationData.map((item, index) => (
<div <div
key={item.label} key={item.label}
@@ -61,28 +68,38 @@ export function Navbar() {
> >
<a <a
href={item.href} 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 ${ 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-aiero-dark" : "" item.label === "Home" ? "bg-tenext-dark" : ""
}`} }`}
style={{ fontFamily: "var(--font-sora)" }} style={{ fontFamily: "var(--font-sora)" }}
> >
<span className="text-active">{item.label}</span> <span className="text-active">{item.label}</span>
<span aria-hidden>{item.label}</span> <span aria-hidden>{item.label}</span>
{item.children && ( {item.children && (
<svg className="ml-[12px] h-[5px] w-[5px] opacity-90" viewBox="0 0 5 5" fill="none"> <svg
<path d="M4.35 0.9L3.75 4.05L0.65 3.45" stroke="currentColor" strokeWidth="1.1" strokeLinecap="round" strokeLinejoin="round"/> 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> </svg>
)} )}
</a> </a>
{/* Dropdown */} {/* Dropdown */}
{item.children && openDropdown === item.label && ( {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) => ( {item.children.map((child, childIndex) => (
<a <a
key={child.label} key={child.label}
href={child.href} 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={{ style={{
animationDelay: `${childIndex * 45}ms`, animationDelay: `${childIndex * 45}ms`,
fontFamily: "var(--font-sora)", fontFamily: "var(--font-sora)",
@@ -98,26 +115,43 @@ export function Navbar() {
</nav> </nav>
{/* Right Icons */} {/* Right Icons */}
<div className="navbar-reveal flex items-center justify-end gap-[10px]" style={{ animationDelay: "620ms" }}> <div
<button className="hidden p-[8px] text-white transition-colors hover:text-aiero-teal md:block" aria-label="Search"> 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]" /> <SearchIcon className="h-[18px] w-[18px]" />
</button> </button>
<a <a
href="#" 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)" }} style={{ fontFamily: "var(--font-sora)" }}
> >
<svg className="h-4 w-4" viewBox="0 0 16 16" fill="none"> <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"/> <circle
<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"/> 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> </svg>
Log in Log in
</a> </a>
<a <a
href="#" 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)" }} style={{ fontFamily: "var(--font-sora)" }}
> >
Get in Touch 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 { Counter } from "@/components/shared/Counter";
import { IconBox } from "@/components/shared/IconBox"; 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() { export function PossibilitiesSection() {
return ( return (
<section className="px-[20px] py-[60px] md:py-[100px]"> <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]"> <div className="mx-auto grid max-w-[1260px] grid-cols-1 gap-[50px] lg:grid-cols-[1fr_1fr]">
{/* Left Column */} {/* Left Column */}
<div className="flex flex-col items-start pr-[10%] pt-[20px]"> <div className="flex flex-col items-start pr-[10%] pt-[20px]">
<span <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)" }} style={{ fontFamily: "var(--font-sora)" }}
> >
[ possibilities ] [ possibilities ]
</span> </span>
<h2 <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={{ style={{
fontFamily: "var(--font-dm-sans)", fontFamily: "var(--font-dm-sans)",
fontSize: "clamp(32px, 4vw, 56px)", fontSize: "clamp(32px, 4vw, 56px)",
@@ -28,18 +32,22 @@ export function PossibilitiesSection() {
> >
Explore limitless possibilities with our intelligent solutions Explore limitless possibilities with our intelligent solutions
</h2> </h2>
<p className="mb-[40px] max-w-[480px] text-[16px] leading-[1.8] text-aiero-text-muted"> <p className="mb-[40px] max-w-[480px] text-[16px] leading-[1.8] text-tenext-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. 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> </p>
<AieroButton <TenextButton
variant="gradient-border" variant="gradient-border"
className="rounded-[25px] px-[35px] py-[15px] text-[15px] font-medium" className="rounded-[25px] px-[35px] py-[15px] text-[15px] font-medium"
showArrow={true} showArrow={true}
> >
Explore more Explore more
</AieroButton> </TenextButton>
<div className="mt-[80px]"> <div className="mt-[80px]">
<Counter <Counter
@@ -48,12 +56,13 @@ export function PossibilitiesSection() {
numberClassName="text-[60px] md:text-[100px] font-extrabold leading-none font-[var(--font-manrope)] text-transparent" numberClassName="text-[60px] md:text-[100px] font-extrabold leading-none font-[var(--font-manrope)] text-transparent"
style={{ style={{
WebkitTextStroke: "1px #E2D7F8", 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", backgroundClip: "text",
WebkitBackgroundClip: "text", WebkitBackgroundClip: "text",
}} }}
title="AI Solutions for our clients" 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" layout="row-reverse"
gap="30px" gap="30px"
/> />
@@ -91,7 +100,6 @@ export function PossibilitiesSection() {
theme="light" theme="light"
/> />
</div> </div>
</div> </div>
</section> </section>
); );

View File

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

View File

@@ -5,7 +5,7 @@ import { PageContainer } from "@/components/shared/PageContainer";
export function WOWSection() { export function WOWSection() {
return ( return (
<section className="relative z-20 px-[20px]"> <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> <PageContainer>
<div className="grid grid-cols-1 gap-[40px] lg:grid-cols-2 lg:gap-[60px]"> <div className="grid grid-cols-1 gap-[40px] lg:grid-cols-2 lg:gap-[60px]">
<div className="flex flex-col justify-between"> <div className="flex flex-col justify-between">
@@ -30,7 +30,7 @@ export function WOWSection() {
</div> </div>
<img <img
src="/images/aiero/home-9-img.png" src="/images/tenext/home-9-img.png"
alt="Aiiero" alt="Aiiero"
width={632} width={632}
height={158} height={158}
@@ -59,7 +59,7 @@ export function WOWSection() {
<div className="mt-[40px] md:mt-[60px]"> <div className="mt-[40px] md:mt-[60px]">
<Link <Link
href="/services" 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" /> <span className="button-inner" />
Explore more Explore more

View File

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

View File

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

View File

@@ -3,27 +3,34 @@
import { PageContainer } from "@/components/shared/PageContainer"; import { PageContainer } from "@/components/shared/PageContainer";
import { SectionContainer } from "@/components/shared/SectionContainer"; import { SectionContainer } from "@/components/shared/SectionContainer";
import { SectionHeading } from "@/components/shared/SectionHeading"; import { SectionHeading } from "@/components/shared/SectionHeading";
import { tenextButton as TenextButton } from "@/components/shared/AieroButton";
import { Counter } from "@/components/shared/Counter";
const teamMembers = [ const teamMembers = [
{
name: "Dan Smith",
role: "Manager",
image: "/images/aiero/portrait-confident-man.jpg",
},
{ {
name: "Alan Begham", name: "Alan Begham",
role: "CEO", role: "CEO",
image: "/images/aiero/waist-up-shot-handsome-calm.jpg", image: "/images/tenext/waist-up-shot-handsome-calm.jpg",
},
{
name: "Brandon Adams",
role: "HR",
image: "/images/aiero/confident-ginger-man-with-trendy.jpg",
}, },
{ {
name: "Arthur Dowson", name: "Arthur Dowson",
role: "AI Programmer", 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 ( return (
<SectionContainer paddingY="lg"> <SectionContainer paddingY="lg">
<PageContainer> <PageContainer>
<div className="mb-12 flex flex-col items-center justify-between gap-6 md:flex-row md:items-end"> <div className="columns-1 gap-6 sm:columns-2 lg:columns-4">
<SectionHeading <div className="mb-6 flex break-inside-avoid flex-col">
tag="team" <SectionHeading
title="The Neural Network experts: uniting talent for intelligent solutions" tag="team"
titleClassName="text-white max-w-[600px]" title="The Neural Network experts: uniting talent for intelligent solutions"
/> titleClassName="text-tenext-dark"
<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"> <div className="mt-[40px]">
Awesome team members + 0 Explore more <Counter
</p> 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>
<div className="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-4">
{teamMembers.map((member, i) => ( {teamMembers.map((member, i) => (
<div <div
key={i} 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"> <div className="relative aspect-[3/4] w-full">
<img <img
@@ -57,7 +82,7 @@ export function TeamSection() {
className="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" className="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"
onError={(e) => { onError={(e) => {
(e.target as HTMLImageElement).src = (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" /> <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} {member.name}
</h4> </h4>
<p className="text-[14px] text-aiero-teal">{member.role}</p> <p className="text-[14px] text-tenext-teal">
/ {member.role} /
</p>
</div> </div>
</div> </div>
))} ))}

View File

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

View File

@@ -27,11 +27,11 @@ export function ServiceCardsGrid() {
{services.map((svc, i) => ( {services.map((svc, i) => (
<div <div
key={i} 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 <img
src="/images/aiero/3x.png" src="/images/tenext/3x.png"
alt="Icon" alt="Icon"
className="h-full w-full object-contain" className="h-full w-full object-contain"
onError={(e) => { onError={(e) => {
@@ -43,15 +43,15 @@ export function ServiceCardsGrid() {
<div> <div>
<h4 <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)" }} style={{ fontFamily: "var(--font-dm-sans)" }}
> >
{svc.title} {svc.title}
</h4> </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>
<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" /> <ArrowIcon className="h-4 w-4" />
</div> </div>
</div> </div>

View File

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

View File

@@ -4,65 +4,84 @@ import { PageContainer } from "@/components/shared/PageContainer";
import { SectionContainer } from "@/components/shared/SectionContainer"; import { SectionContainer } from "@/components/shared/SectionContainer";
import { SectionHeading } from "@/components/shared/SectionHeading"; import { SectionHeading } from "@/components/shared/SectionHeading";
export function TestimonialsSection() { const testimonials = [
const testimonials = [ {
{ author: "Daniel Cross",
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.", 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: "David Smith", },
role: "CEO Company", {
}, 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.",
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", 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 ( return (
<SectionContainer paddingY="lg" className="bg-aiero-card-dark"> <SectionContainer paddingY="lg" className="bg-tenext-surface-muted">
<PageContainer> <PageContainer>
<div className="mb-16"> <div className="mb-12 max-w-[650px]">
<SectionHeading <SectionHeading
tag="testimonials" tag="testimonials"
title="Discover what our clients have to say about our AI solutions" title="User stories: hear what others love about our AI solutions"
titleClassName="text-white max-w-[650px]" titleClassName="text-tenext-dark"
/> />
</div> </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) => ( {testimonials.map((t, i) => (
<div <div
key={i} 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"> <h5
<div className="mb-6 flex gap-1 text-aiero-teal"> className="mb-4 text-[18px] font-bold text-tenext-dark"
{[...Array(5)].map((_, index) => ( style={{ fontFamily: "var(--font-dm-sans)" }}
<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"/> {t.author}
</svg> </h5>
))} <p className="text-[15px] leading-[1.7] text-tenext-text-muted">
</div> {t.text}
<p className="text-[18px] leading-[1.8] text-white">&quot;{t.text}&quot;</p> </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>
</div> </div>
))} ))}
</div> </div>

View File

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

View File

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

View File

@@ -19,9 +19,7 @@ export function CardHeading({
return ( return (
<div className={`mb-5 ${wrapperClassName}`}> <div className={`mb-5 ${wrapperClassName}`}>
{subtitle && ( {subtitle && (
<div <div className={`tenext-subheading font-sora ${subtitleClassName}`}>
className={`aiero-subheading font-sora ${subtitleClassName}`}
>
{subtitle} {subtitle}
</div> </div>
)} )}
@@ -39,7 +37,7 @@ export function IconButton({ className = "" }: { className?: string }) {
<div className={`${styles.iconWrapper} ${className}`}> <div className={`${styles.iconWrapper} ${className}`}>
<a <a
href="#" 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" aria-label="Open details"
> >
<span className={styles.iconSlideAslantInner} aria-hidden="true"> <span className={styles.iconSlideAslantInner} aria-hidden="true">

View File

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

View File

@@ -17,7 +17,7 @@ import { PageContainer } from "@/components/shared/PageContainer";
*/ */
export function Footer() { export function Footer() {
return ( 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> <PageContainer>
{/* ── Top row: Logo + link columns ── */} {/* ── Top row: Logo + link columns ── */}
<div className="grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-[1.5fr_1fr_1fr]"> <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"> <div className="flex flex-col items-start gap-8">
<Link href="/" aria-label="Home"> <Link href="/" aria-label="Home">
<Image <Image
src="/images/aiero/logo-dark.png" src="/images/tenext/logo-dark.png"
alt={siteConfig.name} alt={siteConfig.name}
width={146} width={146}
height={26} height={26}
@@ -57,7 +57,7 @@ export function Footer() {
<li key={link.label}> <li key={link.label}>
<a <a
href={link.href} 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} {link.label}
</a> </a>
@@ -76,7 +76,7 @@ export function Footer() {
<li key={link.label}> <li key={link.label}>
<a <a
href={link.href} 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} {link.label}
</a> </a>
@@ -87,8 +87,8 @@ export function Footer() {
</div> </div>
{/* ── Bottom bar ── */} {/* ── 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"> <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-aiero-text-muted"> <p className="text-sm text-tenext-text-muted">
{siteConfig.copyright} {siteConfig.copyright}
</p> </p>
<div className="flex gap-6"> <div className="flex gap-6">
@@ -96,7 +96,7 @@ export function Footer() {
<a <a
key={link.label} key={link.label}
href={link.href} 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} {link.label}
</a> </a>

View File

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

View File

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

View File

@@ -5,16 +5,19 @@ import { SectionContainer } from "@/components/shared/SectionContainer";
export function PartnerLogosSection() { export function PartnerLogosSection() {
const logos = [ const logos = [
"/images/aiero/partners-1.png", "/images/tenext/partners-1.png",
"/images/aiero/partners-2.png", "/images/tenext/partners-2.png",
"/images/aiero/partners-1.png", "/images/tenext/partners-1.png",
"/images/aiero/partners-2.png", "/images/tenext/partners-2.png",
"/images/aiero/partners-1.png", "/images/tenext/partners-1.png",
"/images/aiero/partners-2.png", "/images/tenext/partners-2.png",
]; ];
return ( 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"> <PageContainer className="flex flex-col items-center">
<h3 <h3
className="mb-16 max-w-[800px] text-center text-white" className="mb-16 max-w-[800px] text-center text-white"
@@ -25,18 +28,22 @@ export function PartnerLogosSection() {
lineHeight: 1.2, 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> </h3>
<div className="flex flex-wrap justify-center gap-8 md:gap-16 lg:gap-24 opacity-60"> <div className="flex flex-wrap justify-center gap-8 md:gap-16 lg:gap-24 opacity-60">
{logos.map((src, index) => ( {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 <img
src={src} src={src}
alt={`Partner ${index + 1}`} alt={`Partner ${index + 1}`}
className="h-full w-auto object-contain" className="h-full w-auto object-contain"
onError={(e) => { onError={(e) => {
(e.target as HTMLImageElement).src = "/images/aiero/logo-dark.png"; (e.target as HTMLImageElement).src =
"/images/tenext/logo-dark.png";
}} }}
/> />
</div> </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"; 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. * Shared across: Home, About, Services, Contacts.
* *
* Structure (from reference): * Structure (from reference):
* - Dark grey rounded card * - Plain white section
* - Large teal gradient heading * - Large dark heading, left aligned
* - "Get a Quote" button with arrow * - "Get in touch" text link, right aligned
*/ */
export function PreFooterCTA() { export function PreFooterCTA() {
return ( return (
<section className="px-5 pb-5"> <section className="bg-white px-5 py-[60px] md:py-[80px]">
<div className="overflow-hidden rounded-[25px] bg-aiero-card-dark"> <PageContainer className="flex flex-col items-center gap-8 text-center md:flex-row md:justify-between md:text-left">
<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 */}
{/* Heading */} <h2
<h2 className="max-w-[700px] text-tenext-dark"
className="max-w-[700px]" style={{
style={{ fontFamily: "var(--font-sora)",
fontFamily: "var(--font-sora)", fontSize: "clamp(28px, 3.5vw, 48px)",
fontSize: "clamp(28px, 3.5vw, 48px)", fontWeight: 700,
fontWeight: 700, lineHeight: 1.15,
lineHeight: 1.15, }}
}} >
> Elevate your business with our innovative solutions
<span className="text-white">{"It's blow your mind! "}</span> </h2>
<span className="gradient-text-purple">Meet Neural Networks</span>
</h2>
{/* CTA */} {/* CTA */}
<AieroButton <TenextButton
href="/contacts" href="/contacts"
variant="gradient-border" variant="simple"
className="shrink-0 rounded-full px-8 py-4 text-base font-semibold text-white" className="shrink-0 text-[15px] font-semibold text-tenext-teal"
> >
Get a Quote Get in touch
</AieroButton> </TenextButton>
</PageContainer> </PageContainer>
</div>
</section> </section>
); );
} }

View File

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

View File

@@ -41,7 +41,7 @@ export function SectionHeading({
<div className={className}> <div className={className}>
{tag && ( {tag && (
<span <span
className={`aiero-subheading mb-4 text-aiero-teal ${tagClassName}`} className={`tenext-subheading mb-4 text-tenext-teal ${tagClassName}`}
style={{ fontFamily: "var(--font-sora)" }} style={{ fontFamily: "var(--font-sora)" }}
> >
{tag} {tag}
@@ -62,7 +62,7 @@ export function SectionHeading({
{description && ( {description && (
<p <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} {description}
</p> </p>

View File

@@ -25,7 +25,7 @@ export function SocialIcons({
rel="noopener noreferrer" rel="noopener noreferrer"
role="listitem" role="listitem"
aria-label={link.platform} 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} /> <SocialSvg icon={link.icon} />
</a> </a>

View File

@@ -4,7 +4,7 @@
// CSS custom properties in globals.css mirror these for Tailwind usage. // 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 = { export const colors = {
// Backgrounds // Backgrounds
bgDark: "#1F1F1F", bgDark: "#1F1F1F",
@@ -30,6 +30,9 @@ export const colors = {
textMuted: "#87899B", textMuted: "#87899B",
textWhite: "#FFFFFF", textWhite: "#FFFFFF",
textDark: "#1F1F1F", textDark: "#1F1F1F",
// Surfaces
surfaceMuted: "#ECF0F4",
} as const; } as const;
/** Spacing tokens — predefined values only, no arbitrary px */ /** Spacing tokens — predefined values only, no arbitrary px */

View File

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

View File

@@ -1,7 +1,14 @@
import type { NextConfig } from "next"; import type { NextConfig } from "next";
const nextConfig: NextConfig = { const nextConfig: NextConfig = {
/* config options here */ images: {
remotePatterns: [
{
protocol: "https",
hostname: "8ded8880.delivery.rocketcdn.me",
},
],
},
}; };
export default nextConfig; 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} 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)} 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})}}})} 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.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({ 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, 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 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')} 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')})})} 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')})})} 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 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} 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, to: 0.6,
percentage: percentageY percentage: percentageY
})})`;cardInner.css('filter',filter)})})} })})`;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 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 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})}} 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)} 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)} 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('.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('.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-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)} 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/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/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/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)} $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(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({ 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, from: 15,
to: 0, to: 0,
percentage: percentageY 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} })}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(".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")} 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(".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(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/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)}})}) 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 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 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 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)} 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)})} 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')})} 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} if(oldValue<=min){var newVal=oldValue}else{var newVal=oldValue-1}
input.val(newVal);input.trigger('change')})}})} 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 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>')}} 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(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>')} 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();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}} 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 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}} 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()} 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()})}} 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 aiero_close_mini_cart(){jQuery('.close-mini-cart').on('click',function(){jQuery('.mini-cart').removeClass('active')})} function tenext_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} 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) 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;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 Name: tenext
Theme URI: http://oFF4zrF29WwW.com/themes/aiero/ Theme URI: http://oFF4zrF29WwW.com/themes/tenext/
Author: Artureanec Author: Artureanec
Author URI: https://oFF4zrF29WwW.com/ 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! 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 Version: 2.0
License: GNU General Public License version 3.0 License: GNU General Public License version 3.0
License URI: http://www.gnu.org/licenses/gpl-3.0.html License URI: http://www.gnu.org/licenses/gpl-3.0.html
Text Domain: aiero Text Domain: tenext
*/ */