update home page
164
AGENTS.md
@@ -1,7 +1,9 @@
|
||||
<!-- BEGIN:nextjs-agent-rules -->
|
||||
|
||||
# This is NOT the Next.js you know
|
||||
|
||||
This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices.
|
||||
|
||||
<!-- END:nextjs-agent-rules -->
|
||||
|
||||
# Code Maintainability Rules
|
||||
@@ -40,14 +42,14 @@ Do NOT hardcode the same values across multiple sections.
|
||||
|
||||
Create shared design tokens for:
|
||||
|
||||
* Colors
|
||||
* Typography
|
||||
* Border Radius
|
||||
* Shadows
|
||||
* Container Widths
|
||||
* Section Spacing
|
||||
* Button Styles
|
||||
* Animation Presets
|
||||
- Colors
|
||||
- Typography
|
||||
- Border Radius
|
||||
- Shadows
|
||||
- Container Widths
|
||||
- Section Spacing
|
||||
- Button Styles
|
||||
- Animation Presets
|
||||
|
||||
## Color System
|
||||
|
||||
@@ -55,12 +57,12 @@ All colors must come from a shared theme file.
|
||||
|
||||
Examples:
|
||||
|
||||
* Primary
|
||||
* Secondary
|
||||
* Accent
|
||||
* Background
|
||||
* Surface
|
||||
* Border
|
||||
- Primary
|
||||
- Secondary
|
||||
- Accent
|
||||
- Background
|
||||
- Surface
|
||||
- Border
|
||||
|
||||
Do not repeat hex values throughout the project.
|
||||
|
||||
@@ -72,11 +74,11 @@ Create shared typography styles.
|
||||
|
||||
Examples:
|
||||
|
||||
* Hero Title
|
||||
* Section Title
|
||||
* Card Title
|
||||
* Body Text
|
||||
* Small Text
|
||||
- Hero Title
|
||||
- Section Title
|
||||
- Card Title
|
||||
- Body Text
|
||||
- Small Text
|
||||
|
||||
Do not redefine font sizes in every section.
|
||||
|
||||
@@ -86,12 +88,12 @@ Changing typography tokens should update all matching sections.
|
||||
|
||||
If multiple sections use the same UI pattern:
|
||||
|
||||
* Card
|
||||
* Button
|
||||
* Badge
|
||||
* Section Header
|
||||
* CTA Block
|
||||
* Statistic Counter
|
||||
- Card
|
||||
- Button
|
||||
- Badge
|
||||
- Section Header
|
||||
- CTA Block
|
||||
- Statistic Counter
|
||||
|
||||
Create one reusable component.
|
||||
|
||||
@@ -105,9 +107,9 @@ Create common section spacing tokens.
|
||||
|
||||
Examples:
|
||||
|
||||
* sectionPaddingY
|
||||
* sectionPaddingX
|
||||
* containerWidth
|
||||
- sectionPaddingY
|
||||
- sectionPaddingX
|
||||
- containerWidth
|
||||
|
||||
All sections must use the same spacing system.
|
||||
|
||||
@@ -119,9 +121,9 @@ All major sections must use the same container.
|
||||
|
||||
Examples:
|
||||
|
||||
* Container
|
||||
* PageContainer
|
||||
* SectionContainer
|
||||
- Container
|
||||
- PageContainer
|
||||
- SectionContainer
|
||||
|
||||
Do not create unique widths for every section.
|
||||
|
||||
@@ -131,10 +133,10 @@ Create reusable animation presets.
|
||||
|
||||
Examples:
|
||||
|
||||
* fadeUp
|
||||
* staggerChildren
|
||||
* scaleIn
|
||||
* slideIn
|
||||
- fadeUp
|
||||
- staggerChildren
|
||||
- scaleIn
|
||||
- slideIn
|
||||
|
||||
Do not redefine animations in every component.
|
||||
|
||||
@@ -144,9 +146,9 @@ Common image styles should be reusable.
|
||||
|
||||
Examples:
|
||||
|
||||
* cardImage
|
||||
* heroImage
|
||||
* avatarImage
|
||||
- cardImage
|
||||
- heroImage
|
||||
- avatarImage
|
||||
|
||||
Avoid repeating image styling logic.
|
||||
|
||||
@@ -156,9 +158,9 @@ If the same pattern exists in multiple sections, do not update only one section.
|
||||
|
||||
Examples:
|
||||
|
||||
* Hero Title
|
||||
* About Title
|
||||
* Feature Title
|
||||
- Hero Title
|
||||
- About Title
|
||||
- Feature Title
|
||||
|
||||
Update the shared source.
|
||||
|
||||
@@ -170,10 +172,10 @@ Top, Bottom, Left, and Right spacing must follow the same design system.
|
||||
|
||||
Avoid random values such as:
|
||||
|
||||
* 72px
|
||||
* 94px
|
||||
* 113px
|
||||
* 147px
|
||||
- 72px
|
||||
- 94px
|
||||
- 113px
|
||||
- 147px
|
||||
|
||||
Use predefined spacing tokens only.
|
||||
|
||||
@@ -183,16 +185,16 @@ The entire site should feel visually consistent.
|
||||
|
||||
## Mission
|
||||
|
||||
Recreate the Aiero Home 9 experience with maximum visual fidelity while keeping the codebase maintainable and production-ready.
|
||||
Recreate the tenext Home 9 experience with maximum visual fidelity while keeping the codebase maintainable and production-ready.
|
||||
|
||||
## Agent Behavior
|
||||
|
||||
Before making changes:
|
||||
|
||||
* Analyze existing component
|
||||
* Compare against reference
|
||||
* Identify exact mismatch
|
||||
* Apply minimal fix
|
||||
- Analyze existing component
|
||||
- Compare against reference
|
||||
- Identify exact mismatch
|
||||
- Apply minimal fix
|
||||
|
||||
Do not perform large rewrites unless explicitly requested.
|
||||
|
||||
@@ -210,36 +212,36 @@ Do not perform large rewrites unless explicitly requested.
|
||||
|
||||
Verify:
|
||||
|
||||
* Hero height
|
||||
* Hero width
|
||||
* Artwork scale
|
||||
* Artwork position
|
||||
* Heading width
|
||||
* Heading line breaks
|
||||
* CTA placement
|
||||
* Scroll indicator position
|
||||
* Navbar alignment
|
||||
- Hero height
|
||||
- Hero width
|
||||
- Artwork scale
|
||||
- Artwork position
|
||||
- Heading width
|
||||
- Heading line breaks
|
||||
- CTA placement
|
||||
- Scroll indicator position
|
||||
- Navbar alignment
|
||||
|
||||
## Card Analysis Checklist
|
||||
|
||||
Verify:
|
||||
|
||||
* Border radius
|
||||
* Padding
|
||||
* Image crop
|
||||
* Text spacing
|
||||
* Card proportions
|
||||
* Responsive behavior
|
||||
- Border radius
|
||||
- Padding
|
||||
- Image crop
|
||||
- Text spacing
|
||||
- Card proportions
|
||||
- Responsive behavior
|
||||
|
||||
## Forbidden Actions
|
||||
|
||||
Do NOT:
|
||||
|
||||
* Replace sections without approval
|
||||
* Change color system globally
|
||||
* Introduce new layouts
|
||||
* Remove existing functionality
|
||||
* Rewrite working components
|
||||
- Replace sections without approval
|
||||
- Change color system globally
|
||||
- Introduce new layouts
|
||||
- Remove existing functionality
|
||||
- Rewrite working components
|
||||
|
||||
## Preferred Workflow
|
||||
|
||||
@@ -266,10 +268,10 @@ Target:
|
||||
|
||||
Every change should improve:
|
||||
|
||||
* Layout
|
||||
* Alignment
|
||||
* Proportions
|
||||
* Visual balance
|
||||
- Layout
|
||||
- Alignment
|
||||
- Proportions
|
||||
- Visual balance
|
||||
|
||||
Avoid subjective redesign decisions.
|
||||
|
||||
@@ -277,13 +279,13 @@ Reference fidelity is more important than personal preference.
|
||||
|
||||
## Code Quality Rules
|
||||
|
||||
* TypeScript strict
|
||||
* Reusable components
|
||||
* Clean props
|
||||
* No duplicated code
|
||||
* No inline magic values
|
||||
* Use Tailwind consistently
|
||||
- TypeScript strict
|
||||
- Reusable components
|
||||
- Clean props
|
||||
- No duplicated code
|
||||
- No inline magic values
|
||||
- Use Tailwind consistently
|
||||
|
||||
## Final Goal
|
||||
|
||||
Build a production-quality Next.js implementation that visually matches Aiero Home 9 as closely as possible while maintaining clean architecture and long-term maintainability.
|
||||
Build a production-quality Next.js implementation that visually matches tenext Home 9 as closely as possible while maintaining clean architecture and long-term maintainability.
|
||||
|
||||
93
CLAUDE.md
@@ -1,9 +1,10 @@
|
||||
@AGENTS.md
|
||||
|
||||
# CLAUDE.md
|
||||
|
||||
## Project Overview
|
||||
|
||||
This project is a high-fidelity recreation of the Aiero Home 9 landing page using Next.js App Router, TypeScript, Tailwind CSS, and Framer Motion.
|
||||
This project is a high-fidelity recreation of the tenext Home 9 landing page using Next.js App Router, TypeScript, Tailwind CSS, and Framer Motion.
|
||||
|
||||
The goal is NOT to redesign the page.
|
||||
|
||||
@@ -23,15 +24,15 @@ Common design decisions must come from shared sources, not repeated one-off valu
|
||||
|
||||
Centralize:
|
||||
|
||||
* Colors
|
||||
* Typography
|
||||
* Border radius
|
||||
* Shadows
|
||||
* Container widths
|
||||
* Section spacing
|
||||
* Button styles
|
||||
* Animation presets
|
||||
* Image styles
|
||||
- Colors
|
||||
- Typography
|
||||
- Border radius
|
||||
- Shadows
|
||||
- Container widths
|
||||
- Section spacing
|
||||
- Button styles
|
||||
- Animation presets
|
||||
- Image styles
|
||||
|
||||
Use reusable components for repeated patterns such as cards, buttons, badges, section headers, CTA blocks, and statistic counters.
|
||||
|
||||
@@ -43,20 +44,20 @@ When the same pattern appears in multiple sections, update the shared token, com
|
||||
|
||||
The homepage is:
|
||||
|
||||
* Editorial
|
||||
* Card-driven
|
||||
* Visual-first
|
||||
* Premium AI agency
|
||||
* Image-heavy
|
||||
* Modern but minimal
|
||||
- Editorial
|
||||
- Card-driven
|
||||
- Visual-first
|
||||
- Premium AI agency
|
||||
- Image-heavy
|
||||
- Modern but minimal
|
||||
|
||||
Avoid:
|
||||
|
||||
* Generic SaaS layouts
|
||||
* Dashboard-first designs
|
||||
* Startup template aesthetics
|
||||
* Excessive gradients
|
||||
* Excessive glassmorphism
|
||||
- Generic SaaS layouts
|
||||
- Dashboard-first designs
|
||||
- Startup template aesthetics
|
||||
- Excessive gradients
|
||||
- Excessive glassmorphism
|
||||
|
||||
## Hero Section Requirements
|
||||
|
||||
@@ -64,11 +65,11 @@ Hero is the most important section.
|
||||
|
||||
Must maintain:
|
||||
|
||||
* Large background artwork
|
||||
* Left aligned content
|
||||
* Vertical Scroll Down element
|
||||
* Large heading
|
||||
* Compact CTA
|
||||
- Large background artwork
|
||||
- Left aligned content
|
||||
- Vertical Scroll Down element
|
||||
- Large heading
|
||||
- Compact CTA
|
||||
|
||||
Hero artwork should dominate visual composition.
|
||||
|
||||
@@ -81,30 +82,30 @@ Target ratio:
|
||||
|
||||
Cards should:
|
||||
|
||||
* Use large border radii
|
||||
* Have consistent spacing
|
||||
* Maintain editorial proportions
|
||||
* Feel like magazine blocks
|
||||
- Use large border radii
|
||||
- Have consistent spacing
|
||||
- Maintain editorial proportions
|
||||
- Feel like magazine blocks
|
||||
|
||||
Do not:
|
||||
|
||||
* Make all cards equal height
|
||||
* Convert cards into dashboard widgets
|
||||
* Add unnecessary statistics
|
||||
- Make all cards equal height
|
||||
- Convert cards into dashboard widgets
|
||||
- Add unnecessary statistics
|
||||
|
||||
## Typography Rules
|
||||
|
||||
Headings:
|
||||
|
||||
* Strong
|
||||
* Bold
|
||||
* Editorial
|
||||
- Strong
|
||||
- Bold
|
||||
- Editorial
|
||||
|
||||
Body text:
|
||||
|
||||
* Simple
|
||||
* Readable
|
||||
* Secondary
|
||||
- Simple
|
||||
- Readable
|
||||
- Secondary
|
||||
|
||||
Avoid oversized line lengths.
|
||||
|
||||
@@ -114,16 +115,16 @@ Use subtle animations only.
|
||||
|
||||
Allowed:
|
||||
|
||||
* Fade up
|
||||
* Hover lift
|
||||
* Opacity transitions
|
||||
* Small parallax
|
||||
- Fade up
|
||||
- Hover lift
|
||||
- Opacity transitions
|
||||
- Small parallax
|
||||
|
||||
Avoid:
|
||||
|
||||
* Excessive motion
|
||||
* Heavy GSAP timelines
|
||||
* Distracting effects
|
||||
- Excessive motion
|
||||
- Heavy GSAP timelines
|
||||
- Distracting effects
|
||||
|
||||
## Responsive Rules
|
||||
|
||||
|
||||
@@ -8,15 +8,18 @@ import { PartnerLogosSection } from "@/components/shared/PartnerLogosSection";
|
||||
import { TeamSection } from "@/components/aiero/about/TeamSection";
|
||||
|
||||
export const metadata = {
|
||||
title: "About us - Aiero",
|
||||
title: "About us - tenext",
|
||||
};
|
||||
|
||||
export default function AboutPage() {
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main className="min-h-screen bg-aiero-dark">
|
||||
<PageTitleBanner title="About us" breadcrumbs={[{ label: "About us" }]} />
|
||||
<main className="min-h-screen bg-tenext-dark">
|
||||
<PageTitleBanner
|
||||
title="About us"
|
||||
breadcrumbs={[{ label: "About us" }]}
|
||||
/>
|
||||
<AboutIntroSection />
|
||||
<MarqueeStrip text="/ Neural Networks in shaping the future of technology." />
|
||||
<MissionSection />
|
||||
|
||||
@@ -4,15 +4,18 @@ import { ContactFormSection } from "@/components/shared/ContactFormSection";
|
||||
import { MapSection } from "@/components/aiero/contacts/MapSection";
|
||||
|
||||
export const metadata = {
|
||||
title: "Contacts - Aiero",
|
||||
title: "Contacts - tenext",
|
||||
};
|
||||
|
||||
export default function ContactsPage() {
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main className="min-h-screen bg-aiero-dark">
|
||||
<PageTitleBanner title="Contacts" breadcrumbs={[{ label: "Contacts" }]} />
|
||||
<main className="min-h-screen bg-tenext-dark">
|
||||
<PageTitleBanner
|
||||
title="Contacts"
|
||||
breadcrumbs={[{ label: "Contacts" }]}
|
||||
/>
|
||||
<ContactFormSection />
|
||||
<MapSection />
|
||||
</main>
|
||||
|
||||
152
app/globals.css
@@ -1,21 +1,22 @@
|
||||
@import "tailwindcss";
|
||||
|
||||
:root {
|
||||
/* ── Aiero color tokens (extracted from source) ── */
|
||||
--aiero-bg-dark: #1F1F1F;
|
||||
--aiero-bg-card-dark: #282828;
|
||||
--aiero-bg-card-border: #3F3F3F;
|
||||
--aiero-accent-teal: #45D0BD;
|
||||
--aiero-accent-blue: #44B6E9;
|
||||
--aiero-accent-red: #EF6464;
|
||||
--aiero-accent-red-hover: #F57E7E;
|
||||
--aiero-purple-start: #8258C8;
|
||||
--aiero-purple-mid: #6766C8;
|
||||
--aiero-purple-end: #2C84C8;
|
||||
--aiero-card-purple: #343F78;
|
||||
--aiero-card-purple-2: #56619E;
|
||||
--aiero-card-lavender: #AC8DE0;
|
||||
--aiero-text-muted: #87899B;
|
||||
/* ── tenext color tokens (extracted from source) ── */
|
||||
--tenext-bg-dark: #1f1f1f;
|
||||
--tenext-bg-card-dark: #282828;
|
||||
--tenext-bg-card-border: #3f3f3f;
|
||||
--tenext-accent-teal: #45d0bd;
|
||||
--tenext-accent-blue: #44b6e9;
|
||||
--tenext-accent-red: #ef6464;
|
||||
--tenext-accent-red-hover: #f57e7e;
|
||||
--tenext-purple-start: #8258c8;
|
||||
--tenext-purple-mid: #6766c8;
|
||||
--tenext-purple-end: #2c84c8;
|
||||
--tenext-card-purple: #343f78;
|
||||
--tenext-card-purple-2: #56619e;
|
||||
--tenext-card-lavender: #ac8de0;
|
||||
--tenext-text-muted: #87899b;
|
||||
--tenext-surface-muted: #ecf0f4;
|
||||
|
||||
/* button gradient angles */
|
||||
--button-border-gradient-angle: 92deg;
|
||||
@@ -25,21 +26,22 @@
|
||||
|
||||
@theme inline {
|
||||
--color-background: #ffffff;
|
||||
--color-foreground: #1F1F1F;
|
||||
--color-aiero-dark: #1F1F1F;
|
||||
--color-aiero-card-dark: #282828;
|
||||
--color-aiero-card-border: #3F3F3F;
|
||||
--color-aiero-teal: #45D0BD;
|
||||
--color-aiero-blue: #44B6E9;
|
||||
--color-aiero-red: #EF6464;
|
||||
--color-aiero-red-hover: #F57E7E;
|
||||
--color-aiero-purple-start: #8258C8;
|
||||
--color-aiero-purple-mid: #6766C8;
|
||||
--color-aiero-purple-end: #2C84C8;
|
||||
--color-aiero-card-purple: #343F78;
|
||||
--color-aiero-card-purple-2: #56619E;
|
||||
--color-aiero-card-lavender: #AC8DE0;
|
||||
--color-aiero-text-muted: #87899B;
|
||||
--color-foreground: #1f1f1f;
|
||||
--color-tenext-dark: #1f1f1f;
|
||||
--color-tenext-card-dark: #282828;
|
||||
--color-tenext-card-border: #3f3f3f;
|
||||
--color-tenext-teal: #45d0bd;
|
||||
--color-tenext-blue: #44b6e9;
|
||||
--color-tenext-red: #ef6464;
|
||||
--color-tenext-red-hover: #f57e7e;
|
||||
--color-tenext-purple-start: #8258c8;
|
||||
--color-tenext-purple-mid: #6766c8;
|
||||
--color-tenext-purple-end: #2c84c8;
|
||||
--color-tenext-card-purple: #343f78;
|
||||
--color-tenext-card-purple-2: #56619e;
|
||||
--color-tenext-card-lavender: #ac8de0;
|
||||
--color-tenext-text-muted: #87899b;
|
||||
--color-tenext-surface-muted: #ecf0f4;
|
||||
|
||||
--font-sans: var(--font-manrope), ui-sans-serif, system-ui, sans-serif;
|
||||
--font-sora: var(--font-sora), sans-serif;
|
||||
@@ -62,7 +64,7 @@ body {
|
||||
min-height: 100vh;
|
||||
overflow-x: hidden;
|
||||
background: #ffffff;
|
||||
color: #1F1F1F;
|
||||
color: #1f1f1f;
|
||||
font-family: var(--font-manrope), ui-sans-serif, system-ui, sans-serif;
|
||||
font-size: 16px;
|
||||
line-height: 1.6;
|
||||
@@ -73,8 +75,8 @@ button {
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
/* ── Aiero button base ── */
|
||||
.aiero-button {
|
||||
/* ── tenext button base ── */
|
||||
.tenext-button {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
@@ -87,7 +89,7 @@ button {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.aiero-button .button-inner {
|
||||
.tenext-button .button-inner {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
border-radius: inherit;
|
||||
@@ -95,20 +97,20 @@ button {
|
||||
}
|
||||
|
||||
/* Solid variant */
|
||||
.aiero-button-solid {
|
||||
.tenext-button-solid {
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
}
|
||||
|
||||
/* Gradient border variant */
|
||||
.aiero-button-gradient-border {
|
||||
.tenext-button-gradient-border {
|
||||
background: transparent;
|
||||
border: none;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.aiero-button-gradient-border::after {
|
||||
.tenext-button-gradient-border::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
@@ -116,17 +118,19 @@ button {
|
||||
padding: 1.5px;
|
||||
background: linear-gradient(
|
||||
var(--button-border-gradient-angle),
|
||||
var(--aiero-accent-teal) var(--button-gradient-colorstop-1),
|
||||
var(--aiero-accent-blue) var(--button-gradient-colorstop-2)
|
||||
var(--tenext-accent-teal) var(--button-gradient-colorstop-1),
|
||||
var(--tenext-accent-blue) var(--button-gradient-colorstop-2)
|
||||
);
|
||||
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
||||
-webkit-mask:
|
||||
linear-gradient(#fff 0 0) content-box,
|
||||
linear-gradient(#fff 0 0);
|
||||
-webkit-mask-composite: xor;
|
||||
mask-composite: exclude;
|
||||
pointer-events: none;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.aiero-button-gradient-border .button-inner::before {
|
||||
.tenext-button-gradient-border .button-inner::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
@@ -135,40 +139,40 @@ button {
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.aiero-button-gradient-border .button-inner::after {
|
||||
.tenext-button-gradient-border .button-inner::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
border-radius: inherit;
|
||||
background: linear-gradient(
|
||||
var(--button-border-gradient-angle),
|
||||
var(--aiero-accent-teal) var(--button-gradient-colorstop-1),
|
||||
var(--aiero-accent-blue) var(--button-gradient-colorstop-2)
|
||||
var(--tenext-accent-teal) var(--button-gradient-colorstop-1),
|
||||
var(--tenext-accent-blue) var(--button-gradient-colorstop-2)
|
||||
);
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
|
||||
.aiero-button-gradient-border:hover .button-inner::after {
|
||||
.tenext-button-gradient-border:hover .button-inner::after {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.aiero-button-gradient-border:hover {
|
||||
.tenext-button-gradient-border:hover {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
/* Gradient fill variant */
|
||||
.aiero-button-gradient-fill {
|
||||
.tenext-button-gradient-fill {
|
||||
background: linear-gradient(
|
||||
var(--button-border-gradient-angle),
|
||||
var(--aiero-accent-teal) var(--button-gradient-colorstop-1),
|
||||
var(--aiero-accent-blue) var(--button-gradient-colorstop-2)
|
||||
var(--tenext-accent-teal) var(--button-gradient-colorstop-1),
|
||||
var(--tenext-accent-blue) var(--button-gradient-colorstop-2)
|
||||
);
|
||||
border: none;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.aiero-button-gradient-fill::after {
|
||||
.tenext-button-gradient-fill::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
@@ -176,10 +180,12 @@ button {
|
||||
padding: 1.5px;
|
||||
background: linear-gradient(
|
||||
var(--button-border-gradient-angle),
|
||||
var(--aiero-accent-teal) var(--button-gradient-colorstop-1),
|
||||
var(--aiero-accent-blue) var(--button-gradient-colorstop-2)
|
||||
var(--tenext-accent-teal) var(--button-gradient-colorstop-1),
|
||||
var(--tenext-accent-blue) var(--button-gradient-colorstop-2)
|
||||
);
|
||||
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
||||
-webkit-mask:
|
||||
linear-gradient(#fff 0 0) content-box,
|
||||
linear-gradient(#fff 0 0);
|
||||
-webkit-mask-composite: xor;
|
||||
mask-composite: exclude;
|
||||
pointer-events: none;
|
||||
@@ -188,7 +194,7 @@ button {
|
||||
|
||||
/* ── Gradient text ── */
|
||||
.gradient-text-purple {
|
||||
background: linear-gradient(103deg, #8258C8 0%, #2C84C8 100%);
|
||||
background: linear-gradient(103deg, #8258c8 0%, #2c84c8 100%);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
@@ -235,7 +241,7 @@ button {
|
||||
}
|
||||
}
|
||||
|
||||
/* ── Aiero heading animation ── */
|
||||
/* ── tenext heading animation ── */
|
||||
@keyframes headingReveal {
|
||||
from {
|
||||
opacity: 0;
|
||||
@@ -277,14 +283,20 @@ button {
|
||||
@keyframes heroBgFloat {
|
||||
0%,
|
||||
100% {
|
||||
transform: translate3d(var(--hero-parallax-x, 0), var(--hero-parallax-y, 0), 0) scale(1.02);
|
||||
transform: translate3d(
|
||||
var(--hero-parallax-x, 0),
|
||||
var(--hero-parallax-y, 0),
|
||||
0
|
||||
)
|
||||
scale(1.02);
|
||||
}
|
||||
50% {
|
||||
transform: translate3d(
|
||||
calc(var(--hero-parallax-x, 0px) + 2px),
|
||||
calc(var(--hero-parallax-y, 0px) - 3px),
|
||||
0
|
||||
) scale(1.025);
|
||||
calc(var(--hero-parallax-x, 0px) + 2px),
|
||||
calc(var(--hero-parallax-y, 0px) - 3px),
|
||||
0
|
||||
)
|
||||
scale(1.025);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -320,7 +332,9 @@ button {
|
||||
|
||||
.nav-link-swap > .text-active {
|
||||
display: inline-block;
|
||||
transition: opacity 0.3s ease, transform 0.3s ease;
|
||||
transition:
|
||||
opacity 0.3s ease,
|
||||
transform 0.3s ease;
|
||||
}
|
||||
|
||||
.nav-link-swap > span:not(.text-active) {
|
||||
@@ -329,7 +343,9 @@ button {
|
||||
top: 14px;
|
||||
opacity: 0;
|
||||
transform: translateY(150%);
|
||||
transition: opacity 0.3s ease, transform 0.3s ease;
|
||||
transition:
|
||||
opacity 0.3s ease,
|
||||
transform 0.3s ease;
|
||||
}
|
||||
|
||||
.nav-link-swap:hover > .text-active {
|
||||
@@ -386,16 +402,18 @@ button {
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
.aiero-card {
|
||||
.tenext-card {
|
||||
transition:
|
||||
transform 0.32s ease,
|
||||
box-shadow 0.32s ease,
|
||||
border-color 0.32s ease;
|
||||
}
|
||||
|
||||
.aiero-card:hover {
|
||||
.tenext-card:hover {
|
||||
transform: translateY(-4px);
|
||||
box-shadow: 0 22px 55px rgba(31, 31, 31, 0.16), 0 0 0 1px rgba(69, 208, 189, 0.22);
|
||||
box-shadow:
|
||||
0 22px 55px rgba(31, 31, 31, 0.16),
|
||||
0 0 0 1px rgba(69, 208, 189, 0.22);
|
||||
}
|
||||
|
||||
/* ── Scroll down button decoration ── */
|
||||
@@ -427,7 +445,7 @@ button {
|
||||
}
|
||||
|
||||
/* ── Subheading tag ── */
|
||||
.aiero-subheading {
|
||||
.tenext-subheading {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
@@ -440,7 +458,7 @@ button {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.aiero-subheading::before {
|
||||
.tenext-subheading::before {
|
||||
content: "";
|
||||
width: 30px;
|
||||
height: 1px;
|
||||
|
||||
@@ -22,9 +22,9 @@ const dmSans = DM_Sans({
|
||||
});
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Home 9 – Aiero",
|
||||
title: "Home 9 – tenext",
|
||||
description:
|
||||
"Revolutionizing businesses with cutting-edge AI solutions and groundbreaking innovation. Aiero – AI agency committed to transforming businesses.",
|
||||
"Revolutionizing businesses with cutting-edge AI solutions and groundbreaking innovation. tenext – AI agency committed to transforming businesses.",
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
|
||||
@@ -30,7 +30,7 @@ export default function Home() {
|
||||
className="relative z-[15] mt-[40px] mb-[-90px] px-[20px] pb-[40px]"
|
||||
style={{ transform: "rotate(-2.07deg)" }}
|
||||
>
|
||||
<div className="h-[130px] w-full rounded-[20px] bg-aiero-dark" />
|
||||
<div className="h-[130px] w-full rounded-[20px] bg-tenext-dark" />
|
||||
</section>
|
||||
<WOWSection />
|
||||
<FeaturesSection />
|
||||
|
||||
@@ -10,15 +10,18 @@ import { TestimonialsSection } from "@/components/aiero/services/TestimonialsSec
|
||||
import { PricingSection } from "@/components/aiero/services/PricingSection";
|
||||
|
||||
export const metadata = {
|
||||
title: "Services - Aiero",
|
||||
title: "Services - tenext",
|
||||
};
|
||||
|
||||
export default function ServicesPage() {
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main className="min-h-screen bg-aiero-dark">
|
||||
<PageTitleBanner title="Services Page" breadcrumbs={[{ label: "Services Page" }]} />
|
||||
<main className="min-h-screen bg-tenext-dark">
|
||||
<PageTitleBanner
|
||||
title="Services Page"
|
||||
breadcrumbs={[{ label: "Services Page" }]}
|
||||
/>
|
||||
<ServiceCardsGrid />
|
||||
<MarqueeStrip text="/ Neural Networks in shaping the future of technology." />
|
||||
<ServiceFeaturesSection />
|
||||
|
||||
@@ -4,47 +4,44 @@ export function BenefitsGridSection() {
|
||||
return (
|
||||
<section className="relative overflow-hidden bg-white px-[20px] pb-[60px] md:pb-[100px]">
|
||||
<div className="mx-auto max-w-[1260px]">
|
||||
|
||||
<div className="grid grid-cols-1 gap-[30px] md:grid-cols-3">
|
||||
|
||||
{/* Card 1 */}
|
||||
<div className="flex flex-col gap-[20px] rounded-[25px] border border-aiero-card-border p-[40px] transition-transform duration-300 hover:-translate-y-2">
|
||||
<h4 className="text-[22px] font-bold leading-[1.3] text-aiero-dark font-[var(--font-sora)]">
|
||||
<div className="flex flex-col gap-[20px] rounded-[25px] border border-tenext-card-border p-[40px] transition-transform duration-300 hover:-translate-y-2">
|
||||
<h4 className="text-[22px] font-bold leading-[1.3] text-tenext-dark font-[var(--font-sora)]">
|
||||
AI-Powered Marketing & Personalization
|
||||
</h4>
|
||||
<ul className="flex flex-col gap-[15px] mt-[10px]">
|
||||
<li className="flex items-start gap-[10px] text-[16px] text-aiero-text-muted">
|
||||
<span className="mt-[5px] h-[6px] w-[6px] rounded-full bg-aiero-accent-teal shrink-0"></span>
|
||||
<li className="flex items-start gap-[10px] text-[16px] text-tenext-text-muted">
|
||||
<span className="mt-[5px] h-[6px] w-[6px] rounded-full bg-tenext-accent-teal shrink-0"></span>
|
||||
Hyper-personalized recommendations
|
||||
</li>
|
||||
<li className="flex items-start gap-[10px] text-[16px] text-aiero-text-muted">
|
||||
<span className="mt-[5px] h-[6px] w-[6px] rounded-full bg-aiero-accent-teal shrink-0"></span>
|
||||
<li className="flex items-start gap-[10px] text-[16px] text-tenext-text-muted">
|
||||
<span className="mt-[5px] h-[6px] w-[6px] rounded-full bg-tenext-accent-teal shrink-0"></span>
|
||||
AI-driven ad targeting & optimization
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{/* Card 2 */}
|
||||
<div className="flex flex-col gap-[20px] rounded-[25px] border border-aiero-card-border p-[40px] transition-transform duration-300 hover:-translate-y-2">
|
||||
<h4 className="text-[22px] font-bold leading-[1.3] text-aiero-dark font-[var(--font-sora)]">
|
||||
<div className="flex flex-col gap-[20px] rounded-[25px] border border-tenext-card-border p-[40px] transition-transform duration-300 hover:-translate-y-2">
|
||||
<h4 className="text-[22px] font-bold leading-[1.3] text-tenext-dark font-[var(--font-sora)]">
|
||||
Seamless AI integration for your business success
|
||||
</h4>
|
||||
<p className="text-[16px] leading-[1.6] text-aiero-text-muted mt-[10px]">
|
||||
Seamless integration with existing systems and platforms & Scalable and flexible architecture
|
||||
<p className="text-[16px] leading-[1.6] text-tenext-text-muted mt-[10px]">
|
||||
Seamless integration with existing systems and platforms &
|
||||
Scalable and flexible architecture
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Card 3 (OpenAI Logo) */}
|
||||
<div className="flex items-center justify-center rounded-[25px] border border-aiero-card-border bg-[#F8F9FA] p-[40px] transition-transform duration-300 hover:-translate-y-2">
|
||||
<img
|
||||
src="https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2024/12/openai-logo-1.png"
|
||||
alt="OpenAI Logo"
|
||||
<div className="flex items-center justify-center rounded-[25px] border border-tenext-card-border bg-[#F8F9FA] p-[40px] transition-transform duration-300 hover:-translate-y-2">
|
||||
<img
|
||||
src="/images/tenext/openai-logo-1.png"
|
||||
alt="OpenAI Logo"
|
||||
className="w-[180px] h-auto object-contain"
|
||||
/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
|
||||
@@ -5,21 +5,22 @@ import { SectionHeading } from "@/components/shared/SectionHeading";
|
||||
const blogPosts = [
|
||||
{
|
||||
title: "How to Build a Custom AI Model for Your Business",
|
||||
image: "https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2024/12/portrait-confident-man.jpg", // Placeholder
|
||||
image: "/images/tenext/portrait-confident-man.jpg",
|
||||
category: "AI Technology",
|
||||
date: "March 15, 2025",
|
||||
link: "/blog/custom-ai-model",
|
||||
},
|
||||
{
|
||||
title: "The Future of Machine Learning in Enterprise",
|
||||
image: "https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2025/02/Group-18301.jpg", // Placeholder
|
||||
image: "/images/tenext/Group-18301.jpg",
|
||||
category: "Machine Learning",
|
||||
date: "April 2, 2025",
|
||||
link: "/blog/machine-learning-enterprise",
|
||||
},
|
||||
{
|
||||
title: "Ethics in AI: What You Need to Know",
|
||||
image: "https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2024/12/3d-woman-shape-glowing-with-bright-holographic-colors-1-min.png", // Placeholder
|
||||
image:
|
||||
"/images/tenext/3d-woman-shape-glowing-with-bright-holographic-colors-1-min.png",
|
||||
category: "AI Ethics",
|
||||
date: "April 10, 2025",
|
||||
link: "/blog/ethics-in-ai",
|
||||
@@ -32,36 +33,39 @@ export function BlogSection() {
|
||||
<div className="mx-auto max-w-[1260px]">
|
||||
<div className="mb-[60px] flex flex-col items-center text-center">
|
||||
<SectionHeading
|
||||
subtitle="blog"
|
||||
title="Exploring the world of artificial intelligence with Aiero blogging"
|
||||
titleClassName="max-w-[800px] text-aiero-dark"
|
||||
tag="blog"
|
||||
title="Exploring the world of artificial intelligence with tenext blogging"
|
||||
titleClassName="max-w-[800px] text-tenext-dark"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 gap-[30px] md:grid-cols-2 lg:grid-cols-3">
|
||||
{blogPosts.map((post, index) => (
|
||||
<div key={index} className="group flex flex-col overflow-hidden rounded-[25px] border border-aiero-card-border bg-white transition-shadow duration-300 hover:shadow-xl">
|
||||
<div
|
||||
key={index}
|
||||
className="group flex flex-col overflow-hidden rounded-[25px] border border-tenext-card-border bg-white transition-shadow duration-300 hover:shadow-xl"
|
||||
>
|
||||
<div className="relative h-[250px] w-full overflow-hidden">
|
||||
<img
|
||||
src={post.image}
|
||||
alt={post.title}
|
||||
className="h-full w-full object-cover transition-transform duration-500 group-hover:scale-110"
|
||||
<img
|
||||
src={post.image}
|
||||
alt={post.title}
|
||||
className="h-full w-full object-cover transition-transform duration-500 group-hover:scale-110"
|
||||
/>
|
||||
<div className="absolute left-[20px] top-[20px] rounded-full bg-white px-[15px] py-[5px] text-[12px] font-bold tracking-wide text-aiero-dark uppercase font-[var(--font-sora)]">
|
||||
<div className="absolute left-[20px] top-[20px] rounded-full bg-white px-[15px] py-[5px] text-[12px] font-bold tracking-wide text-tenext-dark uppercase font-[var(--font-sora)]">
|
||||
{post.category}
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col p-[30px]">
|
||||
<div className="mb-[15px] text-[14px] text-aiero-text-muted">
|
||||
<div className="mb-[15px] text-[14px] text-tenext-text-muted">
|
||||
{post.date}
|
||||
</div>
|
||||
<h4 className="mb-[20px] text-[22px] font-bold leading-[1.3] text-aiero-dark font-[var(--font-sora)] transition-colors group-hover:text-aiero-accent-teal">
|
||||
<h4 className="mb-[20px] text-[22px] font-bold leading-[1.3] text-tenext-dark font-[var(--font-sora)] transition-colors group-hover:text-tenext-accent-teal">
|
||||
<Link href={post.link}>{post.title}</Link>
|
||||
</h4>
|
||||
<div className="mt-auto">
|
||||
<Link
|
||||
href={post.link}
|
||||
className="inline-flex items-center gap-[10px] text-[15px] font-bold text-aiero-dark font-[var(--font-sora)] hover:text-aiero-accent-teal"
|
||||
<Link
|
||||
href={post.link}
|
||||
className="inline-flex items-center gap-[10px] text-[15px] font-bold text-tenext-dark font-[var(--font-sora)] hover:text-tenext-accent-teal"
|
||||
>
|
||||
Read more
|
||||
<ArrowUpRight className="h-[18px] w-[18px]" />
|
||||
|
||||
@@ -6,25 +6,25 @@ import { RevealOnView } from "@/components/shared/RevealOnView";
|
||||
|
||||
const socialIcons = [
|
||||
{
|
||||
src: "/images/aiero/messenger-logo-1.png",
|
||||
src: "/images/tenext/messenger-logo-1.png",
|
||||
alt: "Messenger",
|
||||
width: 57,
|
||||
height: 59,
|
||||
},
|
||||
{
|
||||
src: "/images/aiero/skype-logo.png",
|
||||
src: "/images/tenext/skype-logo.png",
|
||||
alt: "Skype",
|
||||
width: 56,
|
||||
height: 57,
|
||||
},
|
||||
{
|
||||
src: "/images/aiero/telegram-symbol-1.png",
|
||||
src: "/images/tenext/telegram-symbol-1.png",
|
||||
alt: "Telegram",
|
||||
width: 59,
|
||||
height: 58,
|
||||
},
|
||||
{
|
||||
src: "/images/aiero/discord-1.png",
|
||||
src: "/images/tenext/discord-1.png",
|
||||
alt: "Discord",
|
||||
width: 54,
|
||||
height: 54,
|
||||
@@ -35,136 +35,134 @@ export function CardsGrid() {
|
||||
return (
|
||||
<section className="px-[20px] pb-[20px]">
|
||||
<div className="grid grid-cols-1 gap-[20px] md:grid-cols-2 xl:grid-cols-[1fr_1fr_0.73fr]">
|
||||
|
||||
{/* Card 1 */}
|
||||
<RevealOnView delay={0}>
|
||||
<div className="aiero-card group relative flex h-full flex-col justify-between overflow-hidden rounded-[25px] bg-aiero-card-purple p-[40px_35px_45px_35px] lg:p-[50px_45px_50px_45px]">
|
||||
<Image
|
||||
src="/images/aiero/assistant-artificial-intelligence-min.png"
|
||||
alt=""
|
||||
className="pointer-events-none absolute right-[-10px] top-[-10px] h-auto w-[150px] object-contain object-right-top transition-transform duration-500 group-hover:scale-105 lg:w-[190px]"
|
||||
width={220}
|
||||
height={274}
|
||||
/>
|
||||
|
||||
<div className="relative z-10 flex gap-[6px]">
|
||||
<span className="rounded-[15px] border border-white px-[20px] py-[5px] text-[12px] text-white transition-colors hover:border-aiero-teal hover:text-aiero-teal">
|
||||
Solutions
|
||||
</span>
|
||||
<span className="rounded-[15px] border border-white px-[20px] py-[5px] text-[12px] text-white transition-colors hover:border-aiero-teal hover:text-aiero-teal">
|
||||
Plugins
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div className="relative z-10 mt-[66px] max-w-[460px] lg:mt-[110px]">
|
||||
<CardHeading
|
||||
title="Transform customer support with intelligent AI chatbots for seamless and effortless service"
|
||||
titleClassName="text-white"
|
||||
wrapperClassName="mb-0"
|
||||
<div className="tenext-card group relative flex h-full flex-col justify-between overflow-hidden rounded-[25px] bg-tenext-card-purple p-[40px_35px_45px_35px] lg:p-[50px_45px_50px_45px]">
|
||||
<Image
|
||||
src="/images/tenext/assistant-artificial-intelligence-min.png"
|
||||
alt=""
|
||||
className="pointer-events-none absolute right-[-10px] top-[-10px] h-auto w-[150px] object-contain object-right-top transition-transform duration-500 group-hover:scale-105 lg:w-[190px]"
|
||||
width={220}
|
||||
height={274}
|
||||
/>
|
||||
|
||||
<div className="mt-[36px] flex items-center gap-[20px]">
|
||||
{socialIcons.map((icon) => (
|
||||
<Image
|
||||
key={icon.alt}
|
||||
src={icon.src}
|
||||
alt={icon.alt}
|
||||
width={icon.width}
|
||||
height={icon.height}
|
||||
className="h-auto w-auto"
|
||||
/>
|
||||
))}
|
||||
|
||||
<div className="relative z-10 flex gap-[6px]">
|
||||
<span className="rounded-[15px] border border-white px-[20px] py-[5px] text-[12px] text-white transition-colors hover:border-tenext-teal hover:text-tenext-teal">
|
||||
Solutions
|
||||
</span>
|
||||
<span className="rounded-[15px] border border-white px-[20px] py-[5px] text-[12px] text-white transition-colors hover:border-tenext-teal hover:text-tenext-teal">
|
||||
Plugins
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div className="relative z-10 mt-[66px] max-w-[460px] lg:mt-[110px]">
|
||||
<CardHeading
|
||||
title="Transform customer support with intelligent AI chatbots for seamless and effortless service"
|
||||
titleClassName="text-white"
|
||||
wrapperClassName="mb-0"
|
||||
/>
|
||||
|
||||
<div className="mt-[36px] flex items-center gap-[20px]">
|
||||
{socialIcons.map((icon) => (
|
||||
<Image
|
||||
key={icon.alt}
|
||||
src={icon.src}
|
||||
alt={icon.alt}
|
||||
width={icon.width}
|
||||
height={icon.height}
|
||||
className="h-auto w-auto"
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<IconButton />
|
||||
</div>
|
||||
|
||||
<IconButton />
|
||||
</div>
|
||||
</RevealOnView>
|
||||
|
||||
{/* Card 2 */}
|
||||
<RevealOnView delay={110}>
|
||||
<div className="aiero-card group relative flex h-full flex-col justify-between overflow-hidden rounded-[25px] bg-aiero-card-purple-2 p-[40px_35px_45px_35px] lg:p-[50px_45px_50px_45px]">
|
||||
<div className="absolute inset-0 bg-aiero-card-purple-2" />
|
||||
<div className="absolute inset-0 bg-[url('/images/aiero/c0eb2845-min.png')] bg-[length:60%] bg-right-bottom bg-no-repeat transition-transform duration-500 group-hover:scale-105" />
|
||||
<div className="absolute inset-0 bg-gradient-to-b from-transparent via-transparent to-[#454f88]/16" />
|
||||
|
||||
<div className="relative z-10 mb-[54px] max-w-[515px]">
|
||||
<div className="mb-[24px] inline-flex h-[38px] w-[38px] items-center justify-center">
|
||||
<ChartIcon className="h-full w-full text-white" />
|
||||
<div className="tenext-card group relative flex h-full flex-col justify-between overflow-hidden rounded-[25px] bg-tenext-card-purple-2 p-[40px_35px_45px_35px] lg:p-[50px_45px_50px_45px]">
|
||||
<div className="absolute inset-0 bg-tenext-card-purple-2" />
|
||||
<div className="absolute inset-0 bg-[url('/images/tenext/c0eb2845-min.png')] bg-[length:60%] bg-right-bottom bg-no-repeat transition-transform duration-500 group-hover:scale-105" />
|
||||
<div className="absolute inset-0 bg-gradient-to-b from-transparent via-transparent to-[#454f88]/16" />
|
||||
|
||||
<div className="relative z-10 mb-[54px] max-w-[515px]">
|
||||
<div className="mb-[24px] inline-flex h-[38px] w-[38px] items-center justify-center">
|
||||
<ChartIcon className="h-full w-full text-white" />
|
||||
</div>
|
||||
|
||||
<CardHeading
|
||||
title="All-in-One AI solutions dashboard for smarter business insights & innovation."
|
||||
titleClassName="text-white"
|
||||
wrapperClassName="mb-[18px]"
|
||||
/>
|
||||
|
||||
<p className="max-w-[448px] text-[16px] leading-[1.85] text-white">
|
||||
Explore our comprehensive AI solutions dashboard designed to
|
||||
provide actionable business insights and drive innovation
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<CardHeading
|
||||
title="All-in-One AI solutions dashboard for smarter business insights & innovation."
|
||||
titleClassName="text-white"
|
||||
wrapperClassName="mb-[18px]"
|
||||
/>
|
||||
|
||||
<p className="max-w-[448px] text-[16px] leading-[1.85] text-white">
|
||||
Explore our comprehensive AI solutions dashboard designed to
|
||||
provide actionable business insights and drive innovation
|
||||
</p>
|
||||
|
||||
<IconButton />
|
||||
</div>
|
||||
|
||||
<IconButton />
|
||||
</div>
|
||||
</RevealOnView>
|
||||
|
||||
{/* Card 3 (spans 2 columns) */}
|
||||
<RevealOnView className="md:col-span-2 xl:col-span-1" delay={220}>
|
||||
<div className="flex h-full flex-col gap-[20px]">
|
||||
|
||||
{/* Card 3 - Top half */}
|
||||
<div className="aiero-card relative flex min-h-[176px] flex-col justify-center overflow-hidden rounded-[25px] bg-aiero-card-lavender p-[40px] lg:p-[45px_50px]">
|
||||
<a href="#" className="absolute inset-0 z-20" aria-label="Happy clients" />
|
||||
<div className="relative z-10 flex flex-col items-start">
|
||||
<div>
|
||||
<Counter
|
||||
target={500}
|
||||
suffix="K+"
|
||||
numberClassName="font-[var(--font-manrope)] text-[82px] font-extrabold leading-none tracking-[-0.04em] text-transparent"
|
||||
style={{
|
||||
WebkitTextStroke: "1px rgba(255,255,255,0.16)",
|
||||
backgroundImage:
|
||||
"linear-gradient(180deg, rgba(255,255,255,0.44) 0%, rgba(255,255,255,0.06) 90%)",
|
||||
}}
|
||||
<div className="flex h-full flex-col gap-[20px]">
|
||||
{/* Card 3 - Top half */}
|
||||
<div className="tenext-card relative flex min-h-[176px] flex-col justify-center overflow-hidden rounded-[25px] bg-tenext-card-lavender p-[40px] lg:p-[45px_50px]">
|
||||
<a
|
||||
href="#"
|
||||
className="absolute inset-0 z-20"
|
||||
aria-label="Happy clients"
|
||||
/>
|
||||
<div className="relative z-10 flex flex-col items-start">
|
||||
<div>
|
||||
<Counter
|
||||
target={500}
|
||||
suffix="K+"
|
||||
numberClassName="font-[var(--font-manrope)] text-[82px] font-extrabold leading-none tracking-[-0.04em] text-transparent"
|
||||
style={{
|
||||
WebkitTextStroke: "1px rgba(255,255,255,0.16)",
|
||||
backgroundImage:
|
||||
"linear-gradient(180deg, rgba(255,255,255,0.44) 0%, rgba(255,255,255,0.06) 90%)",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<div className="mt-[4px]">
|
||||
<h4 className="font-[var(--font-manrope)] text-[16px] font-medium leading-[20px] text-white">
|
||||
Happy clients
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 3 - Bottom half */}
|
||||
<div className="tenext-card group relative flex flex-col justify-between overflow-hidden rounded-[25px] bg-tenext-card-dark p-[40px_35px_45px_35px] lg:p-[50px_45px_45px_45px]">
|
||||
<div className="absolute inset-0 bg-[url('/images/tenext/Layer_2-min.jpg')] bg-cover bg-center transition-all duration-500 group-hover:scale-105" />
|
||||
|
||||
<div className="relative z-10 mb-[26px]">
|
||||
<CardHeading
|
||||
title="Unlock your full potential with effortless OpenAI integration solutions"
|
||||
titleClassName="text-white max-w-[80%]"
|
||||
wrapperClassName="mb-0"
|
||||
/>
|
||||
</div>
|
||||
<div className="mt-[4px]">
|
||||
<h4 className="font-[var(--font-manrope)] text-[16px] font-medium leading-[20px] text-white">
|
||||
Happy clients
|
||||
</h4>
|
||||
|
||||
<div className="relative z-10">
|
||||
<Image
|
||||
src="/images/tenext/openai-logo-1.png"
|
||||
alt="OpenAI"
|
||||
width={272}
|
||||
height={71}
|
||||
className="h-auto w-[138px] lg:w-[152px]"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 3 - Bottom half */}
|
||||
<div className="aiero-card group relative flex flex-col justify-between overflow-hidden rounded-[25px] bg-aiero-card-dark p-[40px_35px_45px_35px] lg:p-[50px_45px_45px_45px]">
|
||||
<div
|
||||
className="absolute inset-0 bg-[url('/images/aiero/Layer_2-min.jpg')] bg-cover bg-center transition-all duration-500 group-hover:scale-105"
|
||||
/>
|
||||
|
||||
<div className="relative z-10 mb-[26px]">
|
||||
<CardHeading
|
||||
title="Unlock your full potential with effortless OpenAI integration solutions"
|
||||
titleClassName="text-white max-w-[80%]"
|
||||
wrapperClassName="mb-0"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="relative z-10">
|
||||
<Image
|
||||
src="/images/aiero/openai-logo-1.png"
|
||||
alt="OpenAI"
|
||||
width={272}
|
||||
height={71}
|
||||
className="h-auto w-[138px] lg:w-[152px]"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</RevealOnView>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
|
||||
@@ -7,9 +7,9 @@ export function FeaturesSection() {
|
||||
<div className="mx-auto max-w-[1260px]">
|
||||
{/* Top text and separator */}
|
||||
<div className="mb-[70px] pr-[10%]">
|
||||
<div className="mb-[20px] h-px w-[130px] bg-aiero-card-border" />
|
||||
<div className="mb-[20px] h-px w-[130px] bg-tenext-card-border" />
|
||||
<h2
|
||||
className="max-w-[700px] tracking-[-0.03em] text-white"
|
||||
className="max-w-[700px] tracking-[-0.03em] text-tenext-dark"
|
||||
style={{
|
||||
fontFamily: "var(--font-sora)",
|
||||
fontSize: "clamp(32px, 4vw, 56px)",
|
||||
@@ -23,101 +23,107 @@ export function FeaturesSection() {
|
||||
|
||||
{/* Feature Cards Grid */}
|
||||
<div className="grid grid-cols-1 gap-[20px] lg:grid-cols-2">
|
||||
|
||||
{/* Card 1 - Left */}
|
||||
<div className="relative flex flex-col justify-between overflow-hidden rounded-[25px] border border-aiero-card-border bg-aiero-card-dark p-[40px_35px_45px_35px] lg:p-[22%_9%_20%_9%]">
|
||||
<div className="relative flex flex-col justify-between overflow-hidden rounded-[25px] border border-tenext-card-border bg-tenext-card-dark p-[40px_35px_45px_35px] lg:p-[22%_9%_20%_9%]">
|
||||
<div
|
||||
className="absolute inset-0 bg-[url('/images/aiero/home-9-img.png')] bg-bottom bg-no-repeat transition-all duration-300 hover:scale-105"
|
||||
className="absolute inset-0 bg-[url('/images/tenext/home-9-img.png')] bg-bottom bg-no-repeat transition-all duration-300 hover:scale-105"
|
||||
style={{ backgroundSize: "100% auto" }}
|
||||
/>
|
||||
<div className="absolute inset-0 bg-gradient-to-t from-[#0D0D0D99] to-transparent to-[20%]" />
|
||||
|
||||
|
||||
<div className="relative z-10 mt-auto">
|
||||
<CardHeading
|
||||
title="Integrate our API to uncover deep insights"
|
||||
titleClassName="text-white"
|
||||
/>
|
||||
|
||||
|
||||
<ul className="mt-[20px] flex flex-col gap-3">
|
||||
<li className="flex items-center gap-3 text-aiero-text-muted">
|
||||
<span className="flex h-1 w-1 rounded-full bg-aiero-text-muted" />
|
||||
<li className="flex items-center gap-3 text-tenext-text-muted">
|
||||
<span className="flex h-1 w-1 rounded-full bg-tenext-text-muted" />
|
||||
Advanced analytics processing
|
||||
</li>
|
||||
<li className="flex items-center gap-3 text-aiero-text-muted">
|
||||
<span className="flex h-1 w-1 rounded-full bg-aiero-text-muted" />
|
||||
<li className="flex items-center gap-3 text-tenext-text-muted">
|
||||
<span className="flex h-1 w-1 rounded-full bg-tenext-text-muted" />
|
||||
Real-time data synchronization
|
||||
</li>
|
||||
<li className="flex items-center gap-3 text-aiero-text-muted">
|
||||
<span className="flex h-1 w-1 rounded-full bg-aiero-text-muted" />
|
||||
<li className="flex items-center gap-3 text-tenext-text-muted">
|
||||
<span className="flex h-1 w-1 rounded-full bg-tenext-text-muted" />
|
||||
Secure API endpoints
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<IconButton />
|
||||
</div>
|
||||
|
||||
{/* Card 2 - Right */}
|
||||
<div className="relative flex flex-col justify-between overflow-hidden rounded-[25px] border border-aiero-card-border bg-aiero-card-dark p-[40px_35px_45px_35px] lg:p-[10%_9%_11%_9%]">
|
||||
<div
|
||||
className="absolute inset-0 bg-[url('/images/aiero/Dots.png')] bg-[length:auto] bg-[50%_20px] bg-no-repeat opacity-20"
|
||||
/>
|
||||
|
||||
<div className="relative flex flex-col justify-between overflow-hidden rounded-[25px] border border-tenext-card-border bg-tenext-card-dark p-[40px_35px_45px_35px] lg:p-[10%_9%_11%_9%]">
|
||||
<div className="absolute inset-0 bg-[url('/images/tenext/Dots.png')] bg-[length:auto] bg-[50%_20px] bg-no-repeat opacity-20" />
|
||||
|
||||
<div className="relative z-10 flex h-[42px] w-[42px] items-center justify-center text-white">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="h-full w-full">
|
||||
<path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/>
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
strokeWidth="2"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
className="h-full w-full"
|
||||
>
|
||||
<path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6" />
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
|
||||
<div className="relative z-10 mt-[60px] lg:mt-[100px]">
|
||||
<CardHeading
|
||||
title="Data privacy and security with robust measures"
|
||||
titleClassName="text-white"
|
||||
/>
|
||||
<p className="text-[16px] text-aiero-text-muted">
|
||||
Cobra opaleye gray reef shark bluntnose minnow. Triggerfish bango guppy opah sunfish bluntnose knifefish upside-down catfish.
|
||||
<p className="text-[16px] text-tenext-text-muted">
|
||||
Cobra opaleye gray reef shark bluntnose minnow. Triggerfish
|
||||
bango guppy opah sunfish bluntnose knifefish upside-down
|
||||
catfish.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
<IconButton />
|
||||
</div>
|
||||
|
||||
{/* Card 3 - Bottom Full Width */}
|
||||
<div className="relative col-span-1 overflow-hidden rounded-[25px] border border-aiero-card-border bg-aiero-card-dark lg:col-span-2">
|
||||
<div className="relative col-span-1 overflow-hidden rounded-[25px] border border-tenext-card-border bg-tenext-card-dark lg:col-span-2">
|
||||
<div
|
||||
className="absolute inset-0 bg-[url('/images/aiero/3d-woman-shape-glowing-with-bright-holographic-colors-1-min.png')] bg-right-bottom bg-no-repeat transition-all duration-300 hover:scale-105"
|
||||
className="absolute inset-0 bg-[url('/images/tenext/3d-woman-shape-glowing-with-bright-holographic-colors-1-min.png')] bg-right-bottom bg-no-repeat transition-all duration-300 hover:scale-105"
|
||||
style={{ backgroundSize: "83% auto" }}
|
||||
/>
|
||||
|
||||
|
||||
<div className="relative z-10 grid grid-cols-1 gap-[40px] p-[40px_35px] lg:grid-cols-2 lg:p-[80px_60px]">
|
||||
<div>
|
||||
<CardHeading
|
||||
subtitle="Technology"
|
||||
title="Tailored solutions specifically to your needs"
|
||||
titleClassName="text-white"
|
||||
subtitleClassName="text-aiero-teal"
|
||||
subtitleClassName="text-tenext-teal"
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
||||
<div className="flex flex-col gap-[40px] sm:flex-row sm:gap-[60px] lg:pl-[15%]">
|
||||
<Counter
|
||||
target={98}
|
||||
suffix="%"
|
||||
numberClassName="text-[60px] font-bold leading-none font-[var(--font-manrope)] text-white"
|
||||
title="Accuracy rate"
|
||||
titleClassName="font-[var(--font-sora)] text-[11px] font-semibold tracking-[0.18em] uppercase text-aiero-text-muted mt-2"
|
||||
titleClassName="font-[var(--font-sora)] text-[11px] font-semibold tracking-[0.18em] uppercase text-tenext-text-muted mt-2"
|
||||
/>
|
||||
<Counter
|
||||
target={24}
|
||||
suffix="/7"
|
||||
numberClassName="text-[60px] font-bold leading-none font-[var(--font-manrope)] text-white"
|
||||
title="Customer support"
|
||||
titleClassName="font-[var(--font-sora)] text-[11px] font-semibold tracking-[0.18em] uppercase text-aiero-text-muted mt-2"
|
||||
titleClassName="font-[var(--font-sora)] text-[11px] font-semibold tracking-[0.18em] uppercase text-tenext-text-muted mt-2"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -6,18 +6,18 @@ export function HeroSection() {
|
||||
<section className="relative px-5 py-5">
|
||||
{/* Scroll Down button — vertical, left side */}
|
||||
<div className="scroll-widget absolute left-0 top-[40%] z-20 hidden xl:block">
|
||||
<ScrollDown />
|
||||
<ScrollDown />
|
||||
</div>
|
||||
|
||||
{/* Hero container with background */}
|
||||
<div
|
||||
className="relative overflow-hidden rounded-[25px] bg-aiero-dark"
|
||||
className="relative overflow-hidden rounded-[25px] bg-tenext-dark"
|
||||
style={{
|
||||
minHeight: "min(858px, calc(100vw * 0.447))",
|
||||
padding: "14.3% 0 8.1% 0",
|
||||
}}
|
||||
>
|
||||
<HeroImageScene imageSrc="/images/aiero/home-9-top-bg-min.jpg" />
|
||||
<HeroImageScene imageSrc="/images/tenext/home-9-top-bg-min.jpg" />
|
||||
|
||||
{/* Hero content */}
|
||||
<div className="relative z-10 w-full px-[12.7vw]">
|
||||
@@ -37,7 +37,10 @@ export function HeroSection() {
|
||||
</h1>
|
||||
|
||||
{/* Subtitle */}
|
||||
<div className="hero-reveal max-w-[660px]" style={{ animationDelay: "760ms" }}>
|
||||
<div
|
||||
className="hero-reveal max-w-[660px]"
|
||||
style={{ animationDelay: "760ms" }}
|
||||
>
|
||||
<p className="text-[16px] font-semibold leading-[1.9] text-white">
|
||||
Mummichog paradise fish! Triggerfish bango guppy opah sunfish
|
||||
bluntnose knifefish upside-down catfish cobia spookfish convict
|
||||
@@ -46,17 +49,26 @@ export function HeroSection() {
|
||||
</div>
|
||||
|
||||
{/* CTA Button */}
|
||||
<div className="hero-reveal mt-[42px]" style={{ animationDelay: "940ms" }}>
|
||||
<div
|
||||
className="hero-reveal mt-[42px]"
|
||||
style={{ animationDelay: "940ms" }}
|
||||
>
|
||||
<a
|
||||
href="#"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="aiero-button aiero-button-solid inline-flex items-center gap-2 rounded-[25px] border border-aiero-red bg-aiero-red px-[30px] py-[14px] text-[16px] text-white transition-all hover:-translate-y-0.5 hover:border-aiero-red-hover hover:bg-aiero-red-hover hover:shadow-[0_15px_30px_rgba(239,100,100,0.28)]"
|
||||
className="tenext-button tenext-button-solid inline-flex items-center gap-2 rounded-[25px] border border-tenext-red bg-tenext-red px-[30px] py-[14px] text-[16px] text-white transition-all hover:-translate-y-0.5 hover:border-tenext-red-hover hover:bg-tenext-red-hover hover:shadow-[0_15px_30px_rgba(239,100,100,0.28)]"
|
||||
style={{ minWidth: "216px", fontFamily: "var(--font-sora)" }}
|
||||
>
|
||||
Discover
|
||||
<svg width="10" height="10" viewBox="0 0 12 12" fill="none">
|
||||
<path d="M1 11L11 1M11 1H3M11 1V9" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"/>
|
||||
<path
|
||||
d="M1 11L11 1M11 1H3M11 1V9"
|
||||
stroke="currentColor"
|
||||
strokeWidth="1.5"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
<span className="button-inner" />
|
||||
</a>
|
||||
|
||||
@@ -6,22 +6,26 @@ export function HowItWorksSection() {
|
||||
{
|
||||
number: "01",
|
||||
title: "Neurons and Layers",
|
||||
description: "A neural network consists of interconnected nodes called neurons. Neurons are organized into layers.",
|
||||
description:
|
||||
"A neural network consists of interconnected nodes called neurons. Neurons are organized into layers.",
|
||||
},
|
||||
{
|
||||
number: "02",
|
||||
title: "Activation Function",
|
||||
description: "Each neuron applies an activation function to the weighted sum of its inputs and produces an output",
|
||||
description:
|
||||
"Each neuron applies an activation function to the weighted sum of its inputs and produces an output",
|
||||
},
|
||||
{
|
||||
number: "03",
|
||||
title: "Feedforward Process",
|
||||
description: "The inputs are multiplied by their respective weights, summed up, and passed through the activation function.",
|
||||
description:
|
||||
"The inputs are multiplied by their respective weights, summed up, and passed through the activation function.",
|
||||
},
|
||||
{
|
||||
number: "04",
|
||||
title: "Activation Function",
|
||||
description: "The inputs are multiplied by their respective weights, summed up, and passed through the activation function.",
|
||||
title: "Backpropagation",
|
||||
description:
|
||||
"The inputs are multiplied by their respective weights, summed up, and passed through the activation function.",
|
||||
},
|
||||
];
|
||||
|
||||
@@ -30,30 +34,30 @@ export function HowItWorksSection() {
|
||||
<div className="mx-auto max-w-[1260px]">
|
||||
<div className="flex flex-col md:flex-row md:items-end justify-between gap-[30px] mb-[60px]">
|
||||
<SectionHeading
|
||||
subtitle="how it works"
|
||||
tag="how it works"
|
||||
title="Neural networks are a fundamental component of Artificial Intelligence (AI) systems"
|
||||
titleClassName="max-w-[700px] text-aiero-dark"
|
||||
titleClassName="max-w-[700px] text-tenext-dark"
|
||||
/>
|
||||
<div className="flex gap-[15px]">
|
||||
<button className="flex h-[50px] w-[50px] items-center justify-center rounded-full border border-aiero-card-border text-aiero-dark transition-colors hover:bg-aiero-card-border">
|
||||
<button className="flex h-[50px] w-[50px] items-center justify-center rounded-full border border-tenext-card-border text-tenext-dark transition-colors hover:bg-tenext-card-border">
|
||||
<ArrowLeft size={20} />
|
||||
</button>
|
||||
<button className="flex h-[50px] w-[50px] items-center justify-center rounded-full border border-aiero-card-border text-aiero-dark transition-colors hover:bg-aiero-card-border">
|
||||
<button className="flex h-[50px] w-[50px] items-center justify-center rounded-full border border-tenext-card-border text-tenext-dark transition-colors hover:bg-tenext-card-border">
|
||||
<ArrowRight size={20} />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-[30px]">
|
||||
<div className="flex flex-col">
|
||||
{steps.map((step, index) => (
|
||||
<div key={index} className="flex flex-col border-t border-aiero-card-border pt-[30px]">
|
||||
<div className="text-[50px] font-bold text-transparent font-[var(--font-sora)]" style={{ WebkitTextStroke: "1px #3F3F3F" }}>
|
||||
{step.number}
|
||||
<div key={index} className="flex flex-col">
|
||||
<div className="flex flex-wrap items-center gap-[15px] rounded-[15px] bg-gradient-to-r from-tenext-blue to-tenext-purple-start px-[25px] py-[14px] text-white">
|
||||
<span className="text-[14px] font-bold">{step.number}</span>
|
||||
<span className="text-[18px] font-bold font-[var(--font-sora)]">
|
||||
{step.title}
|
||||
</span>
|
||||
</div>
|
||||
<h6 className="mt-[20px] mb-[15px] text-[20px] font-bold text-aiero-dark font-[var(--font-sora)]">
|
||||
{step.title}
|
||||
</h6>
|
||||
<p className="text-[16px] leading-[1.6] text-aiero-text-muted">
|
||||
<p className="mt-[20px] mb-[25px] max-w-[720px] text-[16px] leading-[1.6] text-tenext-text-muted">
|
||||
{step.description}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -3,20 +3,29 @@ interface MarqueeStripProps {
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export function MarqueeStrip({
|
||||
export function MarqueeStrip({
|
||||
text = "Artificial Intelligence",
|
||||
className = ""
|
||||
className = "",
|
||||
}: MarqueeStripProps) {
|
||||
const marqueeItems = Array.from({ length: 6 });
|
||||
|
||||
return (
|
||||
<div className={`relative z-10 mx-[-5px] mb-[-20px] mt-0 overflow-hidden bg-gradient-to-r from-aiero-teal to-aiero-blue py-[42px] ${className}`} style={{ transform: "rotate(-2.07deg)" }}>
|
||||
<div
|
||||
className={`relative z-10 mx-[-5px] mb-[-20px] mt-0 overflow-hidden bg-gradient-to-r from-tenext-teal to-tenext-blue py-[42px] ${className}`}
|
||||
style={{ transform: "rotate(-2.07deg)" }}
|
||||
>
|
||||
<div className="marquee-track flex w-max whitespace-nowrap">
|
||||
{[0, 1].map((track) => (
|
||||
<div key={track} className="flex shrink-0 items-center">
|
||||
{marqueeItems.map((_, i) => (
|
||||
<div key={`${track}-${i}`} className="flex items-center gap-8 pr-8">
|
||||
<span className="marquee-text text-white" style={{ fontFamily: "var(--font-sora)" }}>
|
||||
<div
|
||||
key={`${track}-${i}`}
|
||||
className="flex items-center gap-8 pr-8"
|
||||
>
|
||||
<span
|
||||
className="marquee-text text-white"
|
||||
style={{ fontFamily: "var(--font-sora)" }}
|
||||
>
|
||||
{text}
|
||||
</span>
|
||||
<span className="flex h-3 w-3 rounded-full bg-white opacity-50" />
|
||||
|
||||
@@ -5,7 +5,6 @@ export function MetricsSection() {
|
||||
<section className="bg-white px-[20px] py-[60px] md:py-[100px]">
|
||||
<div className="mx-auto max-w-[1260px]">
|
||||
<div className="grid grid-cols-1 gap-[50px] md:grid-cols-2 md:gap-[80px]">
|
||||
|
||||
{/* Left Metric */}
|
||||
<div className="flex flex-col gap-[20px]">
|
||||
<Counter
|
||||
@@ -14,10 +13,10 @@ export function MetricsSection() {
|
||||
numberClassName="text-[60px] md:text-[80px] font-bold leading-none text-transparent gradient-text-purple font-[var(--font-sora)]"
|
||||
title=""
|
||||
/>
|
||||
<h3 className="text-[28px] font-bold leading-[1.3] text-aiero-dark font-[var(--font-sora)]">
|
||||
<h3 className="text-[28px] font-bold leading-[1.3] text-tenext-dark font-[var(--font-sora)]">
|
||||
Happy & satisfied customers
|
||||
</h3>
|
||||
<p className="text-[16px] leading-[1.8] text-aiero-text-muted mt-[10px]">
|
||||
<p className="text-[16px] leading-[1.8] text-tenext-text-muted mt-[10px]">
|
||||
Achieved a 95% customer satisfaction rate across all AI solutions.
|
||||
</p>
|
||||
</div>
|
||||
@@ -31,14 +30,14 @@ export function MetricsSection() {
|
||||
numberClassName="text-[60px] md:text-[80px] font-bold leading-none text-transparent gradient-text-purple font-[var(--font-sora)]"
|
||||
title=""
|
||||
/>
|
||||
<h3 className="text-[28px] font-bold leading-[1.3] text-aiero-dark font-[var(--font-sora)]">
|
||||
Earns with our Aiero product
|
||||
<h3 className="text-[28px] font-bold leading-[1.3] text-tenext-dark font-[var(--font-sora)]">
|
||||
Earns with our tenext product
|
||||
</h3>
|
||||
<p className="text-[16px] leading-[1.8] text-aiero-text-muted mt-[10px]">
|
||||
Delivered over $150 billion in cost savings for clients through optimized AI solutions.
|
||||
<p className="text-[16px] leading-[1.8] text-tenext-text-muted mt-[10px]">
|
||||
Delivered over $150 billion in cost savings for clients through
|
||||
optimized AI solutions.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -19,7 +19,7 @@ export function Navbar() {
|
||||
|
||||
return (
|
||||
<header
|
||||
className={`aiero-navbar z-30 mx-auto grid h-[100px] max-w-[2520px] grid-cols-[280px_1fr_360px] items-center px-[34px] transition-[background-color,border-radius,box-shadow,transform] duration-500 ${
|
||||
className={`tenext-navbar z-30 mx-auto grid h-[100px] max-w-[2520px] grid-cols-[280px_1fr_360px] items-center px-[34px] transition-[background-color,border-radius,box-shadow,transform] duration-500 ${
|
||||
isSticky
|
||||
? "fixed left-5 right-5 top-0 rounded-b-[25px] bg-[#111111] shadow-[0_12px_35px_rgba(0,0,0,0.18)]"
|
||||
: "relative bg-transparent"
|
||||
@@ -27,7 +27,7 @@ export function Navbar() {
|
||||
>
|
||||
<div className="flex items-center gap-[64px]">
|
||||
<button
|
||||
className="navbar-reveal grid h-6 w-6 grid-cols-2 gap-[5px] text-white transition-colors hover:text-aiero-teal"
|
||||
className="navbar-reveal grid h-6 w-6 grid-cols-2 gap-[5px] text-white transition-colors hover:text-tenext-teal"
|
||||
aria-label="Open menu"
|
||||
>
|
||||
<span className="h-[7px] w-[7px] rounded-[2px] border-2 border-current" />
|
||||
@@ -37,10 +37,14 @@ export function Navbar() {
|
||||
</button>
|
||||
|
||||
{/* Logo */}
|
||||
<a href="#" className="navbar-reveal flex items-center" style={{ animationDelay: "120ms" }}>
|
||||
<a
|
||||
href="#"
|
||||
className="navbar-reveal flex items-center"
|
||||
style={{ animationDelay: "120ms" }}
|
||||
>
|
||||
<Image
|
||||
src="/images/aiero/logo-dark.png"
|
||||
alt="Aiero"
|
||||
src="/images/tenext/logo-dark.png"
|
||||
alt="tenext"
|
||||
width={109.5}
|
||||
height={19.5}
|
||||
className="h-auto w-auto"
|
||||
@@ -50,7 +54,10 @@ export function Navbar() {
|
||||
</div>
|
||||
|
||||
{/* Navigation */}
|
||||
<nav className="hidden items-center justify-center gap-[11px] lg:flex" aria-label="Primary navigation">
|
||||
<nav
|
||||
className="hidden items-center justify-center gap-[11px] lg:flex"
|
||||
aria-label="Primary navigation"
|
||||
>
|
||||
{navigationData.map((item, index) => (
|
||||
<div
|
||||
key={item.label}
|
||||
@@ -61,28 +68,38 @@ export function Navbar() {
|
||||
>
|
||||
<a
|
||||
href={item.href}
|
||||
className={`nav-link-swap flex h-10 items-center rounded-[10px] px-[21px] text-[13px] font-bold uppercase leading-none text-white transition-colors hover:bg-aiero-dark ${
|
||||
item.label === "Home" ? "bg-aiero-dark" : ""
|
||||
className={`nav-link-swap flex h-10 items-center rounded-[10px] px-[21px] text-[13px] font-bold uppercase leading-none text-white transition-colors hover:bg-tenext-dark ${
|
||||
item.label === "Home" ? "bg-tenext-dark" : ""
|
||||
}`}
|
||||
style={{ fontFamily: "var(--font-sora)" }}
|
||||
>
|
||||
<span className="text-active">{item.label}</span>
|
||||
<span aria-hidden>{item.label}</span>
|
||||
{item.children && (
|
||||
<svg className="ml-[12px] h-[5px] w-[5px] opacity-90" viewBox="0 0 5 5" fill="none">
|
||||
<path d="M4.35 0.9L3.75 4.05L0.65 3.45" stroke="currentColor" strokeWidth="1.1" strokeLinecap="round" strokeLinejoin="round"/>
|
||||
<svg
|
||||
className="ml-[12px] h-[5px] w-[5px] opacity-90"
|
||||
viewBox="0 0 5 5"
|
||||
fill="none"
|
||||
>
|
||||
<path
|
||||
d="M4.35 0.9L3.75 4.05L0.65 3.45"
|
||||
stroke="currentColor"
|
||||
strokeWidth="1.1"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
)}
|
||||
</a>
|
||||
|
||||
{/* Dropdown */}
|
||||
{item.children && openDropdown === item.label && (
|
||||
<div className="absolute left-0 top-full z-50 min-w-[286px] origin-top rounded-[20px] border border-aiero-card-border bg-[#111111] px-[45px] py-[30px] shadow-2xl">
|
||||
<div className="absolute left-0 top-full z-50 min-w-[286px] origin-top rounded-[20px] border border-tenext-card-border bg-[#111111] px-[45px] py-[30px] shadow-2xl">
|
||||
{item.children.map((child, childIndex) => (
|
||||
<a
|
||||
key={child.label}
|
||||
href={child.href}
|
||||
className="dropdown-reveal block py-[10px] pr-5 text-[14px] font-medium text-white/80 transition-all hover:pl-5 hover:text-aiero-teal"
|
||||
className="dropdown-reveal block py-[10px] pr-5 text-[14px] font-medium text-white/80 transition-all hover:pl-5 hover:text-tenext-teal"
|
||||
style={{
|
||||
animationDelay: `${childIndex * 45}ms`,
|
||||
fontFamily: "var(--font-sora)",
|
||||
@@ -98,26 +115,43 @@ export function Navbar() {
|
||||
</nav>
|
||||
|
||||
{/* Right Icons */}
|
||||
<div className="navbar-reveal flex items-center justify-end gap-[10px]" style={{ animationDelay: "620ms" }}>
|
||||
<button className="hidden p-[8px] text-white transition-colors hover:text-aiero-teal md:block" aria-label="Search">
|
||||
<div
|
||||
className="navbar-reveal flex items-center justify-end gap-[10px]"
|
||||
style={{ animationDelay: "620ms" }}
|
||||
>
|
||||
<button
|
||||
className="hidden p-[8px] text-white transition-colors hover:text-tenext-teal md:block"
|
||||
aria-label="Search"
|
||||
>
|
||||
<SearchIcon className="h-[18px] w-[18px]" />
|
||||
</button>
|
||||
|
||||
<a
|
||||
href="#"
|
||||
className="hidden items-center gap-[8px] p-[8px] text-[13px] font-bold uppercase leading-none text-white transition-colors hover:text-aiero-teal md:flex"
|
||||
className="hidden items-center gap-[8px] p-[8px] text-[13px] font-bold uppercase leading-none text-white transition-colors hover:text-tenext-teal md:flex"
|
||||
style={{ fontFamily: "var(--font-sora)" }}
|
||||
>
|
||||
<svg className="h-4 w-4" viewBox="0 0 16 16" fill="none">
|
||||
<circle cx="8" cy="5" r="3.5" stroke="currentColor" strokeWidth="1.3"/>
|
||||
<path d="M2 14.5C2 11.5 4.5 9.5 8 9.5C11.5 9.5 14 11.5 14 14.5" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round"/>
|
||||
<circle
|
||||
cx="8"
|
||||
cy="5"
|
||||
r="3.5"
|
||||
stroke="currentColor"
|
||||
strokeWidth="1.3"
|
||||
/>
|
||||
<path
|
||||
d="M2 14.5C2 11.5 4.5 9.5 8 9.5C11.5 9.5 14 11.5 14 14.5"
|
||||
stroke="currentColor"
|
||||
strokeWidth="1.3"
|
||||
strokeLinecap="round"
|
||||
/>
|
||||
</svg>
|
||||
Log in
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="#"
|
||||
className="aiero-button aiero-button-gradient-border min-w-[188px] justify-center rounded-full px-[24px] py-[21px] text-[16px] font-semibold leading-none text-white"
|
||||
className="tenext-button tenext-button-gradient-border min-w-[188px] justify-center rounded-full px-[24px] py-[21px] text-[16px] font-semibold leading-none text-white"
|
||||
style={{ fontFamily: "var(--font-sora)" }}
|
||||
>
|
||||
Get in Touch
|
||||
|
||||
@@ -1,24 +1,28 @@
|
||||
import { AieroButton } from "@/components/shared/AieroButton";
|
||||
import { tenextButton as TenextButton } from "@/components/shared/AieroButton";
|
||||
import { Counter } from "@/components/shared/Counter";
|
||||
import { IconBox } from "@/components/shared/IconBox";
|
||||
import { OrbitIcon, FanIcon, CirclesIcon, ExpandIcon } from "@/components/shared/icons/PossibilityIcons";
|
||||
import {
|
||||
OrbitIcon,
|
||||
FanIcon,
|
||||
CirclesIcon,
|
||||
ExpandIcon,
|
||||
} from "@/components/shared/icons/PossibilityIcons";
|
||||
|
||||
export function PossibilitiesSection() {
|
||||
return (
|
||||
<section className="px-[20px] py-[60px] md:py-[100px]">
|
||||
<div className="mx-auto grid max-w-[1260px] grid-cols-1 gap-[50px] lg:grid-cols-[1fr_1fr]">
|
||||
|
||||
{/* Left Column */}
|
||||
<div className="flex flex-col items-start pr-[10%] pt-[20px]">
|
||||
<span
|
||||
className="aiero-subheading mb-[16px] text-aiero-dark uppercase tracking-[0.1em]"
|
||||
className="tenext-subheading mb-[16px] text-tenext-dark uppercase tracking-[0.1em]"
|
||||
style={{ fontFamily: "var(--font-sora)" }}
|
||||
>
|
||||
[ possibilities ]
|
||||
</span>
|
||||
|
||||
|
||||
<h2
|
||||
className="mb-[24px] max-w-[500px] tracking-[-0.03em] text-aiero-dark"
|
||||
className="mb-[24px] max-w-[500px] tracking-[-0.03em] text-tenext-dark"
|
||||
style={{
|
||||
fontFamily: "var(--font-dm-sans)",
|
||||
fontSize: "clamp(32px, 4vw, 56px)",
|
||||
@@ -28,18 +32,22 @@ export function PossibilitiesSection() {
|
||||
>
|
||||
Explore limitless possibilities with our intelligent solutions
|
||||
</h2>
|
||||
|
||||
<p className="mb-[40px] max-w-[480px] text-[16px] leading-[1.8] text-aiero-text-muted">
|
||||
AIERO is a leading AI agency committed to transforming businesses through cutting-edge artificial intelligence solutions. We specialize in delivering tailored AI strategies that drive innovation, optimize processes, and unlock new opportunities for growth.
|
||||
|
||||
<p className="mb-[40px] max-w-[480px] text-[16px] leading-[1.8] text-tenext-text-muted">
|
||||
tenext is a leading AI agency committed to transforming businesses
|
||||
through cutting-edge artificial intelligence solutions. We
|
||||
specialize in delivering tailored AI strategies that drive
|
||||
innovation, optimize processes, and unlock new opportunities for
|
||||
growth.
|
||||
</p>
|
||||
|
||||
<AieroButton
|
||||
|
||||
<TenextButton
|
||||
variant="gradient-border"
|
||||
className="rounded-[25px] px-[35px] py-[15px] text-[15px] font-medium"
|
||||
showArrow={true}
|
||||
>
|
||||
Explore more
|
||||
</AieroButton>
|
||||
</TenextButton>
|
||||
|
||||
<div className="mt-[80px]">
|
||||
<Counter
|
||||
@@ -48,12 +56,13 @@ export function PossibilitiesSection() {
|
||||
numberClassName="text-[60px] md:text-[100px] font-extrabold leading-none font-[var(--font-manrope)] text-transparent"
|
||||
style={{
|
||||
WebkitTextStroke: "1px #E2D7F8",
|
||||
backgroundImage: "linear-gradient(180deg, rgba(226, 215, 248, 0.44) 0%, rgba(226, 215, 248, 0.06) 90%)",
|
||||
backgroundImage:
|
||||
"linear-gradient(180deg, rgba(226, 215, 248, 0.44) 0%, rgba(226, 215, 248, 0.06) 90%)",
|
||||
backgroundClip: "text",
|
||||
WebkitBackgroundClip: "text",
|
||||
}}
|
||||
title="AI Solutions for our clients"
|
||||
titleClassName="font-[var(--font-manrope)] text-[16px] font-bold leading-[1.4] text-aiero-dark max-w-[120px]"
|
||||
titleClassName="font-[var(--font-manrope)] text-[16px] font-bold leading-[1.4] text-tenext-dark max-w-[120px]"
|
||||
layout="row-reverse"
|
||||
gap="30px"
|
||||
/>
|
||||
@@ -91,7 +100,6 @@ export function PossibilitiesSection() {
|
||||
theme="light"
|
||||
/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
|
||||
@@ -1,28 +1,29 @@
|
||||
import Image from "next/image";
|
||||
|
||||
export function TinkerSection() {
|
||||
return (
|
||||
<section className="relative px-[20px] py-[60px] md:py-[100px] overflow-hidden">
|
||||
<div className="mx-auto flex max-w-[1340px] flex-col gap-[50px] lg:flex-row lg:items-center lg:gap-0">
|
||||
|
||||
{/* Left Column - Images */}
|
||||
<div className="relative flex w-full flex-col lg:mt-[30px] lg:w-[22%]">
|
||||
|
||||
{/* Background Glow (elementor-absolute) */}
|
||||
<div className="absolute left-0 top-0 z-0 pointer-events-none min-[576px]:left-[-40vw] min-[576px]:top-[-19.252vw]">
|
||||
<img
|
||||
src="https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2025/02/Group-18433.svg"
|
||||
alt=""
|
||||
<Image
|
||||
src="/images/tenext/Group-18433.png"
|
||||
alt=""
|
||||
width={1283}
|
||||
height={1471}
|
||||
className="h-auto w-auto max-w-[100vw] object-contain opacity-80"
|
||||
aria-hidden="true"
|
||||
unoptimized
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
||||
{/* Main Vector Image */}
|
||||
<div className="relative z-10 min-[576px]:ml-[-26vw]">
|
||||
<img
|
||||
src="https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2025/01/Vector-13.png"
|
||||
alt="Neural Network Visualization"
|
||||
<Image
|
||||
src="/images/tenext/Vector-13.png"
|
||||
alt="Neural Network Visualization"
|
||||
width={670}
|
||||
height={694}
|
||||
className="w-full h-auto max-w-[800px] object-contain"
|
||||
@@ -33,8 +34,8 @@ export function TinkerSection() {
|
||||
{/* Right Column - Text & Partners */}
|
||||
<div className="relative z-10 flex w-full flex-col lg:w-[78%]">
|
||||
<div className="min-[576px]:mr-[-4%]">
|
||||
<h2
|
||||
className="mb-[60px] text-aiero-dark tracking-[-0.03em]"
|
||||
<h2
|
||||
className="mb-[60px] text-tenext-dark tracking-[-0.03em]"
|
||||
style={{
|
||||
fontFamily: "var(--font-dm-sans)",
|
||||
fontSize: "clamp(36px, 4.5vw, 58px)",
|
||||
@@ -42,30 +43,42 @@ export function TinkerSection() {
|
||||
lineHeight: 1.1,
|
||||
}}
|
||||
>
|
||||
Tinker with a <span className="gradient-text-purple">Neural Network right here</span> in your browser. Don’t worry, you can’t break it. We Promise.
|
||||
Tinker with a{" "}
|
||||
<span className="gradient-text-purple">
|
||||
Neural Network right here
|
||||
</span>{" "}
|
||||
in your browser. Don't worry, you can't break it. We Promise.
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
{/* Partners row */}
|
||||
<div className="flex flex-wrap items-center justify-start gap-x-[40px] gap-y-[30px]">
|
||||
<img
|
||||
src="https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2024/12/partners-1.png"
|
||||
alt="Partner 1"
|
||||
<Image
|
||||
src="/images/tenext/partners-1.png"
|
||||
alt="Partner 1"
|
||||
width={140}
|
||||
height={40}
|
||||
className="h-auto w-[140px] object-contain"
|
||||
/>
|
||||
<img
|
||||
src="https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2024/12/partners-2.png"
|
||||
alt="Partner 2"
|
||||
<Image
|
||||
src="/images/tenext/partners-2.png"
|
||||
alt="Partner 2"
|
||||
width={130}
|
||||
height={40}
|
||||
className="h-auto w-[130px] object-contain"
|
||||
/>
|
||||
<img
|
||||
src="https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2024/12/partners-3.png"
|
||||
alt="Partner 3"
|
||||
<Image
|
||||
src="/images/tenext/partners-3.png"
|
||||
alt="Partner 3"
|
||||
width={100}
|
||||
height={40}
|
||||
className="h-auto w-[100px] object-contain"
|
||||
/>
|
||||
<img
|
||||
src="https://8ded8880.delivery.rocketcdn.me/themes/aiero/wp-content/uploads/2024/12/partners-4.png"
|
||||
alt="Partner 4"
|
||||
<Image
|
||||
src="/images/tenext/partners-4.png"
|
||||
alt="Partner 4"
|
||||
width={140}
|
||||
height={40}
|
||||
className="h-auto w-[140px] object-contain"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -5,7 +5,7 @@ import { PageContainer } from "@/components/shared/PageContainer";
|
||||
export function WOWSection() {
|
||||
return (
|
||||
<section className="relative z-20 px-[20px]">
|
||||
<div className="relative z-20 mx-auto max-w-[1340px] overflow-hidden rounded-t-[20px] bg-aiero-dark pt-[30px] pb-[60px] md:pt-[40px] md:pb-[80px]">
|
||||
<div className="relative z-20 mx-auto max-w-[1340px] overflow-hidden rounded-t-[20px] bg-tenext-dark pt-[30px] pb-[60px] md:pt-[40px] md:pb-[80px]">
|
||||
<PageContainer>
|
||||
<div className="grid grid-cols-1 gap-[40px] lg:grid-cols-2 lg:gap-[60px]">
|
||||
<div className="flex flex-col justify-between">
|
||||
@@ -30,7 +30,7 @@ export function WOWSection() {
|
||||
</div>
|
||||
|
||||
<img
|
||||
src="/images/aiero/home-9-img.png"
|
||||
src="/images/tenext/home-9-img.png"
|
||||
alt="Aiiero"
|
||||
width={632}
|
||||
height={158}
|
||||
@@ -59,7 +59,7 @@ export function WOWSection() {
|
||||
<div className="mt-[40px] md:mt-[60px]">
|
||||
<Link
|
||||
href="/services"
|
||||
className="aiero-button aiero-button-gradient-border group rounded-full px-[35px] py-[15px] font-[var(--font-sora)] text-[15px] font-semibold tracking-wide text-white transition-all"
|
||||
className="tenext-button tenext-button-gradient-border group rounded-full px-[35px] py-[15px] font-[var(--font-sora)] text-[15px] font-semibold tracking-wide text-white transition-all"
|
||||
>
|
||||
<span className="button-inner" />
|
||||
Explore more
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
import { PageContainer } from "@/components/shared/PageContainer";
|
||||
import { SectionContainer } from "@/components/shared/SectionContainer";
|
||||
|
||||
@@ -9,7 +8,7 @@ export function AboutIntroSection() {
|
||||
{/* Left: Text Content */}
|
||||
<div className="flex flex-col items-start justify-center pt-5">
|
||||
<span
|
||||
className="aiero-subheading mb-4 text-aiero-teal"
|
||||
className="tenext-subheading mb-4 text-tenext-teal"
|
||||
style={{ fontFamily: "var(--font-sora)" }}
|
||||
>
|
||||
about
|
||||
@@ -23,28 +22,28 @@ export function AboutIntroSection() {
|
||||
lineHeight: 1.1,
|
||||
}}
|
||||
>
|
||||
Awesome things in working with Aiero WordPress theme
|
||||
Awesome things in working with tenext WordPress theme
|
||||
</h2>
|
||||
<p className="mb-8 text-base leading-relaxed text-aiero-text-muted">
|
||||
<p className="mb-8 text-base leading-relaxed text-tenext-text-muted">
|
||||
At XXLando, we are a leading AI services provider dedicated to
|
||||
delivering innovative solutions that leverage artificial
|
||||
intelligence to transform businesses.
|
||||
</p>
|
||||
<p className="text-base leading-relaxed text-aiero-text-muted">
|
||||
<p className="text-base leading-relaxed text-tenext-text-muted">
|
||||
Our team of experts specializes in developing cutting-edge AI
|
||||
technologies, such as machine learning, natural language
|
||||
processing, and computer vision, to help our clients streamline
|
||||
operations, enhance decision-making.
|
||||
technologies, such as machine learning, natural language processing,
|
||||
and computer vision, to help our clients streamline operations,
|
||||
enhance decision-making.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Right: Images */}
|
||||
<div className="relative">
|
||||
<div className="relative aspect-[4/5] w-full overflow-hidden rounded-[25px] bg-aiero-card-dark">
|
||||
<div className="relative aspect-[4/5] w-full overflow-hidden rounded-[25px] bg-tenext-card-dark">
|
||||
<div
|
||||
className="absolute inset-0 bg-cover bg-center"
|
||||
style={{
|
||||
backgroundImage: "url(/images/aiero/home-9-img.png)",
|
||||
backgroundImage: "url(/images/tenext/home-9-img.png)",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
import { PageContainer } from "@/components/shared/PageContainer";
|
||||
import { SectionContainer } from "@/components/shared/SectionContainer";
|
||||
import { Counter } from "@/components/shared/Counter";
|
||||
@@ -9,19 +8,19 @@ export function MissionSection() {
|
||||
<PageContainer className="grid grid-cols-1 gap-12 lg:grid-cols-[1fr_1.2fr] lg:gap-[60px] xl:gap-[100px]">
|
||||
{/* Left: Images */}
|
||||
<div className="relative aspect-square w-full md:aspect-[4/3] lg:aspect-square">
|
||||
<div className="absolute bottom-0 left-0 h-[85%] w-[85%] overflow-hidden rounded-[25px] bg-aiero-card-dark">
|
||||
<div className="absolute bottom-0 left-0 h-[85%] w-[85%] overflow-hidden rounded-[25px] bg-tenext-card-dark">
|
||||
<div
|
||||
className="absolute inset-0 bg-cover bg-center"
|
||||
style={{
|
||||
backgroundImage: "url(/images/aiero/home-9-img.png)",
|
||||
backgroundImage: "url(/images/tenext/home-9-img.png)",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<div className="absolute right-0 top-0 h-[50%] w-[50%] overflow-hidden rounded-[25px] border-[8px] border-aiero-dark bg-aiero-card-purple">
|
||||
<div className="absolute right-0 top-0 h-[50%] w-[50%] overflow-hidden rounded-[25px] border-[8px] border-tenext-dark bg-tenext-card-purple">
|
||||
<div
|
||||
className="absolute inset-0 bg-cover bg-center"
|
||||
style={{
|
||||
backgroundImage: "url(/images/aiero/home-9-img.png)",
|
||||
backgroundImage: "url(/images/tenext/home-9-img.png)",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
@@ -30,7 +29,7 @@ export function MissionSection() {
|
||||
{/* Right: Text and Stats */}
|
||||
<div className="flex flex-col items-start justify-center pt-5">
|
||||
<span
|
||||
className="aiero-subheading mb-4 text-aiero-teal"
|
||||
className="tenext-subheading mb-4 text-tenext-teal"
|
||||
style={{ fontFamily: "var(--font-sora)" }}
|
||||
>
|
||||
Mission
|
||||
@@ -46,19 +45,19 @@ export function MissionSection() {
|
||||
>
|
||||
we create a professional product using artificial intelligence
|
||||
</h2>
|
||||
<p className="mb-10 text-base leading-relaxed text-aiero-text-muted">
|
||||
<p className="mb-10 text-base leading-relaxed text-tenext-text-muted">
|
||||
Certainly, crafting a clear and inspiring mission statement is
|
||||
essential for a development company. It should reflect your
|
||||
company's values, purpose, and commitment to innovation.
|
||||
</p>
|
||||
|
||||
<div className="w-full rounded-[25px] border border-aiero-card-border bg-aiero-card-dark p-8 md:p-10">
|
||||
<div className="w-full rounded-[25px] border border-tenext-card-border bg-tenext-card-dark p-8 md:p-10">
|
||||
<Counter
|
||||
target={1250}
|
||||
suffix="+"
|
||||
numberClassName="text-[60px] md:text-[80px] font-bold leading-none font-[var(--font-manrope)] gradient-text-purple"
|
||||
title="Created projects"
|
||||
titleClassName="font-[var(--font-sora)] text-[11px] font-semibold tracking-[0.18em] uppercase text-aiero-text-muted mt-2"
|
||||
titleClassName="font-[var(--font-sora)] text-[11px] font-semibold tracking-[0.18em] uppercase text-tenext-text-muted mt-2"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,27 +3,34 @@
|
||||
import { PageContainer } from "@/components/shared/PageContainer";
|
||||
import { SectionContainer } from "@/components/shared/SectionContainer";
|
||||
import { SectionHeading } from "@/components/shared/SectionHeading";
|
||||
import { tenextButton as TenextButton } from "@/components/shared/AieroButton";
|
||||
import { Counter } from "@/components/shared/Counter";
|
||||
|
||||
const teamMembers = [
|
||||
{
|
||||
name: "Dan Smith",
|
||||
role: "Manager",
|
||||
image: "/images/aiero/portrait-confident-man.jpg",
|
||||
},
|
||||
{
|
||||
name: "Alan Begham",
|
||||
role: "CEO",
|
||||
image: "/images/aiero/waist-up-shot-handsome-calm.jpg",
|
||||
},
|
||||
{
|
||||
name: "Brandon Adams",
|
||||
role: "HR",
|
||||
image: "/images/aiero/confident-ginger-man-with-trendy.jpg",
|
||||
image: "/images/tenext/waist-up-shot-handsome-calm.jpg",
|
||||
},
|
||||
{
|
||||
name: "Arthur Dowson",
|
||||
role: "AI Programmer",
|
||||
image: "/images/aiero/funny-curious-man-makes.jpg",
|
||||
image: "/images/tenext/funny-curious-man-makes.jpg",
|
||||
},
|
||||
{
|
||||
name: "Dan Smith",
|
||||
role: "Manager",
|
||||
image: "/images/tenext/portrait-confident-man.jpg",
|
||||
},
|
||||
{
|
||||
name: "Brandon Adams",
|
||||
role: "HR",
|
||||
image: "/images/tenext/confident-ginger-man-with-trendy.jpg",
|
||||
},
|
||||
{
|
||||
name: "Alan Begham",
|
||||
role: "CEO Neuro",
|
||||
image: "/images/tenext/waist-up-shot-handsome-calm.jpg",
|
||||
},
|
||||
];
|
||||
|
||||
@@ -31,24 +38,42 @@ export function TeamSection() {
|
||||
return (
|
||||
<SectionContainer paddingY="lg">
|
||||
<PageContainer>
|
||||
<div className="mb-12 flex flex-col items-center justify-between gap-6 md:flex-row md:items-end">
|
||||
<SectionHeading
|
||||
tag="team"
|
||||
title="The Neural Network experts: uniting talent for intelligent solutions"
|
||||
titleClassName="text-white max-w-[600px]"
|
||||
/>
|
||||
<div className="flex flex-col items-start gap-4 md:items-end">
|
||||
<p className="max-w-[200px] text-[16px] text-aiero-text-muted md:text-right">
|
||||
Awesome team members + 0 Explore more
|
||||
</p>
|
||||
<div className="columns-1 gap-6 sm:columns-2 lg:columns-4">
|
||||
<div className="mb-6 flex break-inside-avoid flex-col">
|
||||
<SectionHeading
|
||||
tag="team"
|
||||
title="The Neural Network experts: uniting talent for intelligent solutions"
|
||||
titleClassName="text-tenext-dark"
|
||||
/>
|
||||
<div className="mt-[40px]">
|
||||
<Counter
|
||||
target={500}
|
||||
prefix="+"
|
||||
numberClassName="text-[60px] font-extrabold leading-none font-[var(--font-manrope)] text-transparent"
|
||||
style={{
|
||||
WebkitTextStroke: "1px #E2D7F8",
|
||||
backgroundImage:
|
||||
"linear-gradient(180deg, rgba(226, 215, 248, 0.44) 0%, rgba(226, 215, 248, 0.06) 90%)",
|
||||
backgroundClip: "text",
|
||||
WebkitBackgroundClip: "text",
|
||||
}}
|
||||
title="Awesome team members"
|
||||
titleClassName="mt-[15px] text-[16px] font-bold text-tenext-dark"
|
||||
/>
|
||||
</div>
|
||||
<TenextButton
|
||||
variant="simple"
|
||||
className="mt-[25px] text-[15px] font-medium text-tenext-dark"
|
||||
showArrow={true}
|
||||
>
|
||||
Explore more
|
||||
</TenextButton>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-4">
|
||||
{teamMembers.map((member, i) => (
|
||||
<div
|
||||
key={i}
|
||||
className="group relative overflow-hidden rounded-[25px] bg-aiero-card-dark"
|
||||
className="group relative mb-6 break-inside-avoid overflow-hidden rounded-[25px] bg-tenext-card-dark"
|
||||
>
|
||||
<div className="relative aspect-[3/4] w-full">
|
||||
<img
|
||||
@@ -57,7 +82,7 @@ export function TeamSection() {
|
||||
className="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"
|
||||
onError={(e) => {
|
||||
(e.target as HTMLImageElement).src =
|
||||
"/images/aiero/home-9-img.png"; // Fallback image
|
||||
"/images/tenext/home-9-img.png";
|
||||
}}
|
||||
/>
|
||||
<div className="absolute inset-0 bg-gradient-to-t from-black/80 via-transparent to-transparent opacity-80" />
|
||||
@@ -69,7 +94,9 @@ export function TeamSection() {
|
||||
>
|
||||
{member.name}
|
||||
</h4>
|
||||
<p className="text-[14px] text-aiero-teal">{member.role}</p>
|
||||
<p className="text-[14px] text-tenext-teal">
|
||||
/ {member.role} /
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
|
||||
@@ -7,21 +7,36 @@ export function PricingSection() {
|
||||
{
|
||||
name: "Basic",
|
||||
target: "Great for private individuals",
|
||||
features: ["1 User", "Unlimited Projects", "Download prototypes", "1 Gb workspace"],
|
||||
features: [
|
||||
"1 User",
|
||||
"Unlimited Projects",
|
||||
"Download prototypes",
|
||||
"1 Gb workspace",
|
||||
],
|
||||
price: "Free",
|
||||
isPopular: false,
|
||||
},
|
||||
{
|
||||
name: "Premium",
|
||||
target: "14 days free period",
|
||||
features: ["15 Users", "Unlimited Projects", "Download prototypes", "15 Gb workspace"],
|
||||
features: [
|
||||
"15 Users",
|
||||
"Unlimited Projects",
|
||||
"Download prototypes",
|
||||
"15 Gb workspace",
|
||||
],
|
||||
price: "$ 59 /mo",
|
||||
isPopular: true,
|
||||
},
|
||||
{
|
||||
name: "Unlimited",
|
||||
target: "Great for private individuals",
|
||||
features: ["100 Users", "Unlimited Projects", "Download prototypes", "100 Gb workspace"],
|
||||
features: [
|
||||
"100 Users",
|
||||
"Unlimited Projects",
|
||||
"Download prototypes",
|
||||
"100 Gb workspace",
|
||||
],
|
||||
price: "$ 199 /mo",
|
||||
isPopular: false,
|
||||
},
|
||||
@@ -43,24 +58,46 @@ export function PricingSection() {
|
||||
<div
|
||||
key={i}
|
||||
className={`relative flex flex-col overflow-hidden rounded-[25px] border ${
|
||||
plan.isPopular ? "border-aiero-teal bg-aiero-card-dark" : "border-aiero-card-border bg-aiero-dark"
|
||||
plan.isPopular
|
||||
? "border-tenext-teal bg-tenext-card-dark"
|
||||
: "border-tenext-card-border bg-tenext-dark"
|
||||
} p-10`}
|
||||
>
|
||||
{plan.isPopular && (
|
||||
<div className="absolute right-6 top-6 rounded-full bg-aiero-teal px-4 py-1 text-[12px] font-bold uppercase text-aiero-dark" style={{ fontFamily: "var(--font-sora)" }}>
|
||||
<div
|
||||
className="absolute right-6 top-6 rounded-full bg-tenext-teal px-4 py-1 text-[12px] font-bold uppercase text-tenext-dark"
|
||||
style={{ fontFamily: "var(--font-sora)" }}
|
||||
>
|
||||
Popular
|
||||
</div>
|
||||
)}
|
||||
<h3 className="mb-2 text-[24px] font-bold text-white" style={{ fontFamily: "var(--font-dm-sans)" }}>
|
||||
<h3
|
||||
className="mb-2 text-[24px] font-bold text-white"
|
||||
style={{ fontFamily: "var(--font-dm-sans)" }}
|
||||
>
|
||||
{plan.name}
|
||||
</h3>
|
||||
<p className="mb-8 text-[14px] text-aiero-text-muted">{plan.target}</p>
|
||||
<p className="mb-8 text-[14px] text-tenext-text-muted">
|
||||
{plan.target}
|
||||
</p>
|
||||
|
||||
<ul className="mb-10 flex flex-col gap-4">
|
||||
{plan.features.map((feat, j) => (
|
||||
<li key={j} className="flex items-center gap-3 text-white">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" className="text-aiero-teal">
|
||||
<path d="M20 6L9 17l-5-5" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
|
||||
<svg
|
||||
width="18"
|
||||
height="18"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
className="text-tenext-teal"
|
||||
>
|
||||
<path
|
||||
d="M20 6L9 17l-5-5"
|
||||
stroke="currentColor"
|
||||
strokeWidth="2"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
{feat}
|
||||
</li>
|
||||
@@ -68,15 +105,18 @@ export function PricingSection() {
|
||||
</ul>
|
||||
|
||||
<div className="mt-auto">
|
||||
<div className="mb-6 text-[36px] font-bold text-white" style={{ fontFamily: "var(--font-dm-sans)" }}>
|
||||
<div
|
||||
className="mb-6 text-[36px] font-bold text-white"
|
||||
style={{ fontFamily: "var(--font-dm-sans)" }}
|
||||
>
|
||||
{plan.price}
|
||||
</div>
|
||||
<a
|
||||
href="#"
|
||||
className={`flex w-full items-center justify-center rounded-[12px] py-4 text-[16px] font-bold transition-all ${
|
||||
plan.isPopular
|
||||
? "bg-aiero-teal text-aiero-dark hover:bg-white"
|
||||
: "border border-aiero-card-border text-white hover:border-aiero-teal hover:text-aiero-teal"
|
||||
? "bg-tenext-teal text-tenext-dark hover:bg-white"
|
||||
: "border border-tenext-card-border text-white hover:border-tenext-teal hover:text-tenext-teal"
|
||||
}`}
|
||||
style={{ fontFamily: "var(--font-sora)" }}
|
||||
>
|
||||
|
||||
@@ -27,11 +27,11 @@ export function ServiceCardsGrid() {
|
||||
{services.map((svc, i) => (
|
||||
<div
|
||||
key={i}
|
||||
className="group relative flex h-full min-h-[340px] flex-col justify-between overflow-hidden rounded-[25px] border border-aiero-card-border bg-aiero-card-dark p-10 transition-all hover:bg-aiero-card-purple"
|
||||
className="group relative flex h-full min-h-[340px] flex-col justify-between overflow-hidden rounded-[25px] border border-tenext-card-border bg-tenext-card-dark p-10 transition-all hover:bg-tenext-card-purple"
|
||||
>
|
||||
<div className="mb-6 h-[60px] w-[60px] rounded-full bg-aiero-card-purple2 p-4">
|
||||
<div className="mb-6 h-[60px] w-[60px] rounded-full bg-tenext-card-purple2 p-4">
|
||||
<img
|
||||
src="/images/aiero/3x.png"
|
||||
src="/images/tenext/3x.png"
|
||||
alt="Icon"
|
||||
className="h-full w-full object-contain"
|
||||
onError={(e) => {
|
||||
@@ -43,15 +43,15 @@ export function ServiceCardsGrid() {
|
||||
|
||||
<div>
|
||||
<h4
|
||||
className="mb-4 text-[22px] font-bold text-white transition-colors group-hover:text-aiero-teal"
|
||||
className="mb-4 text-[22px] font-bold text-white transition-colors group-hover:text-tenext-teal"
|
||||
style={{ fontFamily: "var(--font-dm-sans)" }}
|
||||
>
|
||||
{svc.title}
|
||||
</h4>
|
||||
<p className="text-[16px] text-aiero-text-muted">{svc.desc}</p>
|
||||
<p className="text-[16px] text-tenext-text-muted">{svc.desc}</p>
|
||||
</div>
|
||||
|
||||
<div className="absolute bottom-0 right-0 flex h-[60px] w-[60px] items-center justify-center rounded-tl-[25px] bg-white text-aiero-dark transition-all duration-300 group-hover:bg-aiero-teal group-hover:text-white">
|
||||
<div className="absolute bottom-0 right-0 flex h-[60px] w-[60px] items-center justify-center rounded-tl-[25px] bg-white text-tenext-dark transition-all duration-300 group-hover:bg-tenext-teal group-hover:text-white">
|
||||
<ArrowIcon className="h-4 w-4" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -32,9 +32,21 @@ export function ServiceFeaturesSection() {
|
||||
];
|
||||
|
||||
const DefaultIcon = () => (
|
||||
<div className="flex h-full w-full items-center justify-center rounded-[18px] bg-aiero-card-purple">
|
||||
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" className="text-white">
|
||||
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
|
||||
<div className="flex h-full w-full items-center justify-center rounded-[18px] bg-tenext-card-purple">
|
||||
<svg
|
||||
width="32"
|
||||
height="32"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
className="text-white"
|
||||
>
|
||||
<path
|
||||
d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"
|
||||
stroke="currentColor"
|
||||
strokeWidth="2"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -4,65 +4,84 @@ import { PageContainer } from "@/components/shared/PageContainer";
|
||||
import { SectionContainer } from "@/components/shared/SectionContainer";
|
||||
import { SectionHeading } from "@/components/shared/SectionHeading";
|
||||
|
||||
export function TestimonialsSection() {
|
||||
const testimonials = [
|
||||
{
|
||||
text: "Working with Aiero has been a game-changer for our business. Their AI solutions have revolutionized our operations, enabling us to automate repetitive tasks and make data-driven decisions. The level of efficiency we've achieved is unprecedented.",
|
||||
author: "David Smith",
|
||||
role: "CEO Company",
|
||||
},
|
||||
{
|
||||
text: "Aiero has been a game-changer for our business. Their AI solutions have revolutionized our operations, enabling us to automate repetitive tasks and make data-driven decisions. The level of efficiency we've achieved is unprecedented.",
|
||||
author: "Mark Dowson",
|
||||
role: "Manager",
|
||||
},
|
||||
];
|
||||
const testimonials = [
|
||||
{
|
||||
author: "Daniel Cross",
|
||||
text: "Working with tenext has been a game-changer for our business. Their AI solutions automated our repetitive tasks and let us make data-driven decisions fast.",
|
||||
},
|
||||
{
|
||||
author: "Marta Wolfe",
|
||||
text: "The onboarding was smooth and the support team responded within a day for every request we had. Genuinely impressed with the attention to detail.",
|
||||
},
|
||||
{
|
||||
author: "Rajiv Patel",
|
||||
text: "tenext's dashboard gave us actionable insights we didn't have before. Setup was fast and the documentation made customization painless.",
|
||||
},
|
||||
{
|
||||
author: "Daniel Cross",
|
||||
text: "Working with tenext has been a game-changer for our business. Their AI solutions automated our repetitive tasks and let us make data-driven decisions fast.",
|
||||
},
|
||||
{
|
||||
author: "Elena Novak",
|
||||
text: "Excellent customer support from the whole team. All of our integration questions were resolved within a day.",
|
||||
},
|
||||
{
|
||||
author: "Sam Okafor",
|
||||
text: "A perfect solution in every respect. The team is especially strong on support — we recommend it without hesitation.",
|
||||
},
|
||||
{
|
||||
author: "Priya Chandran",
|
||||
text: "Fast, reliable support and an API that's genuinely easy to customize. Great work all around.",
|
||||
},
|
||||
{
|
||||
author: "Marta Wolfe",
|
||||
text: "The onboarding was smooth and the support team responded within a day for every request we had. Genuinely impressed with the attention to detail.",
|
||||
},
|
||||
{
|
||||
author: "Tom Bennett",
|
||||
text: "Great platform and even better support. The team always found a solution even when the request was out of scope.",
|
||||
},
|
||||
{
|
||||
author: "Lucia Fernandez",
|
||||
text: "High quality documentation and a codebase that's genuinely easy to extend. Our developers picked it up in a day.",
|
||||
},
|
||||
{
|
||||
author: "Rajiv Patel",
|
||||
text: "tenext's dashboard gave us actionable insights we didn't have before. Setup was fast and the documentation made customization painless.",
|
||||
},
|
||||
{
|
||||
author: "Owen Marsh",
|
||||
text: "We evaluated several AI vendors and tenext stood out for speed of support and clarity of their onboarding process.",
|
||||
},
|
||||
];
|
||||
|
||||
export function TestimonialsSection() {
|
||||
return (
|
||||
<SectionContainer paddingY="lg" className="bg-aiero-card-dark">
|
||||
<SectionContainer paddingY="lg" className="bg-tenext-surface-muted">
|
||||
<PageContainer>
|
||||
<div className="mb-16">
|
||||
<div className="mb-12 max-w-[650px]">
|
||||
<SectionHeading
|
||||
tag="testimonials"
|
||||
title="Discover what our clients have to say about our AI solutions"
|
||||
titleClassName="text-white max-w-[650px]"
|
||||
title="User stories: hear what others love about our AI solutions"
|
||||
titleClassName="text-tenext-dark"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
||||
<div className="columns-1 gap-6 sm:columns-2 lg:columns-4">
|
||||
{testimonials.map((t, i) => (
|
||||
<div
|
||||
key={i}
|
||||
className="flex flex-col justify-between rounded-[25px] border border-aiero-card-border bg-[#1A1A1A] p-10 lg:p-12"
|
||||
className="mb-6 break-inside-avoid rounded-[20px] bg-white p-8"
|
||||
>
|
||||
<div className="mb-8">
|
||||
<div className="mb-6 flex gap-1 text-aiero-teal">
|
||||
{[...Array(5)].map((_, index) => (
|
||||
<svg key={index} width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"/>
|
||||
</svg>
|
||||
))}
|
||||
</div>
|
||||
<p className="text-[18px] leading-[1.8] text-white">"{t.text}"</p>
|
||||
</div>
|
||||
<div className="flex items-center gap-4">
|
||||
<div className="h-[60px] w-[60px] overflow-hidden rounded-full bg-aiero-dark">
|
||||
<img
|
||||
src={`/images/aiero/client-${i + 1}.jpg`}
|
||||
alt={t.author}
|
||||
className="h-full w-full object-cover"
|
||||
onError={(e) => {
|
||||
(e.target as HTMLImageElement).src = "/images/aiero/home-9-img.png";
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<h5 className="text-[18px] font-bold text-white" style={{ fontFamily: "var(--font-dm-sans)" }}>
|
||||
{t.author}
|
||||
</h5>
|
||||
<p className="text-[14px] text-aiero-teal">{t.role}</p>
|
||||
</div>
|
||||
</div>
|
||||
<h5
|
||||
className="mb-4 text-[18px] font-bold text-tenext-dark"
|
||||
style={{ fontFamily: "var(--font-dm-sans)" }}
|
||||
>
|
||||
{t.author}
|
||||
</h5>
|
||||
<p className="text-[15px] leading-[1.7] text-tenext-text-muted">
|
||||
{t.text}
|
||||
</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
import { ArrowIcon } from "@/components/shared/icons/ArrowIcon";
|
||||
|
||||
type ButtonVariant = "solid" | "outline" | "gradient-border" | "gradient-fill" | "simple";
|
||||
type ButtonVariant =
|
||||
| "solid"
|
||||
| "outline"
|
||||
| "gradient-border"
|
||||
| "gradient-fill"
|
||||
| "simple";
|
||||
|
||||
interface AieroButtonProps {
|
||||
interface tenextButtonProps {
|
||||
href?: string;
|
||||
variant?: ButtonVariant;
|
||||
children: React.ReactNode;
|
||||
@@ -12,7 +17,7 @@ interface AieroButtonProps {
|
||||
onClick?: () => void;
|
||||
}
|
||||
|
||||
export function AieroButton({
|
||||
export function tenextButton({
|
||||
href = "#",
|
||||
variant = "solid",
|
||||
children,
|
||||
@@ -20,14 +25,14 @@ export function AieroButton({
|
||||
showArrow = true,
|
||||
target,
|
||||
onClick,
|
||||
}: AieroButtonProps) {
|
||||
const baseClasses = "aiero-button";
|
||||
}: tenextButtonProps) {
|
||||
const baseClasses = "tenext-button";
|
||||
|
||||
const variantClasses: Record<ButtonVariant, string> = {
|
||||
solid: "aiero-button-solid",
|
||||
outline: "aiero-button-solid",
|
||||
"gradient-border": "aiero-button-gradient-border",
|
||||
"gradient-fill": "aiero-button-gradient-fill",
|
||||
solid: "tenext-button-solid",
|
||||
outline: "tenext-button-solid",
|
||||
"gradient-border": "tenext-button-gradient-border",
|
||||
"gradient-fill": "tenext-button-gradient-fill",
|
||||
simple: "",
|
||||
};
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
background-color: #FFFFFF;
|
||||
background-color: #ffffff;
|
||||
border-top-left-radius: 30px;
|
||||
border-bottom-right-radius: 25px;
|
||||
padding: 10px 10px 0 10px;
|
||||
@@ -46,6 +46,6 @@
|
||||
}
|
||||
|
||||
.iconSlideAslant:hover .iconSlideAslantInner,
|
||||
:global(.aiero-card:hover) .iconSlideAslantInner {
|
||||
:global(.tenext-card:hover) .iconSlideAslantInner {
|
||||
transform: translate3d(12px, -12px, 0);
|
||||
}
|
||||
|
||||
@@ -19,9 +19,7 @@ export function CardHeading({
|
||||
return (
|
||||
<div className={`mb-5 ${wrapperClassName}`}>
|
||||
{subtitle && (
|
||||
<div
|
||||
className={`aiero-subheading font-sora ${subtitleClassName}`}
|
||||
>
|
||||
<div className={`tenext-subheading font-sora ${subtitleClassName}`}>
|
||||
{subtitle}
|
||||
</div>
|
||||
)}
|
||||
@@ -39,7 +37,7 @@ export function IconButton({ className = "" }: { className?: string }) {
|
||||
<div className={`${styles.iconWrapper} ${className}`}>
|
||||
<a
|
||||
href="#"
|
||||
className={`${styles.iconSlideAslant} flex h-[52px] w-[52px] items-center justify-center rounded-[15px] bg-aiero-card-dark text-white transition-all duration-300 hover:bg-aiero-teal hover:text-aiero-dark`}
|
||||
className={`${styles.iconSlideAslant} flex h-[52px] w-[52px] items-center justify-center rounded-[15px] bg-tenext-card-dark text-white transition-all duration-300 hover:bg-tenext-teal hover:text-tenext-dark`}
|
||||
aria-label="Open details"
|
||||
>
|
||||
<span className={styles.iconSlideAslantInner} aria-hidden="true">
|
||||
|
||||
@@ -30,14 +30,14 @@ export function ContactFormSection() {
|
||||
}
|
||||
|
||||
function handleChange(
|
||||
e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>
|
||||
e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,
|
||||
) {
|
||||
setFormState((prev) => ({ ...prev, [e.target.name]: e.target.value }));
|
||||
}
|
||||
|
||||
return (
|
||||
<SectionContainer paddingY="lg" className="bg-aiero-dark px-5">
|
||||
<div className="overflow-hidden rounded-[25px] bg-aiero-card-dark">
|
||||
<SectionContainer paddingY="lg" className="bg-tenext-dark px-5">
|
||||
<div className="overflow-hidden rounded-[25px] bg-tenext-card-dark">
|
||||
<PageContainer className="grid grid-cols-1 gap-12 py-16 md:py-20 lg:grid-cols-2 lg:gap-16 lg:py-24">
|
||||
{/* ── Left: Info column ── */}
|
||||
<div className="flex flex-col">
|
||||
@@ -58,13 +58,13 @@ export function ContactFormSection() {
|
||||
<div className="flex flex-col gap-1">
|
||||
<a
|
||||
href={`tel:${siteConfig.phoneRaw}`}
|
||||
className="text-[15px] text-aiero-text-muted transition-colors hover:text-aiero-teal"
|
||||
className="text-[15px] text-tenext-text-muted transition-colors hover:text-tenext-teal"
|
||||
>
|
||||
{siteConfig.phone}
|
||||
</a>
|
||||
<a
|
||||
href="tel:+11800234567"
|
||||
className="text-[15px] text-aiero-text-muted transition-colors hover:text-aiero-teal"
|
||||
className="text-[15px] text-tenext-text-muted transition-colors hover:text-tenext-teal"
|
||||
>
|
||||
+ (123) 1800-234-5678
|
||||
</a>
|
||||
@@ -76,7 +76,7 @@ export function ContactFormSection() {
|
||||
<h6 className="mb-3 font-sora text-sm font-semibold text-white">
|
||||
Our Location
|
||||
</h6>
|
||||
<p className="text-[15px] leading-relaxed text-aiero-text-muted">
|
||||
<p className="text-[15px] leading-relaxed text-tenext-text-muted">
|
||||
{siteConfig.address.line1}
|
||||
<br />
|
||||
{siteConfig.address.line2}
|
||||
@@ -90,7 +90,7 @@ export function ContactFormSection() {
|
||||
</h6>
|
||||
<a
|
||||
href={`mailto:${siteConfig.email}`}
|
||||
className="text-[15px] text-aiero-text-muted underline transition-colors hover:text-aiero-teal"
|
||||
className="text-[15px] text-tenext-text-muted underline transition-colors hover:text-tenext-teal"
|
||||
>
|
||||
{siteConfig.email}
|
||||
</a>
|
||||
@@ -109,7 +109,7 @@ export function ContactFormSection() {
|
||||
{/* ── Right: Form column ── */}
|
||||
<div className="rounded-[25px] bg-white p-8 md:p-10">
|
||||
<h4
|
||||
className="mb-8 text-aiero-dark"
|
||||
className="mb-8 text-tenext-dark"
|
||||
style={{
|
||||
fontFamily: "var(--font-sora)",
|
||||
fontSize: "28px",
|
||||
@@ -127,7 +127,7 @@ export function ContactFormSection() {
|
||||
placeholder="Full name"
|
||||
value={formState.fullName}
|
||||
onChange={handleChange}
|
||||
className="rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-aiero-dark outline-none transition-colors focus:border-aiero-teal"
|
||||
className="rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-tenext-dark outline-none transition-colors focus:border-tenext-teal"
|
||||
/>
|
||||
<input
|
||||
type="email"
|
||||
@@ -136,7 +136,7 @@ export function ContactFormSection() {
|
||||
required
|
||||
value={formState.email}
|
||||
onChange={handleChange}
|
||||
className="rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-aiero-dark outline-none transition-colors focus:border-aiero-teal"
|
||||
className="rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-tenext-dark outline-none transition-colors focus:border-tenext-teal"
|
||||
/>
|
||||
<input
|
||||
type="text"
|
||||
@@ -144,7 +144,7 @@ export function ContactFormSection() {
|
||||
placeholder="Subject"
|
||||
value={formState.subject}
|
||||
onChange={handleChange}
|
||||
className="rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-aiero-dark outline-none transition-colors focus:border-aiero-teal"
|
||||
className="rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-tenext-dark outline-none transition-colors focus:border-tenext-teal"
|
||||
/>
|
||||
<textarea
|
||||
name="message"
|
||||
@@ -152,11 +152,11 @@ export function ContactFormSection() {
|
||||
rows={4}
|
||||
value={formState.message}
|
||||
onChange={handleChange}
|
||||
className="resize-none rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-aiero-dark outline-none transition-colors focus:border-aiero-teal"
|
||||
className="resize-none rounded-xl border border-gray-200 bg-gray-50 px-5 py-3.5 text-[15px] text-tenext-dark outline-none transition-colors focus:border-tenext-teal"
|
||||
/>
|
||||
<button
|
||||
type="submit"
|
||||
className="aiero-button aiero-button-gradient-border mt-2 self-start rounded-full px-8 py-4 font-sora text-base font-semibold text-aiero-dark"
|
||||
className="tenext-button tenext-button-gradient-border mt-2 self-start rounded-full px-8 py-4 font-sora text-base font-semibold text-tenext-dark"
|
||||
>
|
||||
Send message
|
||||
<ArrowIcon className="h-3 w-3" />
|
||||
|
||||
@@ -17,7 +17,7 @@ import { PageContainer } from "@/components/shared/PageContainer";
|
||||
*/
|
||||
export function Footer() {
|
||||
return (
|
||||
<footer className="bg-aiero-dark px-5 pb-10 pt-16 md:pt-20">
|
||||
<footer className="bg-tenext-dark px-5 pb-10 pt-16 md:pt-20">
|
||||
<PageContainer>
|
||||
{/* ── Top row: Logo + link columns ── */}
|
||||
<div className="grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-[1.5fr_1fr_1fr]">
|
||||
@@ -25,7 +25,7 @@ export function Footer() {
|
||||
<div className="flex flex-col items-start gap-8">
|
||||
<Link href="/" aria-label="Home">
|
||||
<Image
|
||||
src="/images/aiero/logo-dark.png"
|
||||
src="/images/tenext/logo-dark.png"
|
||||
alt={siteConfig.name}
|
||||
width={146}
|
||||
height={26}
|
||||
@@ -57,7 +57,7 @@ export function Footer() {
|
||||
<li key={link.label}>
|
||||
<a
|
||||
href={link.href}
|
||||
className="text-[15px] text-aiero-text-muted transition-colors duration-300 hover:text-aiero-teal"
|
||||
className="text-[15px] text-tenext-text-muted transition-colors duration-300 hover:text-tenext-teal"
|
||||
>
|
||||
{link.label}
|
||||
</a>
|
||||
@@ -76,7 +76,7 @@ export function Footer() {
|
||||
<li key={link.label}>
|
||||
<a
|
||||
href={link.href}
|
||||
className="text-[15px] text-aiero-text-muted transition-colors duration-300 hover:text-aiero-teal"
|
||||
className="text-[15px] text-tenext-text-muted transition-colors duration-300 hover:text-tenext-teal"
|
||||
>
|
||||
{link.label}
|
||||
</a>
|
||||
@@ -87,8 +87,8 @@ export function Footer() {
|
||||
</div>
|
||||
|
||||
{/* ── Bottom bar ── */}
|
||||
<div className="mt-14 flex flex-col items-center justify-between gap-4 border-t border-aiero-card-border pt-8 md:flex-row">
|
||||
<p className="text-sm text-aiero-text-muted">
|
||||
<div className="mt-14 flex flex-col items-center justify-between gap-4 border-t border-tenext-card-border pt-8 md:flex-row">
|
||||
<p className="text-sm text-tenext-text-muted">
|
||||
{siteConfig.copyright}
|
||||
</p>
|
||||
<div className="flex gap-6">
|
||||
@@ -96,7 +96,7 @@ export function Footer() {
|
||||
<a
|
||||
key={link.label}
|
||||
href={link.href}
|
||||
className="text-sm text-aiero-text-muted transition-colors duration-300 hover:text-aiero-teal"
|
||||
className="text-sm text-tenext-text-muted transition-colors duration-300 hover:text-tenext-teal"
|
||||
>
|
||||
{link.label}
|
||||
</a>
|
||||
|
||||
@@ -8,31 +8,35 @@ interface IconBoxProps {
|
||||
theme?: "dark" | "light";
|
||||
}
|
||||
|
||||
export function IconBox({ icon, title, description, hasBorder = true, theme = "dark" }: IconBoxProps) {
|
||||
export function IconBox({
|
||||
icon,
|
||||
title,
|
||||
description,
|
||||
hasBorder = true,
|
||||
theme = "dark",
|
||||
}: IconBoxProps) {
|
||||
const isLight = theme === "light";
|
||||
|
||||
|
||||
return (
|
||||
<div className="aiero-icon-box-widget w-full">
|
||||
<div className="tenext-icon-box-widget w-full">
|
||||
<div className="icon-box-item flex flex-col items-start gap-[20px] sm:flex-row sm:gap-[40px]">
|
||||
{icon && (
|
||||
<div className="icon-container background-type-none flex h-[88px] w-[88px] shrink-0 items-center justify-center">
|
||||
<span className="icon block h-full w-full">
|
||||
{icon}
|
||||
</span>
|
||||
<span className="icon block h-full w-full">{icon}</span>
|
||||
</div>
|
||||
)}
|
||||
|
||||
|
||||
<div
|
||||
className={`content-container flex-1 pb-[30px] pt-[5px] ${
|
||||
hasBorder
|
||||
? isLight
|
||||
? "border-b border-gray-200"
|
||||
: "border-b border-aiero-card-border"
|
||||
hasBorder
|
||||
? isLight
|
||||
? "border-b border-gray-200"
|
||||
: "border-b border-tenext-card-border"
|
||||
: ""
|
||||
}`}
|
||||
>
|
||||
<h5
|
||||
className={`icon-box-title mb-[15px] ${isLight ? "text-aiero-dark" : "text-white"}`}
|
||||
className={`icon-box-title mb-[15px] ${isLight ? "text-tenext-dark" : "text-white"}`}
|
||||
style={{
|
||||
fontFamily: "var(--font-manrope)",
|
||||
fontSize: "25px",
|
||||
@@ -43,7 +47,7 @@ export function IconBox({ icon, title, description, hasBorder = true, theme = "d
|
||||
{title}
|
||||
</h5>
|
||||
<div className="icon-box-info">
|
||||
<p className="text-[16px] leading-[1.6] text-aiero-text-muted">
|
||||
<p className="text-[16px] leading-[1.6] text-tenext-text-muted">
|
||||
{description}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -19,31 +19,31 @@ interface PageTitleBannerProps {
|
||||
* - Full-width rounded card with gradient background
|
||||
* - Centered "/ Title /" text
|
||||
* - Breadcrumbs bottom-left
|
||||
* - Decorative "Aiero" outline text right side
|
||||
* - Decorative "tenext" outline text right side
|
||||
* - Top-left and bottom-right rounded corner decorations
|
||||
*/
|
||||
export function PageTitleBanner({ title, breadcrumbs }: PageTitleBannerProps) {
|
||||
return (
|
||||
<div className="relative mx-5 overflow-hidden rounded-[25px] bg-aiero-dark">
|
||||
<div className="relative mx-5 overflow-hidden rounded-[25px] bg-tenext-dark">
|
||||
{/* Background image */}
|
||||
<div
|
||||
className="absolute inset-0 bg-cover bg-center opacity-80"
|
||||
style={{
|
||||
backgroundImage: "url(/images/aiero/page-top-bg-min.png)",
|
||||
backgroundImage: "url(/images/tenext/page-top-bg-min.png)",
|
||||
}}
|
||||
/>
|
||||
|
||||
{/* Gradient overlay */}
|
||||
<div className="absolute inset-0 bg-gradient-to-b from-transparent via-transparent to-aiero-dark/60" />
|
||||
<div className="absolute inset-0 bg-gradient-to-b from-transparent via-transparent to-tenext-dark/60" />
|
||||
|
||||
{/* Top-left corner decoration */}
|
||||
<div className="absolute left-0 top-0 h-20 w-20">
|
||||
<div className="absolute left-0 top-0 h-full w-full rounded-br-[25px] bg-white" />
|
||||
<div className="absolute left-0 top-0 h-full w-full rounded-tl-[25px] bg-aiero-dark">
|
||||
<div className="absolute left-0 top-0 h-full w-full rounded-tl-[25px] bg-tenext-dark">
|
||||
<div
|
||||
className="absolute inset-0 bg-cover bg-center opacity-80"
|
||||
style={{
|
||||
backgroundImage: "url(/images/aiero/page-top-bg-min.png)",
|
||||
backgroundImage: "url(/images/tenext/page-top-bg-min.png)",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
@@ -52,11 +52,11 @@ export function PageTitleBanner({ title, breadcrumbs }: PageTitleBannerProps) {
|
||||
{/* Bottom-right corner decoration */}
|
||||
<div className="absolute bottom-0 right-0 h-20 w-20">
|
||||
<div className="absolute bottom-0 right-0 h-full w-full rounded-tl-[25px] bg-white" />
|
||||
<div className="absolute bottom-0 right-0 h-full w-full rounded-br-[25px] bg-aiero-dark">
|
||||
<div className="absolute bottom-0 right-0 h-full w-full rounded-br-[25px] bg-tenext-dark">
|
||||
<div
|
||||
className="absolute inset-0 bg-cover bg-center opacity-80"
|
||||
style={{
|
||||
backgroundImage: "url(/images/aiero/page-top-bg-min.png)",
|
||||
backgroundImage: "url(/images/tenext/page-top-bg-min.png)",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
@@ -74,23 +74,26 @@ export function PageTitleBanner({ title, breadcrumbs }: PageTitleBannerProps) {
|
||||
lineHeight: 1.1,
|
||||
}}
|
||||
>
|
||||
<span className="mr-3 text-aiero-text-muted">/</span>
|
||||
<span className="mr-3 text-tenext-text-muted">/</span>
|
||||
{title}
|
||||
<span className="ml-3 text-aiero-text-muted">/</span>
|
||||
<span className="ml-3 text-tenext-text-muted">/</span>
|
||||
</h1>
|
||||
|
||||
{/* Breadcrumbs */}
|
||||
<nav className="absolute bottom-8 left-8 md:bottom-10 md:left-12" aria-label="Breadcrumb">
|
||||
<nav
|
||||
className="absolute bottom-8 left-8 md:bottom-10 md:left-12"
|
||||
aria-label="Breadcrumb"
|
||||
>
|
||||
<ol className="flex items-center gap-2 text-sm text-white/70">
|
||||
{breadcrumbs.map((crumb, index) => (
|
||||
<li key={crumb.label} className="flex items-center gap-2">
|
||||
{index > 0 && (
|
||||
<span className="mx-1 inline-block h-1 w-1 rounded-full bg-aiero-teal" />
|
||||
<span className="mx-1 inline-block h-1 w-1 rounded-full bg-tenext-teal" />
|
||||
)}
|
||||
{index < breadcrumbs.length - 1 && crumb.href ? (
|
||||
<a
|
||||
href={crumb.href}
|
||||
className="transition-colors hover:text-aiero-teal"
|
||||
className="transition-colors hover:text-tenext-teal"
|
||||
>
|
||||
{crumb.label}
|
||||
</a>
|
||||
@@ -102,7 +105,7 @@ export function PageTitleBanner({ title, breadcrumbs }: PageTitleBannerProps) {
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
{/* Decorative vertical "Aiero" text */}
|
||||
{/* Decorative vertical "tenext" text */}
|
||||
<div
|
||||
className="absolute bottom-8 right-8 hidden select-none lg:block"
|
||||
style={{
|
||||
@@ -117,7 +120,7 @@ export function PageTitleBanner({ title, breadcrumbs }: PageTitleBannerProps) {
|
||||
WebkitTextFillColor: "transparent",
|
||||
}}
|
||||
>
|
||||
Aiero
|
||||
tenext
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5,16 +5,19 @@ import { SectionContainer } from "@/components/shared/SectionContainer";
|
||||
|
||||
export function PartnerLogosSection() {
|
||||
const logos = [
|
||||
"/images/aiero/partners-1.png",
|
||||
"/images/aiero/partners-2.png",
|
||||
"/images/aiero/partners-1.png",
|
||||
"/images/aiero/partners-2.png",
|
||||
"/images/aiero/partners-1.png",
|
||||
"/images/aiero/partners-2.png",
|
||||
"/images/tenext/partners-1.png",
|
||||
"/images/tenext/partners-2.png",
|
||||
"/images/tenext/partners-1.png",
|
||||
"/images/tenext/partners-2.png",
|
||||
"/images/tenext/partners-1.png",
|
||||
"/images/tenext/partners-2.png",
|
||||
];
|
||||
|
||||
return (
|
||||
<SectionContainer paddingY="lg" className="border-t border-aiero-card-border bg-aiero-dark">
|
||||
<SectionContainer
|
||||
paddingY="lg"
|
||||
className="border-t border-tenext-card-border bg-tenext-dark"
|
||||
>
|
||||
<PageContainer className="flex flex-col items-center">
|
||||
<h3
|
||||
className="mb-16 max-w-[800px] text-center text-white"
|
||||
@@ -25,18 +28,22 @@ export function PartnerLogosSection() {
|
||||
lineHeight: 1.2,
|
||||
}}
|
||||
>
|
||||
Tinker with a Neural Network right here in your browser. Don’t worry, you can’t break it. We Promise.
|
||||
Our trusted collaborators in progress and success
|
||||
</h3>
|
||||
|
||||
<div className="flex flex-wrap justify-center gap-8 md:gap-16 lg:gap-24 opacity-60">
|
||||
{logos.map((src, index) => (
|
||||
<div key={index} className="flex h-12 items-center justify-center grayscale transition-all hover:grayscale-0">
|
||||
<div
|
||||
key={index}
|
||||
className="flex h-12 items-center justify-center grayscale transition-all hover:grayscale-0"
|
||||
>
|
||||
<img
|
||||
src={src}
|
||||
alt={`Partner ${index + 1}`}
|
||||
className="h-full w-auto object-contain"
|
||||
onError={(e) => {
|
||||
(e.target as HTMLImageElement).src = "/images/aiero/logo-dark.png";
|
||||
(e.target as HTMLImageElement).src =
|
||||
"/images/tenext/logo-dark.png";
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -1,45 +1,42 @@
|
||||
import { AieroButton } from "@/components/shared/AieroButton";
|
||||
import { tenextButton as TenextButton } from "@/components/shared/AieroButton";
|
||||
import { PageContainer } from "@/components/shared/PageContainer";
|
||||
|
||||
/**
|
||||
* PreFooterCTA — "It's blow your mind! Meet Neural Networks" banner.
|
||||
* PreFooterCTA — "Elevate your business with our innovative solutions" banner.
|
||||
*
|
||||
* Shared across: Home, About, Services, Contacts.
|
||||
*
|
||||
* Structure (from reference):
|
||||
* - Dark grey rounded card
|
||||
* - Large teal gradient heading
|
||||
* - "Get a Quote" button with arrow
|
||||
* - Plain white section
|
||||
* - Large dark heading, left aligned
|
||||
* - "Get in touch" text link, right aligned
|
||||
*/
|
||||
export function PreFooterCTA() {
|
||||
return (
|
||||
<section className="px-5 pb-5">
|
||||
<div className="overflow-hidden rounded-[25px] bg-aiero-card-dark">
|
||||
<PageContainer className="flex flex-col items-center gap-8 py-16 text-center md:flex-row md:justify-between md:py-20 md:text-left lg:py-24">
|
||||
{/* Heading */}
|
||||
<h2
|
||||
className="max-w-[700px]"
|
||||
style={{
|
||||
fontFamily: "var(--font-sora)",
|
||||
fontSize: "clamp(28px, 3.5vw, 48px)",
|
||||
fontWeight: 700,
|
||||
lineHeight: 1.15,
|
||||
}}
|
||||
>
|
||||
<span className="text-white">{"It's blow your mind! "}</span>
|
||||
<span className="gradient-text-purple">Meet Neural Networks</span>
|
||||
</h2>
|
||||
<section className="bg-white px-5 py-[60px] md:py-[80px]">
|
||||
<PageContainer className="flex flex-col items-center gap-8 text-center md:flex-row md:justify-between md:text-left">
|
||||
{/* Heading */}
|
||||
<h2
|
||||
className="max-w-[700px] text-tenext-dark"
|
||||
style={{
|
||||
fontFamily: "var(--font-sora)",
|
||||
fontSize: "clamp(28px, 3.5vw, 48px)",
|
||||
fontWeight: 700,
|
||||
lineHeight: 1.15,
|
||||
}}
|
||||
>
|
||||
Elevate your business with our innovative solutions
|
||||
</h2>
|
||||
|
||||
{/* CTA */}
|
||||
<AieroButton
|
||||
href="/contacts"
|
||||
variant="gradient-border"
|
||||
className="shrink-0 rounded-full px-8 py-4 text-base font-semibold text-white"
|
||||
>
|
||||
Get a Quote
|
||||
</AieroButton>
|
||||
</PageContainer>
|
||||
</div>
|
||||
{/* CTA */}
|
||||
<TenextButton
|
||||
href="/contacts"
|
||||
variant="simple"
|
||||
className="shrink-0 text-[15px] font-semibold text-tenext-teal"
|
||||
>
|
||||
Get in touch
|
||||
</TenextButton>
|
||||
</PageContainer>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
import { ArrowIcon } from "./icons/ArrowIcon";
|
||||
|
||||
interface ScrollDownProps {
|
||||
@@ -10,7 +9,7 @@ interface ScrollDownProps {
|
||||
|
||||
/**
|
||||
* ScrollDown — interactive scroll indicator.
|
||||
* Matches original Aiero reference animation and styling.
|
||||
* Matches original tenext reference animation and styling.
|
||||
*/
|
||||
export function ScrollDown({
|
||||
href = "#scroll-down",
|
||||
@@ -23,8 +22,8 @@ export function ScrollDown({
|
||||
<a
|
||||
href={href}
|
||||
className={`inline-flex h-[78px] w-[190px] items-center justify-center gap-2 rounded-b-[25px] ${
|
||||
light ? "bg-white text-aiero-dark" : "bg-aiero-dark text-white"
|
||||
} text-[14px] font-semibold no-underline transition-all hover:text-aiero-teal hover:shadow-scroll-btn`}
|
||||
light ? "bg-white text-tenext-dark" : "bg-tenext-dark text-white"
|
||||
} text-[14px] font-semibold no-underline transition-all hover:text-tenext-teal hover:shadow-scroll-btn`}
|
||||
style={{ fontFamily: "var(--font-sora)" }}
|
||||
>
|
||||
{text}
|
||||
|
||||
@@ -41,7 +41,7 @@ export function SectionHeading({
|
||||
<div className={className}>
|
||||
{tag && (
|
||||
<span
|
||||
className={`aiero-subheading mb-4 text-aiero-teal ${tagClassName}`}
|
||||
className={`tenext-subheading mb-4 text-tenext-teal ${tagClassName}`}
|
||||
style={{ fontFamily: "var(--font-sora)" }}
|
||||
>
|
||||
{tag}
|
||||
@@ -62,7 +62,7 @@ export function SectionHeading({
|
||||
|
||||
{description && (
|
||||
<p
|
||||
className={`mt-6 text-base leading-relaxed text-aiero-text-muted ${descriptionClassName}`}
|
||||
className={`mt-6 text-base leading-relaxed text-tenext-text-muted ${descriptionClassName}`}
|
||||
>
|
||||
{description}
|
||||
</p>
|
||||
|
||||
@@ -25,7 +25,7 @@ export function SocialIcons({
|
||||
rel="noopener noreferrer"
|
||||
role="listitem"
|
||||
aria-label={link.platform}
|
||||
className={`flex h-10 w-10 items-center justify-center rounded-full border border-aiero-card-border text-aiero-text-muted transition-all duration-300 hover:border-aiero-teal hover:text-aiero-teal ${iconClassName}`}
|
||||
className={`flex h-10 w-10 items-center justify-center rounded-full border border-tenext-card-border text-tenext-text-muted transition-all duration-300 hover:border-tenext-teal hover:text-tenext-teal ${iconClassName}`}
|
||||
>
|
||||
<SocialSvg icon={link.icon} />
|
||||
</a>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
// CSS custom properties in globals.css mirror these for Tailwind usage.
|
||||
// ─────────────────────────────────────────────────────────────────────
|
||||
|
||||
/** Color palette — use Tailwind classes (e.g. `bg-aiero-dark`) when possible */
|
||||
/** Color palette — use Tailwind classes (e.g. `bg-tenext-dark`) when possible */
|
||||
export const colors = {
|
||||
// Backgrounds
|
||||
bgDark: "#1F1F1F",
|
||||
@@ -30,6 +30,9 @@ export const colors = {
|
||||
textMuted: "#87899B",
|
||||
textWhite: "#FFFFFF",
|
||||
textDark: "#1F1F1F",
|
||||
|
||||
// Surfaces
|
||||
surfaceMuted: "#ECF0F4",
|
||||
} as const;
|
||||
|
||||
/** Spacing tokens — predefined values only, no arbitrary px */
|
||||
|
||||
@@ -15,13 +15,13 @@ export interface FooterLink {
|
||||
}
|
||||
|
||||
export const siteConfig = {
|
||||
name: "Aiero",
|
||||
name: "tenext",
|
||||
tagline: "AI Agency",
|
||||
|
||||
// Contact
|
||||
phone: "+1 800 529 10 37",
|
||||
phoneRaw: "+18005291037",
|
||||
email: "aiero@mail.co",
|
||||
email: "tenext@mail.co",
|
||||
address: {
|
||||
line1: "USA, New York – 1060",
|
||||
line2: "Str. First Avenue 1",
|
||||
@@ -29,9 +29,17 @@ export const siteConfig = {
|
||||
|
||||
// Social
|
||||
socials: [
|
||||
{ platform: "Facebook", url: "https://www.facebook.com/", icon: "facebook" },
|
||||
{
|
||||
platform: "Facebook",
|
||||
url: "https://www.facebook.com/",
|
||||
icon: "facebook",
|
||||
},
|
||||
{ platform: "X", url: "https://twitter.com/", icon: "x-twitter" },
|
||||
{ platform: "LinkedIn", url: "https://www.linkedin.com/", icon: "linkedin" },
|
||||
{
|
||||
platform: "LinkedIn",
|
||||
url: "https://www.linkedin.com/",
|
||||
icon: "linkedin",
|
||||
},
|
||||
{ platform: "Youtube", url: "https://www.youtube.com/", icon: "youtube" },
|
||||
] as SocialLink[],
|
||||
|
||||
@@ -52,7 +60,7 @@ export const siteConfig = {
|
||||
},
|
||||
|
||||
// Legal
|
||||
copyright: "©Aiero 2025. All rights reserved.",
|
||||
copyright: "©tenext 2025. All rights reserved.",
|
||||
legalLinks: [
|
||||
{ label: "Terms of use", href: "#" },
|
||||
{ label: "Privacy Policy", href: "#" },
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
import type { NextConfig } from "next";
|
||||
|
||||
const nextConfig: NextConfig = {
|
||||
/* config options here */
|
||||
images: {
|
||||
remotePatterns: [
|
||||
{
|
||||
protocol: "https",
|
||||
hostname: "8ded8880.delivery.rocketcdn.me",
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
export default nextConfig;
|
||||
|
||||
|
After Width: | Height: | Size: 161 KiB |
BIN
public/images/tenext/3x.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
public/images/tenext/Dots.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
public/images/tenext/Group-18301.jpg
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
public/images/tenext/Group-18433.png
Normal file
|
After Width: | Height: | Size: 258 KiB |
BIN
public/images/tenext/Layer_2-min.jpg
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
public/images/tenext/Vector-13.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
public/images/tenext/assistant-artificial-intelligence-min.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/images/tenext/c0eb2845-min.png
Normal file
|
After Width: | Height: | Size: 86 KiB |
BIN
public/images/tenext/client-1.jpg
Normal file
|
After Width: | Height: | Size: 193 KiB |
BIN
public/images/tenext/client-2.jpg
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
public/images/tenext/confident-ginger-man-with-trendy.jpg
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
public/images/tenext/discord-1.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
public/images/tenext/funny-curious-man-makes.jpg
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
public/images/tenext/home-9-img.png
Normal file
|
After Width: | Height: | Size: 108 KiB |
BIN
public/images/tenext/home-9-top-bg-min.jpg
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
public/images/tenext/logo-dark.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
public/images/tenext/messenger-logo-1.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
public/images/tenext/openai-logo-1.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
public/images/tenext/page-top-bg-min.png
Normal file
|
After Width: | Height: | Size: 258 KiB |
BIN
public/images/tenext/partners-1.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
public/images/tenext/partners-2.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
public/images/tenext/partners-3.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
public/images/tenext/partners-4.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
public/images/tenext/portrait-confident-man.jpg
Normal file
|
After Width: | Height: | Size: 193 KiB |
BIN
public/images/tenext/skype-logo.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
public/images/tenext/telegram-symbol-1.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
public/images/tenext/waist-up-shot-handsome-calm.jpg
Normal file
|
After Width: | Height: | Size: 193 KiB |
@@ -39,7 +39,7 @@ mouse.set(e.x/gl.renderer.width,1.0-e.y/gl.renderer.height);if(!lastTime){lastTi
|
||||
const deltaX=e.x-lastMouse.x;const deltaY=e.y-lastMouse.y;lastMouse.set(e.x,e.y);let time=performance.now();let delta=Math.max(10.4,time-lastTime);lastTime=time;velocity.x=deltaX/delta;velocity.y=deltaY/delta;velocity.needsUpdate=!0}
|
||||
requestAnimationFrame(update);function update(t){requestAnimationFrame(update);if(!velocity.needsUpdate){mouse.set(-1);velocity.set(0)}
|
||||
velocity.needsUpdate=!1;flowmap.aspect=aspect;flowmap.mouse.copy(mouse);flowmap.velocity.lerp(velocity,velocity.len?0.15:0.1);flowmap.update();program.uniforms.uTime.value=t*0.01;renderer.render({scene:mesh})}}})}
|
||||
jQuery(window).on('elementor/frontend/init',function(){elementorFrontend.hooks.addAction('frontend/element_ready/icon.default',function($scope){if($scope.hasClass('aiero-icon-decoration-on')){$scope.find('.elementor-icon-wrapper').wrapInner('<div class="elementor-icon-inner"></div>')}
|
||||
jQuery(window).on('elementor/frontend/init',function(){elementorFrontend.hooks.addAction('frontend/element_ready/icon.default',function($scope){if($scope.hasClass('tenext-icon-decoration-on')){$scope.find('.elementor-icon-wrapper').wrapInner('<div class="elementor-icon-inner"></div>')}
|
||||
if($scope.find('.elementor-icon').hasClass('elementor-animation-slide-aslant')){$scope.find('.elementor-icon i, .elementor-icon svg').clone().appendTo($scope.find('.elementor-icon'));$scope.find('.elementor-animation-slide-aslant').wrapInner('<span class="elementor-icon-slide-aslant-inner"></span>')}});elementorFrontend.hooks.addAction('frontend/element_ready/global',function($scope){if(jQuery('body').hasClass('elementor-editor-active')){if($scope.hasClass('elementor-section')&&!$scope.children('.elementor-container').children('.elementor-row').length){$scope.children('.elementor-container').wrapInner('<div class="elementor-row ui-sortable"></div>')}else if($scope.hasClass('elementor-column')&&!$scope.parent('.elementor-row').length){$scope.siblings('.elementor-row').children().unwrap();$scope.parent('.elementor-container').wrapInner('<div class="elementor-row ui-sortable"></div>')}}});elementorFrontend.hooks.addAction('frontend/element_ready/section',function($scope){if(!jQuery('body').hasClass('elementor-editor-active')){if(!$scope.children('.elementor-container').children('.elementor-row').length){$scope.children('.elementor-container').wrapInner('<div class="elementor-row"></div>');if($scope.data('parallax')=='scroll'){background_image_parallax($scope,0.7)}}else{if($scope.data('parallax')=='scroll'){background_image_parallax($scope,0.7)}}
|
||||
if($scope.hasClass('elementor-section-scroll-animation-on')){jQuery('.body-container').css('overflow','visible');$scope.css({position:'sticky',top:jQuery('.sticky-header').length>0?'140px':'0px'});$scope.closest('.elementor-widget-wrap').height(1.2*$scope.height());jQuery(window).on('resize',function(){$scope.closest('.elementor-widget-wrap').height(1.2*$scope.height())});const{ScrollObserver,valueAtPercentage}=aat;$scope.each(function(index){ScrollObserver.Element(jQuery(this)[0],{offsetTop:jQuery('.sticky-header').length>0?140:0,offsetBottom:0}).onScroll(({percentageY})=>{const clipPath=`inset(${valueAtPercentage({
|
||||
from: 350,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
'use strict';function animateHeading($scope){if($scope.data('settings')&&$scope.data('settings')._animation&&$scope.data('settings')._animation=='aiero_heading_animation'){$scope.find('.aiero-heading-content').html($scope.find('.aiero-heading-content').html().replace(/(^|<\/?[^>]+>|\s+)([^\s<]+)/g,'$1<span class="word">$2</span>'));$scope.find('.aiero-heading-content .word').contents().each(function(){if(this.nodeType===3){jQuery(this).parent().html(jQuery(this).text().replace(/\S/g,'<span class="letter">$&</span>'))}});$scope.find('.aiero-heading-content .letter').each(function(index){jQuery(this).css('animation-delay',index/50+'s')})}}
|
||||
'use strict';function animateHeading($scope){if($scope.data('settings')&&$scope.data('settings')._animation&&$scope.data('settings')._animation=='tenext_heading_animation'){$scope.find('.tenext-heading-content').html($scope.find('.tenext-heading-content').html().replace(/(^|<\/?[^>]+>|\s+)([^\s<]+)/g,'$1<span class="word">$2</span>'));$scope.find('.tenext-heading-content .word').contents().each(function(){if(this.nodeType===3){jQuery(this).parent().html(jQuery(this).text().replace(/\S/g,'<span class="letter">$&</span>'))}});$scope.find('.tenext-heading-content .letter').each(function(index){jQuery(this).css('animation-delay',index/50+'s')})}}
|
||||
function initModernProjects($el){$el.find('.project-modern-listing .project-item-wrapper').first().addClass('active');$el.find('.project-modern-listing .project-item-modern-header').on('click',function(){var $projectItem=jQuery(this).closest('.project-item-wrapper');$projectItem.addClass('active');$projectItem.find('.project-item-modern-content').slideDown(400);$projectItem.siblings().removeClass('active');$projectItem.siblings().find('.project-item-modern-content').slideUp(400)})}
|
||||
function playProjectsSliderAudio($el){$el.find('.project-listing-wrapper.project-slider-listing.content-type-audio').on('click','.play-audio',function(){jQuery(this).closest('.owl-item').siblings().find('.project-audio-wrapper audio').each(function(){jQuery(this)[0].pause();jQuery(this)[0].currentTime=0;jQuery(this).siblings('.play-audio').removeClass('active')});var audioElement=jQuery(this).siblings('audio')[0];if(audioElement.paused){jQuery(this).addClass('active');audioElement.play()}else{audioElement.pause();audioElement.currentTime=0;jQuery(this).removeClass('active')}
|
||||
var $this=jQuery(this);audioElement.addEventListener('ended',function(){$this.removeClass('active')})})}
|
||||
function playListingAudio($el){$el.find('.aiero-audio-listing').on('click','.audio-item',function(){jQuery(this).closest('.audio-item-wrapper').siblings().find('.audio-item').each(function(){jQuery(this).removeClass('active');jQuery(this).find('audio')[0].pause();jQuery(this).find('audio')[0].currentTime=0});var audioElement=jQuery(this).find('audio')[0];if(audioElement.paused){jQuery(this).addClass('active');audioElement.play()}else{audioElement.pause();audioElement.currentTime=0;jQuery(this).removeClass('active')}
|
||||
function playListingAudio($el){$el.find('.tenext-audio-listing').on('click','.audio-item',function(){jQuery(this).closest('.audio-item-wrapper').siblings().find('.audio-item').each(function(){jQuery(this).removeClass('active');jQuery(this).find('audio')[0].pause();jQuery(this).find('audio')[0].currentTime=0});var audioElement=jQuery(this).find('audio')[0];if(audioElement.paused){jQuery(this).addClass('active');audioElement.play()}else{audioElement.pause();audioElement.currentTime=0;jQuery(this).removeClass('active')}
|
||||
var $this=jQuery(this);audioElement.addEventListener('ended',function(){$this.removeClass('active')})})}
|
||||
function handleProjectsExcerptHeight(){jQuery('.project-listing-wrapper.project-slider-listing:not(.content-type-audio) .project-item').each(function(){const item=jQuery(this);const excerpt=jQuery(this).find('.post-excerpt-wrapper');excerpt.hide();item.on('mouseenter',function(){excerpt.delay(300).slideDown(300)});item.on('mouseleave',function(){excerpt.slideUp(300)})})}
|
||||
function handleProjectsGridExcerptHeight($scope){if(!$scope.find('.project-grid-listing').hasClass('text-position-inside')){return}
|
||||
@@ -13,27 +13,27 @@ const card=jQuery(this);const toScale=1-(cards.length-1-index)*0.05;const nextCa
|
||||
to: 0.6,
|
||||
percentage: percentageY
|
||||
})})`;cardInner.css('filter',filter)})})}
|
||||
function initMovingList($scope){gsap.defaults({overwrite:"auto"});gsap.registerPlugin(ScrollTrigger);gsap.config({nullTargetWarn:!1});$scope.find('.aiero-moving-list-widget').each(function(index){const movingList=jQuery(this).find('.moving-list');const[x,xEnd]=(index%2)?[(jQuery(this)[0].offsetWidth-movingList[0].scrollWidth)/3,5/2]:[5/2,(jQuery(this)[0].offsetWidth-movingList[0].scrollWidth)/3];gsap.fromTo(movingList[0],{x},{x:xEnd,scrollTrigger:{trigger:jQuery(this)[0],scrub:0.5,}})})}
|
||||
function initMovingList($scope){gsap.defaults({overwrite:"auto"});gsap.registerPlugin(ScrollTrigger);gsap.config({nullTargetWarn:!1});$scope.find('.tenext-moving-list-widget').each(function(index){const movingList=jQuery(this).find('.moving-list');const[x,xEnd]=(index%2)?[(jQuery(this)[0].offsetWidth-movingList[0].scrollWidth)/3,5/2]:[5/2,(jQuery(this)[0].offsetWidth-movingList[0].scrollWidth)/3];gsap.fromTo(movingList[0],{x},{x:xEnd,scrollTrigger:{trigger:jQuery(this)[0],scrub:0.5,}})})}
|
||||
function initServicesButton($scope){const items=$scope.find('.service-item');items.each(function(){const item=jQuery(this);item.on('mouseenter',function(){item.find('.button-container').slideDown(300)});item.on('mouseleave',function(){item.find('.button-container').slideUp(300)})})}
|
||||
function initParallaxButton($scope){let adv_button_wrapper=$scope.find('.aiero_adv_button_wrapper');adv_button_wrapper.mouseleave(function(e){TweenMax.to(this,0.6,{scale:1});TweenMax.to(adv_button_wrapper.find('.aiero_adv_button'),0.6,{scale:1,x:0,y:0});TweenMax.to(adv_button_wrapper.find('.aiero_adv_button_circle'),0.6,{scale:1,x:0,y:0,delay:0.1});TweenMax.to(adv_button_wrapper.find('.aiero_adv_button_text'),0.6,{scale:1,x:0,y:0})});adv_button_wrapper.mouseenter(function(e){TweenMax.to(this,0.6,{transformOrigin:'0 0',scale:1});TweenMax.to(adv_button_wrapper.find('.aiero_adv_button'),0.6,{scale:1});TweenMax.to(adv_button_wrapper.find('.aiero_adv_button_circle'),0.6,{scale:1});TweenMax.to(adv_button_wrapper.find('.aiero_adv_button_text'),0.6,{scale:1})});adv_button_wrapper.mousemove(function(e){callParallax(e)});function callParallax(e){parallaxIt(e,'.aiero_adv_button',40);parallaxIt2(e,'.aiero_adv_button_circle',40);parallaxIt(e,'.aiero_adv_button_text',10)}
|
||||
function initParallaxButton($scope){let adv_button_wrapper=$scope.find('.tenext_adv_button_wrapper');adv_button_wrapper.mouseleave(function(e){TweenMax.to(this,0.6,{scale:1});TweenMax.to(adv_button_wrapper.find('.tenext_adv_button'),0.6,{scale:1,x:0,y:0});TweenMax.to(adv_button_wrapper.find('.tenext_adv_button_circle'),0.6,{scale:1,x:0,y:0,delay:0.1});TweenMax.to(adv_button_wrapper.find('.tenext_adv_button_text'),0.6,{scale:1,x:0,y:0})});adv_button_wrapper.mouseenter(function(e){TweenMax.to(this,0.6,{transformOrigin:'0 0',scale:1});TweenMax.to(adv_button_wrapper.find('.tenext_adv_button'),0.6,{scale:1});TweenMax.to(adv_button_wrapper.find('.tenext_adv_button_circle'),0.6,{scale:1});TweenMax.to(adv_button_wrapper.find('.tenext_adv_button_text'),0.6,{scale:1})});adv_button_wrapper.mousemove(function(e){callParallax(e)});function callParallax(e){parallaxIt(e,'.tenext_adv_button',40);parallaxIt2(e,'.tenext_adv_button_circle',40);parallaxIt(e,'.tenext_adv_button_text',10)}
|
||||
function parallaxIt(e,target,movement){var boundingRect=adv_button_wrapper[0].getBoundingClientRect();var relX=e.pageX-boundingRect.left;var relY=e.pageY-boundingRect.top;var scrollTop=window.pageYOffset||document.documentElement.scrollTop;var targetEl=adv_button_wrapper.find(target);TweenMax.to(targetEl,0.5,{x:(relX-boundingRect.width/2)/boundingRect.width*movement,y:(relY-boundingRect.height/2-scrollTop)/boundingRect.width*movement,ease:Power3.easeOut})}
|
||||
function parallaxIt2(e,target,movement){var boundingRect=adv_button_wrapper[0].getBoundingClientRect();var relX=e.pageX-boundingRect.left;var relY=e.pageY-boundingRect.top;var scrollTop=window.pageYOffset||document.documentElement.scrollTop;var targetEl=adv_button_wrapper.find(target);TweenMax.to(targetEl,0.5,{x:(relX-boundingRect.width/2)/boundingRect.width*movement,y:(relY-boundingRect.height/2-scrollTop)/boundingRect.width*movement,ease:Power3.easeOut,delay:0.1})}}
|
||||
jQuery(window).on('elementor/frontend/init',function(){elementorFrontend.hooks.addAction('frontend/element_ready/aiero_button.default',function($scope){if($scope.find('.button-widget').hasClass('aiero-button-type-parallax')){initParallaxButton($scope)}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_audio_listing.default',function($scope){playListingAudio($scope)});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_blog_listing.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(fix_responsive_iframe,600);setTimeout(custom_video_play_button,800)}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_gallery.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(isotope_init,2500)}
|
||||
jQuery(window).on('elementor/frontend/init',function(){elementorFrontend.hooks.addAction('frontend/element_ready/tenext_button.default',function($scope){if($scope.find('.button-widget').hasClass('tenext-button-type-parallax')){initParallaxButton($scope)}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_audio_listing.default',function($scope){playListingAudio($scope)});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_blog_listing.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(fix_responsive_iframe,600);setTimeout(custom_video_play_button,800)}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_gallery.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(isotope_init,2500)}
|
||||
if(jQuery('.cursor_drag',$scope).length>0&&jQuery(window).width()>=992){const $slider=$scope.find('.gallery-wrapper');const cursor=jQuery('.cursor_drag',$scope);function showCustomCursor(event){cursor.css('left',event.clientX-5).css('top',event.clientY-5)}
|
||||
$slider.mousemove(showCustomCursor);$slider.mouseleave(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'auto'});jQuery('.gallery-item-link',$scope).css({cursor:'auto'});cursor.removeClass('active');setTimeout(function(){if(!cursor.hasClass('active')){cursor.hide()}},300)}});$slider.mouseenter(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'none'});jQuery('.gallery-item-link',$scope).css({cursor:'none'});cursor.show();setTimeout(function(){cursor.addClass('active')},10)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_projects_listing.default',function($scope){animateHeading($scope);setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(isotope_init,2500)}
|
||||
$slider.mousemove(showCustomCursor);$slider.mouseleave(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'auto'});jQuery('.gallery-item-link',$scope).css({cursor:'auto'});cursor.removeClass('active');setTimeout(function(){if(!cursor.hasClass('active')){cursor.hide()}},300)}});$slider.mouseenter(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'none'});jQuery('.gallery-item-link',$scope).css({cursor:'none'});cursor.show();setTimeout(function(){cursor.addClass('active')},10)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_projects_listing.default',function($scope){animateHeading($scope);setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(isotope_init,2500)}
|
||||
setTimeout(handleProjectsExcerptHeight,500);if($scope.find('.project-grid-listing').length>0){setTimeout(function(){handleProjectsGridExcerptHeight($scope)},500)}
|
||||
if($scope.find('.project-modern-listing').length>0){var scopeID=$scope.attr('data-id');initModernProjects($scope);jQuery('body').on('genre_get_posts_success',function(e,classes,id){if(classes.indexOf('project-modern-listing')!==-1&&id===scopeID){initModernProjects($scope)}})}
|
||||
if($scope.find('.content-type-audio').length>0){playProjectsSliderAudio($scope)}
|
||||
if($scope.find('.project-cards-listing').length>0){initCardsProjects($scope);var scopeID=$scope.attr('data-id');jQuery('body').on('genre_get_posts_success',function(e,classes,id){if(classes.indexOf('project-cards-listing')!==-1&&id===scopeID){initCardsProjects($scope)}})}
|
||||
if($scope.find('.project-grid-listing').length>0){var scopeID=$scope.attr('data-id');jQuery('body').on('genre_get_posts_success',function(e,classes,id){if(classes.indexOf('project-grid-listing')!==-1&&id===scopeID){handleProjectsGridExcerptHeight($scope)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_services_listing.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);animateHeading($scope);initServicesButton($scope);var scopeID=$scope.attr('data-id');jQuery('body').on('genre_get_posts_success',function(e,classes,id){if(classes.indexOf('service-grid-listing')!==-1&&id===scopeID){initServicesButton($scope)}})});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_testimonial_carousel.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('.cursor_drag',$scope).length>0&&jQuery(window).width()>=992){const $slider=$scope.find('.testimonials-slider-container');const cursor=jQuery('.cursor_drag',$scope);function showCustomCursor(event){cursor.css('left',event.clientX-5).css('top',event.clientY-5)}
|
||||
$slider.mousemove(showCustomCursor);$slider.mouseleave(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'auto'});cursor.removeClass('active');setTimeout(function(){if(!cursor.hasClass('active')){cursor.hide()}},300)}});$slider.mouseenter(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'none'});cursor.show();setTimeout(function(){cursor.addClass('active')},10)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_image_carousel.default',function($scope){animateHeading($scope);setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('.cursor_drag',$scope).length>0&&jQuery(window).width()>=992){const $slider=$scope.find('.slider-wrapper');const cursor=jQuery('.cursor_drag',$scope);function showCustomCursor(event){cursor.css('left',event.clientX-5).css('top',event.clientY-5)}
|
||||
$slider.mousemove(showCustomCursor);$slider.mouseleave(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'auto'});cursor.removeClass('active');setTimeout(function(){if(!cursor.hasClass('active')){cursor.hide()}},300)}});$slider.mouseenter(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'none'});cursor.show();setTimeout(function(){cursor.addClass('active')},10)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_content_slider.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300)});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_wpforms.default',function(){if(jQuery('body').hasClass('elementor-editor-active')){initFloatPlaceholderInput();initWPFormsSubmitButton()}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_mailchimp.default',function(){if(jQuery('body').hasClass('elementor-editor-active')){initFloatPlaceholderInput();initWPFormsSubmitButton()}});elementorFrontend.hooks.addAction('frontend/element_ready/section.default',function(){if(jQuery('body').hasClass('elementor-editor-active')){background_image_parallax(jQuery('[data-parallax="scroll"]'),0.7)}});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_heading.default',function($scope){animateHeading($scope)});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_step_carousel.default',function($scope){animateHeading($scope);setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300)});elementorFrontend.hooks.addAction('frontend/element_ready/image.default',function($scope){if(jQuery(window).width()>=1025){const cursor=jQuery('.hovered-text',$scope);function showCustomCursor(event){cursor.css('left',event.clientX).css('top',event.clientY)}
|
||||
if($scope.find('.project-grid-listing').length>0){var scopeID=$scope.attr('data-id');jQuery('body').on('genre_get_posts_success',function(e,classes,id){if(classes.indexOf('project-grid-listing')!==-1&&id===scopeID){handleProjectsGridExcerptHeight($scope)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_services_listing.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);animateHeading($scope);initServicesButton($scope);var scopeID=$scope.attr('data-id');jQuery('body').on('genre_get_posts_success',function(e,classes,id){if(classes.indexOf('service-grid-listing')!==-1&&id===scopeID){initServicesButton($scope)}})});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_testimonial_carousel.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('.cursor_drag',$scope).length>0&&jQuery(window).width()>=992){const $slider=$scope.find('.testimonials-slider-container');const cursor=jQuery('.cursor_drag',$scope);function showCustomCursor(event){cursor.css('left',event.clientX-5).css('top',event.clientY-5)}
|
||||
$slider.mousemove(showCustomCursor);$slider.mouseleave(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'auto'});cursor.removeClass('active');setTimeout(function(){if(!cursor.hasClass('active')){cursor.hide()}},300)}});$slider.mouseenter(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'none'});cursor.show();setTimeout(function(){cursor.addClass('active')},10)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_image_carousel.default',function($scope){animateHeading($scope);setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('.cursor_drag',$scope).length>0&&jQuery(window).width()>=992){const $slider=$scope.find('.slider-wrapper');const cursor=jQuery('.cursor_drag',$scope);function showCustomCursor(event){cursor.css('left',event.clientX-5).css('top',event.clientY-5)}
|
||||
$slider.mousemove(showCustomCursor);$slider.mouseleave(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'auto'});cursor.removeClass('active');setTimeout(function(){if(!cursor.hasClass('active')){cursor.hide()}},300)}});$slider.mouseenter(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('.owl-stage',$scope).css({cursor:'none'});cursor.show();setTimeout(function(){cursor.addClass('active')},10)}})}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_content_slider.default',function($scope){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300)});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_wpforms.default',function(){if(jQuery('body').hasClass('elementor-editor-active')){initFloatPlaceholderInput();initWPFormsSubmitButton()}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_mailchimp.default',function(){if(jQuery('body').hasClass('elementor-editor-active')){initFloatPlaceholderInput();initWPFormsSubmitButton()}});elementorFrontend.hooks.addAction('frontend/element_ready/section.default',function(){if(jQuery('body').hasClass('elementor-editor-active')){background_image_parallax(jQuery('[data-parallax="scroll"]'),0.7)}});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_heading.default',function($scope){animateHeading($scope)});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_step_carousel.default',function($scope){animateHeading($scope);setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300)});elementorFrontend.hooks.addAction('frontend/element_ready/image.default',function($scope){if(jQuery(window).width()>=1025){const cursor=jQuery('.hovered-text',$scope);function showCustomCursor(event){cursor.css('left',event.clientX).css('top',event.clientY)}
|
||||
if(cursor.length>0){$scope.find('img').mousemove(showCustomCursor);$scope.find('img').mouseleave(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('a',$scope).css({cursor:'auto'});$scope.css({cursor:'auto'});cursor.removeClass('active')}});$scope.find('img').mouseenter(function(e){if(!jQuery('body').hasClass('elementor-editor-active')){jQuery('a',$scope).css({cursor:'none'});$scope.css({cursor:'none'});cursor.addClass('active')}})}}
|
||||
if($scope.hasClass('elementor-image-scroll-animation-on')){const{ScrollObserver,valueAtPercentage}=aat;const image=$scope.find('img');image.each(function(index){ScrollObserver.Element(jQuery(this)[0],{offsetTop:250,offsetBottom:0}).onScroll(({percentageY})=>{const transform=`perspective(1200px) rotateX(${valueAtPercentage({
|
||||
from: 15,
|
||||
to: 0,
|
||||
percentage: percentageY
|
||||
})}deg)`;jQuery(this).css('transform',transform)})})}});elementorFrontend.hooks.addAction("frontend/element_ready/tabs.default",function($scope){var image_ids=$scope.data('image-ids');if(image_ids&&image_ids.length){image_ids.forEach(function(e){jQuery('#'+e).addClass('hidden')});jQuery('#'+image_ids[0]).removeClass('hidden');jQuery('.elementor-tab-title.elementor-tab-desktop-title',$scope).each(function(index,el){jQuery(this).on('click',function(e){if(image_ids[index]){image_ids.forEach(function(e){jQuery('#'+e).addClass('hidden')});jQuery('#'+image_ids[index]).removeClass('hidden')}})});jQuery('.elementor-tab-title.elementor-tab-mobile-title',$scope).each(function(index,el){jQuery(this).on('click',function(e){if(image_ids[index]){image_ids.forEach(function(e){jQuery('#'+e).addClass('hidden')});jQuery('#'+image_ids[index]).removeClass('hidden')}})})}});elementorFrontend.hooks.addAction("frontend/element_ready/aiero_tabs.default",function(e){let d=e.find(".aiero_tabs_titles_container"),s=e.find(".aiero_tabs_content_container");jQuery(d).find(".aiero_tab_title_item").first().addClass("active");if(jQuery('body').hasClass('elementor-editor-active')){return}
|
||||
var tab_content_first_class=jQuery(d).find(".aiero_tab_title_item").first().attr("data-id");jQuery(d).find(".aiero_tab_title_item").each(function(){let e=jQuery(this).attr("data-id");if(e){jQuery('.elementor #'+e).removeClass("active").addClass("hidden")}});if(tab_content_first_class){jQuery('.elementor #'+tab_content_first_class).addClass("active").removeClass("hidden")}
|
||||
jQuery(s).find(".aiero_tab_content_item").first().addClass("active");e.find(".aiero_tab_title_item a").on("click",function(){let e=jQuery(this).parent().attr("data-id");if(!jQuery(this).parent().is(".active")){d.find(".active").removeClass("active");s.find(".active").removeClass("active");if(e){var all_ids=[];jQuery(d).find(".aiero_tab_title_item").each(function(){let e=jQuery(this).attr("data-id");if(e){all_ids.push('.elementor #'+e);var swiper=jQuery('.elementor #'+e).find('.swiper-container');if(swiper.length){setTimeout(function(){window.dispatchEvent(new Event('resize'))},500)}}});var all_ids_str=all_ids.join();jQuery(all_ids_str).removeClass("active").addClass("hidden")}
|
||||
jQuery(this).parent().addClass("active");if(e){jQuery('.elementor #'+e).addClass("active").removeClass("hidden");s.find("#"+e).addClass("active")}}})});elementorFrontend.hooks.addAction("frontend/element_ready/aiero_moving_list.default",function(e){initMovingList(e)});elementorFrontend.hooks.addAction('frontend/element_ready/aiero_case_study_listing.default',function(){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(isotope_init,500)}})})
|
||||
})}deg)`;jQuery(this).css('transform',transform)})})}});elementorFrontend.hooks.addAction("frontend/element_ready/tabs.default",function($scope){var image_ids=$scope.data('image-ids');if(image_ids&&image_ids.length){image_ids.forEach(function(e){jQuery('#'+e).addClass('hidden')});jQuery('#'+image_ids[0]).removeClass('hidden');jQuery('.elementor-tab-title.elementor-tab-desktop-title',$scope).each(function(index,el){jQuery(this).on('click',function(e){if(image_ids[index]){image_ids.forEach(function(e){jQuery('#'+e).addClass('hidden')});jQuery('#'+image_ids[index]).removeClass('hidden')}})});jQuery('.elementor-tab-title.elementor-tab-mobile-title',$scope).each(function(index,el){jQuery(this).on('click',function(e){if(image_ids[index]){image_ids.forEach(function(e){jQuery('#'+e).addClass('hidden')});jQuery('#'+image_ids[index]).removeClass('hidden')}})})}});elementorFrontend.hooks.addAction("frontend/element_ready/tenext_tabs.default",function(e){let d=e.find(".tenext_tabs_titles_container"),s=e.find(".tenext_tabs_content_container");jQuery(d).find(".tenext_tab_title_item").first().addClass("active");if(jQuery('body').hasClass('elementor-editor-active')){return}
|
||||
var tab_content_first_class=jQuery(d).find(".tenext_tab_title_item").first().attr("data-id");jQuery(d).find(".tenext_tab_title_item").each(function(){let e=jQuery(this).attr("data-id");if(e){jQuery('.elementor #'+e).removeClass("active").addClass("hidden")}});if(tab_content_first_class){jQuery('.elementor #'+tab_content_first_class).addClass("active").removeClass("hidden")}
|
||||
jQuery(s).find(".tenext_tab_content_item").first().addClass("active");e.find(".tenext_tab_title_item a").on("click",function(){let e=jQuery(this).parent().attr("data-id");if(!jQuery(this).parent().is(".active")){d.find(".active").removeClass("active");s.find(".active").removeClass("active");if(e){var all_ids=[];jQuery(d).find(".tenext_tab_title_item").each(function(){let e=jQuery(this).attr("data-id");if(e){all_ids.push('.elementor #'+e);var swiper=jQuery('.elementor #'+e).find('.swiper-container');if(swiper.length){setTimeout(function(){window.dispatchEvent(new Event('resize'))},500)}}});var all_ids_str=all_ids.join();jQuery(all_ids_str).removeClass("active").addClass("hidden")}
|
||||
jQuery(this).parent().addClass("active");if(e){jQuery('.elementor #'+e).addClass("active").removeClass("hidden");s.find("#"+e).addClass("active")}}})});elementorFrontend.hooks.addAction("frontend/element_ready/tenext_moving_list.default",function(e){initMovingList(e)});elementorFrontend.hooks.addAction('frontend/element_ready/tenext_case_study_listing.default',function(){setTimeout(function(){elements_slider_init(jQuery('.owl-carousel',$scope))},300);if(jQuery('body').hasClass('elementor-editor-active')){setTimeout(isotope_init,500)}})})
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ function menu_text_animate(){jQuery('.header .main-menu > li > a').wrapInner('<s
|
||||
function mobile_menu_open(){jQuery('.menu-trigger').on('click',function(){jQuery('.mobile-header-menu-container, .body-overlay').addClass('active')});jQuery('.menu-close, .body-overlay').on('click',function(){jQuery('.mobile-header-menu-container, .body-overlay').removeClass('active')})}
|
||||
function compact_menu_open(){jQuery('.compact-menu-trigger').on('click',function(){jQuery('.alter-menu-wrapper, .body-overlay').addClass('active')});jQuery('.alter-menu-close, .body-overlay').on('click',function(){jQuery('.alter-menu-wrapper, .body-overlay').removeClass('active')})}
|
||||
function simple_sidebar_open(){jQuery('.simple-sidebar-trigger').on('click',function(){if(jQuery(window).width()<992){jQuery('.simple-sidebar, .body-overlay').addClass('active')}});jQuery('.shop-hidden-sidebar-close, .body-overlay').on('click',function(){jQuery('.simple-sidebar, .body-overlay').removeClass('active')})}
|
||||
function widget_list_hierarchy_init(){widget_archives_hierarchy_controller('.widget .wp-block-page-list li','ul.wp-block-navigation__submenu-container','parent-archive','widget-archive-trigger');widget_archives_hierarchy_controller('.widget ul li','ul.children','parent-archive','widget-archive-trigger');widget_archives_hierarchy_controller('.widget_nav_menu .menu li','ul.sub-menu','parent-archive','widget-menu-trigger');widget_archives_hierarchy_controller('.widget_aiero_nav_menu_widget .menu li','ul.sub-menu','parent-archive','widget-menu-trigger')}
|
||||
function widget_list_hierarchy_init(){widget_archives_hierarchy_controller('.widget .wp-block-page-list li','ul.wp-block-navigation__submenu-container','parent-archive','widget-archive-trigger');widget_archives_hierarchy_controller('.widget ul li','ul.children','parent-archive','widget-archive-trigger');widget_archives_hierarchy_controller('.widget_nav_menu .menu li','ul.sub-menu','parent-archive','widget-menu-trigger');widget_archives_hierarchy_controller('.widget_tenext_nav_menu_widget .menu li','ul.sub-menu','parent-archive','widget-menu-trigger')}
|
||||
function widget_archives_hierarchy_controller(list_item_selector,sublist_item_selector,parent_class,trigger_class){jQuery(list_item_selector).has(sublist_item_selector).each(function(){jQuery(this).addClass(parent_class);jQuery(this).append("<span class='"+trigger_class+"'></span>")});jQuery(list_item_selector+">"+sublist_item_selector).css("display","none");jQuery(list_item_selector+">.item-wrapper>"+sublist_item_selector).css("display","none");jQuery(document).on("click",list_item_selector+" ."+trigger_class,function(){var el=jQuery(this);var sublist=el.siblings(sublist_item_selector);var sublist_alt=el.siblings('.item-wrapper').children(sublist_item_selector);if(!sublist.length&&!sublist_alt.length)return;sublist=sublist.first();sublist_alt=sublist_alt.first();if(!el.hasClass('active')){var currentParents=el.parents('.menu-item');el.parents().siblings('.menu-item').find("."+trigger_class).removeClass('active');el.parents().siblings('.menu-item').find('.sub-menu').slideUp(300)}
|
||||
el.toggleClass('active');sublist.slideToggle(300);sublist_alt.slideToggle(300)})}
|
||||
function fix_responsive_iframe(){jQuery('.video-embed > div').each(function(){jQuery(this).unwrap('.video-embed')})}
|
||||
|
||||
@@ -8,17 +8,17 @@ input.val(newVal);input.trigger('change')});btnDown.on('click',function(){if(inp
|
||||
if(oldValue<=min){var newVal=oldValue}else{var newVal=oldValue-1}
|
||||
input.val(newVal);input.trigger('change')})}})}
|
||||
function single_product_thumb_slider(){jQuery('.woocommerce-product-gallery--with-images').find('.flex-control-nav').slick({mobileFirst:!0,prevArrow:'<div class="slick-button slick-prev"></div>',nextArrow:'<div class="slick-button slick-next"></div>',infinite:!1,responsive:[{breakpoint:120,settings:{slidesToShow:3,vertical:!1,verticalSwiping:!1}},{breakpoint:400,settings:{slidesToShow:4,vertical:!1,verticalSwiping:!1}},{breakpoint:576,settings:{slidesToShow:5,vertical:!1,verticalSwiping:!1}},{breakpoint:768,settings:{slidesToShow:4,vertical:!1,verticalSwiping:!1}},{breakpoint:992,settings:{slidesToShow:4,vertical:!0,verticalSwiping:!0}}]})}
|
||||
function initWoocommerceAieroButton(){if(jQuery('#payment #place_order').find('.icon-button-arrow').length<1){jQuery('#payment #place_order').append('<span class="icon-button-arrow"></span>')}
|
||||
function initWoocommercetenextButton(){if(jQuery('#payment #place_order').find('.icon-button-arrow').length<1){jQuery('#payment #place_order').append('<span class="icon-button-arrow"></span>')}
|
||||
if(jQuery('#payment #place_order').find('.button-inner').length<1){jQuery('#payment #place_order').append('<span class="button-inner"></span>')}}
|
||||
jQuery(document).ready(function(){product_filters_open();custom_quantity();setTimeout(single_product_thumb_slider,500);if(jQuery(document.body).hasClass('woocommerce-account')){setTimeout(function(){initFloatPlaceholderInput('.woocommerce form .woocommerce-Input[type="password"][placeholder]:not([placeholder=""])');jQuery('.input-floating-wrap ~ .show-password-input').on('click',function(){if(jQuery(this).hasClass('display-password')){jQuery(this).siblings('.input-floating-wrap').find('input[type="password"]').prop('type','text')}else{jQuery(this).siblings('.input-floating-wrap').find('input[type="text"]').prop('type','password')}})},300)}
|
||||
jQuery('.sidebar .wc-block-grid__product-add-to-cart .add_to_cart_button, .slide-sidebar-wrapper .wc-block-grid__product-add-to-cart .add_to_cart_button, .footer .wc-block-grid__product-add-to-cart .add_to_cart_button').append('<span class="button-inner"></span>');jQuery('.woocommerce-cart-form .actions .button').append('<span class="icon-button-arrow"></span><span class="button-inner"></span>');jQuery(document.body).on('updated_shipping_method',function(){initFloatPlaceholderInput();initWoocommerceAieroButton()});jQuery(document.body).on('updated_wc_div',function(){initFloatPlaceholderInput();initWoocommerceAieroButton();if(jQuery('.woocommerce-cart-form .actions .button').find('.icon-button-arrow').length<1){jQuery('.woocommerce-cart-form .actions .button').append('<span class="icon-button-arrow"></span>')}
|
||||
if(jQuery('.woocommerce-cart-form .actions .button').find('.button-inner').length<1){jQuery('.woocommerce-cart-form .actions .button').append('<span class="button-inner"></span>')}});jQuery(document.body).on('country_to_state_changed',function(){initFloatPlaceholderInput();initWoocommerceAieroButton()});jQuery(document.body).on('init_checkout',function(){initWoocommerceAieroButton()});jQuery(document.body).on('updated_checkout',function(){initFloatPlaceholderInput();initWoocommerceAieroButton()});jQuery(document.body).on('payment_method_selected',function(){initWoocommerceAieroButton()});jQuery('.single-product .single_add_to_cart_button').append('<span class="button-inner"></span>');jQuery('.single-product .added_to_cart').append('<span class="button-inner"></span>');jQuery(document.body).on('wc_cart_button_updated',function(){if(jQuery('.single-product .added_to_cart').find('.button-inner').length<1){jQuery('.single-product .added_to_cart').append('<span class="button-inner"></span>')}})});function is_mobile(){if(window.innerWidth<768){return!0}else{return!1}}
|
||||
jQuery('.sidebar .wc-block-grid__product-add-to-cart .add_to_cart_button, .slide-sidebar-wrapper .wc-block-grid__product-add-to-cart .add_to_cart_button, .footer .wc-block-grid__product-add-to-cart .add_to_cart_button').append('<span class="button-inner"></span>');jQuery('.woocommerce-cart-form .actions .button').append('<span class="icon-button-arrow"></span><span class="button-inner"></span>');jQuery(document.body).on('updated_shipping_method',function(){initFloatPlaceholderInput();initWoocommercetenextButton()});jQuery(document.body).on('updated_wc_div',function(){initFloatPlaceholderInput();initWoocommercetenextButton();if(jQuery('.woocommerce-cart-form .actions .button').find('.icon-button-arrow').length<1){jQuery('.woocommerce-cart-form .actions .button').append('<span class="icon-button-arrow"></span>')}
|
||||
if(jQuery('.woocommerce-cart-form .actions .button').find('.button-inner').length<1){jQuery('.woocommerce-cart-form .actions .button').append('<span class="button-inner"></span>')}});jQuery(document.body).on('country_to_state_changed',function(){initFloatPlaceholderInput();initWoocommercetenextButton()});jQuery(document.body).on('init_checkout',function(){initWoocommercetenextButton()});jQuery(document.body).on('updated_checkout',function(){initFloatPlaceholderInput();initWoocommercetenextButton()});jQuery(document.body).on('payment_method_selected',function(){initWoocommercetenextButton()});jQuery('.single-product .single_add_to_cart_button').append('<span class="button-inner"></span>');jQuery('.single-product .added_to_cart').append('<span class="button-inner"></span>');jQuery(document.body).on('wc_cart_button_updated',function(){if(jQuery('.single-product .added_to_cart').find('.button-inner').length<1){jQuery('.single-product .added_to_cart').append('<span class="button-inner"></span>')}})});function is_mobile(){if(window.innerWidth<768){return!0}else{return!1}}
|
||||
function is_mobile_device(){if(navigator.userAgent.match(/(Android|iPhone|iPod|iPad|Phone|DROID|webOS|BlackBerry|Windows Phone|ZuneWP7|IEMobile|Tablet|Kindle|Playbook|Nexus|Xoom|SM-N900T|GT-N7100|SAMSUNG-SGH-I717|SM-T330NU)/)){return!0}else{return!1}}
|
||||
function not_desktop(){if((window.innerWidth<1367&&is_mobile_device())||window.innerWidth<1200){return!0}else{return!1}}
|
||||
jQuery(document.body).on('updated_cart_totals',function(){custom_quantity()});jQuery('.woocommerce,.woocommerce-page').on('click','.shop-mode-buttons a',function(e){var mode=jQuery(this).hasClass('woocommerce-grid')?'grid':'list';var mode_old=jQuery(this).siblings('input').val();if(mode!=mode_old){jQuery.cookie('shop_mode',mode,{expires:365,path:'/'});jQuery(this).siblings('input').val(mode).parents('form').get(0).submit()}
|
||||
e.preventDefault();return!1});window.addEventListener("load",function(){aiero_ajax_add_to_cart();aiero_trigger_mini_cart()});function aiero_trigger_mini_cart(){var cart=jQuery('.mini-cart-panel');cart.off();if(window.innerWidth>=992){jQuery('.header .mini-cart-trigger').on('click',function(e){e.preventDefault();cart.addClass('active');jQuery('.close-mini-cart').off();aiero_close_mini_cart()})}}
|
||||
function aiero_close_mini_cart(){jQuery('.close-mini-cart').on('click',function(){jQuery('.mini-cart').removeClass('active')})}
|
||||
function aiero_ajax_add_to_cart(){if(typeof wc_add_to_cart_params!=='undefined'){if(jQuery('.single_add_to_cart_button').closest('.product').hasClass('product-type-external')){return}
|
||||
e.preventDefault();return!1});window.addEventListener("load",function(){tenext_ajax_add_to_cart();tenext_trigger_mini_cart()});function tenext_trigger_mini_cart(){var cart=jQuery('.mini-cart-panel');cart.off();if(window.innerWidth>=992){jQuery('.header .mini-cart-trigger').on('click',function(e){e.preventDefault();cart.addClass('active');jQuery('.close-mini-cart').off();tenext_close_mini_cart()})}}
|
||||
function tenext_close_mini_cart(){jQuery('.close-mini-cart').on('click',function(){jQuery('.mini-cart').removeClass('active')})}
|
||||
function tenext_ajax_add_to_cart(){if(typeof wc_add_to_cart_params!=='undefined'){if(jQuery('.single_add_to_cart_button').closest('.product').hasClass('product-type-external')){return}
|
||||
jQuery('.single_add_to_cart_button').off().on('click',function(e){if(!(jQuery(this).hasClass('single_add_to_cart_button')&&wc_add_to_cart_params.cart_redirect_after_add==='yes')){e.preventDefault();var button=jQuery(this);var form=button.closest('form.cart');var product_id=form.find('input[name=add-to-cart]').val()||button.val()||form.find('.variation_id').val();if(!product_id)
|
||||
return;if(button.is('.disabled'))
|
||||
return;var data={action:'aiero_ajax_add_to_cart','add-to-cart':product_id,};form.serializeArray().forEach(function(element){data[element.name]=element.value});jQuery(document.body).trigger('adding_to_cart',[button,data]);jQuery.ajax({type:'POST','url':wc_add_to_cart_params.ajax_url,data:data,beforeSend:function(response){button.removeClass('added').addClass('loading')},complete:function(response){button.addClass('added').removeClass('loading')},success:function(response){if(response.error&response.product_url){window.location=response.product_url;return}else{jQuery(document.body).trigger('added_to_cart',[response.fragments,response.cart_hash,button])}}});return!1}})}}}).call(this,jQuery)
|
||||
return;var data={action:'tenext_ajax_add_to_cart','add-to-cart':product_id,};form.serializeArray().forEach(function(element){data[element.name]=element.value});jQuery(document.body).trigger('adding_to_cart',[button,data]);jQuery.ajax({type:'POST','url':wc_add_to_cart_params.ajax_url,data:data,beforeSend:function(response){button.removeClass('added').addClass('loading')},complete:function(response){button.addClass('added').removeClass('loading')},success:function(response){if(response.error&response.product_url){window.location=response.product_url;return}else{jQuery(document.body).trigger('added_to_cart',[response.fragments,response.cart_hash,button])}}});return!1}})}}}).call(this,jQuery)
|
||||
@@ -1,11 +1,11 @@
|
||||
/*
|
||||
Theme Name: Aiero
|
||||
Theme URI: http://oFF4zrF29WwW.com/themes/aiero/
|
||||
Theme Name: tenext
|
||||
Theme URI: http://oFF4zrF29WwW.com/themes/tenext/
|
||||
Author: Artureanec
|
||||
Author URI: https://oFF4zrF29WwW.com/
|
||||
Description: Meet WordPress Theme by Artureanec - really amazing, powerful, clean and ultramodern product, that created with love and attention to details. We know it's difficult to represent yourself on the web in the right way, that's why we spent a lot of time trying to make our Theme more effective. It's flexible, easy customizable, high-quality and really easy to use! So everyone can make awesome website with it. Hope you'll like it. Enjoy!
|
||||
Version: 2.0
|
||||
License: GNU General Public License version 3.0
|
||||
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
||||
Text Domain: aiero
|
||||
Text Domain: tenext
|
||||
*/
|
||||
|
||||