removed seezuns
This commit is contained in:
@@ -32,7 +32,7 @@ import { Input } from "../components/ui/input";
|
||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../components/ui/select";
|
||||
import ambleCase from "../src/images/amble-case.webp";
|
||||
import ranoutofCase from "../src/images/ranoutof-case.webp";
|
||||
import seezunCase from "../src/images/seezun-case.webp";
|
||||
// import seezunCase from "../src/images/seezun-case.webp";
|
||||
import tcCase from "../src/images/tc-case.webp";
|
||||
import wokaCase from "../src/images/woka-case.webp";
|
||||
import gtCase from "../src/images/gt-case.webp";
|
||||
@@ -59,16 +59,16 @@ const caseStudies = [
|
||||
link: "/projects/ranoutof",
|
||||
icon: Package
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
title: "Seezun",
|
||||
image: seezunCase,
|
||||
category: "E-commerce",
|
||||
industry: "Retail",
|
||||
featured: true,
|
||||
link: "/projects/seezun",
|
||||
icon: ShoppingCart
|
||||
},
|
||||
// {
|
||||
// id: 2,
|
||||
// title: "Seezun",
|
||||
// image: seezunCase,
|
||||
// category: "E-commerce",
|
||||
// industry: "Retail",
|
||||
// featured: true,
|
||||
// link: "/projects/seezun",
|
||||
// icon: ShoppingCart
|
||||
// },
|
||||
{
|
||||
id: 3,
|
||||
title: "Woka",
|
||||
@@ -234,7 +234,7 @@ export const CaseStudies = () => {
|
||||
const navigate = useNavigate();
|
||||
|
||||
return (
|
||||
<div className="dark min-h-screen bg-background">
|
||||
<div className="min-h-screen dark bg-background">
|
||||
{/* <Navigation /> */}
|
||||
|
||||
{/* Hero Section */}
|
||||
@@ -292,17 +292,17 @@ export const CaseStudies = () => {
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
className="relative container mx-auto px-6 lg:px-8"
|
||||
className="container relative px-6 mx-auto lg:px-8"
|
||||
>
|
||||
<div className="max-w-4xl mx-auto text-center">
|
||||
<Badge variant="outline" className="mb-6 border-accent/20 text-accent">
|
||||
Our Success Stories
|
||||
</Badge>
|
||||
<h1 className="text-4xl md:text-6xl lg:text-7xl font-semibold leading-tight mb-6">
|
||||
<h1 className="mb-6 text-4xl font-semibold leading-tight md:text-6xl lg:text-7xl">
|
||||
<span className="text-white">Portfolios That </span>
|
||||
<span className="text-accent">Define Excellence</span>
|
||||
</h1>
|
||||
<p className="text-xl text-gray-300 leading-relaxed max-w-3xl mx-auto">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-gray-300">
|
||||
Explore our portfolio of award-winning projects that have transformed businesses and delighted millions of users across diverse industries.
|
||||
</p>
|
||||
</div>
|
||||
@@ -310,18 +310,18 @@ export const CaseStudies = () => {
|
||||
</section>
|
||||
|
||||
{/* Filters Section */}
|
||||
<section className="py-12 bg-background border-b border-white/10">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<section className="py-12 border-b bg-background border-white/10">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 20 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.6, delay: 0.2 }}
|
||||
className="max-w-6xl mx-auto"
|
||||
>
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 items-end">
|
||||
<div className="grid items-end grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-4">
|
||||
{/* Search */}
|
||||
<div className="relative">
|
||||
<Search className="absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground w-4 h-4" />
|
||||
<Search className="absolute w-4 h-4 transform -translate-y-1/2 left-3 top-1/2 text-muted-foreground" />
|
||||
<Input
|
||||
placeholder="Search portfolios..."
|
||||
value={searchTerm}
|
||||
@@ -381,9 +381,9 @@ export const CaseStudies = () => {
|
||||
|
||||
{/* Case Studies Grid */}
|
||||
<section className="py-20 bg-background">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="max-w-7xl mx-auto">
|
||||
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<div className="mx-auto max-w-7xl">
|
||||
<div className="grid gap-8 md:grid-cols-2 lg:grid-cols-3">
|
||||
{filteredCaseStudies.map((study, index) => {
|
||||
const IconComponent = study.icon;
|
||||
return (
|
||||
@@ -394,28 +394,28 @@ export const CaseStudies = () => {
|
||||
transition={{ duration: 0.6, delay: index * 0.01 }}
|
||||
viewport={{ once: true }}
|
||||
whileHover={{ y: -8, scale: 1.02 }}
|
||||
className="group cursor-pointer"
|
||||
className="cursor-pointer group"
|
||||
onClick={() => navigate(study.link)}
|
||||
>
|
||||
<Card className="bg-card/50 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-500 shadow-lg hover:shadow-2xl hover:shadow-accent/10 rounded-2xl overflow-hidden h-full"
|
||||
<Card className="h-full overflow-hidden transition-all duration-500 shadow-lg bg-card/50 backdrop-blur-md border-white/10 hover:border-accent/30 hover:shadow-2xl hover:shadow-accent/10 rounded-2xl"
|
||||
onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
navigate(study.link);
|
||||
}}
|
||||
>
|
||||
<CardContent className="CardContentOverride p-0 pb-0 h-full">
|
||||
<CardContent className="h-full p-0 pb-0 CardContentOverride">
|
||||
{/* Image Header */}
|
||||
<div className="relative overflow-hidden">
|
||||
<ImageWithFallback
|
||||
src={study.image}
|
||||
alt={study.title}
|
||||
className="w-full h-full object-cover transition-transform duration-500 group-hover:scale-110"
|
||||
className="object-cover w-full h-full transition-transform duration-500 group-hover:scale-110"
|
||||
/>
|
||||
<div className="absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent" />
|
||||
|
||||
{/* Category Badge */}
|
||||
<div className="absolute top-2 left-4">
|
||||
<Badge className="bg-accent/90 text-white border-0">
|
||||
<Badge className="text-white border-0 bg-accent/90">
|
||||
{study.category}
|
||||
</Badge>
|
||||
</div>
|
||||
@@ -423,7 +423,7 @@ export const CaseStudies = () => {
|
||||
{/* Featured Badge */}
|
||||
{study.featured && (
|
||||
<div className="absolute top-2 right-4">
|
||||
<div className="bg-amber-500/90 text-white px-3 py-1 rounded-full text-xs font-medium flex items-center gap-1">
|
||||
<div className="flex items-center gap-1 px-3 py-1 text-xs font-medium text-white rounded-full bg-amber-500/90">
|
||||
<Star className="w-3 h-3 fill-current" />
|
||||
Featured
|
||||
</div>
|
||||
@@ -432,7 +432,7 @@ export const CaseStudies = () => {
|
||||
|
||||
{/* Icon Overlay */}
|
||||
<div className="absolute bottom-4 left-4">
|
||||
<div className="w-12 h-12 bg-white/20 backdrop-blur-md rounded-full flex items-center justify-center">
|
||||
<div className="flex items-center justify-center w-12 h-12 rounded-full bg-white/20 backdrop-blur-md">
|
||||
<IconComponent className="w-6 h-6 text-white" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -449,24 +449,24 @@ export const CaseStudies = () => {
|
||||
|
||||
{/* CTA Section */}
|
||||
<section className="py-20 bg-black">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center max-w-4xl mx-auto"
|
||||
className="max-w-4xl mx-auto text-center"
|
||||
>
|
||||
<h2 className="text-3xl lg:text-4xl font-semibold text-white mb-6">
|
||||
<h2 className="mb-6 text-3xl font-semibold text-white lg:text-4xl">
|
||||
Ready to Create Your Own Success Story?
|
||||
</h2>
|
||||
<p className="text-xl text-gray-300 leading-relaxed mb-8">
|
||||
<p className="mb-8 text-xl leading-relaxed text-gray-300">
|
||||
Join the ranks of industry leaders who have transformed their businesses with our innovative solutions.
|
||||
</p>
|
||||
<div className="flex flex-col sm:flex-row gap-4 justify-center">
|
||||
<div className="flex flex-col justify-center gap-4 sm:flex-row">
|
||||
<Button
|
||||
size="lg"
|
||||
className="bg-accent hover:bg-accent/90 text-white"
|
||||
className="text-white bg-accent hover:bg-accent/90"
|
||||
onClick={() => navigate("/start-a-project")}
|
||||
>
|
||||
Start Your Project
|
||||
|
||||
@@ -44,7 +44,7 @@ import {
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import { Helmet } from "react-helmet-async";
|
||||
import ranoutofImage from "../src/images/ranoutof.webp"
|
||||
import seezunImage from "../src/images/seezun.webp";
|
||||
// import seezunImage from "../src/images/seezun.webp";
|
||||
import regroupImage from "../src/images/regroup.webp";
|
||||
import awsLogoImage from "../src/images/aws-logo.png";
|
||||
|
||||
@@ -100,7 +100,7 @@ const CrossPlatformHeroWithCTA = () => {
|
||||
`}
|
||||
</script>
|
||||
</Helmet>
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<div className="grid lg:grid-cols-2 gap-16 items-center min-h-[90vh]">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, x: -50 }}
|
||||
@@ -114,18 +114,18 @@ const CrossPlatformHeroWithCTA = () => {
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.6 }}
|
||||
>
|
||||
<span className="text-white/70 text-sm font-medium">
|
||||
<span className="text-sm font-medium text-white/70">
|
||||
Cross-Platform App Development
|
||||
</span>
|
||||
</motion.div>
|
||||
|
||||
{/* Main Heading */}
|
||||
<div className="space-y-6">
|
||||
<h1 className="text-4xl md:text-5xl lg:text-6xl font-semibold text-white leading-tight">
|
||||
<h1 className="text-4xl font-semibold leading-tight text-white md:text-5xl lg:text-6xl">
|
||||
Efficient Cross-Platform App Development
|
||||
</h1>
|
||||
|
||||
<p className="text-lg text-gray-300 leading-relaxed max-w-lg">
|
||||
<p className="max-w-lg text-lg leading-relaxed text-gray-300">
|
||||
Develop high-quality mobile apps that run seamlessly on iOS and
|
||||
Android from a single codebase, saving time and resources.
|
||||
</p>
|
||||
@@ -136,22 +136,22 @@ const CrossPlatformHeroWithCTA = () => {
|
||||
initial={{ opacity: 0, y: 20 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.3 }}
|
||||
className="flex flex-col sm:flex-row gap-4"
|
||||
className="flex flex-col gap-4 sm:flex-row"
|
||||
>
|
||||
<ShimmerButton
|
||||
className="text-lg px-8 py-4"
|
||||
className="px-8 py-4 text-lg"
|
||||
onClick={() => navigate("/start-a-project")}
|
||||
>
|
||||
<div className="inline-flex items-center gap-2">
|
||||
<Share2 className="w-5 h-5 flex-shrink-0" />
|
||||
<Share2 className="flex-shrink-0 w-5 h-5" />
|
||||
<span>Discover Cross-Platform Benefits</span>
|
||||
</div>
|
||||
</ShimmerButton>
|
||||
<a
|
||||
href="#quote"
|
||||
className="inline-flex items-center justify-center gap-2 rounded-md bg-gray-800 px-8 py-4 text-lg font-medium text-white transition hover:bg-gray-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 whitespace-nowrap"
|
||||
className="inline-flex items-center justify-center gap-2 px-8 py-4 text-lg font-medium text-white transition bg-gray-800 rounded-md hover:bg-gray-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 whitespace-nowrap"
|
||||
>
|
||||
<MessageSquare className="w-4 h-4 flex-shrink-0" />
|
||||
<MessageSquare className="flex-shrink-0 w-4 h-4" />
|
||||
<span>Request a Quote</span>
|
||||
</a>
|
||||
</motion.div>
|
||||
@@ -175,20 +175,20 @@ const CrossPlatformHeroWithCTA = () => {
|
||||
{/* Overlapping iOS and Android phones */}
|
||||
<div className="relative">
|
||||
{/* iOS-style phone (left) */}
|
||||
<div className="absolute -left-8 top-4 w-44 h-64 bg-gradient-to-br from-gray-800 to-gray-900 rounded-3xl border border-gray-700 shadow-2xl transform -rotate-6">
|
||||
<div className="w-full h-8 bg-gray-700 rounded-t-3xl flex items-center justify-center">
|
||||
<div className="absolute h-64 transform border border-gray-700 shadow-2xl -left-8 top-4 w-44 bg-gradient-to-br from-gray-800 to-gray-900 rounded-3xl -rotate-6">
|
||||
<div className="flex items-center justify-center w-full h-8 bg-gray-700 rounded-t-3xl">
|
||||
<div className="w-12 h-1 bg-gray-600 rounded-full"></div>
|
||||
</div>
|
||||
<div className="p-4 space-y-3">
|
||||
<div className="h-3 bg-accent rounded"></div>
|
||||
<div className="h-2 bg-gray-600 rounded w-4/5"></div>
|
||||
<div className="h-2 bg-gray-600 rounded w-3/5"></div>
|
||||
<div className="h-3 rounded bg-accent"></div>
|
||||
<div className="w-4/5 h-2 bg-gray-600 rounded"></div>
|
||||
<div className="w-3/5 h-2 bg-gray-600 rounded"></div>
|
||||
<div className="grid grid-cols-2 gap-2 mt-4">
|
||||
<div className="h-8 bg-gray-700 rounded-lg"></div>
|
||||
<div className="h-8 bg-gray-700 rounded-lg"></div>
|
||||
</div>
|
||||
<div className="h-12 bg-blue-500/20 rounded-lg mt-4 flex items-center justify-center">
|
||||
<span className="text-xs text-blue-400 font-medium">
|
||||
<div className="flex items-center justify-center h-12 mt-4 rounded-lg bg-blue-500/20">
|
||||
<span className="text-xs font-medium text-blue-400">
|
||||
iOS
|
||||
</span>
|
||||
</div>
|
||||
@@ -196,20 +196,20 @@ const CrossPlatformHeroWithCTA = () => {
|
||||
</div>
|
||||
|
||||
{/* Android-style phone (right) */}
|
||||
<div className="absolute right-8 top-8 w-44 h-64 bg-gradient-to-br from-gray-800 to-gray-900 rounded-3xl border border-gray-700 shadow-2xl transform rotate-6">
|
||||
<div className="w-full h-8 bg-gray-700 rounded-t-3xl flex items-center justify-center">
|
||||
<div className="absolute h-64 transform border border-gray-700 shadow-2xl right-8 top-8 w-44 bg-gradient-to-br from-gray-800 to-gray-900 rounded-3xl rotate-6">
|
||||
<div className="flex items-center justify-center w-full h-8 bg-gray-700 rounded-t-3xl">
|
||||
<div className="w-12 h-1 bg-gray-600 rounded-full"></div>
|
||||
</div>
|
||||
<div className="p-4 space-y-3">
|
||||
<div className="h-3 bg-accent rounded"></div>
|
||||
<div className="h-2 bg-gray-600 rounded w-4/5"></div>
|
||||
<div className="h-2 bg-gray-600 rounded w-3/5"></div>
|
||||
<div className="h-3 rounded bg-accent"></div>
|
||||
<div className="w-4/5 h-2 bg-gray-600 rounded"></div>
|
||||
<div className="w-3/5 h-2 bg-gray-600 rounded"></div>
|
||||
<div className="grid grid-cols-2 gap-2 mt-4">
|
||||
<div className="h-8 bg-gray-700 rounded-lg"></div>
|
||||
<div className="h-8 bg-gray-700 rounded-lg"></div>
|
||||
</div>
|
||||
<div className="h-12 bg-green-500/20 rounded-lg mt-4 flex items-center justify-center">
|
||||
<span className="text-xs text-green-400 font-medium">
|
||||
<div className="flex items-center justify-center h-12 mt-4 rounded-lg bg-green-500/20">
|
||||
<span className="text-xs font-medium text-green-400">
|
||||
Android
|
||||
</span>
|
||||
</div>
|
||||
@@ -217,7 +217,7 @@ const CrossPlatformHeroWithCTA = () => {
|
||||
</div>
|
||||
|
||||
{/* Central connection indicator */}
|
||||
<div className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 w-16 h-16 bg-accent/20 rounded-full border-2 border-accent/30 flex items-center justify-center backdrop-blur-sm">
|
||||
<div className="absolute flex items-center justify-center w-16 h-16 transform -translate-x-1/2 -translate-y-1/2 border-2 rounded-full top-1/2 left-1/2 bg-accent/20 border-accent/30 backdrop-blur-sm">
|
||||
<GitMerge className="w-8 h-8 text-accent" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -228,11 +228,11 @@ const CrossPlatformHeroWithCTA = () => {
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.6 }}
|
||||
className="flex justify-center gap-4 flex-wrap"
|
||||
className="flex flex-wrap justify-center gap-4"
|
||||
>
|
||||
<Badge
|
||||
variant="secondary"
|
||||
className="bg-blue-500/20 text-blue-300 border-blue-500/30"
|
||||
className="text-blue-300 bg-blue-500/20 border-blue-500/30"
|
||||
>
|
||||
Flutter
|
||||
</Badge>
|
||||
@@ -244,7 +244,7 @@ const CrossPlatformHeroWithCTA = () => {
|
||||
</Badge>
|
||||
<Badge
|
||||
variant="secondary"
|
||||
className="bg-purple-500/20 text-purple-300 border-purple-500/30"
|
||||
className="text-purple-300 bg-purple-500/20 border-purple-500/30"
|
||||
>
|
||||
Single Codebase
|
||||
</Badge>
|
||||
@@ -294,18 +294,18 @@ const CrossPlatformBenefits = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-16"
|
||||
className="mb-16 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-foreground mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold lg:text-5xl text-foreground">
|
||||
Advantages of Choosing Cross-Platform
|
||||
</h2>
|
||||
<p className="text-xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-muted-foreground">
|
||||
Cross-platform development offers unparalleled efficiency and reach
|
||||
for businesses looking to maximize their mobile app impact.
|
||||
</p>
|
||||
@@ -316,7 +316,7 @@ const CrossPlatformBenefits = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.2 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid md:grid-cols-2 lg:grid-cols-3 gap-8 max-w-6xl mx-auto"
|
||||
className="grid max-w-6xl gap-8 mx-auto md:grid-cols-2 lg:grid-cols-3"
|
||||
>
|
||||
{benefits.slice(0, 3).map((benefit, index) => {
|
||||
const IconComponent = benefit.icon;
|
||||
@@ -330,15 +330,15 @@ const CrossPlatformBenefits = () => {
|
||||
whileHover={{ y: -5 }}
|
||||
className="group"
|
||||
>
|
||||
<Card className="bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl h-full">
|
||||
<Card className="h-full transition-all duration-300 shadow-lg bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="p-8 text-center">
|
||||
<div className="w-16 h-16 bg-accent/20 rounded-2xl flex items-center justify-center mx-auto mb-6">
|
||||
<div className="flex items-center justify-center w-16 h-16 mx-auto mb-6 bg-accent/20 rounded-2xl">
|
||||
<IconComponent className="w-8 h-8 text-accent" />
|
||||
</div>
|
||||
<h3 className="text-xl font-semibold text-foreground mb-4">
|
||||
<h3 className="mb-4 text-xl font-semibold text-foreground">
|
||||
{benefit.title}
|
||||
</h3>
|
||||
<p className="text-muted-foreground leading-relaxed">
|
||||
<p className="leading-relaxed text-muted-foreground">
|
||||
{benefit.description}
|
||||
</p>
|
||||
</CardContent>
|
||||
@@ -354,7 +354,7 @@ const CrossPlatformBenefits = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.4 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid md:grid-cols-2 gap-8 max-w-4xl mx-auto mt-8"
|
||||
className="grid max-w-4xl gap-8 mx-auto mt-8 md:grid-cols-2"
|
||||
>
|
||||
{benefits.slice(3).map((benefit, index) => {
|
||||
const IconComponent = benefit.icon;
|
||||
@@ -368,15 +368,15 @@ const CrossPlatformBenefits = () => {
|
||||
whileHover={{ y: -5 }}
|
||||
className="group"
|
||||
>
|
||||
<Card className="bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl h-full">
|
||||
<Card className="h-full transition-all duration-300 shadow-lg bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="p-8 text-center">
|
||||
<div className="w-16 h-16 bg-accent/20 rounded-2xl flex items-center justify-center mx-auto mb-6">
|
||||
<div className="flex items-center justify-center w-16 h-16 mx-auto mb-6 bg-accent/20 rounded-2xl">
|
||||
<IconComponent className="w-8 h-8 text-accent" />
|
||||
</div>
|
||||
<h3 className="text-xl font-semibold text-foreground mb-4">
|
||||
<h3 className="mb-4 text-xl font-semibold text-foreground">
|
||||
{benefit.title}
|
||||
</h3>
|
||||
<p className="text-muted-foreground leading-relaxed">
|
||||
<p className="leading-relaxed text-muted-foreground">
|
||||
{benefit.description}
|
||||
</p>
|
||||
</CardContent>
|
||||
@@ -394,18 +394,18 @@ const CrossPlatformBenefits = () => {
|
||||
const CrossPlatformTechnologies = () => {
|
||||
return (
|
||||
<section className="py-32 bg-black">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-white mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold text-white lg:text-5xl">
|
||||
Leading Cross-Platform Frameworks We Utilize
|
||||
</h2>
|
||||
<p className="text-xl text-gray-300 max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-gray-300">
|
||||
We leverage the most powerful and mature cross-platform frameworks
|
||||
to deliver exceptional mobile experiences.
|
||||
</p>
|
||||
@@ -418,22 +418,22 @@ const CrossPlatformTechnologies = () => {
|
||||
viewport={{ once: true }}
|
||||
>
|
||||
<Tabs defaultValue="flutter" className="max-w-6xl mx-auto">
|
||||
<TabsList className="grid w-full grid-cols-2 mb-12 bg-gray-900/50 border border-gray-800 h-17">
|
||||
<TabsTrigger value="flutter" className="text-base py-4 h-full">
|
||||
<TabsList className="grid w-full grid-cols-2 mb-12 border border-gray-800 bg-gray-900/50 h-17">
|
||||
<TabsTrigger value="flutter" className="h-full py-4 text-base">
|
||||
<div className="flex items-center gap-2">
|
||||
<div className="w-6 h-6 bg-blue-500 rounded flex items-center justify-center">
|
||||
<span className="text-white text-xs font-bold">F</span>
|
||||
<div className="flex items-center justify-center w-6 h-6 bg-blue-500 rounded">
|
||||
<span className="text-xs font-bold text-white">F</span>
|
||||
</div>
|
||||
Flutter Development
|
||||
</div>
|
||||
</TabsTrigger>
|
||||
<TabsTrigger
|
||||
value="react-native"
|
||||
className="text-base py-4 h-full"
|
||||
className="h-full py-4 text-base"
|
||||
>
|
||||
<div className="flex items-center gap-2">
|
||||
<div className="w-6 h-6 bg-cyan-500 rounded flex items-center justify-center">
|
||||
<span className="text-white text-xs font-bold">RN</span>
|
||||
<div className="flex items-center justify-center w-6 h-6 rounded bg-cyan-500">
|
||||
<span className="text-xs font-bold text-white">RN</span>
|
||||
</div>
|
||||
React Native Development
|
||||
</div>
|
||||
@@ -441,13 +441,13 @@ const CrossPlatformTechnologies = () => {
|
||||
</TabsList>
|
||||
|
||||
<TabsContent value="flutter" className="mt-0">
|
||||
<div className="grid lg:grid-cols-2 gap-16 items-center">
|
||||
<div className="grid items-center gap-16 lg:grid-cols-2">
|
||||
<div className="space-y-8">
|
||||
<div className="space-y-6">
|
||||
<div className="flex items-center gap-4">
|
||||
<div className="w-16 h-16 bg-blue-500/20 rounded-2xl flex items-center justify-center">
|
||||
<div className="w-8 h-8 bg-blue-500 rounded flex items-center justify-center">
|
||||
<span className="text-white font-bold">F</span>
|
||||
<div className="flex items-center justify-center w-16 h-16 bg-blue-500/20 rounded-2xl">
|
||||
<div className="flex items-center justify-center w-8 h-8 bg-blue-500 rounded">
|
||||
<span className="font-bold text-white">F</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
@@ -460,7 +460,7 @@ const CrossPlatformTechnologies = () => {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p className="text-gray-300 leading-relaxed">
|
||||
<p className="leading-relaxed text-gray-300">
|
||||
Known for expressive UIs and hot-reload functionality that
|
||||
accelerates development cycles. Flutter allows for
|
||||
pixel-perfect designs and smooth animations across
|
||||
@@ -484,7 +484,7 @@ const CrossPlatformTechnologies = () => {
|
||||
key={index}
|
||||
className="flex items-center gap-3 text-gray-300"
|
||||
>
|
||||
<CheckCircle className="w-5 h-5 text-blue-500 flex-shrink-0" />
|
||||
<CheckCircle className="flex-shrink-0 w-5 h-5 text-blue-500" />
|
||||
{benefit}
|
||||
</li>
|
||||
))}
|
||||
@@ -492,10 +492,10 @@ const CrossPlatformTechnologies = () => {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="bg-gray-900/50 backdrop-blur-md rounded-2xl border border-gray-800 p-8">
|
||||
<div className="p-8 border border-gray-800 bg-gray-900/50 backdrop-blur-md rounded-2xl">
|
||||
<div className="space-y-6">
|
||||
<div className="flex items-center gap-4 mb-6">
|
||||
<div className="w-12 h-12 bg-blue-500/20 rounded-xl flex items-center justify-center">
|
||||
<div className="flex items-center justify-center w-12 h-12 bg-blue-500/20 rounded-xl">
|
||||
<Code className="w-6 h-6 text-blue-500" />
|
||||
</div>
|
||||
<h4 className="text-lg font-semibold text-white">
|
||||
@@ -514,9 +514,9 @@ const CrossPlatformTechnologies = () => {
|
||||
].map((tech, index) => (
|
||||
<div
|
||||
key={index}
|
||||
className="bg-gray-800/50 rounded-lg p-3 text-center"
|
||||
className="p-3 text-center rounded-lg bg-gray-800/50"
|
||||
>
|
||||
<span className="text-gray-300 text-sm">{tech}</span>
|
||||
<span className="text-sm text-gray-300">{tech}</span>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
@@ -526,13 +526,13 @@ const CrossPlatformTechnologies = () => {
|
||||
</TabsContent>
|
||||
|
||||
<TabsContent value="react-native" className="mt-0">
|
||||
<div className="grid lg:grid-cols-2 gap-16 items-center">
|
||||
<div className="grid items-center gap-16 lg:grid-cols-2">
|
||||
<div className="space-y-8">
|
||||
<div className="space-y-6">
|
||||
<div className="flex items-center gap-4">
|
||||
<div className="w-16 h-16 bg-cyan-500/20 rounded-2xl flex items-center justify-center">
|
||||
<div className="w-8 h-8 bg-cyan-500 rounded flex items-center justify-center">
|
||||
<span className="text-white font-bold">RN</span>
|
||||
<div className="flex items-center justify-center w-16 h-16 bg-cyan-500/20 rounded-2xl">
|
||||
<div className="flex items-center justify-center w-8 h-8 rounded bg-cyan-500">
|
||||
<span className="font-bold text-white">RN</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
@@ -545,7 +545,7 @@ const CrossPlatformTechnologies = () => {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p className="text-gray-300 leading-relaxed">
|
||||
<p className="leading-relaxed text-gray-300">
|
||||
Uses JavaScript and React paradigms to create truly native
|
||||
mobile applications. Leverages existing web development
|
||||
skills for mobile app creation.
|
||||
@@ -568,7 +568,7 @@ const CrossPlatformTechnologies = () => {
|
||||
key={index}
|
||||
className="flex items-center gap-3 text-gray-300"
|
||||
>
|
||||
<CheckCircle className="w-5 h-5 text-cyan-500 flex-shrink-0" />
|
||||
<CheckCircle className="flex-shrink-0 w-5 h-5 text-cyan-500" />
|
||||
{benefit}
|
||||
</li>
|
||||
))}
|
||||
@@ -576,10 +576,10 @@ const CrossPlatformTechnologies = () => {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="bg-gray-900/50 backdrop-blur-md rounded-2xl border border-gray-800 p-8">
|
||||
<div className="p-8 border border-gray-800 bg-gray-900/50 backdrop-blur-md rounded-2xl">
|
||||
<div className="space-y-6">
|
||||
<div className="flex items-center gap-4 mb-6">
|
||||
<div className="w-12 h-12 bg-cyan-500/20 rounded-xl flex items-center justify-center">
|
||||
<div className="flex items-center justify-center w-12 h-12 bg-cyan-500/20 rounded-xl">
|
||||
<Code className="w-6 h-6 text-cyan-500" />
|
||||
</div>
|
||||
<h4 className="text-lg font-semibold text-white">
|
||||
@@ -598,9 +598,9 @@ const CrossPlatformTechnologies = () => {
|
||||
].map((tech, index) => (
|
||||
<div
|
||||
key={index}
|
||||
className="bg-gray-800/50 rounded-lg p-3 text-center"
|
||||
className="p-3 text-center rounded-lg bg-gray-800/50"
|
||||
>
|
||||
<span className="text-gray-300 text-sm">{tech}</span>
|
||||
<span className="text-sm text-gray-300">{tech}</span>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
@@ -652,18 +652,18 @@ const CrossPlatformProcess = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-foreground mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold lg:text-5xl text-foreground">
|
||||
Streamlined Process for Cross-Platform Success
|
||||
</h2>
|
||||
<p className="text-xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-muted-foreground">
|
||||
Our proven methodology ensures efficient development and deployment
|
||||
across multiple platforms.
|
||||
</p>
|
||||
@@ -692,26 +692,26 @@ const CrossPlatformProcess = () => {
|
||||
className={`flex-1 ${isEven ? "lg:text-right" : "lg:text-left"
|
||||
} text-center lg:text-left`}
|
||||
>
|
||||
<div className="bg-card/20 backdrop-blur-md rounded-2xl border border-white/10 p-8 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl">
|
||||
<div className="flex items-center gap-4 mb-4 justify-center lg:justify-start">
|
||||
<div className="w-12 h-12 bg-accent/20 rounded-xl flex items-center justify-center">
|
||||
<div className="p-8 transition-all duration-300 border shadow-lg bg-card/20 backdrop-blur-md rounded-2xl border-white/10 hover:border-accent/30 hover:shadow-xl">
|
||||
<div className="flex items-center justify-center gap-4 mb-4 lg:justify-start">
|
||||
<div className="flex items-center justify-center w-12 h-12 bg-accent/20 rounded-xl">
|
||||
<IconComponent className="w-6 h-6 text-accent" />
|
||||
</div>
|
||||
<div className="text-2xl font-bold text-accent">
|
||||
0{index + 1}
|
||||
</div>
|
||||
</div>
|
||||
<h3 className="text-2xl font-semibold text-foreground mb-4">
|
||||
<h3 className="mb-4 text-2xl font-semibold text-foreground">
|
||||
{step.title}
|
||||
</h3>
|
||||
<p className="text-muted-foreground leading-relaxed">
|
||||
<p className="leading-relaxed text-muted-foreground">
|
||||
{step.description}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Timeline dot */}
|
||||
<div className="w-4 h-4 bg-accent rounded-full border-4 border-background z-10 hidden lg:block"></div>
|
||||
<div className="z-10 hidden w-4 h-4 border-4 rounded-full bg-accent border-background lg:block"></div>
|
||||
|
||||
<div className="flex-1 hidden lg:block"></div>
|
||||
</motion.div>
|
||||
@@ -767,18 +767,18 @@ const CrossPlatformServices = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32 bg-black">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-white mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold text-white lg:text-5xl">
|
||||
Our Comprehensive Cross-Platform Solutions
|
||||
</h2>
|
||||
<p className="text-xl text-gray-300 max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-gray-300">
|
||||
From new development to migration and ongoing support, we provide
|
||||
end-to-end cross-platform services.
|
||||
</p>
|
||||
@@ -789,7 +789,7 @@ const CrossPlatformServices = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.2 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid md:grid-cols-2 lg:grid-cols-3 gap-8"
|
||||
className="grid gap-8 md:grid-cols-2 lg:grid-cols-3"
|
||||
>
|
||||
{services.map((service, index) => {
|
||||
const IconComponent = service.icon;
|
||||
@@ -803,15 +803,15 @@ const CrossPlatformServices = () => {
|
||||
whileHover={{ y: -5 }}
|
||||
className="group"
|
||||
>
|
||||
<Card className="bg-gray-900/50 backdrop-blur-md border-gray-800 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl h-full">
|
||||
<Card className="h-full transition-all duration-300 border-gray-800 shadow-lg bg-gray-900/50 backdrop-blur-md hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="p-8">
|
||||
<div className="w-12 h-12 bg-accent/20 rounded-lg flex items-center justify-center mb-6">
|
||||
<div className="flex items-center justify-center w-12 h-12 mb-6 rounded-lg bg-accent/20">
|
||||
<IconComponent className="w-6 h-6 text-accent" />
|
||||
</div>
|
||||
<h3 className="text-xl font-semibold text-white mb-4">
|
||||
<h3 className="mb-4 text-xl font-semibold text-white">
|
||||
{service.title}
|
||||
</h3>
|
||||
<p className="text-gray-300 leading-relaxed">
|
||||
<p className="leading-relaxed text-gray-300">
|
||||
{service.description}
|
||||
</p>
|
||||
</CardContent>
|
||||
@@ -839,16 +839,16 @@ const CrossPlatformCaseStudies = () => {
|
||||
gradient: "from-[#007F33]/20 to-[#007F33]/10",
|
||||
buttonLink: "/projects/ranoutof",
|
||||
},
|
||||
{
|
||||
title: "E-commerce Platform Innovation",
|
||||
client: "Seezun",
|
||||
description:
|
||||
"Next-generation e-commerce solution with AI-powered recommendations, seamless checkout, and advanced analytics for modern retailers.",
|
||||
image: seezunImage,
|
||||
results: "800K+ users",
|
||||
gradient: "from-blue-500/20 to-cyan-500/20",
|
||||
buttonLink: "/projects/seezun",
|
||||
},
|
||||
// {
|
||||
// title: "E-commerce Platform Innovation",
|
||||
// client: "Seezun",
|
||||
// description:
|
||||
// "Next-generation e-commerce solution with AI-powered recommendations, seamless checkout, and advanced analytics for modern retailers.",
|
||||
// image: seezunImage,
|
||||
// results: "800K+ users",
|
||||
// gradient: "from-blue-500/20 to-cyan-500/20",
|
||||
// buttonLink: "/projects/seezun",
|
||||
// },
|
||||
{
|
||||
title: "Social Networking Platform",
|
||||
client: "Regroup",
|
||||
@@ -863,18 +863,18 @@ const CrossPlatformCaseStudies = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-foreground mb-8">
|
||||
<h2 className="mb-8 text-4xl font-semibold lg:text-5xl text-foreground">
|
||||
Android Apps That Define Industries
|
||||
</h2>
|
||||
<p className="text-xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-muted-foreground">
|
||||
Discover how we've helped businesses succeed with powerful Android
|
||||
applications that leverage the platform's capabilities.
|
||||
</p>
|
||||
@@ -885,7 +885,7 @@ const CrossPlatformCaseStudies = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.2 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid md:grid-cols-2 lg:grid-cols-3 gap-8"
|
||||
className="grid gap-8 md:grid-cols-2 lg:grid-cols-3"
|
||||
>
|
||||
{caseStudies.map((study, index) => (
|
||||
<motion.div
|
||||
@@ -895,13 +895,13 @@ const CrossPlatformCaseStudies = () => {
|
||||
transition={{ duration: 0.5, delay: index * 0.01 }}
|
||||
viewport={{ once: true }}
|
||||
whileHover={{ y: -8, scale: 1.02 }}
|
||||
className="group cursor-pointer"
|
||||
className="cursor-pointer group"
|
||||
>
|
||||
<Card className="bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl overflow-hidden h-full">
|
||||
<CardContent className="p-0 flex flex-col h-full">
|
||||
<Card className="h-full overflow-hidden transition-all duration-300 shadow-lg bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="flex flex-col h-full p-0">
|
||||
<div className="p-8 pb-6">
|
||||
<div className="flex items-start gap-4 mb-6">
|
||||
<div className="w-12 h-12 bg-accent/20 rounded-xl flex items-center justify-center">
|
||||
<div className="flex items-center justify-center w-12 h-12 bg-accent/20 rounded-xl">
|
||||
<svg
|
||||
className="w-6 h-6 text-accent"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -911,7 +911,7 @@ const CrossPlatformCaseStudies = () => {
|
||||
</svg>
|
||||
</div>
|
||||
<div className="flex-1">
|
||||
<div className="text-xs text-muted-foreground mb-2 uppercase tracking-wider">
|
||||
<div className="mb-2 text-xs tracking-wider uppercase text-muted-foreground">
|
||||
{study.client}
|
||||
</div>
|
||||
<Badge
|
||||
@@ -928,20 +928,20 @@ const CrossPlatformCaseStudies = () => {
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div className="px-8 pb-6 flex-1">
|
||||
<div className="flex-1 px-8 pb-6">
|
||||
<div
|
||||
className={`relative rounded-xl overflow-hidden bg-gradient-to-br ${study.gradient} p-4 border border-white/10`}
|
||||
>
|
||||
<ImageWithFallback
|
||||
src={study.image}
|
||||
alt={study.title}
|
||||
className="w-full h-48 object-cover rounded-lg shadow-lg"
|
||||
className="object-cover w-full h-48 rounded-lg shadow-lg"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="px-8 pb-6">
|
||||
<p className="text-muted-foreground text-sm leading-relaxed">
|
||||
<p className="text-sm leading-relaxed text-muted-foreground">
|
||||
{study.description}
|
||||
</p>
|
||||
</div>
|
||||
@@ -950,7 +950,7 @@ const CrossPlatformCaseStudies = () => {
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
className="w-full justify-between text-accent hover:text-accent hover:bg-accent/10 group-hover:translate-x-1 transition-all duration-300"
|
||||
className="justify-between w-full transition-all duration-300 text-accent hover:text-accent hover:bg-accent/10 group-hover:translate-x-1"
|
||||
onClick={() => navigate(study.buttonLink)}
|
||||
>
|
||||
<span className="text-sm font-medium">
|
||||
@@ -974,13 +974,13 @@ const CrossPlatformInlineCTA = () => {
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<section className="py-20 bg-black">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 50 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center max-w-4xl mx-auto"
|
||||
className="max-w-4xl mx-auto text-center"
|
||||
>
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
@@ -990,30 +990,30 @@ const CrossPlatformInlineCTA = () => {
|
||||
className="space-y-8"
|
||||
>
|
||||
<div className="inline-block p-[2px] rounded-full bg-gradient-to-r from-accent via-blue-500 to-purple-500">
|
||||
<div className="bg-black rounded-full px-6 py-3 flex items-center gap-2">
|
||||
<div className="flex items-center gap-2 px-6 py-3 bg-black rounded-full">
|
||||
<GitMerge className="w-5 h-5 text-white" />
|
||||
<span className="text-white text-base font-medium">
|
||||
<span className="text-base font-medium text-white">
|
||||
Cross-Platform Innovation
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-white leading-tight">
|
||||
<h2 className="text-4xl font-semibold leading-tight text-white lg:text-5xl">
|
||||
Considering a{" "}
|
||||
<span className="text-accent">Cross-Platform Approach?</span>
|
||||
</h2>
|
||||
|
||||
<p className="text-xl text-gray-300 leading-relaxed max-w-2xl mx-auto">
|
||||
<p className="max-w-2xl mx-auto text-xl leading-relaxed text-gray-300">
|
||||
Let's analyze if cross-platform is the right fit for your project
|
||||
goals and maximize your development efficiency.
|
||||
</p>
|
||||
|
||||
<ShimmerButton
|
||||
className="text-xl px-10 py-5 rounded-2xl shadow-lg hover:shadow-xl"
|
||||
className="px-10 py-5 text-xl shadow-lg rounded-2xl hover:shadow-xl"
|
||||
onClick={() => navigate("/start-a-project")}
|
||||
>
|
||||
<div className="inline-flex items-center gap-3">
|
||||
<Target className="w-6 h-6 flex-shrink-0" />
|
||||
<Target className="flex-shrink-0 w-6 h-6" />
|
||||
<span>Get a Free Strategy Session</span>
|
||||
</div>
|
||||
</ShimmerButton>
|
||||
@@ -1063,24 +1063,24 @@ const CrossPlatformTechStack = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32 bg-black">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-white mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold text-white lg:text-5xl">
|
||||
Cross-Platform App Development Technologies
|
||||
</h2>
|
||||
<p className="text-xl text-gray-300 leading-relaxed">
|
||||
<p className="text-xl leading-relaxed text-gray-300">
|
||||
We build seamless apps for iOS, Android, and the web using
|
||||
cutting-edge cross-platform frameworks and tools.
|
||||
</p>
|
||||
</motion.div>
|
||||
|
||||
<div className="grid grid-cols-2 md:grid-cols-4 gap-8 max-w-4xl mx-auto">
|
||||
<div className="grid max-w-4xl grid-cols-2 gap-8 mx-auto md:grid-cols-4">
|
||||
{technologies.map((tech, index) => (
|
||||
<motion.div
|
||||
key={index}
|
||||
@@ -1091,14 +1091,14 @@ const CrossPlatformTechStack = () => {
|
||||
whileHover={{ scale: 1.1, y: -5 }}
|
||||
className="flex flex-col items-center group"
|
||||
>
|
||||
<div className="w-20 h-20 bg-gray-900/50 rounded-2xl flex items-center justify-center border border-gray-800 group-hover:border-accent/30 transition-all duration-300 shadow-lg group-hover:shadow-xl mb-4">
|
||||
<div className="flex items-center justify-center w-20 h-20 mb-4 transition-all duration-300 border border-gray-800 shadow-lg bg-gray-900/50 rounded-2xl group-hover:border-accent/30 group-hover:shadow-xl">
|
||||
<ImageWithFallback
|
||||
src={tech.logo}
|
||||
alt={tech.name}
|
||||
className="w-12 h-12 object-contain"
|
||||
className="object-contain w-12 h-12"
|
||||
/>
|
||||
</div>
|
||||
<span className="text-gray-300 text-sm group-hover:text-white transition-colors duration-300">
|
||||
<span className="text-sm text-gray-300 transition-colors duration-300 group-hover:text-white">
|
||||
{tech.name}
|
||||
</span>
|
||||
</motion.div>
|
||||
@@ -1138,18 +1138,18 @@ const HireCrossPlatformDevelopers = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-foreground mb-8">
|
||||
<h2 className="mb-8 text-4xl font-semibold lg:text-5xl text-foreground">
|
||||
Hire Expert Flutter & React Native Developers
|
||||
</h2>
|
||||
<p className="text-xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-muted-foreground">
|
||||
Find seasoned professionals skilled in both Flutter and React Native
|
||||
to accelerate your cross-platform development.
|
||||
</p>
|
||||
@@ -1160,7 +1160,7 @@ const HireCrossPlatformDevelopers = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.2 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid md:grid-cols-2 lg:grid-cols-3 gap-8 mb-12"
|
||||
className="grid gap-8 mb-12 md:grid-cols-2 lg:grid-cols-3"
|
||||
>
|
||||
{developerTypes.map((dev, index) => (
|
||||
<motion.div
|
||||
@@ -1170,12 +1170,12 @@ const HireCrossPlatformDevelopers = () => {
|
||||
transition={{ duration: 0.5, delay: index * 0.01 }}
|
||||
viewport={{ once: true }}
|
||||
whileHover={{ y: -8, scale: 1.02 }}
|
||||
className="group cursor-pointer"
|
||||
className="cursor-pointer group"
|
||||
>
|
||||
<Card className="bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl h-full">
|
||||
<Card className="h-full transition-all duration-300 shadow-lg bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="p-8">
|
||||
<div className="flex items-center gap-4 mb-6">
|
||||
<div className="w-12 h-12 bg-accent/20 rounded-xl flex items-center justify-center">
|
||||
<div className="flex items-center justify-center w-12 h-12 bg-accent/20 rounded-xl">
|
||||
<GitMerge className="w-6 h-6 text-accent" />
|
||||
</div>
|
||||
<div>
|
||||
@@ -1188,11 +1188,11 @@ const HireCrossPlatformDevelopers = () => {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3 className="text-xl font-semibold text-foreground mb-4">
|
||||
<h3 className="mb-4 text-xl font-semibold text-foreground">
|
||||
{dev.title}
|
||||
</h3>
|
||||
|
||||
<p className="text-muted-foreground text-sm mb-4">
|
||||
<p className="mb-4 text-sm text-muted-foreground">
|
||||
{dev.specialties}
|
||||
</p>
|
||||
|
||||
@@ -1218,22 +1218,22 @@ const HireCrossPlatformDevelopers = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.4 }}
|
||||
viewport={{ once: true }}
|
||||
className="flex flex-col sm:flex-row gap-4 justify-center"
|
||||
className="flex flex-col justify-center gap-4 sm:flex-row"
|
||||
>
|
||||
<ShimmerButton className="px-8 py-4"
|
||||
onClick={() => navigate("/hire-talent/cross-platform-developers")}
|
||||
>
|
||||
<div className="inline-flex items-center gap-2">
|
||||
<UserPlus className="w-5 h-5 flex-shrink-0" />
|
||||
<UserPlus className="flex-shrink-0 w-5 h-5" />
|
||||
<span>Hire Cross-Platform Developers</span>
|
||||
</div>
|
||||
</ShimmerButton>
|
||||
<Button
|
||||
variant="outline"
|
||||
className="border-white/20 text-foreground hover:bg-white/10 px-8 py-4 h-auto rounded-lg transition-all duration-300"
|
||||
className="h-auto px-8 py-4 transition-all duration-300 rounded-lg border-white/20 text-foreground hover:bg-white/10"
|
||||
>
|
||||
<span>View Talent Profiles</span>
|
||||
<ArrowRight className="ml-2 w-4 h-4" />
|
||||
<ArrowRight className="w-4 h-4 ml-2" />
|
||||
</Button>
|
||||
</motion.div>
|
||||
</div>
|
||||
@@ -1268,18 +1268,18 @@ const CrossPlatformFAQs = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32 bg-black">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-white mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold text-white lg:text-5xl">
|
||||
Frequently Asked Questions
|
||||
</h2>
|
||||
<p className="text-xl text-gray-300 leading-relaxed">
|
||||
<p className="text-xl leading-relaxed text-gray-300">
|
||||
Common questions about cross-platform app development.
|
||||
</p>
|
||||
</motion.div>
|
||||
@@ -1296,14 +1296,14 @@ const CrossPlatformFAQs = () => {
|
||||
<AccordionItem
|
||||
key={index}
|
||||
value={`item-${index}`}
|
||||
className="bg-gray-900/50 backdrop-blur-md rounded-2xl border border-gray-800 px-10 shadow-lg"
|
||||
className="px-10 border border-gray-800 shadow-lg bg-gray-900/50 backdrop-blur-md rounded-2xl"
|
||||
>
|
||||
<AccordionTrigger className="text-left hover:no-underline py-10 text-xl">
|
||||
<AccordionTrigger className="py-10 text-xl text-left hover:no-underline">
|
||||
<span className="font-semibold text-white">
|
||||
{faq.question}
|
||||
</span>
|
||||
</AccordionTrigger>
|
||||
<AccordionContent className="text-gray-300 pb-10 text-lg leading-relaxed">
|
||||
<AccordionContent className="pb-10 text-lg leading-relaxed text-gray-300">
|
||||
{faq.answer}
|
||||
</AccordionContent>
|
||||
</AccordionItem>
|
||||
@@ -1319,14 +1319,14 @@ const CrossPlatformFAQs = () => {
|
||||
const CrossPlatformFinalCTA = () => {
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<section className="py-20 relative overflow-hidden">
|
||||
<div className="container mx-auto px-6 lg:px-8 relative z-10">
|
||||
<section className="relative py-20 overflow-hidden">
|
||||
<div className="container relative z-10 px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 50 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center max-w-4xl mx-auto"
|
||||
className="max-w-4xl mx-auto text-center"
|
||||
>
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 20 }}
|
||||
@@ -1336,9 +1336,9 @@ const CrossPlatformFinalCTA = () => {
|
||||
className="mb-8"
|
||||
>
|
||||
<div className="inline-block p-[2px] rounded-full bg-gradient-to-r from-accent via-blue-500 to-purple-500">
|
||||
<div className="bg-background rounded-full px-6 py-3 flex items-center gap-2">
|
||||
<div className="flex items-center gap-2 px-6 py-3 rounded-full bg-background">
|
||||
<GitMerge className="w-5 h-5 text-foreground" />
|
||||
<span className="text-foreground text-base font-medium">
|
||||
<span className="text-base font-medium text-foreground">
|
||||
Ready to Launch?
|
||||
</span>
|
||||
</div>
|
||||
@@ -1350,7 +1350,7 @@ const CrossPlatformFinalCTA = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.2 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-4xl lg:text-5xl font-semibold text-foreground mb-6 leading-tight"
|
||||
className="mb-6 text-4xl font-semibold leading-tight lg:text-5xl text-foreground"
|
||||
>
|
||||
Achieve Broader Reach with{" "}
|
||||
<span className="text-accent">WDI's Cross-Platform Expertise</span>
|
||||
@@ -1361,7 +1361,7 @@ const CrossPlatformFinalCTA = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.3 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-xl text-muted-foreground mb-12 max-w-2xl mx-auto leading-relaxed"
|
||||
className="max-w-2xl mx-auto mb-12 text-xl leading-relaxed text-muted-foreground"
|
||||
>
|
||||
Leverage our experience to build robust, beautiful apps for both iOS
|
||||
and Android efficiently.
|
||||
@@ -1375,16 +1375,16 @@ const CrossPlatformFinalCTA = () => {
|
||||
className="space-y-8"
|
||||
>
|
||||
<ShimmerButton
|
||||
className="px-12 py-6 text-xl rounded-2xl shadow-2xl hover:shadow-accent/25"
|
||||
className="px-12 py-6 text-xl shadow-2xl rounded-2xl hover:shadow-accent/25"
|
||||
onClick={() => navigate("/start-a-project")}
|
||||
>
|
||||
<div className="inline-flex items-center gap-3">
|
||||
<Rocket className="w-6 h-6 flex-shrink-0" />
|
||||
<Rocket className="flex-shrink-0 w-6 h-6" />
|
||||
<span>Start Your Cross-Platform Project</span>
|
||||
</div>
|
||||
</ShimmerButton>
|
||||
|
||||
<p className="text-muted-foreground text-sm">
|
||||
<p className="text-sm text-muted-foreground">
|
||||
Free consultation • Strategy session • Rapid development
|
||||
</p>
|
||||
</motion.div>
|
||||
@@ -1392,10 +1392,10 @@ const CrossPlatformFinalCTA = () => {
|
||||
</div>
|
||||
|
||||
{/* Background Decorative Elements */}
|
||||
<div className="absolute top-0 left-0 w-full h-full pointer-events-none overflow-hidden">
|
||||
<div className="absolute top-20 left-20 w-60 h-60 bg-accent/5 rounded-full blur-3xl"></div>
|
||||
<div className="absolute bottom-20 right-20 w-60 h-60 bg-blue-500/5 rounded-full blur-3xl"></div>
|
||||
<div className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 w-80 h-80 bg-purple-500/3 rounded-full blur-3xl"></div>
|
||||
<div className="absolute top-0 left-0 w-full h-full overflow-hidden pointer-events-none">
|
||||
<div className="absolute rounded-full top-20 left-20 w-60 h-60 bg-accent/5 blur-3xl"></div>
|
||||
<div className="absolute rounded-full bottom-20 right-20 w-60 h-60 bg-blue-500/5 blur-3xl"></div>
|
||||
<div className="absolute transform -translate-x-1/2 -translate-y-1/2 rounded-full top-1/2 left-1/2 w-80 h-80 bg-purple-500/3 blur-3xl"></div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
@@ -1404,7 +1404,7 @@ const CrossPlatformFinalCTA = () => {
|
||||
// Main Cross-Platform App Development Page
|
||||
export const CrossPlatformAppDevelopment = () => {
|
||||
return (
|
||||
<div className="dark min-h-screen">
|
||||
<div className="min-h-screen dark">
|
||||
{/* <Navigation /> */}
|
||||
|
||||
{/* Hero Section */}
|
||||
|
||||
@@ -39,7 +39,7 @@ import { Button } from "../components/ui/button";
|
||||
import { Card, CardContent } from "../components/ui/card";
|
||||
import { ShimmerButton } from "../components/ui/shimmer-button";
|
||||
import ranoutofImage from "../src/images/ranoutof.webp"
|
||||
import seezunImage from "../src/images/seezun.webp";
|
||||
// import seezunImage from "../src/images/seezun.webp";
|
||||
import regroupImage from "../src/images/regroup.webp";
|
||||
import awsLogoImage from "../src/images/aws-logo.png";
|
||||
|
||||
@@ -95,7 +95,7 @@ const NativeHeroWithCTA = () => {
|
||||
`}
|
||||
</script>
|
||||
</Helmet>
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<div className="grid lg:grid-cols-2 gap-16 items-center min-h-[90vh]">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, x: -50 }}
|
||||
@@ -109,18 +109,18 @@ const NativeHeroWithCTA = () => {
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.6 }}
|
||||
>
|
||||
<span className="text-white/70 text-sm font-medium">
|
||||
<span className="text-sm font-medium text-white/70">
|
||||
Native App Development
|
||||
</span>
|
||||
</motion.div>
|
||||
|
||||
{/* Main Heading */}
|
||||
<div className="space-y-6">
|
||||
<h1 className="text-4xl md:text-5xl lg:text-6xl font-semibold text-white leading-tight">
|
||||
<h1 className="text-4xl font-semibold leading-tight text-white md:text-5xl lg:text-6xl">
|
||||
Native App Development: Uncompromising Performance & Experience
|
||||
</h1>
|
||||
|
||||
<p className="text-lg text-gray-300 leading-relaxed max-w-lg">
|
||||
<p className="max-w-lg text-lg leading-relaxed text-gray-300">
|
||||
Building bespoke applications tailored for a single operating
|
||||
system to deliver the highest level of performance, security,
|
||||
and device integration.
|
||||
@@ -132,22 +132,22 @@ const NativeHeroWithCTA = () => {
|
||||
initial={{ opacity: 0, y: 20 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.3 }}
|
||||
className="flex flex-col sm:flex-row gap-4"
|
||||
className="flex flex-col gap-4 sm:flex-row"
|
||||
>
|
||||
<ShimmerButton
|
||||
className="text-lg px-8 py-4"
|
||||
className="px-8 py-4 text-lg"
|
||||
onClick={() => navigate("/start-a-project")}
|
||||
>
|
||||
<div className="inline-flex items-center gap-2">
|
||||
<Gauge className="w-5 h-5 flex-shrink-0" />
|
||||
<Gauge className="flex-shrink-0 w-5 h-5" />
|
||||
<span>Discover Native Advantages</span>
|
||||
</div>
|
||||
</ShimmerButton>
|
||||
<a
|
||||
href="#consultation"
|
||||
className="inline-flex items-center justify-center gap-2 rounded-md bg-gray-800 px-8 py-4 text-lg font-medium text-white transition hover:bg-gray-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 whitespace-nowrap"
|
||||
className="inline-flex items-center justify-center gap-2 px-8 py-4 text-lg font-medium text-white transition bg-gray-800 rounded-md hover:bg-gray-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 whitespace-nowrap"
|
||||
>
|
||||
<MessageSquare className="w-4 h-4 flex-shrink-0" />
|
||||
<MessageSquare className="flex-shrink-0 w-4 h-4" />
|
||||
<span>Request Consultation</span>
|
||||
</a>
|
||||
</motion.div>
|
||||
@@ -169,11 +169,11 @@ const NativeHeroWithCTA = () => {
|
||||
className="relative h-[400px] w-full mb-8 flex items-center justify-center"
|
||||
>
|
||||
{/* Split-screen container */}
|
||||
<div className="relative w-full h-full flex">
|
||||
<div className="relative flex w-full h-full">
|
||||
{/* iOS Native App (left half) */}
|
||||
<div className="w-1/2 h-full bg-gradient-to-br from-blue-900/20 to-blue-800/20 rounded-l-3xl border-l border-t border-b border-blue-500/30 flex flex-col items-center justify-center p-6">
|
||||
<div className="w-32 h-48 bg-gradient-to-br from-gray-800 to-gray-900 rounded-2xl border border-gray-700 shadow-xl mb-4">
|
||||
<div className="w-full h-6 bg-gray-700 rounded-t-2xl flex items-center justify-center">
|
||||
<div className="flex flex-col items-center justify-center w-1/2 h-full p-6 border-t border-b border-l bg-gradient-to-br from-blue-900/20 to-blue-800/20 rounded-l-3xl border-blue-500/30">
|
||||
<div className="w-32 h-48 mb-4 border border-gray-700 shadow-xl bg-gradient-to-br from-gray-800 to-gray-900 rounded-2xl">
|
||||
<div className="flex items-center justify-center w-full h-6 bg-gray-700 rounded-t-2xl">
|
||||
<div className="w-8 h-0.5 bg-gray-600 rounded-full"></div>
|
||||
</div>
|
||||
<div className="p-3 space-y-2">
|
||||
@@ -184,7 +184,7 @@ const NativeHeroWithCTA = () => {
|
||||
<div className="h-6 bg-gray-700 rounded-lg"></div>
|
||||
<div className="h-6 bg-gray-700 rounded-lg"></div>
|
||||
</div>
|
||||
<div className="h-8 bg-blue-500/20 rounded-lg mt-2 flex items-center justify-center">
|
||||
<div className="flex items-center justify-center h-8 mt-2 rounded-lg bg-blue-500/20">
|
||||
<Apple className="w-4 h-4 text-blue-500" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -192,7 +192,7 @@ const NativeHeroWithCTA = () => {
|
||||
<div className="text-center">
|
||||
<Badge
|
||||
variant="secondary"
|
||||
className="bg-blue-500/20 text-blue-300 border-blue-500/30 text-xs"
|
||||
className="text-xs text-blue-300 bg-blue-500/20 border-blue-500/30"
|
||||
>
|
||||
iOS Native
|
||||
</Badge>
|
||||
@@ -200,9 +200,9 @@ const NativeHeroWithCTA = () => {
|
||||
</div>
|
||||
|
||||
{/* Android Native App (right half) */}
|
||||
<div className="w-1/2 h-full bg-gradient-to-br from-green-900/20 to-green-800/20 rounded-r-3xl border-r border-t border-b border-green-500/30 flex flex-col items-center justify-center p-6">
|
||||
<div className="w-32 h-48 bg-gradient-to-br from-gray-800 to-gray-900 rounded-2xl border border-gray-700 shadow-xl mb-4">
|
||||
<div className="w-full h-6 bg-gray-700 rounded-t-2xl flex items-center justify-center">
|
||||
<div className="flex flex-col items-center justify-center w-1/2 h-full p-6 border-t border-b border-r bg-gradient-to-br from-green-900/20 to-green-800/20 rounded-r-3xl border-green-500/30">
|
||||
<div className="w-32 h-48 mb-4 border border-gray-700 shadow-xl bg-gradient-to-br from-gray-800 to-gray-900 rounded-2xl">
|
||||
<div className="flex items-center justify-center w-full h-6 bg-gray-700 rounded-t-2xl">
|
||||
<div className="w-8 h-0.5 bg-gray-600 rounded-full"></div>
|
||||
</div>
|
||||
<div className="p-3 space-y-2">
|
||||
@@ -213,7 +213,7 @@ const NativeHeroWithCTA = () => {
|
||||
<div className="h-6 bg-gray-700 rounded-lg"></div>
|
||||
<div className="h-6 bg-gray-700 rounded-lg"></div>
|
||||
</div>
|
||||
<div className="h-8 bg-green-500/20 rounded-lg mt-2 flex items-center justify-center">
|
||||
<div className="flex items-center justify-center h-8 mt-2 rounded-lg bg-green-500/20">
|
||||
<svg
|
||||
className="w-4 h-4 text-green-500"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -227,7 +227,7 @@ const NativeHeroWithCTA = () => {
|
||||
<div className="text-center">
|
||||
<Badge
|
||||
variant="secondary"
|
||||
className="bg-green-500/20 text-green-300 border-green-500/30 text-xs"
|
||||
className="text-xs text-green-300 bg-green-500/20 border-green-500/30"
|
||||
>
|
||||
Android Native
|
||||
</Badge>
|
||||
@@ -244,7 +244,7 @@ const NativeHeroWithCTA = () => {
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.6 }}
|
||||
className="flex justify-center gap-4 flex-wrap"
|
||||
className="flex flex-wrap justify-center gap-4"
|
||||
>
|
||||
<Badge
|
||||
variant="secondary"
|
||||
@@ -254,13 +254,13 @@ const NativeHeroWithCTA = () => {
|
||||
</Badge>
|
||||
<Badge
|
||||
variant="secondary"
|
||||
className="bg-blue-500/20 text-blue-300 border-blue-500/30"
|
||||
className="text-blue-300 bg-blue-500/20 border-blue-500/30"
|
||||
>
|
||||
Maximum Performance
|
||||
</Badge>
|
||||
<Badge
|
||||
variant="secondary"
|
||||
className="bg-purple-500/20 text-purple-300 border-purple-500/30"
|
||||
className="text-purple-300 bg-purple-500/20 border-purple-500/30"
|
||||
>
|
||||
Native Features
|
||||
</Badge>
|
||||
@@ -310,18 +310,18 @@ const NativeVsCrossPlatform = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-16"
|
||||
className="mb-16 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-foreground mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold lg:text-5xl text-foreground">
|
||||
Native vs. Cross-Platform: When to Choose Native
|
||||
</h2>
|
||||
<p className="text-xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-muted-foreground">
|
||||
Native development delivers uncompromising performance and platform
|
||||
integration for applications that demand the highest standards.
|
||||
</p>
|
||||
@@ -332,7 +332,7 @@ const NativeVsCrossPlatform = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.2 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid md:grid-cols-2 lg:grid-cols-3 gap-8 max-w-6xl mx-auto"
|
||||
className="grid max-w-6xl gap-8 mx-auto md:grid-cols-2 lg:grid-cols-3"
|
||||
>
|
||||
{comparisons.slice(0, 3).map((item, index) => {
|
||||
const IconComponent = item.icon;
|
||||
@@ -346,15 +346,15 @@ const NativeVsCrossPlatform = () => {
|
||||
whileHover={{ y: -5 }}
|
||||
className="group"
|
||||
>
|
||||
<Card className="bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl h-full">
|
||||
<Card className="h-full transition-all duration-300 shadow-lg bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="p-8 text-center">
|
||||
<div className="w-16 h-16 bg-accent/20 rounded-2xl flex items-center justify-center mx-auto mb-6">
|
||||
<div className="flex items-center justify-center w-16 h-16 mx-auto mb-6 bg-accent/20 rounded-2xl">
|
||||
<IconComponent className="w-8 h-8 text-accent" />
|
||||
</div>
|
||||
<h3 className="text-xl font-semibold text-foreground mb-4">
|
||||
<h3 className="mb-4 text-xl font-semibold text-foreground">
|
||||
{item.title}
|
||||
</h3>
|
||||
<p className="text-muted-foreground leading-relaxed">
|
||||
<p className="leading-relaxed text-muted-foreground">
|
||||
{item.description}
|
||||
</p>
|
||||
</CardContent>
|
||||
@@ -370,7 +370,7 @@ const NativeVsCrossPlatform = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.4 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid md:grid-cols-2 gap-8 max-w-4xl mx-auto mt-8"
|
||||
className="grid max-w-4xl gap-8 mx-auto mt-8 md:grid-cols-2"
|
||||
>
|
||||
{comparisons.slice(3).map((item, index) => {
|
||||
const IconComponent = item.icon;
|
||||
@@ -384,15 +384,15 @@ const NativeVsCrossPlatform = () => {
|
||||
whileHover={{ y: -5 }}
|
||||
className="group"
|
||||
>
|
||||
<Card className="bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl h-full">
|
||||
<Card className="h-full transition-all duration-300 shadow-lg bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="p-8 text-center">
|
||||
<div className="w-16 h-16 bg-accent/20 rounded-2xl flex items-center justify-center mx-auto mb-6">
|
||||
<div className="flex items-center justify-center w-16 h-16 mx-auto mb-6 bg-accent/20 rounded-2xl">
|
||||
<IconComponent className="w-8 h-8 text-accent" />
|
||||
</div>
|
||||
<h3 className="text-xl font-semibold text-foreground mb-4">
|
||||
<h3 className="mb-4 text-xl font-semibold text-foreground">
|
||||
{item.title}
|
||||
</h3>
|
||||
<p className="text-muted-foreground leading-relaxed">
|
||||
<p className="leading-relaxed text-muted-foreground">
|
||||
{item.description}
|
||||
</p>
|
||||
</CardContent>
|
||||
@@ -497,18 +497,18 @@ const NativeCapabilities = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32 bg-black">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-white mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold text-white lg:text-5xl">
|
||||
Expertise Across Leading Native Platforms
|
||||
</h2>
|
||||
<p className="text-xl text-gray-300 max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-gray-300">
|
||||
Comprehensive native development capabilities covering both iOS and
|
||||
Android ecosystems with deep platform expertise.
|
||||
</p>
|
||||
@@ -519,7 +519,7 @@ const NativeCapabilities = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.2 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid md:grid-cols-2 lg:grid-cols-3 gap-8"
|
||||
className="grid gap-8 md:grid-cols-2 lg:grid-cols-3"
|
||||
>
|
||||
{capabilities.map((capability, index) => {
|
||||
const IconComponent = capability.icon;
|
||||
@@ -533,15 +533,15 @@ const NativeCapabilities = () => {
|
||||
whileHover={{ y: -5 }}
|
||||
className="group"
|
||||
>
|
||||
<Card className="bg-gray-900/50 backdrop-blur-md border-gray-800 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl h-full">
|
||||
<Card className="h-full transition-all duration-300 border-gray-800 shadow-lg bg-gray-900/50 backdrop-blur-md hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="p-8">
|
||||
<div className="w-12 h-12 bg-accent/20 rounded-lg flex items-center justify-center mb-6">
|
||||
<div className="flex items-center justify-center w-12 h-12 mb-6 rounded-lg bg-accent/20">
|
||||
<IconComponent className="w-6 h-6 text-accent" />
|
||||
</div>
|
||||
<h3 className="text-xl font-semibold text-white mb-4">
|
||||
<h3 className="mb-4 text-xl font-semibold text-white">
|
||||
{capability.title}
|
||||
</h3>
|
||||
<p className="text-gray-300 leading-relaxed mb-6">
|
||||
<p className="mb-6 leading-relaxed text-gray-300">
|
||||
{capability.description}
|
||||
</p>
|
||||
<div className="flex flex-wrap gap-2">
|
||||
@@ -549,7 +549,7 @@ const NativeCapabilities = () => {
|
||||
<Badge
|
||||
key={tech}
|
||||
variant="secondary"
|
||||
className="text-xs bg-gray-800/50 text-gray-300 border-gray-700"
|
||||
className="text-xs text-gray-300 border-gray-700 bg-gray-800/50"
|
||||
>
|
||||
{tech}
|
||||
</Badge>
|
||||
@@ -645,18 +645,18 @@ const NativeUseCases = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-foreground mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold lg:text-5xl text-foreground">
|
||||
When Native Development is Your Best Choice
|
||||
</h2>
|
||||
<p className="text-xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-muted-foreground">
|
||||
Certain application requirements and business goals make native
|
||||
development the optimal choice for long-term success.
|
||||
</p>
|
||||
@@ -667,7 +667,7 @@ const NativeUseCases = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.2 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid md:grid-cols-2 lg:grid-cols-3 gap-8"
|
||||
className="grid gap-8 md:grid-cols-2 lg:grid-cols-3"
|
||||
>
|
||||
{useCases.map((useCase, index) => {
|
||||
const IconComponent = useCase.icon;
|
||||
@@ -681,15 +681,15 @@ const NativeUseCases = () => {
|
||||
whileHover={{ y: -5 }}
|
||||
className="group"
|
||||
>
|
||||
<Card className="bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl h-full">
|
||||
<Card className="h-full transition-all duration-300 shadow-lg bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="p-8">
|
||||
<div className="w-12 h-12 bg-accent/20 rounded-lg flex items-center justify-center mb-6">
|
||||
<div className="flex items-center justify-center w-12 h-12 mb-6 rounded-lg bg-accent/20">
|
||||
<IconComponent className="w-6 h-6 text-accent" />
|
||||
</div>
|
||||
<h3 className="text-xl font-semibold text-foreground mb-4">
|
||||
<h3 className="mb-4 text-xl font-semibold text-foreground">
|
||||
{useCase.title}
|
||||
</h3>
|
||||
<p className="text-muted-foreground leading-relaxed mb-6">
|
||||
<p className="mb-6 leading-relaxed text-muted-foreground">
|
||||
{useCase.description}
|
||||
</p>
|
||||
<div className="space-y-2">
|
||||
@@ -756,18 +756,18 @@ const NativeProcess = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32 bg-black">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-white mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold text-white lg:text-5xl">
|
||||
Precision & Excellence in Every Native Project
|
||||
</h2>
|
||||
<p className="text-xl text-gray-300 max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-gray-300">
|
||||
Our proven native development methodology ensures optimal
|
||||
performance and platform integration at every stage.
|
||||
</p>
|
||||
@@ -796,26 +796,26 @@ const NativeProcess = () => {
|
||||
className={`flex-1 ${isEven ? "lg:text-right" : "lg:text-left"
|
||||
} text-center lg:text-left`}
|
||||
>
|
||||
<div className="bg-gray-900/50 backdrop-blur-md rounded-2xl border border-gray-800 p-8 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl">
|
||||
<div className="flex items-center gap-4 mb-4 justify-center lg:justify-start">
|
||||
<div className="w-12 h-12 bg-accent/20 rounded-xl flex items-center justify-center">
|
||||
<div className="p-8 transition-all duration-300 border border-gray-800 shadow-lg bg-gray-900/50 backdrop-blur-md rounded-2xl hover:border-accent/30 hover:shadow-xl">
|
||||
<div className="flex items-center justify-center gap-4 mb-4 lg:justify-start">
|
||||
<div className="flex items-center justify-center w-12 h-12 bg-accent/20 rounded-xl">
|
||||
<IconComponent className="w-6 h-6 text-accent" />
|
||||
</div>
|
||||
<div className="text-2xl font-bold text-accent">
|
||||
0{index + 1}
|
||||
</div>
|
||||
</div>
|
||||
<h3 className="text-2xl font-semibold text-white mb-4">
|
||||
<h3 className="mb-4 text-2xl font-semibold text-white">
|
||||
{step.title}
|
||||
</h3>
|
||||
<p className="text-gray-300 leading-relaxed">
|
||||
<p className="leading-relaxed text-gray-300">
|
||||
{step.description}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Timeline dot */}
|
||||
<div className="w-4 h-4 bg-accent rounded-full border-4 border-black z-10 hidden lg:block"></div>
|
||||
<div className="z-10 hidden w-4 h-4 border-4 border-black rounded-full bg-accent lg:block"></div>
|
||||
|
||||
<div className="flex-1 hidden lg:block"></div>
|
||||
</motion.div>
|
||||
@@ -842,16 +842,16 @@ const NativeCaseStudies = () => {
|
||||
gradient: "from-[#007F33]/20 to-[#007F33]/10",
|
||||
buttonLink: "/projects/ranoutof",
|
||||
},
|
||||
{
|
||||
title: "E-commerce Platform Innovation",
|
||||
client: "Seezun",
|
||||
description:
|
||||
"Next-generation e-commerce solution with AI-powered recommendations, seamless checkout, and advanced analytics for modern retailers.",
|
||||
image: seezunImage,
|
||||
results: "800K+ users",
|
||||
gradient: "from-blue-500/20 to-cyan-500/20",
|
||||
buttonLink: "/projects/seezun",
|
||||
},
|
||||
// {
|
||||
// title: "E-commerce Platform Innovation",
|
||||
// client: "Seezun",
|
||||
// description:
|
||||
// "Next-generation e-commerce solution with AI-powered recommendations, seamless checkout, and advanced analytics for modern retailers.",
|
||||
// image: seezunImage,
|
||||
// results: "800K+ users",
|
||||
// gradient: "from-blue-500/20 to-cyan-500/20",
|
||||
// buttonLink: "/projects/seezun",
|
||||
// },
|
||||
{
|
||||
title: "Social Networking Platform",
|
||||
client: "Regroup",
|
||||
@@ -866,18 +866,18 @@ const NativeCaseStudies = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-foreground mb-8">
|
||||
<h2 className="mb-8 text-4xl font-semibold lg:text-5xl text-foreground">
|
||||
Android Apps That Define Industries
|
||||
</h2>
|
||||
<p className="text-xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-muted-foreground">
|
||||
Discover how we've helped businesses succeed with powerful Android
|
||||
applications that leverage the platform's capabilities.
|
||||
</p>
|
||||
@@ -888,7 +888,7 @@ const NativeCaseStudies = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.2 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid md:grid-cols-2 lg:grid-cols-3 gap-8"
|
||||
className="grid gap-8 md:grid-cols-2 lg:grid-cols-3"
|
||||
>
|
||||
{caseStudies.map((study, index) => (
|
||||
<motion.div
|
||||
@@ -898,13 +898,13 @@ const NativeCaseStudies = () => {
|
||||
transition={{ duration: 0.5, delay: index * 0.01 }}
|
||||
viewport={{ once: true }}
|
||||
whileHover={{ y: -8, scale: 1.02 }}
|
||||
className="group cursor-pointer"
|
||||
className="cursor-pointer group"
|
||||
>
|
||||
<Card className="bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl overflow-hidden h-full">
|
||||
<CardContent className="p-0 flex flex-col h-full">
|
||||
<Card className="h-full overflow-hidden transition-all duration-300 shadow-lg bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="flex flex-col h-full p-0">
|
||||
<div className="p-8 pb-6">
|
||||
<div className="flex items-start gap-4 mb-6">
|
||||
<div className="w-12 h-12 bg-accent/20 rounded-xl flex items-center justify-center">
|
||||
<div className="flex items-center justify-center w-12 h-12 bg-accent/20 rounded-xl">
|
||||
<svg
|
||||
className="w-6 h-6 text-accent"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -914,7 +914,7 @@ const NativeCaseStudies = () => {
|
||||
</svg>
|
||||
</div>
|
||||
<div className="flex-1">
|
||||
<div className="text-xs text-muted-foreground mb-2 uppercase tracking-wider">
|
||||
<div className="mb-2 text-xs tracking-wider uppercase text-muted-foreground">
|
||||
{study.client}
|
||||
</div>
|
||||
<Badge
|
||||
@@ -931,20 +931,20 @@ const NativeCaseStudies = () => {
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div className="px-8 pb-6 flex-1">
|
||||
<div className="flex-1 px-8 pb-6">
|
||||
<div
|
||||
className={`relative rounded-xl overflow-hidden bg-gradient-to-br ${study.gradient} p-4 border border-white/10`}
|
||||
>
|
||||
<ImageWithFallback
|
||||
src={study.image}
|
||||
alt={study.title}
|
||||
className="w-full h-48 object-cover rounded-lg shadow-lg"
|
||||
className="object-cover w-full h-48 rounded-lg shadow-lg"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="px-8 pb-6">
|
||||
<p className="text-muted-foreground text-sm leading-relaxed">
|
||||
<p className="text-sm leading-relaxed text-muted-foreground">
|
||||
{study.description}
|
||||
</p>
|
||||
</div>
|
||||
@@ -953,7 +953,7 @@ const NativeCaseStudies = () => {
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
className="w-full justify-between text-accent hover:text-accent hover:bg-accent/10 group-hover:translate-x-1 transition-all duration-300"
|
||||
className="justify-between w-full transition-all duration-300 text-accent hover:text-accent hover:bg-accent/10 group-hover:translate-x-1"
|
||||
onClick={() => navigate(study.buttonLink)}
|
||||
>
|
||||
<span className="text-sm font-medium">
|
||||
@@ -977,13 +977,13 @@ const NativeInlineCTA = () => {
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<section className="py-20 bg-black">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 50 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center max-w-4xl mx-auto"
|
||||
className="max-w-4xl mx-auto text-center"
|
||||
>
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
@@ -993,30 +993,30 @@ const NativeInlineCTA = () => {
|
||||
className="space-y-8"
|
||||
>
|
||||
<div className="inline-block p-[2px] rounded-full bg-gradient-to-r from-accent via-blue-500 to-purple-500">
|
||||
<div className="bg-black rounded-full px-6 py-3 flex items-center gap-2">
|
||||
<div className="flex items-center gap-2 px-6 py-3 bg-black rounded-full">
|
||||
<Gauge className="w-5 h-5 text-white" />
|
||||
<span className="text-white text-base font-medium">
|
||||
<span className="text-base font-medium text-white">
|
||||
Peak Performance
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-white leading-tight">
|
||||
<h2 className="text-4xl font-semibold leading-tight text-white lg:text-5xl">
|
||||
Ready to Achieve{" "}
|
||||
<span className="text-accent">Peak App Performance?</span>
|
||||
</h2>
|
||||
|
||||
<p className="text-xl text-gray-300 leading-relaxed max-w-2xl mx-auto">
|
||||
<p className="max-w-2xl mx-auto text-xl leading-relaxed text-gray-300">
|
||||
Let our native experts guide your next high-impact application to
|
||||
deliver uncompromising performance and user experience.
|
||||
</p>
|
||||
|
||||
<ShimmerButton
|
||||
className="text-xl px-10 py-5 rounded-2xl shadow-lg hover:shadow-xl"
|
||||
className="px-10 py-5 text-xl shadow-lg rounded-2xl hover:shadow-xl"
|
||||
onClick={() => navigate("/start-a-project")}
|
||||
>
|
||||
<div className="inline-flex items-center gap-3">
|
||||
<MessageSquare className="w-6 h-6 flex-shrink-0" />
|
||||
<MessageSquare className="flex-shrink-0 w-6 h-6" />
|
||||
<span>Discuss Your Native App Project</span>
|
||||
</div>
|
||||
</ShimmerButton>
|
||||
@@ -1067,23 +1067,23 @@ const NativeAppTechStack = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32 bg-black">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-white mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold text-white lg:text-5xl">
|
||||
Powering Native App Development
|
||||
</h2>
|
||||
<p className="text-xl text-gray-300 leading-relaxed">
|
||||
<p className="text-xl leading-relaxed text-gray-300">
|
||||
We leverage native frameworks and tools to deliver high-performance apps for iOS and Android.
|
||||
</p>
|
||||
</motion.div>
|
||||
|
||||
<div className="grid grid-cols-2 md:grid-cols-4 gap-8 max-w-4xl mx-auto">
|
||||
<div className="grid max-w-4xl grid-cols-2 gap-8 mx-auto md:grid-cols-4">
|
||||
{technologies.map((tech, index) => (
|
||||
<motion.div
|
||||
key={index}
|
||||
@@ -1094,14 +1094,14 @@ const NativeAppTechStack = () => {
|
||||
whileHover={{ scale: 1.1, y: -5 }}
|
||||
className="flex flex-col items-center group"
|
||||
>
|
||||
<div className="w-20 h-20 bg-gray-900/50 rounded-2xl flex items-center justify-center border border-gray-800 group-hover:border-accent/30 transition-all duration-300 shadow-lg group-hover:shadow-xl mb-4">
|
||||
<div className="flex items-center justify-center w-20 h-20 mb-4 transition-all duration-300 border border-gray-800 shadow-lg bg-gray-900/50 rounded-2xl group-hover:border-accent/30 group-hover:shadow-xl">
|
||||
<ImageWithFallback
|
||||
src={tech.logo}
|
||||
alt={tech.name}
|
||||
className="w-12 h-12 object-contain"
|
||||
className="object-contain w-12 h-12"
|
||||
/>
|
||||
</div>
|
||||
<span className="text-gray-300 text-sm group-hover:text-white transition-colors duration-300">
|
||||
<span className="text-sm text-gray-300 transition-colors duration-300 group-hover:text-white">
|
||||
{tech.name}
|
||||
</span>
|
||||
</motion.div>
|
||||
@@ -1155,18 +1155,18 @@ const HireNativeDevelopers = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-foreground mb-8">
|
||||
<h2 className="mb-8 text-4xl font-semibold lg:text-5xl text-foreground">
|
||||
Find Your Elite Native App Development Team
|
||||
</h2>
|
||||
<p className="text-xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-muted-foreground">
|
||||
Access our pool of highly specialized iOS and Android native
|
||||
developers for your most demanding projects.
|
||||
</p>
|
||||
@@ -1177,7 +1177,7 @@ const HireNativeDevelopers = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.2 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid md:grid-cols-2 lg:grid-cols-3 gap-8 mb-12"
|
||||
className="grid gap-8 mb-12 md:grid-cols-2 lg:grid-cols-3"
|
||||
>
|
||||
{developerTypes.map((dev, index) => (
|
||||
<motion.div
|
||||
@@ -1187,12 +1187,12 @@ const HireNativeDevelopers = () => {
|
||||
transition={{ duration: 0.5, delay: index * 0.01 }}
|
||||
viewport={{ once: true }}
|
||||
whileHover={{ y: -8, scale: 1.02 }}
|
||||
className="group cursor-pointer"
|
||||
className="cursor-pointer group"
|
||||
>
|
||||
<Card className="bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl h-full">
|
||||
<Card className="h-full transition-all duration-300 shadow-lg bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="p-8">
|
||||
<div className="flex items-center gap-4 mb-6">
|
||||
<div className="w-12 h-12 bg-accent/20 rounded-xl flex items-center justify-center">
|
||||
<div className="flex items-center justify-center w-12 h-12 bg-accent/20 rounded-xl">
|
||||
<Gauge className="w-6 h-6 text-accent" />
|
||||
</div>
|
||||
<div>
|
||||
@@ -1205,11 +1205,11 @@ const HireNativeDevelopers = () => {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3 className="text-xl font-semibold text-foreground mb-4">
|
||||
<h3 className="mb-4 text-xl font-semibold text-foreground">
|
||||
{dev.title}
|
||||
</h3>
|
||||
|
||||
<p className="text-muted-foreground text-sm mb-4">
|
||||
<p className="mb-4 text-sm text-muted-foreground">
|
||||
{dev.specialties}
|
||||
</p>
|
||||
|
||||
@@ -1235,23 +1235,23 @@ const HireNativeDevelopers = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.4 }}
|
||||
viewport={{ once: true }}
|
||||
className="flex flex-col sm:flex-row gap-4 justify-center"
|
||||
className="flex flex-col justify-center gap-4 sm:flex-row"
|
||||
>
|
||||
<ShimmerButton className="px-8 py-4"
|
||||
onClick={() => navigate("/hire-talent/native-app-developers")}
|
||||
>
|
||||
<div className="inline-flex items-center gap-2">
|
||||
<UserPlus className="w-5 h-5 flex-shrink-0" />
|
||||
<UserPlus className="flex-shrink-0 w-5 h-5" />
|
||||
<span>Hire Native Developers</span>
|
||||
</div>
|
||||
</ShimmerButton>
|
||||
<Button
|
||||
variant="outline"
|
||||
className="border-white text-white hover:bg-white/10 hover:text-white px-8 py-4 rounded-lg transition-all duration-300 h-auto"
|
||||
className="h-auto px-8 py-4 text-white transition-all duration-300 border-white rounded-lg hover:bg-white/10 hover:text-white"
|
||||
style={{ color: "white" }}
|
||||
>
|
||||
<span>Get a Consultation</span>
|
||||
<ArrowRight className="ml-2 w-4 h-4" />
|
||||
<ArrowRight className="w-4 h-4 ml-2" />
|
||||
</Button>
|
||||
</motion.div>
|
||||
</div>
|
||||
@@ -1287,18 +1287,18 @@ const NativeFAQs = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32 bg-black">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-white mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold text-white lg:text-5xl">
|
||||
Frequently Asked Questions
|
||||
</h2>
|
||||
<p className="text-xl text-gray-300 leading-relaxed">
|
||||
<p className="text-xl leading-relaxed text-gray-300">
|
||||
Common questions about native app development.
|
||||
</p>
|
||||
</motion.div>
|
||||
@@ -1315,14 +1315,14 @@ const NativeFAQs = () => {
|
||||
<AccordionItem
|
||||
key={index}
|
||||
value={`item-${index}`}
|
||||
className="bg-gray-900/50 backdrop-blur-md rounded-2xl border border-gray-800 px-10 shadow-lg"
|
||||
className="px-10 border border-gray-800 shadow-lg bg-gray-900/50 backdrop-blur-md rounded-2xl"
|
||||
>
|
||||
<AccordionTrigger className="text-left hover:no-underline py-10 text-xl">
|
||||
<AccordionTrigger className="py-10 text-xl text-left hover:no-underline">
|
||||
<span className="font-semibold text-white">
|
||||
{faq.question}
|
||||
</span>
|
||||
</AccordionTrigger>
|
||||
<AccordionContent className="text-gray-300 pb-10 text-lg leading-relaxed">
|
||||
<AccordionContent className="pb-10 text-lg leading-relaxed text-gray-300">
|
||||
{faq.answer}
|
||||
</AccordionContent>
|
||||
</AccordionItem>
|
||||
@@ -1338,14 +1338,14 @@ const NativeFAQs = () => {
|
||||
const NativeFinalCTA = () => {
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<section className="py-20 relative overflow-hidden">
|
||||
<div className="container mx-auto px-6 lg:px-8 relative z-10">
|
||||
<section className="relative py-20 overflow-hidden">
|
||||
<div className="container relative z-10 px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 50 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center max-w-4xl mx-auto"
|
||||
className="max-w-4xl mx-auto text-center"
|
||||
>
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 20 }}
|
||||
@@ -1355,16 +1355,16 @@ const NativeFinalCTA = () => {
|
||||
className="mb-8"
|
||||
>
|
||||
<div className="inline-block p-[2px] rounded-full bg-gradient-to-r from-accent via-blue-500 to-purple-500">
|
||||
<div className="bg-background rounded-full px-6 py-3 flex items-center gap-2">
|
||||
<div className="flex items-center gap-2 px-6 py-3 rounded-full bg-background">
|
||||
<Gauge className="w-5 h-5 text-foreground" />
|
||||
<span className="text-foreground text-base font-medium">
|
||||
<span className="text-base font-medium text-foreground">
|
||||
Maximum Potential
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</motion.div>
|
||||
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-foreground mb-6 leading-tight">
|
||||
<h2 className="mb-6 text-4xl font-semibold leading-tight lg:text-5xl text-foreground">
|
||||
Unlock Full Potential with{" "}
|
||||
<span className="text-accent">WDI's Native Expertise</span>
|
||||
</h2>
|
||||
@@ -1374,7 +1374,7 @@ const NativeFinalCTA = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.3 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-xl text-muted-foreground mb-12 max-w-2xl mx-auto leading-relaxed"
|
||||
className="max-w-2xl mx-auto mb-12 text-xl leading-relaxed text-muted-foreground"
|
||||
>
|
||||
Invest in an application that delivers unparalleled performance,
|
||||
security, and a truly immersive user experience.
|
||||
@@ -1387,16 +1387,16 @@ const NativeFinalCTA = () => {
|
||||
viewport={{ once: true }}
|
||||
className="space-y-8"
|
||||
>
|
||||
<ShimmerButton className="px-12 py-6 text-xl rounded-2xl shadow-2xl hover:shadow-accent/25"
|
||||
<ShimmerButton className="px-12 py-6 text-xl shadow-2xl rounded-2xl hover:shadow-accent/25"
|
||||
onClick={() => navigate("/start-a-project")}
|
||||
>
|
||||
<div className="inline-flex items-center gap-3">
|
||||
<Rocket className="w-6 h-6 flex-shrink-0" />
|
||||
<Rocket className="flex-shrink-0 w-6 h-6" />
|
||||
<span>Start Your Native App Journey</span>
|
||||
</div>
|
||||
</ShimmerButton>
|
||||
|
||||
<p className="text-muted-foreground text-sm">
|
||||
<p className="text-sm text-muted-foreground">
|
||||
Expert consultation • Architecture planning • Performance
|
||||
optimization
|
||||
</p>
|
||||
@@ -1405,10 +1405,10 @@ const NativeFinalCTA = () => {
|
||||
</div>
|
||||
|
||||
{/* Background Decorative Elements */}
|
||||
<div className="absolute top-0 left-0 w-full h-full pointer-events-none overflow-hidden">
|
||||
<div className="absolute top-20 left-20 w-60 h-60 bg-accent/5 rounded-full blur-3xl"></div>
|
||||
<div className="absolute bottom-20 right-20 w-60 h-60 bg-blue-500/5 rounded-full blur-3xl"></div>
|
||||
<div className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 w-80 h-80 bg-purple-500/3 rounded-full blur-3xl"></div>
|
||||
<div className="absolute top-0 left-0 w-full h-full overflow-hidden pointer-events-none">
|
||||
<div className="absolute rounded-full top-20 left-20 w-60 h-60 bg-accent/5 blur-3xl"></div>
|
||||
<div className="absolute rounded-full bottom-20 right-20 w-60 h-60 bg-blue-500/5 blur-3xl"></div>
|
||||
<div className="absolute transform -translate-x-1/2 -translate-y-1/2 rounded-full top-1/2 left-1/2 w-80 h-80 bg-purple-500/3 blur-3xl"></div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
@@ -1417,7 +1417,7 @@ const NativeFinalCTA = () => {
|
||||
// Main Native App Development Page
|
||||
export const NativeAppDevelopment = () => {
|
||||
return (
|
||||
<div className="dark min-h-screen">
|
||||
<div className="min-h-screen dark">
|
||||
{/* <Navigation /> */}
|
||||
|
||||
{/* Hero Section */}
|
||||
|
||||
@@ -13,16 +13,16 @@ import { motion } from "framer-motion";
|
||||
import { AlertTriangle, ArrowRight, Bell, Calendar, CheckCircle, Cloud, Code, Cpu, Database, ExternalLink, Globe, Home, Image, Leaf, List, Mic, Palette, Repeat, Ruler, Scan, Server, Share2, ShieldCheck, ShoppingBag, Smartphone, Sparkles, Split, Star, Target, TestTube, Users, Zap } from "lucide-react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import { Button } from "../components/ui/button";
|
||||
import seezunImage from "../src/images/seezun.webp";
|
||||
import seezunLogo from "../src/images/seezun-logo.png";
|
||||
// import seezunImage from "../src/images/seezun.webp";
|
||||
// import seezunLogo from "../src/images/seezun-logo.png";
|
||||
|
||||
const projectData = {
|
||||
hero: {
|
||||
title: "Seezun: Your Seasonal Fashion & Lifestyle Hub",
|
||||
subtitle: "Rent, Buy, or Sell South Asian Clothing",
|
||||
subtitleTwo: "Discover a new way to update your wardrobe, rent, buy, or sell both new and preloved South Asian outfits on Seezun. Enjoy simple, seamless exchanges for every style and every occasion.",
|
||||
imageUrl: "https://images.unsplash.com/photo-1556909114-f6e7ad7d3136?w=800&h=600&fit=crop&crop=center",
|
||||
imageAlt: "Seezun App Showcase"
|
||||
// title: "Seezun: Your Seasonal Fashion & Lifestyle Hub",
|
||||
// subtitle: "Rent, Buy, or Sell South Asian Clothing",
|
||||
// subtitleTwo: "Discover a new way to update your wardrobe, rent, buy, or sell both new and preloved South Asian outfits on Seezun. Enjoy simple, seamless exchanges for every style and every occasion.",
|
||||
// imageUrl: "https://images.unsplash.com/photo-1556909114-f6e7ad7d3136?w=800&h=600&fit=crop&crop=center",
|
||||
// imageAlt: "Seezun App Showcase"
|
||||
},
|
||||
details: {
|
||||
technologies: [
|
||||
@@ -43,7 +43,7 @@ const projectData = {
|
||||
{ label: "Transaction Growth", value: "+200%", description: "Monthly marketplace activity" }
|
||||
],
|
||||
executiveSummary: {
|
||||
content: "Seezun reimagines the South Asian clothing market with a customer-driven platform connecting buyers, sellers, and renters. By analyzing preferences, trends, and inventory, Seezun offers a seamless, tailored shopping experience, making fashion accessible, sustainable, and affordable."
|
||||
// content: "Seezun reimagines the South Asian clothing market with a customer-driven platform connecting buyers, sellers, and renters. By analyzing preferences, trends, and inventory, Seezun offers a seamless, tailored shopping experience, making fashion accessible, sustainable, and affordable."
|
||||
},
|
||||
businessObjectives: [
|
||||
"Launch seasonal style collections curated by fashion experts for every occasion",
|
||||
@@ -147,198 +147,198 @@ const projectData = {
|
||||
};
|
||||
|
||||
|
||||
export const SeezunProject = () => {
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<div className="dark min-h-screen bg-background">
|
||||
// export const SeezunProject = () => {
|
||||
// const navigate = useNavigate();
|
||||
// return (
|
||||
// <div className="min-h-screen dark bg-background">
|
||||
|
||||
{/* Section 1: Hero with Heading, Subheading, and Image */}
|
||||
<PortfolioHero
|
||||
title={projectData.hero.title}
|
||||
subtitle={projectData.hero.subtitle}
|
||||
subtitleTwo={projectData.hero.subtitleTwo}
|
||||
imageUrl={seezunImage}
|
||||
imageAlt={projectData.hero.imageAlt}
|
||||
/>
|
||||
// {/* Section 1: Hero with Heading, Subheading, and Image */}
|
||||
// <PortfolioHero
|
||||
// title={projectData.hero.title}
|
||||
// subtitle={projectData.hero.subtitle}
|
||||
// subtitleTwo={projectData.hero.subtitleTwo}
|
||||
// imageUrl={seezunImage}
|
||||
// imageAlt={projectData.hero.imageAlt}
|
||||
// />
|
||||
|
||||
{/* Section 2: Project Details */}
|
||||
<PortfolioProjectDetails
|
||||
details={projectData.details}
|
||||
achievements={projectData.achievements}
|
||||
/>
|
||||
// {/* Section 2: Project Details */}
|
||||
// <PortfolioProjectDetails
|
||||
// details={projectData.details}
|
||||
// achievements={projectData.achievements}
|
||||
// />
|
||||
|
||||
{/* Executive Summary */}
|
||||
<PortfolioExecutiveSummary
|
||||
content={projectData.executiveSummary.content}
|
||||
/>
|
||||
// {/* Executive Summary */}
|
||||
// <PortfolioExecutiveSummary
|
||||
// content={projectData.executiveSummary.content}
|
||||
// />
|
||||
|
||||
{/* Project Overview */}
|
||||
<section className="py-24 bg-background">
|
||||
<div className="container mx-auto px-4 lg:px-6">
|
||||
<div className="max-w-6xl mx-auto text-center mb-16">
|
||||
<h2 className="text-3xl lg:text-5xl font-semibold text-foreground mb-6">
|
||||
Project Overview
|
||||
</h2>
|
||||
</div>
|
||||
// {/* Project Overview */}
|
||||
// <section className="py-24 bg-background">
|
||||
// <div className="container px-4 mx-auto lg:px-6">
|
||||
// <div className="max-w-6xl mx-auto mb-16 text-center">
|
||||
// <h2 className="mb-6 text-3xl font-semibold lg:text-5xl text-foreground">
|
||||
// Project Overview
|
||||
// </h2>
|
||||
// </div>
|
||||
|
||||
<div className="grid lg:grid-cols-3 gap-12">
|
||||
<PortfolioProjectOverview
|
||||
icon={<Globe className="w-8 h-8 text-accent" />}
|
||||
title="Background & Context"
|
||||
description="Access to premium South Asian fashion is often limited by high costs, low availability, and the lack of trusted rental or resale options. This platform bridges that gap by making luxury ethnic wear accessible, affordable, and sustainable for all."
|
||||
borderColor="border-accent/20"
|
||||
hoverColor="accent"
|
||||
/>
|
||||
// <div className="grid gap-12 lg:grid-cols-3">
|
||||
// <PortfolioProjectOverview
|
||||
// icon={<Globe className="w-8 h-8 text-accent" />}
|
||||
// title="Background & Context"
|
||||
// description="Access to premium South Asian fashion is often limited by high costs, low availability, and the lack of trusted rental or resale options. This platform bridges that gap by making luxury ethnic wear accessible, affordable, and sustainable for all."
|
||||
// borderColor="border-accent/20"
|
||||
// hoverColor="accent"
|
||||
// />
|
||||
|
||||
<PortfolioProjectOverview
|
||||
icon={<Users className="w-8 h-8 text-blue-400" />}
|
||||
title="Target Audience"
|
||||
description="Fashion-conscious individuals and South Asian communities seeking affordable access to premium traditional and contemporary clothing through renting, buying, or selling."
|
||||
borderColor="border-blue-400/20"
|
||||
hoverColor="blue-400"
|
||||
/>
|
||||
// <PortfolioProjectOverview
|
||||
// icon={<Users className="w-8 h-8 text-blue-400" />}
|
||||
// title="Target Audience"
|
||||
// description="Fashion-conscious individuals and South Asian communities seeking affordable access to premium traditional and contemporary clothing through renting, buying, or selling."
|
||||
// borderColor="border-blue-400/20"
|
||||
// hoverColor="blue-400"
|
||||
// />
|
||||
|
||||
<PortfolioProjectOverview
|
||||
icon={<Target className="w-8 h-8 text-green-400" />}
|
||||
title="Business Objectives"
|
||||
points={projectData.businessObjectives}
|
||||
borderColor="border-green-400/20"
|
||||
hoverColor="green-400"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
// <PortfolioProjectOverview
|
||||
// icon={<Target className="w-8 h-8 text-green-400" />}
|
||||
// title="Business Objectives"
|
||||
// points={projectData.businessObjectives}
|
||||
// borderColor="border-green-400/20"
|
||||
// hoverColor="green-400"
|
||||
// />
|
||||
// </div>
|
||||
// </div>
|
||||
// </section>
|
||||
|
||||
{/* Core Features */}
|
||||
<PortfolioCoreFeatures
|
||||
title="Core Features & Functionality"
|
||||
subtitle="A comprehensive suite of tools designed to revolutionize household grocery management with smart automation and collaboration."
|
||||
features={projectData.coreFeatures}
|
||||
/>
|
||||
// {/* Core Features */}
|
||||
// <PortfolioCoreFeatures
|
||||
// title="Core Features & Functionality"
|
||||
// subtitle="A comprehensive suite of tools designed to revolutionize household grocery management with smart automation and collaboration."
|
||||
// features={projectData.coreFeatures}
|
||||
// />
|
||||
|
||||
{/* Challenges & Solution Architecture */}
|
||||
<PortfolioChallengeSolution
|
||||
challenges={[
|
||||
{
|
||||
icon: <Cpu className="w-6 h-6" />,
|
||||
title: "Technical Challenges",
|
||||
description: "Building a real-time AI recommendation engine within MVP timelines, implementing split-payment workflows across multiple vendors, and optimizing media-heavy seasonal lookbooks for mobile.",
|
||||
},
|
||||
{
|
||||
icon: <Split className="w-6 h-6" />,
|
||||
title: "Project Management Challenges",
|
||||
description: "Coordinating between fashion consultants, AI developers, and backend engineers, while managing seasonal content updates without downtime.",
|
||||
},
|
||||
]}
|
||||
// {/* Challenges & Solution Architecture */}
|
||||
// <PortfolioChallengeSolution
|
||||
// challenges={[
|
||||
// {
|
||||
// icon: <Cpu className="w-6 h-6" />,
|
||||
// title: "Technical Challenges",
|
||||
// description: "Building a real-time AI recommendation engine within MVP timelines, implementing split-payment workflows across multiple vendors, and optimizing media-heavy seasonal lookbooks for mobile.",
|
||||
// },
|
||||
// {
|
||||
// icon: <Split className="w-6 h-6" />,
|
||||
// title: "Project Management Challenges",
|
||||
// description: "Coordinating between fashion consultants, AI developers, and backend engineers, while managing seasonal content updates without downtime.",
|
||||
// },
|
||||
// ]}
|
||||
|
||||
technologyStack={[
|
||||
{ icon: <Smartphone className="w-5 h-5 text-accent" />, label: "Frontend: React native (mobile), React.js (Webapp)" },
|
||||
{ icon: <Server className="w-5 h-5 text-accent" />, label: "Backend: Laravel (PHP) with modular microservices" },
|
||||
{ icon: <Database className="w-5 h-5 text-accent" />, label: "Database: MySQL" },
|
||||
{ icon: <Cloud className="w-5 h-5 text-accent" />, label: "Cloud: AWS EC2, CloudFront, S3 (for media)" },
|
||||
]}
|
||||
highlights={[
|
||||
{ text: "Premium South Asian clothing rentals for every occasion" },
|
||||
{ text: "Secure buy & sell platform for new and pre-loved fashion" },
|
||||
{ text: "Sustainable circular fashion promoting garment reuse" },
|
||||
{ text: "Advanced size matching with authentic community reviews" },
|
||||
]}
|
||||
/>
|
||||
// technologyStack={[
|
||||
// { icon: <Smartphone className="w-5 h-5 text-accent" />, label: "Frontend: React native (mobile), React.js (Webapp)" },
|
||||
// { icon: <Server className="w-5 h-5 text-accent" />, label: "Backend: Laravel (PHP) with modular microservices" },
|
||||
// { icon: <Database className="w-5 h-5 text-accent" />, label: "Database: MySQL" },
|
||||
// { icon: <Cloud className="w-5 h-5 text-accent" />, label: "Cloud: AWS EC2, CloudFront, S3 (for media)" },
|
||||
// ]}
|
||||
// highlights={[
|
||||
// { text: "Premium South Asian clothing rentals for every occasion" },
|
||||
// { text: "Secure buy & sell platform for new and pre-loved fashion" },
|
||||
// { text: "Sustainable circular fashion promoting garment reuse" },
|
||||
// { text: "Advanced size matching with authentic community reviews" },
|
||||
// ]}
|
||||
// />
|
||||
|
||||
{/* Development Process */}
|
||||
<PortfolioDevelopmentProcess
|
||||
title="Development Process & Methodology"
|
||||
subtitle=""
|
||||
phases={projectData.developmentPhases}
|
||||
/>
|
||||
// {/* Development Process */}
|
||||
// <PortfolioDevelopmentProcess
|
||||
// title="Development Process & Methodology"
|
||||
// subtitle=""
|
||||
// phases={projectData.developmentPhases}
|
||||
// />
|
||||
|
||||
{/* Results & Impact */}
|
||||
<PortfolioResultsImpact
|
||||
title="Results & Business Impact"
|
||||
subtitle="The platform has revolutionized access to South Asian fashion by driving higher rental engagement, boosting resale transactions, expanding vendor participation, and promoting sustainable wardrobe practices across the community."
|
||||
metrics={projectData.resultsMetrics}
|
||||
achievements={projectData.technicalAchievements}
|
||||
/>
|
||||
// {/* Results & Impact */}
|
||||
// <PortfolioResultsImpact
|
||||
// title="Results & Business Impact"
|
||||
// subtitle="The platform has revolutionized access to South Asian fashion by driving higher rental engagement, boosting resale transactions, expanding vendor participation, and promoting sustainable wardrobe practices across the community."
|
||||
// metrics={projectData.resultsMetrics}
|
||||
// achievements={projectData.technicalAchievements}
|
||||
// />
|
||||
|
||||
{/* Lessons Learned */}
|
||||
<PortfolioLessonsSection
|
||||
title="Lessons Learned"
|
||||
description="Key insights and learnings from the RanOutOf development journey."
|
||||
workedTitle="What Worked Well"
|
||||
workedIcon={<CheckCircle className="w-6 h-6" />}
|
||||
workedColor="#22c55e" // Tailwind green-500
|
||||
workedLessons={[
|
||||
"Seamless Rentals and Bargaining Feature",
|
||||
"Seasonal lookbooks increased browsing time and purchase intent",
|
||||
"Vendor self-management tools reduced admin workload",
|
||||
]}
|
||||
improveTitle="Areas for Improvement"
|
||||
improveIcon={<ArrowRight className="w-6 h-6" />}
|
||||
improveColor="#eab308" // Tailwind yellow-500
|
||||
improveLessons={[
|
||||
"More robust A/B testing for recommendation algorithms",
|
||||
"Expand seasonal tagging into hyperlocal weather-based recommendations",
|
||||
]}
|
||||
/>
|
||||
// {/* Lessons Learned */}
|
||||
// <PortfolioLessonsSection
|
||||
// title="Lessons Learned"
|
||||
// description="Key insights and learnings from the RanOutOf development journey."
|
||||
// workedTitle="What Worked Well"
|
||||
// workedIcon={<CheckCircle className="w-6 h-6" />}
|
||||
// workedColor="#22c55e" // Tailwind green-500
|
||||
// workedLessons={[
|
||||
// "Seamless Rentals and Bargaining Feature",
|
||||
// "Seasonal lookbooks increased browsing time and purchase intent",
|
||||
// "Vendor self-management tools reduced admin workload",
|
||||
// ]}
|
||||
// improveTitle="Areas for Improvement"
|
||||
// improveIcon={<ArrowRight className="w-6 h-6" />}
|
||||
// improveColor="#eab308" // Tailwind yellow-500
|
||||
// improveLessons={[
|
||||
// "More robust A/B testing for recommendation algorithms",
|
||||
// "Expand seasonal tagging into hyperlocal weather-based recommendations",
|
||||
// ]}
|
||||
// />
|
||||
|
||||
{/* Future Roadmap */}
|
||||
<PortfolioRoadmapSection
|
||||
title="Future Roadmap"
|
||||
description="Planned enhancements and features to further revolutionize grocery management apps."
|
||||
roadmapItems={projectData.futureRoadmap}
|
||||
icon={<ArrowRight className="w-5 h-5" />}
|
||||
/>
|
||||
// {/* Future Roadmap */}
|
||||
// <PortfolioRoadmapSection
|
||||
// title="Future Roadmap"
|
||||
// description="Planned enhancements and features to further revolutionize grocery management apps."
|
||||
// roadmapItems={projectData.futureRoadmap}
|
||||
// icon={<ArrowRight className="w-5 h-5" />}
|
||||
// />
|
||||
|
||||
{/* Client Testimonial */}
|
||||
<PortfolioTestimonial
|
||||
logo={seezunLogo}
|
||||
alt="Seezun Logo"
|
||||
rating={5}
|
||||
testimonial="“WDI delivered a cutting-edge, scalable platform that exceeded expectations. Their AI integration and vendor management tools gave us a strong advantage in the fashion-tech market. Their expertise and responsiveness made them a trusted partner throughout the project.”"
|
||||
clientName="Urmila"
|
||||
clientRole=" Product Manager, Seezun"
|
||||
/>
|
||||
// {/* Client Testimonial */}
|
||||
// <PortfolioTestimonial
|
||||
// logo={seezunLogo}
|
||||
// alt="Seezun Logo"
|
||||
// rating={5}
|
||||
// testimonial="“WDI delivered a cutting-edge, scalable platform that exceeded expectations. Their AI integration and vendor management tools gave us a strong advantage in the fashion-tech market. Their expertise and responsiveness made them a trusted partner throughout the project.”"
|
||||
// clientName="Urmila"
|
||||
// clientRole=" Product Manager, Seezun"
|
||||
// />
|
||||
|
||||
{/* CTA Section */}
|
||||
<section className="py-24 bg-background">
|
||||
<div className="container mx-auto px-4 lg:px-6">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="max-w-4xl mx-auto text-center"
|
||||
>
|
||||
<h2 className="text-3xl lg:text-5xl font-semibold text-foreground mb-8">
|
||||
Ready to Transform Your Fashion Marketplace?
|
||||
</h2>
|
||||
<p className="text-xl text-muted-foreground mb-12 max-w-3xl mx-auto">
|
||||
Let's create a sustainable fashion platform together. From concept to launch, we'll help you build a marketplace that revolutionizes how people shop, rent, and sell clothing.
|
||||
</p>
|
||||
// {/* CTA Section */}
|
||||
// <section className="py-24 bg-background">
|
||||
// <div className="container px-4 mx-auto lg:px-6">
|
||||
// <motion.div
|
||||
// initial={{ opacity: 0, y: 30 }}
|
||||
// whileInView={{ opacity: 1, y: 0 }}
|
||||
// transition={{ duration: 0.8 }}
|
||||
// viewport={{ once: true }}
|
||||
// className="max-w-4xl mx-auto text-center"
|
||||
// >
|
||||
// <h2 className="mb-8 text-3xl font-semibold lg:text-5xl text-foreground">
|
||||
// Ready to Transform Your Fashion Marketplace?
|
||||
// </h2>
|
||||
// <p className="max-w-3xl mx-auto mb-12 text-xl text-muted-foreground">
|
||||
// Let's create a sustainable fashion platform together. From concept to launch, we'll help you build a marketplace that revolutionizes how people shop, rent, and sell clothing.
|
||||
// </p>
|
||||
|
||||
<div className="flex flex-col sm:flex-row gap-4 justify-center">
|
||||
<Button
|
||||
size="lg"
|
||||
onClick={() => navigate('/contact-us')}
|
||||
className="bg-accent hover:bg-accent/90 text-accent-foreground"
|
||||
>
|
||||
Start Your Project
|
||||
<ArrowRight className="w-5 h-5 ml-2" />
|
||||
</Button>
|
||||
<Button
|
||||
size="lg"
|
||||
variant="outline"
|
||||
onClick={() => navigate('/case-studies')}
|
||||
className="border-accent/30 text-accent hover:bg-accent/10"
|
||||
>
|
||||
View More Case Studies
|
||||
<ExternalLink className="w-5 h-5 ml-2" />
|
||||
</Button>
|
||||
</div>
|
||||
</motion.div>
|
||||
</div>
|
||||
</section>
|
||||
// <div className="flex flex-col justify-center gap-4 sm:flex-row">
|
||||
// <Button
|
||||
// size="lg"
|
||||
// onClick={() => navigate('/contact-us')}
|
||||
// className="bg-accent hover:bg-accent/90 text-accent-foreground"
|
||||
// >
|
||||
// Start Your Project
|
||||
// <ArrowRight className="w-5 h-5 ml-2" />
|
||||
// </Button>
|
||||
// <Button
|
||||
// size="lg"
|
||||
// variant="outline"
|
||||
// onClick={() => navigate('/case-studies')}
|
||||
// className="border-accent/30 text-accent hover:bg-accent/10"
|
||||
// >
|
||||
// View More Case Studies
|
||||
// <ExternalLink className="w-5 h-5 ml-2" />
|
||||
// </Button>
|
||||
// </div>
|
||||
// </motion.div>
|
||||
// </div>
|
||||
// </section>
|
||||
|
||||
</div>
|
||||
);
|
||||
};
|
||||
// </div>
|
||||
// );
|
||||
// };
|
||||
@@ -6,7 +6,7 @@ import { Badge } from "../components/ui/badge";
|
||||
import { Card, CardContent } from "../components/ui/card";
|
||||
import { ShimmerButton } from "../components/ui/shimmer-button";
|
||||
import ranoutofImage from "../src/images/ranoutof.webp";
|
||||
import seezunImage from "../src/images/seezun.webp";
|
||||
// import seezunImage from "../src/images/seezun.webp";
|
||||
import wokaImage from "../src/images/woka.webp";
|
||||
import swiftImage from "../src/images/swift-programming.webp";
|
||||
import apllePayImage from "../src/images/apple-pay.png";
|
||||
@@ -105,7 +105,7 @@ const IOSHeroWithCTA = () => {
|
||||
`}
|
||||
</script>
|
||||
</Helmet>
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<div className="grid lg:grid-cols-2 gap-16 items-center min-h-[90vh]">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, x: -50 }}
|
||||
@@ -119,18 +119,18 @@ const IOSHeroWithCTA = () => {
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.6 }}
|
||||
>
|
||||
<span className="text-white/70 text-sm font-medium">
|
||||
<span className="text-sm font-medium text-white/70">
|
||||
iOS App Development
|
||||
</span>
|
||||
</motion.div>
|
||||
|
||||
{/* Main Heading */}
|
||||
<div className="space-y-6">
|
||||
<h1 className="text-4xl md:text-5xl lg:text-6xl font-semibold text-white leading-tight">
|
||||
<h1 className="text-4xl font-semibold leading-tight text-white md:text-5xl lg:text-6xl">
|
||||
Expert iOS App Development Services
|
||||
</h1>
|
||||
|
||||
<p className="text-lg text-gray-300 leading-relaxed max-w-lg">
|
||||
<p className="max-w-lg text-lg leading-relaxed text-gray-300">
|
||||
Crafting intuitive, high-performance iPhone and iPad
|
||||
applications that define user experience and drive engagement.
|
||||
</p>
|
||||
@@ -141,15 +141,15 @@ const IOSHeroWithCTA = () => {
|
||||
initial={{ opacity: 0, y: 20 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.3 }}
|
||||
className="flex flex-col sm:flex-row gap-4"
|
||||
className="flex flex-col gap-4 sm:flex-row"
|
||||
>
|
||||
<ShimmerButton
|
||||
className="text-lg px-8 py-4"
|
||||
className="px-8 py-4 text-lg"
|
||||
onClick={() => navigate("/start-a-project")}
|
||||
>
|
||||
<div className="inline-flex items-center gap-2">
|
||||
<svg
|
||||
className="w-6 h-4 flex-shrink-0"
|
||||
className="flex-shrink-0 w-6 h-4"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -166,9 +166,9 @@ const IOSHeroWithCTA = () => {
|
||||
</ShimmerButton>
|
||||
<a
|
||||
href="#portfolio"
|
||||
className="inline-flex items-center justify-center gap-2 rounded-md bg-gray-800 px-8 py-4 text-lg font-medium text-white transition hover:bg-gray-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 whitespace-nowrap"
|
||||
className="inline-flex items-center justify-center gap-2 px-8 py-4 text-lg font-medium text-white transition bg-gray-800 rounded-md hover:bg-gray-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 whitespace-nowrap"
|
||||
>
|
||||
<Eye className="w-4 h-4 flex-shrink-0" />
|
||||
<Eye className="flex-shrink-0 w-4 h-4" />
|
||||
<span>See Our iOS Work</span>
|
||||
</a>
|
||||
</motion.div>
|
||||
@@ -217,23 +217,23 @@ const IOSCaseStudies = () => {
|
||||
accentColor: "green",
|
||||
featured: false,
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
title: "Seezun",
|
||||
client: "Seezun",
|
||||
description:
|
||||
"Seezun is a trend-driven P2P fashion marketplace enabling users to rent, buy, sell, or lend South Asian ethnicwear via mobile and web platforms.",
|
||||
keyAchievement: {
|
||||
number: "85%",
|
||||
metric: "Brand Recognition",
|
||||
icon: TrendingUp,
|
||||
},
|
||||
visual: seezunImage,
|
||||
tags: ["iOS App", "P2P Marketplace", "Fashion", "E-commerce"],
|
||||
gradient: "from-purple-500/20 to-pink-500/20",
|
||||
accentColor: "purple",
|
||||
featured: false,
|
||||
},
|
||||
// {
|
||||
// id: 2,
|
||||
// title: "Seezun",
|
||||
// client: "Seezun",
|
||||
// description:
|
||||
// "Seezun is a trend-driven P2P fashion marketplace enabling users to rent, buy, sell, or lend South Asian ethnicwear via mobile and web platforms.",
|
||||
// keyAchievement: {
|
||||
// number: "85%",
|
||||
// metric: "Brand Recognition",
|
||||
// icon: TrendingUp,
|
||||
// },
|
||||
// visual: seezunImage,
|
||||
// tags: ["iOS App", "P2P Marketplace", "Fashion", "E-commerce"],
|
||||
// gradient: "from-purple-500/20 to-pink-500/20",
|
||||
// accentColor: "purple",
|
||||
// featured: false,
|
||||
// },
|
||||
{
|
||||
id: 3,
|
||||
title: "WOKA",
|
||||
@@ -255,14 +255,14 @@ const IOSCaseStudies = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32" id="portfolio">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
{/* Section Header */}
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-16"
|
||||
className="mb-16 text-center"
|
||||
>
|
||||
<motion.div
|
||||
initial={{ opacity: 0, scale: 0.8 }}
|
||||
@@ -272,19 +272,19 @@ const IOSCaseStudies = () => {
|
||||
className="mb-6"
|
||||
>
|
||||
<div className="inline-block p-[2px] rounded-full bg-gradient-to-r from-accent via-blue-500 to-purple-500">
|
||||
<div className="bg-background rounded-full px-6 py-3 flex items-center gap-2">
|
||||
<div className="flex items-center gap-2 px-6 py-3 rounded-full bg-background">
|
||||
<Star className="w-5 h-5 text-accent" />
|
||||
<span className="text-foreground text-base font-medium">
|
||||
<span className="text-base font-medium text-foreground">
|
||||
iOS Success Stories
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</motion.div>
|
||||
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-foreground mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold lg:text-5xl text-foreground">
|
||||
iOS Apps That Drive Results
|
||||
</h2>
|
||||
<p className="text-xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-muted-foreground">
|
||||
Discover how we've helped businesses succeed with exceptional iOS
|
||||
applications that leverage native capabilities and deliver
|
||||
outstanding user experiences.
|
||||
@@ -292,7 +292,7 @@ const IOSCaseStudies = () => {
|
||||
</motion.div>
|
||||
|
||||
{/* Case Studies Grid - Matching Main Case Studies Layout */}
|
||||
<div className="grid lg:grid-cols-3 md:grid-cols-2 grid-cols-1 gap-8 items-stretch">
|
||||
<div className="grid items-stretch grid-cols-1 gap-8 lg:grid-cols-3 md:grid-cols-2">
|
||||
{caseStudies.map((study, index) => {
|
||||
const AchievementIcon = study.keyAchievement.icon;
|
||||
|
||||
@@ -303,7 +303,7 @@ const IOSCaseStudies = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.6, delay: index * 0.2 }}
|
||||
viewport={{ once: true }}
|
||||
className="group h-full"
|
||||
className="h-full group"
|
||||
>
|
||||
<Card
|
||||
className="bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-500 shadow-lg hover:shadow-2xl rounded-2xl overflow-hidden h-full group-hover:scale-[1.02] transform flex flex-col cursor-pointer"
|
||||
@@ -320,11 +320,11 @@ const IOSCaseStudies = () => {
|
||||
<CardContent className="p-0 flex flex-col h-full min-h-[650px]">
|
||||
{/* Visual Section - Fixed Height with Responsive Container */}
|
||||
<div className="relative overflow-hidden bg-gray-900/50 rounded-t-2xl">
|
||||
<div className="relative h-64 sm:h-72 md:h-64 w-full flex items-center justify-center p-4">
|
||||
<div className="relative flex items-center justify-center w-full h-64 p-4 sm:h-72 md:h-64">
|
||||
<ImageWithFallback
|
||||
src={study.visual}
|
||||
alt={`${study.title} - ${study.client} case study`}
|
||||
className="max-w-full max-h-full object-contain object-center group-hover:scale-105 transition-transform duration-700 rounded-lg"
|
||||
className="object-contain object-center max-w-full max-h-full transition-transform duration-700 rounded-lg group-hover:scale-105"
|
||||
style={{
|
||||
maxWidth: "100%",
|
||||
height: "auto",
|
||||
@@ -334,13 +334,13 @@ const IOSCaseStudies = () => {
|
||||
/>
|
||||
|
||||
{/* Subtle overlay for better text contrast */}
|
||||
<div className="absolute inset-0 bg-gradient-to-t from-black/20 via-transparent to-transparent opacity-60 group-hover:opacity-80 transition-opacity duration-500" />
|
||||
<div className="absolute inset-0 transition-opacity duration-500 bg-gradient-to-t from-black/20 via-transparent to-transparent opacity-60 group-hover:opacity-80" />
|
||||
|
||||
{/* Key Achievement - Overlaid on Visual */}
|
||||
<div className="absolute bottom-4 left-4 right-4 z-10">
|
||||
<div className="absolute z-10 bottom-4 left-4 right-4">
|
||||
<motion.div
|
||||
whileHover={{ scale: 1.05 }}
|
||||
className="bg-black/90 backdrop-blur-md rounded-xl p-4 border border-white/10 shadow-lg"
|
||||
className="p-4 border shadow-lg bg-black/90 backdrop-blur-md rounded-xl border-white/10"
|
||||
>
|
||||
<div className="flex items-center gap-3">
|
||||
<div
|
||||
@@ -359,11 +359,11 @@ const IOSCaseStudies = () => {
|
||||
>
|
||||
<AchievementIcon className="w-5 h-5 text-white" />
|
||||
</div>
|
||||
<div className="min-w-0 flex-1">
|
||||
<div className="flex-1 min-w-0">
|
||||
<div className="text-2xl font-bold text-white">
|
||||
{study.keyAchievement.number}
|
||||
</div>
|
||||
<div className="text-sm text-gray-300 leading-tight">
|
||||
<div className="text-sm leading-tight text-gray-300">
|
||||
{study.keyAchievement.metric}
|
||||
</div>
|
||||
</div>
|
||||
@@ -378,17 +378,17 @@ const IOSCaseStudies = () => {
|
||||
<div className="flex-1">
|
||||
{/* Project Title - Consistent Height */}
|
||||
<div className="mb-4 min-h-[60px] flex items-start">
|
||||
<h3 className="text-xl font-semibold text-foreground leading-tight group-hover:text-accent transition-colors duration-300 line-clamp-2">
|
||||
<h3 className="text-xl font-semibold leading-tight transition-colors duration-300 text-foreground group-hover:text-accent line-clamp-2">
|
||||
{study.title}
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
{/* Client & Description - Consistent Height */}
|
||||
<div className="mb-6 min-h-[100px]">
|
||||
<div className="text-accent font-medium text-sm mb-2">
|
||||
<div className="mb-2 text-sm font-medium text-accent">
|
||||
{study.client}
|
||||
</div>
|
||||
<p className="text-muted-foreground text-sm leading-relaxed line-clamp-4">
|
||||
<p className="text-sm leading-relaxed text-muted-foreground line-clamp-4">
|
||||
{study.description}
|
||||
</p>
|
||||
</div>
|
||||
@@ -400,7 +400,7 @@ const IOSCaseStudies = () => {
|
||||
<Badge
|
||||
key={tag}
|
||||
variant="secondary"
|
||||
className="text-xs bg-gray-800/50 text-gray-300 border-gray-700 hover:bg-gray-700/50 transition-colors"
|
||||
className="text-xs text-gray-300 transition-colors border-gray-700 bg-gray-800/50 hover:bg-gray-700/50"
|
||||
>
|
||||
{tag}
|
||||
</Badge>
|
||||
@@ -416,7 +416,7 @@ const IOSCaseStudies = () => {
|
||||
whileTap={{ scale: 0.98 }}
|
||||
>
|
||||
<Button
|
||||
className="w-full bg-gradient-to-r from-accent to-accent/80 hover:from-accent/90 hover:to-accent/70 text-white font-semibold py-3 rounded-xl shadow-lg hover:shadow-xl transition-all duration-300 group h-12"
|
||||
className="w-full h-12 py-3 font-semibold text-white transition-all duration-300 shadow-lg bg-gradient-to-r from-accent to-accent/80 hover:from-accent/90 hover:to-accent/70 rounded-xl hover:shadow-xl group"
|
||||
onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
if (study.title === "RanOutOf") {
|
||||
@@ -429,7 +429,7 @@ const IOSCaseStudies = () => {
|
||||
}}
|
||||
>
|
||||
<span>View Full Case Study</span>
|
||||
<ArrowRight className="w-4 h-4 ml-2 group-hover:translate-x-1 transition-transform duration-300" />
|
||||
<ArrowRight className="w-4 h-4 ml-2 transition-transform duration-300 group-hover:translate-x-1" />
|
||||
</Button>
|
||||
</motion.div>
|
||||
</div>
|
||||
@@ -447,12 +447,12 @@ const IOSCaseStudies = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.6 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mt-16"
|
||||
className="mt-16 text-center"
|
||||
>
|
||||
<Button
|
||||
variant="outline"
|
||||
size="lg"
|
||||
className="border-white/20 text-muted-foreground hover:bg-white/10 hover:text-foreground hover:border-accent/50 transition-all duration-300"
|
||||
className="transition-all duration-300 border-white/20 text-muted-foreground hover:bg-white/10 hover:text-foreground hover:border-accent/50"
|
||||
onClick={() => navigate("/case-studies")}
|
||||
>
|
||||
<Eye className="w-5 h-5 mr-2" />
|
||||
@@ -501,18 +501,18 @@ const IOSProcessTimeline = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32 bg-black">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-white mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold text-white lg:text-5xl">
|
||||
Our Proven Approach to Building Your iOS App
|
||||
</h2>
|
||||
<p className="text-xl text-gray-300 max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-gray-300">
|
||||
From concept to App Store success, we guide you through every step
|
||||
of the iOS development journey.
|
||||
</p>
|
||||
@@ -541,26 +541,26 @@ const IOSProcessTimeline = () => {
|
||||
className={`flex-1 ${isEven ? "lg:text-right" : "lg:text-left"
|
||||
} text-center lg:text-left`}
|
||||
>
|
||||
<div className="bg-gray-900/50 backdrop-blur-md rounded-2xl border border-gray-800 p-8 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl">
|
||||
<div className="flex items-center gap-4 mb-4 justify-center lg:justify-start">
|
||||
<div className="w-12 h-12 bg-accent/20 rounded-xl flex items-center justify-center">
|
||||
<div className="p-8 transition-all duration-300 border border-gray-800 shadow-lg bg-gray-900/50 backdrop-blur-md rounded-2xl hover:border-accent/30 hover:shadow-xl">
|
||||
<div className="flex items-center justify-center gap-4 mb-4 lg:justify-start">
|
||||
<div className="flex items-center justify-center w-12 h-12 bg-accent/20 rounded-xl">
|
||||
<IconComponent className="w-6 h-6 text-accent" />
|
||||
</div>
|
||||
<div className="text-2xl font-bold text-accent">
|
||||
0{index + 1}
|
||||
</div>
|
||||
</div>
|
||||
<h3 className="text-2xl font-semibold text-white mb-4">
|
||||
<h3 className="mb-4 text-2xl font-semibold text-white">
|
||||
{step.title}
|
||||
</h3>
|
||||
<p className="text-gray-300 leading-relaxed">
|
||||
<p className="leading-relaxed text-gray-300">
|
||||
{step.description}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Timeline dot */}
|
||||
<div className="w-4 h-4 bg-accent rounded-full border-4 border-black z-10 hidden lg:block"></div>
|
||||
<div className="z-10 hidden w-4 h-4 border-4 border-black rounded-full bg-accent lg:block"></div>
|
||||
|
||||
<div className="flex-1 hidden lg:block"></div>
|
||||
</motion.div>
|
||||
@@ -616,18 +616,18 @@ const IOSServicesGrid = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-foreground mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold lg:text-5xl text-foreground">
|
||||
Comprehensive iOS App Solutions
|
||||
</h2>
|
||||
<p className="text-xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-muted-foreground">
|
||||
From iPhone apps to Apple ecosystem integration, we provide
|
||||
end-to-end iOS development services.
|
||||
</p>
|
||||
@@ -638,7 +638,7 @@ const IOSServicesGrid = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.2 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid md:grid-cols-2 lg:grid-cols-3 gap-8"
|
||||
className="grid gap-8 md:grid-cols-2 lg:grid-cols-3"
|
||||
>
|
||||
{services.map((service, index) => {
|
||||
const IconComponent = service.icon;
|
||||
@@ -652,15 +652,15 @@ const IOSServicesGrid = () => {
|
||||
whileHover={{ y: -5 }}
|
||||
className="group"
|
||||
>
|
||||
<Card className="bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl h-full">
|
||||
<Card className="h-full transition-all duration-300 shadow-lg bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="p-8">
|
||||
<div className="w-12 h-12 bg-accent/20 rounded-lg flex items-center justify-center mb-6">
|
||||
<div className="flex items-center justify-center w-12 h-12 mb-6 rounded-lg bg-accent/20">
|
||||
<IconComponent className="w-6 h-6 text-accent" />
|
||||
</div>
|
||||
<h3 className="text-xl font-semibold text-foreground mb-4">
|
||||
<h3 className="mb-4 text-xl font-semibold text-foreground">
|
||||
{service.title}
|
||||
</h3>
|
||||
<p className="text-muted-foreground leading-relaxed">
|
||||
<p className="leading-relaxed text-muted-foreground">
|
||||
{service.description}
|
||||
</p>
|
||||
</CardContent>
|
||||
@@ -714,24 +714,24 @@ const IOSTechStack = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32 bg-black">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-white mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold text-white lg:text-5xl">
|
||||
Building with the Most Powerful iOS Technologies
|
||||
</h2>
|
||||
<p className="text-xl text-gray-300 leading-relaxed">
|
||||
<p className="text-xl leading-relaxed text-gray-300">
|
||||
We leverage cutting-edge iOS frameworks and tools to create
|
||||
exceptional mobile experiences.
|
||||
</p>
|
||||
</motion.div>
|
||||
|
||||
<div className="grid grid-cols-2 md:grid-cols-4 gap-8 max-w-4xl mx-auto">
|
||||
<div className="grid max-w-4xl grid-cols-2 gap-8 mx-auto md:grid-cols-4">
|
||||
{technologies.map((tech, index) => (
|
||||
<motion.div
|
||||
key={index}
|
||||
@@ -742,14 +742,14 @@ const IOSTechStack = () => {
|
||||
whileHover={{ scale: 1.1, y: -5 }}
|
||||
className="flex flex-col items-center group"
|
||||
>
|
||||
<div className="w-20 h-20 bg-gray-900/50 rounded-2xl flex items-center justify-center border border-gray-800 group-hover:border-accent/30 transition-all duration-300 shadow-lg group-hover:shadow-xl mb-4">
|
||||
<div className="flex items-center justify-center w-20 h-20 mb-4 transition-all duration-300 border border-gray-800 shadow-lg bg-gray-900/50 rounded-2xl group-hover:border-accent/30 group-hover:shadow-xl">
|
||||
<ImageWithFallback
|
||||
src={tech.logo}
|
||||
alt={tech.name}
|
||||
className="w-12 h-12 object-contain"
|
||||
className="object-contain w-12 h-12"
|
||||
/>
|
||||
</div>
|
||||
<span className="text-gray-300 text-sm group-hover:text-white transition-colors duration-300">
|
||||
<span className="text-sm text-gray-300 transition-colors duration-300 group-hover:text-white">
|
||||
{tech.name}
|
||||
</span>
|
||||
</motion.div>
|
||||
@@ -797,18 +797,18 @@ const IOSKeyBenefits = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-16"
|
||||
className="mb-16 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-foreground mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold lg:text-5xl text-foreground">
|
||||
Why Choose Native iOS for Your App?
|
||||
</h2>
|
||||
<p className="text-xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-muted-foreground">
|
||||
iOS development offers unparalleled advantages for businesses
|
||||
looking to create premium mobile experiences.
|
||||
</p>
|
||||
@@ -819,7 +819,7 @@ const IOSKeyBenefits = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.2 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid md:grid-cols-2 lg:grid-cols-3 gap-8 max-w-6xl mx-auto"
|
||||
className="grid max-w-6xl gap-8 mx-auto md:grid-cols-2 lg:grid-cols-3"
|
||||
>
|
||||
{benefits.slice(0, 3).map((benefit, index) => {
|
||||
const IconComponent = benefit.icon;
|
||||
@@ -833,15 +833,15 @@ const IOSKeyBenefits = () => {
|
||||
whileHover={{ y: -5 }}
|
||||
className="group"
|
||||
>
|
||||
<Card className="bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl h-full">
|
||||
<Card className="h-full transition-all duration-300 shadow-lg bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="p-8 text-center">
|
||||
<div className="w-16 h-16 bg-accent/20 rounded-2xl flex items-center justify-center mx-auto mb-6">
|
||||
<div className="flex items-center justify-center w-16 h-16 mx-auto mb-6 bg-accent/20 rounded-2xl">
|
||||
<IconComponent className="w-8 h-8 text-accent" />
|
||||
</div>
|
||||
<h3 className="text-xl font-semibold text-foreground mb-4">
|
||||
<h3 className="mb-4 text-xl font-semibold text-foreground">
|
||||
{benefit.title}
|
||||
</h3>
|
||||
<p className="text-muted-foreground leading-relaxed">
|
||||
<p className="leading-relaxed text-muted-foreground">
|
||||
{benefit.description}
|
||||
</p>
|
||||
</CardContent>
|
||||
@@ -857,7 +857,7 @@ const IOSKeyBenefits = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.4 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid md:grid-cols-2 gap-8 max-w-4xl mx-auto mt-8"
|
||||
className="grid max-w-4xl gap-8 mx-auto mt-8 md:grid-cols-2"
|
||||
>
|
||||
{benefits.slice(3).map((benefit, index) => {
|
||||
const IconComponent = benefit.icon;
|
||||
@@ -871,15 +871,15 @@ const IOSKeyBenefits = () => {
|
||||
whileHover={{ y: -5 }}
|
||||
className="group"
|
||||
>
|
||||
<Card className="bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl h-full">
|
||||
<Card className="h-full transition-all duration-300 shadow-lg bg-card/20 backdrop-blur-md border-white/10 hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="p-8 text-center">
|
||||
<div className="w-16 h-16 bg-accent/20 rounded-2xl flex items-center justify-center mx-auto mb-6">
|
||||
<div className="flex items-center justify-center w-16 h-16 mx-auto mb-6 bg-accent/20 rounded-2xl">
|
||||
<IconComponent className="w-8 h-8 text-accent" />
|
||||
</div>
|
||||
<h3 className="text-xl font-semibold text-foreground mb-4">
|
||||
<h3 className="mb-4 text-xl font-semibold text-foreground">
|
||||
{benefit.title}
|
||||
</h3>
|
||||
<p className="text-muted-foreground leading-relaxed">
|
||||
<p className="leading-relaxed text-muted-foreground">
|
||||
{benefit.description}
|
||||
</p>
|
||||
</CardContent>
|
||||
@@ -926,18 +926,18 @@ const IOSTechnologies = () => {
|
||||
|
||||
return (
|
||||
<section className="py-32 bg-black">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8 }}
|
||||
viewport={{ once: true }}
|
||||
className="text-center mb-20"
|
||||
className="mb-20 text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-white mb-6">
|
||||
<h2 className="mb-6 text-4xl font-semibold text-white lg:text-5xl">
|
||||
iOS Development Technologies
|
||||
</h2>
|
||||
<p className="text-xl text-gray-300 leading-relaxed max-w-3xl mx-auto">
|
||||
<p className="max-w-3xl mx-auto text-xl leading-relaxed text-gray-300">
|
||||
We leverage the latest iOS technologies and frameworks to build
|
||||
exceptional apps.
|
||||
</p>
|
||||
@@ -948,7 +948,7 @@ const IOSTechnologies = () => {
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.8, delay: 0.2 }}
|
||||
viewport={{ once: true }}
|
||||
className="grid lg:grid-cols-2 gap-12 max-w-6xl mx-auto"
|
||||
className="grid max-w-6xl gap-12 mx-auto lg:grid-cols-2"
|
||||
>
|
||||
{technologies.map((tech, index) => {
|
||||
const IconComponent = tech.icon;
|
||||
@@ -962,18 +962,18 @@ const IOSTechnologies = () => {
|
||||
whileHover={{ y: -5 }}
|
||||
className="group"
|
||||
>
|
||||
<Card className="bg-gray-900/50 backdrop-blur-md border-gray-800 hover:border-accent/30 transition-all duration-300 shadow-lg hover:shadow-xl rounded-2xl overflow-hidden h-full">
|
||||
<Card className="h-full overflow-hidden transition-all duration-300 border-gray-800 shadow-lg bg-gray-900/50 backdrop-blur-md hover:border-accent/30 hover:shadow-xl rounded-2xl">
|
||||
<CardContent className="p-0">
|
||||
{/* Image Section */}
|
||||
<div className="relative h-48 overflow-hidden">
|
||||
<ImageWithFallback
|
||||
src={tech.image}
|
||||
alt={tech.title}
|
||||
className="w-full h-full object-cover transition-transform duration-500 group-hover:scale-110"
|
||||
className="object-cover w-full h-full transition-transform duration-500 group-hover:scale-110"
|
||||
/>
|
||||
<div className="absolute inset-0 bg-gradient-to-t from-gray-900/90 via-transparent to-transparent" />
|
||||
<div className="absolute bottom-4 left-4">
|
||||
<div className="w-12 h-12 bg-accent/20 rounded-lg flex items-center justify-center">
|
||||
<div className="flex items-center justify-center w-12 h-12 rounded-lg bg-accent/20">
|
||||
<IconComponent className="w-6 h-6 text-accent" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -981,16 +981,16 @@ const IOSTechnologies = () => {
|
||||
|
||||
{/* Content Section */}
|
||||
<div className="p-8">
|
||||
<h3 className="text-2xl font-semibold text-white mb-4">
|
||||
<h3 className="mb-4 text-2xl font-semibold text-white">
|
||||
{tech.title}
|
||||
</h3>
|
||||
<p className="text-gray-300 leading-relaxed mb-6">
|
||||
<p className="mb-6 leading-relaxed text-gray-300">
|
||||
{tech.description}
|
||||
</p>
|
||||
|
||||
{/* Features List */}
|
||||
<div className="space-y-2">
|
||||
<h4 className="text-sm font-medium text-white mb-3">
|
||||
<h4 className="mb-3 text-sm font-medium text-white">
|
||||
Key Features:
|
||||
</h4>
|
||||
<div className="grid grid-cols-2 gap-2">
|
||||
@@ -999,7 +999,7 @@ const IOSTechnologies = () => {
|
||||
key={idx}
|
||||
className="flex items-center gap-2 text-sm text-gray-300"
|
||||
>
|
||||
<CheckCircle className="w-4 h-4 text-accent flex-shrink-0" />
|
||||
<CheckCircle className="flex-shrink-0 w-4 h-4 text-accent" />
|
||||
<span>{feature}</span>
|
||||
</div>
|
||||
))}
|
||||
@@ -1021,7 +1021,7 @@ const IOSTechnologies = () => {
|
||||
export const IOSAppDevelopment = () => {
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<div className="dark min-h-screen">
|
||||
<div className="min-h-screen dark">
|
||||
{/* <Navigation /> */}
|
||||
|
||||
<section className="bg-black">
|
||||
@@ -1082,7 +1082,7 @@ export const IOSAppDevelopment = () => {
|
||||
|
||||
{/* CTA Section */}
|
||||
<section className="py-32">
|
||||
<div className="container mx-auto px-6 lg:px-8">
|
||||
<div className="container px-6 mx-auto lg:px-8">
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
@@ -1090,27 +1090,27 @@ export const IOSAppDevelopment = () => {
|
||||
viewport={{ once: true }}
|
||||
className="text-center"
|
||||
>
|
||||
<h2 className="text-4xl lg:text-5xl font-semibold text-foreground mb-8">
|
||||
<h2 className="mb-8 text-4xl font-semibold lg:text-5xl text-foreground">
|
||||
Ready to Build Your Next iOS App?
|
||||
</h2>
|
||||
<p className="text-lg text-muted-foreground mb-12 max-w-2xl mx-auto">
|
||||
<p className="max-w-2xl mx-auto mb-12 text-lg text-muted-foreground">
|
||||
Partner with us to create exceptional iOS applications that
|
||||
delight users and drive business success.
|
||||
</p>
|
||||
<div className="flex flex-col sm:flex-row gap-6 justify-center">
|
||||
<div className="flex flex-col justify-center gap-6 sm:flex-row">
|
||||
<ShimmerButton
|
||||
className="text-lg px-8 py-4 h-auto"
|
||||
className="h-auto px-8 py-4 text-lg"
|
||||
onClick={() => navigate("/start-a-project")}
|
||||
>
|
||||
<div className="inline-flex items-center gap-2">
|
||||
<Apple className="w-5 h-5 flex-shrink-0" />
|
||||
<Apple className="flex-shrink-0 w-5 h-5" />
|
||||
<span>Start Your iOS Project</span>
|
||||
</div>
|
||||
</ShimmerButton>
|
||||
<Button
|
||||
variant="outline"
|
||||
size="lg"
|
||||
className="text-lg px-8 py-4 h-auto border-white/20 text-muted-foreground hover:bg-white/10 hover:text-foreground"
|
||||
className="h-auto px-8 py-4 text-lg border-white/20 text-muted-foreground hover:bg-white/10 hover:text-foreground"
|
||||
>
|
||||
<Calendar className="w-5 h-5 mr-2" />
|
||||
Schedule Consultation
|
||||
|
||||
Reference in New Issue
Block a user