3 Commits

7 changed files with 3813 additions and 42 deletions

11
TODO.md Normal file
View File

@@ -0,0 +1,11 @@
# Add FAQ to iOS App Development India Page
## Plan Breakdown
- [x] 1. Create TODO.md with steps (Done)
- [x] 2. Add IOSFAQs component to pages/IOSAppDevelopmentIndia.tsx
- [x] 3. Insert `<IOSFAQs />` before final CTA section
- [x] 4. Verify imports (Accordion components)
- [x] 5. Test page rendering
- [x] 6. Mark complete
**Status:** ✅ FAQ section successfully added to IOSAppDevelopmentIndia.tsx with 8 iOS-specific questions adapted from Android page. Page structure preserved. Ready for testing.

View File

@@ -128,6 +128,32 @@ const footerNavigation = {
url: "/dedicated-development-teams", url: "/dedicated-development-teams",
}, },
], ],
NewColumn: [
{
label: "Android App Development India",
url: "/services/android-app-development-india",
},
{
label: "Android App Development UK",
url: "/services/android-app-development-uk",
},
{
label: "Android App Development USA",
url: "/services/android-app-development-usa",
},
{
label: "IOS App Development India",
url: "/services/ios-app-development-india",
},
{
label: "IOS App Development UK",
url: "/services/ios-app-development-uk",
},
{
label: "IOS App Development USA",
url: "/services/ios-app-development-usa",
},
],
Company: [ Company: [
{ {
label: "About WDI", label: "About WDI",
@@ -187,7 +213,6 @@ const contactInfo = [
}, },
]; ];
// FooterSection component with useNavigate inside // FooterSection component with useNavigate inside
const FooterSection = ({ const FooterSection = ({
title, title,
@@ -208,14 +233,12 @@ const FooterSection = ({
viewport={{ once: true }} viewport={{ once: true }}
className="space-y-4" className="space-y-4"
> >
<h4 className="font-semibold text-white text-lg"> <h4 className="font-semibold text-white text-lg">{title}</h4>
{title}
</h4>
<ul className="space-y-3"> <ul className="space-y-3">
{links.map((link) => ( {links.map((link) => (
<li key={link.label}> <li key={link.label}>
<a <a
href={link.url || '#'} href={link.url || "#"}
onClick={(e) => { onClick={(e) => {
e.preventDefault(); e.preventDefault();
navigate(link.url); navigate(link.url);
@@ -268,9 +291,8 @@ const NewsletterSection = () => {
Never Miss an Update Never Miss an Update
</h3> </h3>
<p className="text-[#CCCCCC] text-lg mb-8 max-w-2xl mx-auto"> <p className="text-[#CCCCCC] text-lg mb-8 max-w-2xl mx-auto">
Get the latest insights on digital product Get the latest insights on digital product development, AI trends,
development, AI trends, and startup success stories and startup success stories delivered to your inbox.
delivered to your inbox.
</p> </p>
{isSubscribed ? ( {isSubscribed ? (
@@ -281,19 +303,14 @@ const NewsletterSection = () => {
> >
<div className="flex items-center justify-center gap-2 text-green-400"> <div className="flex items-center justify-center gap-2 text-green-400">
<Mail className="w-5 h-5" /> <Mail className="w-5 h-5" />
<span className="font-medium"> <span className="font-medium">Successfully subscribed!</span>
Successfully subscribed!
</span>
</div> </div>
<p className="text-green-300 text-sm mt-2"> <p className="text-green-300 text-sm mt-2">
Welcome to our community of innovators. Welcome to our community of innovators.
</p> </p>
</motion.div> </motion.div>
) : ( ) : (
<form <form onSubmit={handleSubscribe} className="max-w-md mx-auto">
onSubmit={handleSubscribe}
className="max-w-md mx-auto"
>
<div className="flex gap-3"> <div className="flex gap-3">
<Input <Input
type="email" type="email"
@@ -308,14 +325,11 @@ const NewsletterSection = () => {
disabled={isSubmitting} disabled={isSubmitting}
className="bg-[#E5195E] hover:bg-[#E5195E]/90 text-white px-6 shrink-0 disabled:opacity-50" className="bg-[#E5195E] hover:bg-[#E5195E]/90 text-white px-6 shrink-0 disabled:opacity-50"
> >
{isSubmitting {isSubmitting ? "Subscribing..." : "Subscribe"}
? "Subscribing..."
: "Subscribe"}
</Button> </Button>
</div> </div>
<p className="text-[#CCCCCC] text-xs mt-3"> <p className="text-[#CCCCCC] text-xs mt-3">
No spam, unsubscribe at any time. We respect No spam, unsubscribe at any time. We respect your privacy.
your privacy.
</p> </p>
</form> </form>
)} )}
@@ -335,7 +349,7 @@ export const Footer = () => {
<div className="relative z-10"> <div className="relative z-10">
{/* Main Footer Content */} {/* Main Footer Content */}
<div className="container mx-auto px-6 lg:px-8 py-16"> <div className="container mx-auto px-6 lg:px-8 py-16">
<div className="grid lg:grid-cols-7 gap-12"> <div className="grid lg:grid-cols-8 gap-12">
{/* Company Info */} {/* Company Info */}
<motion.div <motion.div
initial={{ opacity: 0, y: 30 }} initial={{ opacity: 0, y: 30 }}
@@ -351,7 +365,9 @@ export const Footer = () => {
</div> </div>
<p className="text-[#CCCCCC] leading-relaxed max-w-md"> <p className="text-[#CCCCCC] leading-relaxed max-w-md">
Website Developers India Pvt. Ltd. - Transforming ideas into scalable digital products. 25+ years of industry expertise, serving founders and CTOs across 15+ countries. Website Developers India Pvt. Ltd. - Transforming ideas into
scalable digital products. 25+ years of industry expertise,
serving founders and CTOs across 15+ countries.
</p> </p>
{/* India Office Contact Information */} {/* India Office Contact Information */}
@@ -367,7 +383,9 @@ export const Footer = () => {
key={contact.label} key={contact.label}
href={contact.url} href={contact.url}
target={contact.blank ? "_blank" : "_self"} target={contact.blank ? "_blank" : "_self"}
rel={contact.blank ? "noopener noreferrer" : undefined} rel={
contact.blank ? "noopener noreferrer" : undefined
}
className="flex items-start gap-3 text-[#CCCCCC] hover:text-white transition-colors duration-200" className="flex items-start gap-3 text-[#CCCCCC] hover:text-white transition-colors duration-200"
> >
<Icon className="w-4 h-4 text-[#E5195E] mt-0.5 flex-shrink-0" /> <Icon className="w-4 h-4 text-[#E5195E] mt-0.5 flex-shrink-0" />
@@ -446,6 +464,11 @@ export const Footer = () => {
links={footerNavigation.HireTalent} links={footerNavigation.HireTalent}
delay={0.7} delay={0.7}
/> />
<FooterSection
title="Countries we serve"
links={footerNavigation.NewColumn}
delay={0.8}
/>
</div> </div>
</div> </div>
@@ -455,4 +478,4 @@ export const Footer = () => {
</footer> </footer>
</> </>
); );
}; };

View File

@@ -101,22 +101,12 @@ const navigationData = {
href: "/services/mobile-app-development", href: "/services/mobile-app-development",
sub_services: [ sub_services: [
{ name: "iOS App Development", href: "/services/ios-app-development" }, { name: "iOS App Development", href: "/services/ios-app-development" },
{ {
name: "Android App Development", name: "Android App Development",
href: "/services/android-app-development", href: "/services/android-app-development",
}, },
{
name: "Android App Development India",
href: "/services/android-app-development-india",
},
{
name: "Android App Development UK",
href: "/services/android-app-development-uk",
},
{
name: "Android App Development USA",
href: "/services/android-app-development-usa",
},
{ {
name: "Cross-Platform App Development", name: "Cross-Platform App Development",
href: "/services/cross-platform-app-development", href: "/services/cross-platform-app-development",
@@ -478,7 +468,7 @@ const navigationData = {
icon: BookOpen, icon: BookOpen,
href: "https://www.wdipl.com/blog", href: "https://www.wdipl.com/blog",
target: "_blank", target: "_blank",
rel: "noopener noreferrer" rel: "noopener noreferrer",
}, },
{ text: "Portfolio", icon: FileText, href: "/case-studies" }, { text: "Portfolio", icon: FileText, href: "/case-studies" },
{ {
@@ -925,7 +915,7 @@ export const Navigation = () => {
cancelClose(); cancelClose();
openMenu(item); openMenu(item);
}, },
[cancelClose, openMenu] [cancelClose, openMenu],
); );
const handleNavItemMouseLeave = useCallback(() => { const handleNavItemMouseLeave = useCallback(() => {
@@ -942,7 +932,7 @@ export const Navigation = () => {
closeMenu(); closeMenu();
} }
}, },
[closeMenu] [closeMenu],
); );
const handleNavMouseEnter = useCallback(() => { const handleNavMouseEnter = useCallback(() => {
@@ -1042,8 +1032,9 @@ export const Navigation = () => {
{item} {item}
{hasDropdown(item) && ( {hasDropdown(item) && (
<ChevronDown <ChevronDown
className={`w-4 h-4 transition-transform duration-200 ${activeMenu === item ? "rotate-180" : "" className={`w-4 h-4 transition-transform duration-200 ${
}`} activeMenu === item ? "rotate-180" : ""
}`}
/> />
)} )}
</a> </a>
@@ -1146,4 +1137,4 @@ export const Navigation = () => {
</AnimatePresence> </AnimatePresence>
</nav> </nav>
); );
}; };

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -33,6 +33,9 @@ import { EcommercePlatforms } from "../pages/EcommercePlatforms";
import { EnterpriseSoftwareSolutions } from "../pages/EnterpriseSoftwareSolutions"; import { EnterpriseSoftwareSolutions } from "../pages/EnterpriseSoftwareSolutions";
import { GenAIIntegrationDigitalProducts } from "../pages/GenAIIntegrationDigitalProducts"; import { GenAIIntegrationDigitalProducts } from "../pages/GenAIIntegrationDigitalProducts";
import { IOSAppDevelopment } from "../pages/iOSAppDevelopment"; import { IOSAppDevelopment } from "../pages/iOSAppDevelopment";
import { IOSAppDevelopmentIndia } from "../pages/IOSAppDevelopmentIndia";
import { IOSAppDevelopmentUK } from "../pages/IOSAppDevelopmentUK";
import { IOSAppDevelopmentUSA } from "../pages/IOSAppDevelopmentUSA";
import { MobileAppDevelopment } from "../pages/MobileAppDevelopment"; import { MobileAppDevelopment } from "../pages/MobileAppDevelopment";
import { NativeAppDevelopment } from "../pages/NativeAppDevelopment"; import { NativeAppDevelopment } from "../pages/NativeAppDevelopment";
import { NLPTextAnalytics } from "../pages/NLPTextAnalytics"; import { NLPTextAnalytics } from "../pages/NLPTextAnalytics";
@@ -217,6 +220,18 @@ export const AppRouter = () => (
<Route <Route
path="/services/ios-app-development" path="/services/ios-app-development"
element={<IOSAppDevelopment />} element={<IOSAppDevelopment />}
/>
<Route
path="/services/ios-app-development-india"
element={<IOSAppDevelopmentIndia />}
/>
<Route
path="/services/ios-app-development-uk"
element={<IOSAppDevelopmentUK />}
/>
<Route
path="/services/ios-app-development-usa"
element={<IOSAppDevelopmentUSA />}
/> />
<Route <Route
path="/services/android-app-development" path="/services/android-app-development"