import { createContext, useContext, useState, ReactNode } from "react";

type Lang = "en" | "es";

interface LanguageContextType {
  lang: Lang;
  setLang: (l: Lang) => void;
  t: (key: string) => string;
}

const LanguageContext = createContext<LanguageContextType | undefined>(undefined);

const translations: Record<string, Record<Lang, string>> = {
  // Nav
  "nav.home": { en: "Home", es: "Inicio" },
  "nav.services": { en: "Services", es: "Servicios" },
  "nav.about": { en: "About", es: "Nosotros" },
  "nav.portfolio": { en: "Portfolio", es: "Portafolio" },
  "nav.contact": { en: "Contact", es: "Contacto" },
  "nav.callNow": { en: "Call Now", es: "Llámanos" },

  // About Company
  "aboutCompany.eyebrow": { en: "About the Company", es: "Sobre la Empresa" },
  "aboutCompany.headline": {
    en: "A New York production partner focused on premium execution.",
    es: "Un socio de producción en Nueva York enfocado en ejecución premium.",
  },
  "aboutCompany.body1": {
    en: "I Love Printing Corp delivers high-impact printing and installation services for businesses, agencies, storefronts, commercial interiors and branded environments across New York.",
    es: "I Love Printing Corp ofrece servicios de impresión e instalación de alto impacto para negocios, agencias, vitrinas, interiores comerciales y entornos de marca en toda Nueva York.",
  },
  "aboutCompany.body2": {
    en: "We combine production quality, installation precision, project coordination and responsive communication to help clients move from concept to finished space without friction.",
    es: "Combinamos calidad de producción, precisión de instalación, coordinación de proyectos y comunicación receptiva para ayudar a los clientes a pasar del concepto al espacio terminado sin fricciones.",
  },
  "aboutCompany.body3": {
    en: "Our bilingual English and Spanish support makes collaboration easier for teams, business owners, property managers and subcontract partners who need dependable results on schedule.",
    es: "Nuestro soporte bilingüe en inglés y español facilita la colaboración para equipos, dueños de negocios, administradores de propiedades y socios subcontratistas que necesitan resultados confiables a tiempo.",
  },

  // Hero
  "hero.headline1": {
    en: "Premium Print, Wrap & Installation",
    es: "Impresión, Rotulación e Instalación Premium",
  },
  "hero.headline2": {
    en: "Solutions",
    es: "Soluciones",
  },
  "hero.subheadline": {
    en: "From concept to completion — large format printing, vehicle wraps, architectural films, and expert installation across New York.",
    es: "Del concepto a la realización — impresión de gran formato, rotulación vehicular, películas arquitectónicas e instalación experta en Nueva York.",
  },
  "hero.cta1": { en: "Get a Free Quote", es: "Cotización Gratuita" },
  "hero.cta2": { en: "Call Now", es: "Llámanos Ahora" },
  "hero.badge": { en: "New York's Premier Print & Install Partner", es: "El Socio Premium de Impresión e Instalación de Nueva York" },

  // Services
  "services.title": { en: "Our Services", es: "Nuestros Servicios" },
  "services.subtitle": {
    en: "End-to-end printing and installation expertise for commercial, retail, and fleet projects across New York City.",
    es: "Experiencia integral en impresión e instalación para proyectos comerciales, minoristas y de flotas en toda Nueva York.",
  },
  "svc.largeFormat.title": { en: "Large Format Printing", es: "Impresión de Gran Formato" },
  "svc.largeFormat.desc": {
    en: "High-resolution banners, murals, backdrops, and graphics printed on premium substrates for maximum visual impact.",
    es: "Pancartas, murales, fondos y gráficos de alta resolución impresos en sustratos premium para máximo impacto visual.",
  },
  "svc.installation.title": { en: "Installation & Project Management", es: "Instalación y Gestión de Proyectos" },
  "svc.installation.desc": {
    en: "Professional crews managing every aspect of your install — on time, on budget, flawless execution.",
    es: "Equipos profesionales gestionando cada aspecto de su instalación — a tiempo, dentro del presupuesto, ejecución impecable.",
  },
  "svc.wraps.title": { en: "Vehicle Wraps", es: "Rotulación Vehicular" },
  "svc.wraps.desc": {
    en: "Full and partial vehicle wraps that transform your fleet into mobile billboards with stunning graphics.",
    es: "Rotulación vehicular total y parcial que transforma su flota en vallas publicitarias móviles con gráficos impactantes.",
  },
  "svc.ppf.title": { en: "PPF — Paint Protection Film", es: "PPF — Película de Protección de Pintura" },
  "svc.ppf.desc": {
    en: "Shield your vehicles and surfaces with invisible, self-healing paint protection films.",
    es: "Proteja sus vehículos y superficies con películas de protección de pintura invisibles y autorreparables.",
  },
  "svc.vinyl.title": { en: "Architectural Vinyl & Window Film", es: "Vinilo Arquitectónico y Película para Ventanas" },
  "svc.vinyl.desc": {
    en: "Transform glass facades, partitions, and interiors with decorative, solar, and privacy films.",
    es: "Transforme fachadas de vidrio, divisiones e interiores con películas decorativas, solares y de privacidad.",
  },
  "svc.signs.title": { en: "Signs", es: "Letreros y Señalización" },
  "svc.signs.desc": {
    en: "Custom commercial signage — illuminated, dimensional, wayfinding, and ADA-compliant solutions.",
    es: "Señalización comercial personalizada — iluminada, dimensional, de orientación y soluciones conformes con ADA.",
  },
  "svc.wallpaper.title": { en: "Wallpaper", es: "Papel Tapiz" },
  "svc.wallpaper.desc": {
    en: "Custom-printed and commercial-grade wallpaper installation for retail, hospitality, and corporate spaces.",
    es: "Instalación de papel tapiz personalizado y de grado comercial para espacios de retail, hospitalidad y corporativos.",
  },
  "svc.subcontract.title": { en: "Subcontract Installation", es: "Instalación por Subcontratación" },
  "svc.subcontract.desc": {
    en: "Trusted subcontract installation specialists for agencies, print shops, and general contractors nationwide.",
    es: "Especialistas de instalación por subcontratación confiables para agencias, imprentas y contratistas generales en todo el país.",
  },

  // About
  "about.title": { en: "Why Choose Us", es: "¿Por Qué Elegirnos?" },
  "about.subtitle": {
    en: "We don't just print — we produce, manage, and install with the precision and care your brand demands.",
    es: "No solo imprimimos — producimos, gestionamos e instalamos con la precisión y el cuidado que su marca exige.",
  },
  "about.item1.title": { en: "Flawless Execution", es: "Ejecución Impecable" },
  "about.item1.desc": {
    en: "Every project is managed with military precision — from production scheduling to on-site installation.",
    es: "Cada proyecto se gestiona con precisión milimétrica — desde la programación de producción hasta la instalación en sitio.",
  },
  "about.item2.title": { en: "Premium Materials", es: "Materiales Premium" },
  "about.item2.desc": {
    en: "We use only the highest quality substrates, inks, and films from trusted manufacturers.",
    es: "Utilizamos solo sustratos, tintas y películas de la más alta calidad de fabricantes confiables.",
  },
  "about.item3.title": { en: "Deadline Guaranteed", es: "Plazos Garantizados" },
  "about.item3.desc": {
    en: "We understand commercial timelines. Your project will be delivered on schedule, every time.",
    es: "Entendemos los plazos comerciales. Su proyecto será entregado a tiempo, siempre.",
  },
  "about.item4.title": { en: "New York Experts", es: "Expertos en Nueva York" },
  "about.item4.desc": {
    en: "Deep knowledge of NYC building codes, permits, and logistics for seamless installations.",
    es: "Conocimiento profundo de los códigos, permisos y logística de edificios de NYC para instalaciones sin problemas.",
  },

  // Process
  "process.title": { en: "Our Process", es: "Nuestro Proceso" },
  "process.subtitle": {
    en: "A streamlined approach from concept to completion.",
    es: "Un enfoque eficiente del concepto a la finalización.",
  },
  "process.step1.title": { en: "Consult", es: "Consultar" },
  "process.step1.desc": { en: "We analyze your project requirements, timeline, and budget to build the perfect plan.", es: "Analizamos los requisitos de su proyecto, cronograma y presupuesto para construir el plan perfecto." },
  "process.step2.title": { en: "Produce", es: "Producir" },
  "process.step2.desc": { en: "State-of-the-art printing and fabrication with rigorous quality control at every stage.", es: "Impresión y fabricación de última generación con riguroso control de calidad en cada etapa." },
  "process.step3.title": { en: "Install", es: "Instalar" },
  "process.step3.desc": { en: "Expert crews handle every installation with precision, safety, and minimal disruption.", es: "Equipos expertos manejan cada instalación con precisión, seguridad y mínima interrupción." },
  "process.step4.title": { en: "Manage", es: "Gestionar" },
  "process.step4.desc": { en: "Dedicated project management ensures everything runs smoothly from start to finish.", es: "Gestión de proyectos dedicada asegura que todo funcione sin problemas de principio a fin." },

  // Portfolio
  "portfolio.title": { en: "Featured Work", es: "Trabajos Destacados" },
  "portfolio.subtitle": {
    en: "A selection of recent projects showcasing our print and installation capabilities.",
    es: "Una selección de proyectos recientes que muestran nuestras capacidades de impresión e instalación.",
  },
  "portfolio.item1": { en: "Large Format Production — Times Square", es: "Producción Gran Formato — Times Square" },
  "portfolio.item2": { en: "Fleet Wrap Program — NYC Delivery Service", es: "Programa de Rotulación de Flota — Servicio de Entregas NYC" },
  "portfolio.item3": { en: "Architectural Film — Manhattan Corporate Tower", es: "Película Arquitectónica — Torre Corporativa Manhattan" },
  "portfolio.item4": { en: "Illuminated Signage — Brooklyn Retail District", es: "Señalización Iluminada — Distrito Comercial Brooklyn" },
  "portfolio.viewAll": { en: "View All Projects", es: "Ver Todos los Proyectos" },

  // Testimonials
  "testimonials.title": { en: "Client Testimonials", es: "Testimonios de Clientes" },
  "testimonials.subtitle": { en: "Trusted by leading brands and contractors across New York.", es: "Confiados por marcas líderes y contratistas en toda Nueva York." },
  "testimonial.1.text": {
    en: "\"I Love Printing Corp delivered an incredible fleet wrap project ahead of schedule. Their attention to detail and professionalism is unmatched.\"",
    es: "\"I Love Printing Corp entregó un increíble proyecto de rotulación de flota antes de lo programado. Su atención al detalle y profesionalismo es incomparable.\"",
  },
  "testimonial.1.author": { en: "Sarah M., Fleet Manager", es: "Sarah M., Gerente de Flota" },
  "testimonial.2.text": {
    en: "\"From design consultation to final installation, their team handled our entire signage project with military precision. Highly recommended.\"",
    es: "\"Desde la consulta de diseño hasta la instalación final, su equipo manejó todo nuestro proyecto de señalización con precisión milimétrica. Altamente recomendados.\"",
  },
  "testimonial.2.author": { en: "James R., General Contractor", es: "James R., Contratista General" },
  "testimonial.3.text": {
    en: "\"The best subcontract installation team in the tri-state area. Reliable, skilled, and always on time. They are our go-to partner.\"",
    es: "\"El mejor equipo de instalación por subcontratación en el área triestatal. Confiables, hábiles y siempre puntuales. Son nuestro socio de referencia.\"",
  },
  "testimonial.3.author": { en: "Lisa T., Print Agency Owner", es: "Lisa T., Dueña de Agencia de Impresión" },

  // Contact
  "contact.title": { en: "Get In Touch", es: "Contáctenos" },
  "contact.subtitle": {
    en: "Ready to start your next project? Reach out for a free consultation and quote.",
    es: "¿Listo para iniciar su próximo proyecto? Contáctenos para una consulta y cotización gratuita.",
  },
  "contact.name": { en: "Full Name", es: "Nombre Completo" },
  "contact.email": { en: "Email", es: "Correo Electrónico" },
  "contact.phone": { en: "Phone", es: "Teléfono" },
  "contact.message": { en: "Message (Optional)", es: "Mensaje (Opcional)" },
  "contact.submit": { en: "Send Request", es: "Enviar Solicitud" },
  "contact.success": { en: "Message sent successfully! We'll be in touch soon.", es: "¡Mensaje enviado con éxito! Nos pondremos en contacto pronto." },
  "contact.error": { en: "Something went wrong. Please try again or call us directly.", es: "Algo salió mal. Por favor intente de nuevo o llámenos directamente." },
  "contact.callUs": { en: "Or Call Us Directly", es: "O Llámenos Directamente" },
  "contact.emailUs": { en: "Email Us", es: "Envíenos un Correo" },

  // Footer
  "footer.tagline": {
    en: "Premium printing, wrapping, and installation services for New York's most demanding projects.",
    es: "Servicios premium de impresión, rotulación e instalación para los proyectos más exigentes de Nueva York.",
  },
  "footer.services": { en: "Services", es: "Servicios" },
  "footer.company": { en: "Company", es: "Empresa" },
  "footer.contact": { en: "Contact", es: "Contacto" },
  "footer.rights": { en: "All rights reserved.", es: "Todos los derechos reservados." },

  // CTA Band
  "cta.title": { en: "Ready to Elevate Your Brand?", es: "¿Listo para Elevar Su Marca?" },
  "cta.subtitle": {
    en: "Let's discuss your next project. Premium quality, on-time delivery, expert installation.",
    es: "Hablemos de su próximo proyecto. Calidad premium, entrega puntual, instalación experta.",
  },

  // Industries
  "industries.title": { en: "Industries We Serve", es: "Industrias que Servimos" },
  "industries.retail": { en: "Retail", es: "Retail" },
  "industries.events": { en: "Events", es: "Eventos" },
  "industries.construction": { en: "Construction", es: "Construcción" },
  "industries.realEstate": { en: "Real Estate", es: "Bienes Raíces" },
  "industries.corporate": { en: "Corporate Interiors", es: "Interiores Corporativos" },
  "industries.fleet": { en: "Fleet Branding", es: "Branding de Flota" },
};

export function LanguageProvider({ children }: { children: ReactNode }) {
  const [lang, setLang] = useState<Lang>("en");

  const t = (key: string): string => {
    return translations[key]?.[lang] ?? key;
  };

  return (
    <LanguageContext.Provider value={{ lang, setLang, t }}>
      {children}
    </LanguageContext.Provider>
  );
}

export function useLanguage() {
  const ctx = useContext(LanguageContext);
  if (!ctx) {
    throw new Error("useLanguage must be used within LanguageProvider");
  }
  return ctx;
}
