diff --git a/package-lock.json b/package-lock.json index 3190979..27af28e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -142,6 +142,7 @@ "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", @@ -3171,6 +3172,7 @@ "integrity": "sha512-Qm9OYVOFHFYg3wJoTSrz80hoec5Lia/dPp84do3X7dZvLikQvM1YpmvTBEdIr/e+U8HTkFjLHLnl78K/qjf+jQ==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.8.0" } @@ -3188,6 +3190,7 @@ "integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -3199,6 +3202,7 @@ "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", "devOptional": true, "license": "MIT", + "peer": true, "peerDependencies": { "@types/react": "^18.0.0" } @@ -3291,6 +3295,7 @@ "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "6.21.0", "@typescript-eslint/types": "6.21.0", @@ -3481,6 +3486,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3684,6 +3690,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001726", "electron-to-chromium": "^1.5.173", @@ -4370,7 +4377,8 @@ "version": "8.6.0", "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/embla-carousel-react": { "version": "8.6.0", @@ -4481,6 +4489,7 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -5754,7 +5763,6 @@ "resolved": "https://registry.npmjs.org/on-change/-/on-change-4.0.2.tgz", "integrity": "sha512-cMtCyuJmTx/bg2HCpHo3ZLeF7FZnBOapLqZHr2AlLeJ5Ul0Zu2mUJJz051Fdwu/Et2YW04ZD+TtU+gVy0ACNCA==", "license": "MIT", - "peer": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -5913,6 +5921,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -5992,6 +6001,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -6057,6 +6067,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -6122,6 +6133,7 @@ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", "license": "MIT", + "peer": true, "dependencies": { "@types/use-sync-external-store": "^0.0.6", "use-sync-external-store": "^1.4.0" @@ -6363,7 +6375,8 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/redux-thunk": { "version": "3.1.0", @@ -6513,8 +6526,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/set-cookie-parser": { "version": "2.7.1", @@ -6648,7 +6660,8 @@ "version": "4.1.11", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.11.tgz", "integrity": "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/tailwindcss-animate": { "version": "1.0.7", @@ -6833,6 +6846,7 @@ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -6988,6 +7002,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", diff --git a/pages/MobileAppDevelopment.tsx b/pages/MobileAppDevelopment.tsx index e7c2d07..75dad8b 100644 --- a/pages/MobileAppDevelopment.tsx +++ b/pages/MobileAppDevelopment.tsx @@ -32,7 +32,7 @@ import { Badge } from "../components/ui/badge"; import { Button } from "../components/ui/button"; import { Card, CardContent } from "../components/ui/card"; import { ShimmerButton } from "../components/ui/shimmer-button"; -import heroMockupImage from '../src/images/mobile-app-banner.webp'; +import heroMockupImage from '../src/images/mobile-app-banner.png'; import { Helmet } from "react-helmet-async"; import { useNavigate } from "react-router-dom"; @@ -88,13 +88,13 @@ const HeroWithCTA = () => { `} -
+
{/* Mobile App Development Label */} { >
- Mobile App Development + Mobile App Development
@@ -115,13 +115,13 @@ const HeroWithCTA = () => { transition={{ duration: 0.6, delay: 0.1 }} className="space-y-6" > -

+

From concept to App Store in just 6 weeks.

-

+

Build secure, scalable, high-performance apps for iOS, Android, or cross-platform — fast.

@@ -133,23 +133,23 @@ const HeroWithCTA = () => { initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.8, delay: 0.2 }} - className="flex flex-col sm:flex-row gap-4 pt-4" + className="flex flex-col gap-4 pt-4 sm:flex-row" > navigate('/start-a-project')} >
- + Book a Discovery Call
@@ -216,24 +216,24 @@ const HorizontalTagScroller = () => { ]; return ( -
+
{/* Add subtle decorative elements */}
-
-
+
+
-
+
-

+

Apps Built for High-Impact Industries

-

+

Our mobile apps power industries where user trust, speed, and uptime are critical.

@@ -246,8 +246,8 @@ const HorizontalTagScroller = () => { className="relative overflow-hidden" > {/* Gradient overlays for smooth fade effect */} -
-
+
+
{/* Marquee container */}
@@ -261,9 +261,9 @@ const HorizontalTagScroller = () => { whileInView={{ opacity: 1, scale: 1 }} transition={{ duration: 0.5, delay: index * 0.01 }} viewport={{ once: true }} - className="group flex-shrink-0 mx-3" + className="flex-shrink-0 mx-3 group" > -
+
@@ -287,9 +287,9 @@ const HorizontalTagScroller = () => { whileInView={{ opacity: 1, scale: 1 }} transition={{ duration: 0.5, delay: (index + industries.length) * 0.1 }} viewport={{ once: true }} - className="group flex-shrink-0 mx-3" + className="flex-shrink-0 mx-3 group" > -
+
@@ -313,9 +313,9 @@ const HorizontalTagScroller = () => { whileInView={{ opacity: 1, scale: 1 }} transition={{ duration: 0.5, delay: (index + industries.length * 2) * 0.1 }} viewport={{ once: true }} - className="group flex-shrink-0 mx-3" + className="flex-shrink-0 mx-3 group" > -
+
@@ -367,21 +367,21 @@ const SideBySideContentWithIcons = () => { return (
-
+
{/* Main Heading */} -

+

Why Founders and CTOs Trust WDI

{/* Subtext */} -

+

Not just a dev agency. A product partner.

@@ -392,7 +392,7 @@ const SideBySideContentWithIcons = () => { whileInView={{ opacity: 1, y: 0 }} transition={{ duration: 0.8, delay: 0.2 }} viewport={{ once: true }} - className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5 gap-6 max-w-7xl mx-auto" + className="grid grid-cols-1 gap-6 mx-auto md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5 max-w-7xl" > {trustFactors.map((factor, index) => { const IconComponent = factor.icon; @@ -405,17 +405,17 @@ const SideBySideContentWithIcons = () => { 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" > - + {/* Icon - Clean without background */}
- +
{/* Title */} -

+

{factor.title}

@@ -473,18 +473,18 @@ const TabbedServiceDisplay = () => { return (
-
+
-

+

Mobile App Development Services

-

+

Comprehensive mobile development services that transform your ideas into powerful, user-friendly applications across all platforms.

@@ -494,7 +494,7 @@ const TabbedServiceDisplay = () => { 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; @@ -506,20 +506,20 @@ const TabbedServiceDisplay = () => { transition={{ duration: 0.5, delay: index * 0.01 }} viewport={{ once: true }} whileHover={{ y: -5 }} - className="group cursor-pointer" + className="cursor-pointer group" onClick={() => navigate(service.link)} > -
+
-
+
-

+

{service.title}

-

+

{service.description}

@@ -539,13 +539,13 @@ const InlineCTA = () => { const navigate = useNavigate(); return (
-
+
{
{/* Main Heading */} -

+

Let's Architect Intelligence Into Your App

{/* Subtitle */} -

+

Schedule a discovery call to explore how AI can give you a strategic edge.

@@ -583,7 +583,7 @@ const InlineCTA = () => { onClick={() => navigate('/start-a-project')} >
- + Book an AI Discovery Call
@@ -640,19 +640,19 @@ const HireDevelopersSection = () => { return (
-
+
-

+

Hire Our Mobile App Experts

-

+

Get access to top-tier mobile developers who can bring your vision to life with cutting-edge technology and proven expertise.

@@ -662,7 +662,7 @@ const HireDevelopersSection = () => { whileInView={{ opacity: 1, y: 0 }} transition={{ duration: 0.8, delay: 0.2 }} viewport={{ once: true }} - className="grid md:grid-cols-2 xl:grid-cols-4 gap-8" + className="grid gap-8 md:grid-cols-2 xl:grid-cols-4" > {developers.map((developer, index) => { const IconComponent = developer.icon; @@ -674,10 +674,10 @@ const HireDevelopersSection = () => { 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" > - - + + {/* Header with icon and title */}
@@ -685,19 +685,19 @@ const HireDevelopersSection = () => {
-
+
Mobile Development
-

+

{developer.title}

{/* Skills section */} -
+
{developer.skills.map((skill) => ( @@ -710,11 +710,11 @@ const HireDevelopersSection = () => { {/* CTA Buttons - Updated with ShimmerButton */}
navigate(developer.link)} >
- + Hire Now
@@ -780,7 +780,7 @@ export const MobileAppDevelopment = () => { }, []); return ( -
+
{/* */} {/* Hero Section */} diff --git a/src/images/mobile-app-banner.png b/src/images/mobile-app-banner.png new file mode 100644 index 0000000..70de722 Binary files /dev/null and b/src/images/mobile-app-banner.png differ diff --git a/src/images/mobile-app-banner.webp b/src/images/mobile-app-banner.webp deleted file mode 100644 index 52d4ad3..0000000 Binary files a/src/images/mobile-app-banner.webp and /dev/null differ