Function bodies 341 total
HowItWorksPage function · typescript · L15-L26 (12 LOC)app/como-funciona/page.tsx
export default function HowItWorksPage() {
return (
<main>
<ProcessHero />
<DetailedSteps />
<Requirements />
<Timeline />
<FaqAccordion />
<FaqContact />
</main>
)
}ContactPage function · typescript · L12-L34 (23 LOC)app/contacto/page.tsx
export default function ContactPage() {
return (
<main className="bg-background">
<ContactHero />
<section className="py-20 lg:py-28">
<div className="container mx-auto px-4">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 lg:gap-24 max-w-6xl mx-auto">
{/* Columna Izquierda: Información */}
<div className="order-2 lg:order-1">
<ContactInfo />
</div>
{/* Columna Derecha: Formulario */}
<div id="form" className="order-1 lg:order-2">
<ContactForm />
</div>
</div>
</div>
</section>
</main>
)
}ExperiencesPage function · typescript · L13-L22 (10 LOC)app/experiencias/page.tsx
export default function ExperiencesPage() {
return (
<main>
<ExperiencesHero />
<ExperiencesGallery />
<Countries />
<Stats />
</main>
)
}generateStaticParams function · typescript · L10-L12 (3 LOC)app/experiencias/[slug]/page.tsx
export async function generateStaticParams() {
return ARTICLES.map((a) => ({ slug: a.slug }))
}generateMetadata function · typescript · L16-L23 (8 LOC)app/experiencias/[slug]/page.tsx
export async function generateMetadata({ params }: Props): Promise<Metadata> {
const { slug } = await params
const post = ARTICLES.find((a) => a.slug === slug)
return {
title: post ? `${post.title} | ARGENGOAL` : "Experiencia | ARGENGOAL",
description: post?.description ?? "Experiencias de fútbol en Argentina",
}
}ExperienceArticlePage function · typescript · L25-L43 (19 LOC)app/experiencias/[slug]/page.tsx
export default async function ExperienceArticlePage({ params }: Props) {
const { slug } = await params
const post = ARTICLES.find((a) => a.slug === slug)
if (!post) {
return (
<main className="py-20">
<div className="container mx-auto px-4">
<p>No existe este artículo.</p>
<Link href="/experiencias" className="underline">
Volver
</Link>
</div>
</main>
)
}
return <ArticleClient post={post} />
}RootLayout function · typescript · L67-L87 (21 LOC)app/layout.tsx
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode
}>) {
return (
<html lang="es">
<head>
<meta name="msapplication-config" content="/favicon/browserconfig.xml" />
<meta name="theme-color" content="#62b3e5" />
</head>
<body className={`${inter.variable} font-sans antialiased`}>
<Navbar />
{children}
<Footer />
<FloatingWhatsApp />
<Analytics />
</body>
</html>
)
}All rows above produced by Repobility · https://repobility.com
AboutPage function · typescript · L14-L24 (11 LOC)app/nosotros/page.tsx
export default function AboutPage() {
return (
<main>
<AboutHero />
<Founder />
<MissionVision />
<Network />
<Gallery />
</main>
)
}HomePage function · typescript · L11-L25 (15 LOC)app/page.tsx
export default function HomePage() {
return (
<main>
<Hero />
<ProgramsOverview />
<VideoTestimonials />
<WhyArgentina />
<WhatIsArgengoal />
<HowItWorks />
<Testimonials />
<HomeGallery />
<CtaBanner />
</main>
)
}ProgramsPage function · typescript · L13-L22 (10 LOC)app/programas/page.tsx
export default function ProgramsPage() {
return (
<main>
<ProgramsHero />
<RosarioExperience />
<ProProgram />
<ProgramComparison />
</main>
)
}AboutHero function · typescript · L1-L26 (26 LOC)components/about/about-hero.tsx
export function AboutHero() {
return (
<section className="relative py-20 lg:py-28 overflow-hidden">
<div className="absolute inset-0 z-0">
<img
src="/varias/fondos/11.jpeg"
alt="Rosario Argentina"
className="w-full h-full object-cover"
/>
<div className="absolute inset-0 bg-gradient-to-br from-black/85 via-black/70 to-primary/30" />
</div>
<div className="container relative z-10 mx-auto px-4">
<div className="max-w-3xl">
<h1 className="text-4xl md:text-5xl lg:text-6xl font-bold text-white mb-6 text-balance">
Sobre Nosotros
</h1>
<p className="text-lg md:text-xl text-white/90 leading-relaxed text-pretty">
Somos ArgenGoal. Nacimos en Rosario, el lugar donde nacen las estrellas.
Liderados por directivos con 30 años de experiencia en la élite del fútbol argentino.
</p>
</div>
</div>
</section>
)
}Founder function · typescript · L4-L83 (80 LOC)components/about/founder.tsx
export function Founder() {
const achievements = [
{
icon: Briefcase,
title: "Gestión Deportiva",
description: "Secretario Técnico, Director de Scouting y Director de Academia Internacional",
},
{
icon: Globe,
title: "Alcance Global",
description: "Alianzas estratégicas en más de 30 países",
},
{
icon: TrendingUp,
title: "Formación",
description: "Desarrollo de redes de captación internacional",
},
{
icon: Award,
title: "Trayectoria",
description: "Experiencia en todas las áreas del fútbol: infantil, juvenil y profesional",
},
]
return (
<section className="py-20 lg:py-28 bg-background">
<div className="container mx-auto px-4">
<div className="max-w-6xl mx-auto">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center mb-16">
{/* Image */}
<div className="relative">
<div className="aspect-[4/5] roundGallery function · typescript · L1-L53 (53 LOC)components/about/gallery.tsx
export function Gallery() {
const images = [
{
src: "/gallery/18 - Paseo por la ciudad de Rosario experiencia PRO 202/paseo-por-la-ciudad-de-rosario-experiencia-pro-202-005.webp",
alt: "Experiencia ARGENGOAL",
},
{
src: "/varias/2.jpeg",
alt: "Entrenamiento en Argentina",
},
{
src: "/varias/3.jpeg",
alt: "Jugadores internacionales",
},
{
src: "/gallery/18 - Paseo por la ciudad de Rosario experiencia PRO 202/paseo-por-la-ciudad-de-rosario-experiencia-pro-202-013.webp",
alt: "Desarrollo profesional",
},
{
src: "/varias/8.jpeg",
alt: "Inmersión futbolística",
},
{
src: "/varias/9.jpeg",
alt: "Momentos ARGENGOAL",
},
]
return (
<section className="py-24 lg:py-32 bg-gradient-to-b from-background via-primary/5 to-background">
<div className="container mx-auto px-4">
<div className="max-w-7xl mx-auto text-center mb-16">
<h2 className="text-MissionVision function · typescript · L4-L65 (62 LOC)components/about/mission-vision.tsx
export function MissionVision() {
return (
<section className="py-20 lg:py-28 bg-gradient-to-b from-primary/5 to-background">
<div className="container mx-auto px-4">
<div className="max-w-5xl mx-auto">
<div className="grid grid-cols-1 lg:grid-cols-3 gap-8">
{/* Mission */}
<Card className="relative p-8 border-0 bg-white shadow-lg hover:shadow-2xl hover:shadow-primary/20 transition-all duration-300 hover:-translate-y-1 group overflow-hidden">
<div className="absolute top-0 left-0 right-0 h-1.5 bg-gradient-to-r from-primary via-primary-dark to-primary" />
<div className="inline-flex items-center justify-center w-14 h-14 rounded-xl bg-gradient-to-br from-primary to-primary-dark shadow-lg shadow-primary/30 mb-6 group-hover:scale-110 transition-transform">
<Target className="w-7 h-7 text-white" />
</div>
<h3 className="text-2xl font-black text-foreground mb-4">NuestNetwork function · typescript · L3-L52 (50 LOC)components/about/network.tsx
export function Network() {
const stats = [
{
icon: Globe,
number: "30+",
label: "Países con Alianzas",
},
{
icon: Users,
number: "1000+",
label: "Jugadores Evaluados",
},
{
icon: MapPin,
number: "AFA",
label: "Acceso a Clubes Oficiales",
},
]
return (
<section className="py-20 lg:py-28 bg-gradient-to-b from-background via-primary/5 to-background">
<div className="container mx-auto px-4">
<div className="max-w-4xl mx-auto text-center mb-12">
<h2 className="text-3xl md:text-4xl font-bold text-foreground mb-6 text-balance">
Nuestra Red Internacional
</h2>
<p className="text-lg text-muted-foreground leading-relaxed text-pretty">
Hemos construido una red sólida de captación y desarrollo. Asesoramos a academias de todo el mundo y gestionamos su inmersión en el fútbol argentino.
</p>
</div>
<div className="gridRepobility — same analyzer, your code, free for public repos · /scan/
ContactForm function · typescript · L13-L98 (86 LOC)components/contact/contact-form.tsx
export function ContactForm() {
const [isSubmitting, setIsSubmitting] = useState(false)
const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault()
setIsSubmitting(true)
// Simulate form submission
await new Promise((resolve) => setTimeout(resolve, 1500))
alert("¡Gracias por tu mensaje! Nos pondremos en contacto contigo pronto.")
setIsSubmitting(false)
}
return (
<Card className="p-8 border-border">
<h2 className="text-2xl font-bold text-foreground mb-6">Envíanos un Mensaje</h2>
<form onSubmit={handleSubmit} className="space-y-6">
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
<div className="space-y-2">
<Label htmlFor="firstName">Nombre *</Label>
<Input id="firstName" name="firstName" required placeholder="Tu nombre" />
</div>
<div className="space-y-2">
<Label htmlFor="lastName">Apellido *</Label>
<Input id="laContactHero function · typescript · L1-L17 (17 LOC)components/contact/contact-hero.tsx
export function ContactHero() {
return (
<section className="py-20 lg:py-28 bg-gradient-to-br from-primary/10 via-background to-background">
<div className="container mx-auto px-4">
<div className="max-w-3xl mx-auto text-center">
<h1 className="text-4xl md:text-5xl lg:text-6xl font-bold text-foreground mb-6 text-balance">
Hablemos de tu Próxima Experiencia
</h1>
<p className="text-lg md:text-xl text-muted-foreground leading-relaxed text-pretty">
Estamos aquí para responder todas tus preguntas y ayudarte a comenzar tu viaje al corazón del fútbol
argentino
</p>
</div>
</div>
</section>
)
}ContactInfo function · typescript · L6-L83 (78 LOC)components/contact/contact-info.tsx
export function ContactInfo() {
return (
<div className="space-y-6">
<div>
<h2 className="text-2xl font-bold text-foreground mb-4">Información de Contacto</h2>
<p className="text-muted-foreground leading-relaxed mb-8">
¿Prefieres hablar directamente con nosotros? Estamos disponibles para resolver dudas de familias y clubes.
</p>
<div className="space-y-4">
{/* Email */}
<Card className="relative p-6 border-0 bg-white shadow-lg hover:shadow-xl hover:shadow-primary/20 transition-all duration-300 hover:-translate-y-1 overflow-hidden">
<div className="absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-primary via-primary-dark to-primary" />
<div className="flex items-start gap-4">
<div className="shrink-0 w-12 h-12 rounded-xl bg-gradient-to-br from-primary to-primary-dark shadow-lg shadow-primary/30 flex items-center justify-center">
<Mail className="w-6 h-6ArticleClient function · typescript · L18-L183 (166 LOC)components/experiences/article-client.tsx
export function ArticleClient({ post }: { post: Article }) {
const paragraphs = useMemo(
() => (post.content?.length ? post.content : [post.description]),
[post.content, post.description]
)
const gallery = post.gallery ?? []
const [open, setOpen] = useState(false)
const [index, setIndex] = useState(0)
const hasGallery = gallery.length > 0
function openAt(i: number) {
setIndex(i)
setOpen(true)
}
function close() {
setOpen(false)
}
function prev() {
setIndex((i) => (i - 1 + gallery.length) % gallery.length)
}
function next() {
setIndex((i) => (i + 1) % gallery.length)
}
useEffect(() => {
if (!open) return
function onKeyDown(e: KeyboardEvent) {
if (e.key === "Escape") close()
if (e.key === "ArrowLeft") prev()
if (e.key === "ArrowRight") next()
}
window.addEventListener("keydown", onKeyDown)
return () => window.removeEventListener("keydown", onKeyDown)
}, [open, gallery.length])
retuopenAt function · typescript · L30-L33 (4 LOC)components/experiences/article-client.tsx
function openAt(i: number) {
setIndex(i)
setOpen(true)
}close function · typescript · L35-L37 (3 LOC)components/experiences/article-client.tsx
function close() {
setOpen(false)
}prev function · typescript · L39-L41 (3 LOC)components/experiences/article-client.tsx
function prev() {
setIndex((i) => (i - 1 + gallery.length) % gallery.length)
}next function · typescript · L43-L45 (3 LOC)components/experiences/article-client.tsx
function next() {
setIndex((i) => (i + 1) % gallery.length)
}Methodology: Repobility · https://repobility.com/research/state-of-ai-code-2026/
onKeyDown function · typescript · L49-L53 (5 LOC)components/experiences/article-client.tsx
function onKeyDown(e: KeyboardEvent) {
if (e.key === "Escape") close()
if (e.key === "ArrowLeft") prev()
if (e.key === "ArrowRight") next()
}Countries function · typescript · L3-L52 (50 LOC)components/experiences/countries.tsx
export function Countries() {
const regions = [
{
region: "Europa",
countries: ["España", "Portugal", "Italia", "Francia", "Inglaterra", "Alemania"],
},
{
region: "América del Norte",
countries: ["Estados Unidos", "Canadá", "México"],
},
{
region: "América del Sur",
countries: ["Brasil", "Chile", "Uruguay", "Colombia", "Perú"],
},
{
region: "Asia y Otros",
countries: ["Japón", "China", "Australia", "Sudáfrica"],
},
]
return (
<section className="py-20 lg:py-28 bg-muted/30">
<div className="container mx-auto px-4">
<div className="max-w-4xl mx-auto text-center mb-16">
<Globe className="w-16 h-16 text-primary mx-auto mb-6" />
<h2 className="text-3xl md:text-4xl font-bold text-foreground mb-6 text-balance">Presencia Global</h2>
<p className="text-lg text-muted-foreground leading-relaxed">
Hemos trabajado con equipos y jugadores de todos los conExperiencesGallery function · typescript · L11-L116 (106 LOC)components/experiences/experiences-gallery.tsx
export function ExperiencesGallery() {
const [filter, setFilter] = useState("all")
const categories = [
{ id: "all", label: "Todas" },
{ id: "players", label: "Jugadores" },
{ id: "coaches", label: "Entrenadores" },
]
const experiences = EXPERIENCES
const filteredExperiences = filter === "all" ? experiences : experiences.filter((exp) => exp.category === filter)
return (
<section className="py-20 lg:py-28 bg-background">
<div className="container mx-auto px-4">
<div className="max-w-6xl mx-auto">
{/* Filter Tabs */}
<div className="flex flex-wrap gap-3 justify-center mb-12">
{categories.map((category) => (
<button
key={category.id}
onClick={() => setFilter(category.id)}
className={`px-8 py-3 rounded-full font-bold transition-all duration-300 ${
filter === category.id
? "bg-gradient-to-r from-primary to-primary-ExperiencesHero function · typescript · L1-L26 (26 LOC)components/experiences/experiences-hero.tsx
export function ExperiencesHero() {
return (
<section className="relative py-20 lg:py-28 overflow-hidden">
<div className="absolute inset-0 z-0">
<img
src="/international-teams-argentina-football.jpg"
alt="International Teams"
className="w-full h-full object-cover"
/>
<div className="absolute inset-0 bg-gradient-to-br from-primary/90 via-primary/70 to-black/80" />
</div>
<div className="container relative z-10 mx-auto px-4">
<div className="max-w-3xl">
<h1 className="text-4xl md:text-5xl lg:text-6xl font-bold text-white mb-6 text-balance">
Experiencias Internacionales
</h1>
<p className="text-lg md:text-xl text-white/90 leading-relaxed text-pretty">
Equipos, academias y jugadores de todo el mundo han confiado en ARGENGOAL para vivir experiencias únicas de
fútbol en Argentina.
</p>
</div>
</div>
</section>
Stats function · typescript · L3-L52 (50 LOC)components/experiences/stats.tsx
export function Stats() {
const stats = [
{
icon: Users,
number: "500+",
label: "Participantes",
description: "Jugadores que han vivido la experiencia",
},
{
icon: MapPin,
number: "30+",
label: "Países",
description: "De todos los continentes",
},
{
icon: Trophy,
number: "50+",
label: "Equipos",
description: "Clubes y academias internacionales",
},
{
icon: Star,
number: "98%",
label: "Satisfacción",
description: "Recomendarían la experiencia",
},
]
return (
<section className="py-20 lg:py-28 bg-primary/5">
<div className="container mx-auto px-4">
<div className="max-w-6xl mx-auto">
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
{stats.map((stat, index) => {
const Icon = stat.icon
return (
<div key={index} className="text-center">
FaqAccordion function · typescript · L3-L131 (129 LOC)components/faq/faq-accordion.tsx
export function FaqAccordion() {
const categories = [
{
title: "General",
faqs: [
{
question: "¿Qué es ARGENGOAL?",
answer:
"ARGENGOAL es una organización especializada que conecta jugadores y academias del mundo con el fútbol argentino. Liderada por directores con amplia trayectoria en clubes profesionales de primera división, ofrecemos acceso directo a la estructura de AFA.",
},
{
question: "¿Por qué elegir Rosario?",
answer:
"Rosario es la capital mundial del fútbol, cuna de Lionel Messi y Ángel Di María. Aquí se respira una cultura futbolística única y nuestros programas te permiten pisar las mismas canchas donde ellos se formaron.",
},
{
question: "¿Cuánto tiempo de anticipación necesito?",
answer:
"Recomendamos reservar con 3 a 6 meses de anticipación para asegurar disponibilidad, especialmente en el 'Pro Program' donde las plazFaqContact function · typescript · L5-L24 (20 LOC)components/faq/faq-contact.tsx
export function FaqContact() {
return (
<section className="py-20 lg:py-28 bg-muted/30">
<div className="container mx-auto px-4">
<div className="max-w-3xl mx-auto text-center">
<MessageCircle className="w-16 h-16 text-primary mx-auto mb-6" />
<h2 className="text-3xl md:text-4xl font-bold text-foreground mb-6 text-balance">
¿No Encontraste tu Respuesta?
</h2>
<p className="text-lg text-muted-foreground mb-8 leading-relaxed">
Nuestro equipo está listo para responder cualquier pregunta adicional que tengas
</p>
<Button asChild size="lg" className="bg-primary text-primary-foreground">
<Link href="/contacto">Contactar con Nosotros</Link>
</Button>
</div>
</div>
</section>
)
}FloatingWhatsApp function · typescript · L3-L41 (39 LOC)components/floating-whatsapp.tsx
export function FloatingWhatsApp() {
const phoneNumber = "5493413452340"
const message = "Hola, me comunico desde la web de ARGENGOAL. Quisiera hacer una consulta."
const whatsappUrl = `https://wa.me/${phoneNumber}?text=${encodeURIComponent(message)}`
return (
<a
href={whatsappUrl}
target="_blank"
rel="noopener noreferrer"
className="fixed bottom-6 right-6 z-50 group"
aria-label="Contactar por WhatsApp"
>
{/* Pulse animation ring */}
<div className="absolute inset-0 bg-[#25D366] rounded-full animate-ping opacity-75 group-hover:opacity-100" />
{/* Button container */}
<div className="relative bg-white rounded-full p-4 shadow-lg hover:shadow-2xl transition-all duration-300 hover:scale-110">
{/* WhatsApp official icon */}
<svg
width="32"
height="32"
viewBox="0 0 32 32"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
All rows scored by the Repobility analyzer (https://repobility.com)
Footer function · typescript · L5-L129 (125 LOC)components/footer.tsx
export function Footer() {
return (
<footer className="relative border-t border-primary/20 bg-gradient-to-br from-foreground/95 via-foreground to-foreground/95 text-white overflow-hidden">
{/* Línea celeste superior */}
<div className="absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-primary via-primary-dark to-primary" />
{/* Patrón de fondo */}
<div className="absolute inset-0 opacity-5" style={{ backgroundImage: 'radial-gradient(circle, white 1px, transparent 1px)', backgroundSize: '30px 30px' }} />
{/* Elementos decorativos */}
<div className="absolute top-0 right-0 w-96 h-96 bg-primary/10 rounded-full blur-3xl" />
<div className="absolute bottom-0 left-0 w-96 h-96 bg-primary/10 rounded-full blur-3xl" />
<div className="container mx-auto px-4 py-16 lg:py-20 relative z-10">
<div className="grid grid-cols-1 gap-12 lg:grid-cols-4 lg:gap-16">
{/* Brand */}
<div className="lg:col-span-1">
CtaBanner function · typescript · L5-L58 (54 LOC)components/home/cta-banner.tsx
export function CtaBanner() {
return (
<section className="relative py-24 lg:py-32 overflow-hidden">
{/* Background with overlay */}
<div className="absolute inset-0 z-0">
<img
src="/argentina-football-players-celebrating-team-spirit.jpg"
alt="Football Team"
className="w-full h-full object-cover"
/>
<div className="absolute inset-0 bg-gradient-to-br from-primary/90 via-primary-dark/85 to-primary/90" />
{/* Patrón de puntos sutil */}
<div className="absolute inset-0 opacity-10" style={{ backgroundImage: 'radial-gradient(circle, white 1px, transparent 1px)', backgroundSize: '20px 20px' }} />
</div>
{/* Content */}
<div className="container relative z-10 mx-auto px-4">
<div className="max-w-4xl mx-auto text-center">
<h2 className="text-4xl md:text-5xl lg:text-6xl font-black text-white mb-8 text-balance leading-tight">
¿Listo Para Vivir la Experiencia{" "Hero function · typescript · L5-L81 (77 LOC)components/home/hero.tsx
export function Hero() {
return (
<section className="relative min-h-[85vh] flex items-center justify-center overflow-hidden">
{/* Línea superior celeste AFA */}
<div className="absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-primary via-primary-dark to-primary z-20" />
{/* Background Image */}
<div className="absolute inset-0 z-0">
<img
src="/varias/fondos/10.jpeg"
alt="Football Stadium Argentina"
fetchPriority="high"
className="w-full h-full object-cover scale-105 animate-subtle-zoom"
/>
<div className="absolute inset-0 bg-gradient-to-b from-black/75 via-black/50 to-black/75" />
{/* Gradiente celeste sutil */}
<div className="absolute inset-0 bg-gradient-to-br from-primary/20 via-transparent to-primary-dark/20" />
{/* Elementos decorativos flotantes */}
<div className="absolute top-20 left-10 w-32 h-32 bg-primary/20 rounded-full blur-2xl animate-floaHomeGallery function · typescript · L1-L60 (60 LOC)components/home/home-gallery.tsx
export function HomeGallery() {
const images = [
{
src: "/varias/1.jpeg",
alt: "Experiencia ARGENGOAL",
},
{
src: "/varias/5.jpeg",
alt: "Fútbol argentino",
},
{
src: "/varias/4.jpeg",
alt: "Jugadores en acción",
},
{
src: "/varias/12.jpeg",
alt: "Entrenamiento profesional",
},
{
src: "/varias/16.jpeg",
alt: "Desarrollo en Argentina",
},
{
src: "/varias/18.jpeg",
alt: "Experiencias inolvidables",
},
]
return (
<section className="py-24 lg:py-32 bg-gradient-to-b from-background via-primary/5 to-background">
<div className="container mx-auto px-4">
<div className="max-w-7xl mx-auto text-center mb-16">
<h2 className="text-3xl md:text-4xl font-bold text-foreground mb-6">
Vive la Experiencia ARGENGOAL
</h2>
<p className="text-lg text-muted-foreground">
Más que fútbol, una inmersión total en la cHowItWorks function · typescript · L3-L72 (70 LOC)components/home/how-it-works.tsx
export function HowItWorks() {
const steps = [
{
number: "01",
icon: MessageSquare,
title: "Contacto Inicial",
description: "Cuéntanos tus objetivos. Te respondemos en menos de 24 horas.",
},
{
number: "02",
icon: Video,
title: "Videollamada",
description: "Reunión virtual para resolver todas tus dudas y diseñar tu experiencia.",
},
{
number: "03",
icon: FileCheck,
title: "Reserva",
description: "Confirmamos tu plaza y te guiamos en cada paso de la documentación.",
},
{
number: "04",
icon: Plane,
title: "Experiencia",
description: "Te recibimos en Argentina. Coordinamos todo de principio a fin.",
},
]
return (
<section className="py-24 lg:py-32 bg-white">
<div className="container mx-auto px-4">
<div className="max-w-3xl mx-auto text-center mb-20">
<h2 className="text-4xl md:text-5xl lg:text-6xl font-bold text-foreground mb-8ProgramsOverview function · typescript · L6-L136 (131 LOC)components/home/programs-overview.tsx
export function ProgramsOverview() {
const programs = [
{
title: "Rosario Experience",
description:
"Experiencia para equipos: más partidos amistosos que un torneo tradicional, combinados con actividades y recorridos por la ciudad.",
icon: Users,
features: [
"Amistosos planificados contra una variedad de clubes rosarinos (no solo dos)",
"Doble turno (Lun–Vie): competencia + paseos/actividades",
"Alojamiento, traslados y comidas incluidas",
"Edades: 7 a 20 años (Masc. y Fem.)",
],
duration: "10 días (Propuesta adaptable)",
href: "/programas#rosario-experience",
type: "group",
},
{
title: "Pro Program",
description:
"Formación real: viví y entrená dentro de un club profesional. Programa individual con sedes en distintas ciudades del país.",
icon: Award,
features: [
"Entrenamiento oficial con tu categoría (según cupos y disponibilidad)",
"ViTestimonials function · typescript · L4-L61 (58 LOC)components/home/testimonials.tsx
export function Testimonials() {
const milestones = [
{
icon: Trophy,
title: "Competencia de Elite",
description:
"Participación histórica en la Manchester United Premier Cup - World Finals 2014 en Old Trafford, representando el talento rosarino.",
highlight: "Experiencia Internacional",
},
{
icon: Globe,
title: "Red Global",
description:
"Hemos establecido alianzas estratégicas en más de 30 países, conectando academias de todo el mundo con la metodología argentina.",
highlight: "Trayectoria Comprobada",
},
{
icon: Users,
title: "Gestión Profesional",
description:
"Amplia trayectoria gestionando áreas infantiles, juveniles y profesionales en clubes de primera división aseguran una estructura seria.",
highlight: "Respaldo Institucional",
},
]
return (
<section className="py-20 lg:py-28 bg-white">
<div className="container mx-auto px-4">
<div clVideoModal function · typescript · L17-L109 (93 LOC)components/home/video-modal.tsx
export function VideoModal({
video,
isOpen,
onClose,
onNext,
onPrevious,
currentIndex,
totalVideos,
}: VideoModalProps) {
const videoRef = useRef<HTMLVideoElement>(null)
useEffect(() => {
if (!isOpen) return
const handleKeyDown = (e: KeyboardEvent) => {
if (e.key === "Escape") onClose()
if (e.key === "ArrowLeft") onPrevious()
if (e.key === "ArrowRight") onNext()
}
window.addEventListener("keydown", handleKeyDown)
return () => window.removeEventListener("keydown", handleKeyDown)
}, [isOpen, onClose, onNext, onPrevious])
useEffect(() => {
if (isOpen && videoRef.current) {
videoRef.current.play()
}
}, [isOpen, video.id])
if (!isOpen) return null
return (
<div
className="fixed inset-0 z-50 bg-black/95 flex items-center justify-center p-4"
onClick={onClose}
>
{/* Close button */}
<button
onClick={onClose}
className="absolute top-4 right-4 z-50 text-white hoveAll rows above produced by Repobility · https://repobility.com
VideoTestimonials function · typescript · L9-L153 (145 LOC)components/home/video-testimonials.tsx
export function VideoTestimonials() {
const [selectedVideoIndex, setSelectedVideoIndex] = useState<number | null>(null)
const [emblaRef, emblaApi] = useEmblaCarousel({
loop: true,
align: "center",
dragFree: false,
slidesToScroll: 1,
})
// Auto-scroll carousel
useEffect(() => {
if (!emblaApi) return
const autoplay = setInterval(() => {
if (emblaApi.canScrollNext()) {
emblaApi.scrollNext()
}
}, 4000)
return () => clearInterval(autoplay)
}, [emblaApi])
const scrollPrev = useCallback(() => {
if (emblaApi) emblaApi.scrollPrev()
}, [emblaApi])
const scrollNext = useCallback(() => {
if (emblaApi) emblaApi.scrollNext()
}, [emblaApi])
const openVideo = (index: number) => {
setSelectedVideoIndex(index)
}
const closeVideo = () => {
setSelectedVideoIndex(null)
}
const nextVideo = () => {
if (selectedVideoIndex === null) return
setSelectedVideoIndex((selectedVideoIndex + 1) % VIDEO_TESTWhatIsArgengoal function · typescript · L4-L77 (74 LOC)components/home/what-is-argengoal.tsx
export function WhatIsArgengoal() {
const values = [
{
icon: Globe2,
title: "Alcance Global",
stat: "30+ Países",
description: "Conectamos jugadores de todo el mundo con la pasión del fútbol argentino",
},
{
icon: Trophy,
title: "Programas Elite",
stat: "7 Clubes",
description: "Acceso directo a clubes profesionales de primera división argentina",
},
{
icon: Heart,
title: "Experiencia Real",
stat: "100% Inmersión",
description: "No simulamos: vivís el día a día de un futbolista profesional argentino",
},
]
return (
<section className="relative py-24 lg:py-32 bg-white overflow-hidden">
{/* Decoración de fondo */}
<div className="absolute inset-0 bg-[radial-gradient(circle_at_30%_20%,rgba(98,179,229,0.1),transparent_50%)]" />
<div className="absolute inset-0 bg-[radial-gradient(circle_at_70%_80%,rgba(4,142,204,0.1),transparent_50%)]" />
<div className="contaWhyArgentina function · typescript · L4-L101 (98 LOC)components/home/why-argentina.tsx
export function WhyArgentina() {
const legends = [
{ name: "Lionel Messi", city: "Rosario" },
{ name: "Ángel Di María", city: "Rosario" },
{ name: "Marcelo Bielsa", city: "Rosario" },
]
const reasons = [
{
number: "01",
title: "Metodología Única",
description: "La forma de entrenar que formó a los mejores del mundo. No es casualidad que Argentina sea campeón mundial.",
},
{
number: "02",
title: "Competencia Real",
description: "Enfrentás a jugadores federados AFA. La exigencia que necesitás para dar el salto de calidad.",
},
{
number: "03",
title: "Pasión y Cultura",
description: "No solo aprendés técnica: vivís la mentalidad ganadora que caracteriza al fútbol argentino.",
},
{
number: "04",
title: "Donde Nacen las Estrellas",
description: "Rosario dio al mundo a Messi, Di María y Bielsa. Entrenás en el mismo lugar que ellos.",
},
]
return (
<section classDetailedSteps function · typescript · L4-L127 (124 LOC)components/how-it-works/detailed-steps.tsx
export function DetailedSteps() {
const steps = [
{
number: 1,
icon: MessageSquare,
title: "Contacto Inicial",
description: "Conocemos tus objetivos y perfil deportivo.",
details: [
"Completa el formulario o escríbenos",
"Envíanos tu CV deportivo o video (opcional)",
"Recibe la propuesta de fechas y sedes",
"Respuesta garantizada en 24hs",
],
},
{
number: 2,
icon: Video,
title: "Videollamada Informativa",
description: "Reunión oficial entre ArgenGoal, el Club y la Familia.",
details: [
"Presentación detallada del programa",
"Definición de logística y alojamiento",
"Resolución de dudas a padres/entrenadores",
"Acuerdo de fechas de viaje",
],
},
{
number: 3,
icon: FileCheck,
title: "Reserva y Admisión",
description: "Confirmación de plaza y trámites oficiales.",
details: [
"Pago de reserva (USD ProcessHero function · typescript · L1-L24 (24 LOC)components/how-it-works/process-hero.tsx
export function ProcessHero() {
return (
<section className="relative py-20 lg:py-28 overflow-hidden">
<div className="absolute inset-0 z-0">
<img
src="/planning-football-experience-argentina.jpg"
alt="Planning Football Experience"
className="w-full h-full object-cover"
/>
<div className="absolute inset-0 bg-gradient-to-br from-black/85 via-primary/60 to-black/70" />
</div>
<div className="container relative z-10 mx-auto px-4">
<div className="max-w-3xl">
<h1 className="text-4xl md:text-5xl lg:text-6xl font-bold text-white mb-6 text-balance">Cómo Funciona</h1>
<p className="text-lg md:text-xl text-white/90 leading-relaxed text-pretty">
Un proceso simple, transparente y profesional desde tu primer contacto hasta el último día de tu experiencia
en Argentina.
</p>
</div>
</div>
</section>
)
}Requirements function · typescript · L4-L77 (74 LOC)components/how-it-works/requirements.tsx
export function Requirements() {
const requirements = [
{
icon: FileText,
title: "Documentación",
items: [
"Pasaporte válido",
"Apto Médico (Ergometría)",
"Declaración Jurada de Salud",
"Ficha personal ArgenGoal",
],
},
{
icon: CreditCard,
title: "Pagos",
items: [
"Reserva: USD 500 (Confirma plaza)",
"Saldo: En efectivo al llegar a Rosario",
"La reserva no es reembolsable",
],
},
{
icon: Shield,
title: "Seguros y Salud",
items: [
"Seguro de Viajero (Obligatorio)",
"Atención primaria en entrenamientos",
"Cobertura de emergencias en el club",
],
},
{
icon: Plane,
title: "Trámites de Viaje",
items: [
"Carta de Invitación Oficial (Provista)",
"Asesoramiento para ingreso al país",
"Coordinación de vuelos",
],
},
]
return (
<section className="py-20 lg:Timeline function · typescript · L5-L90 (86 LOC)components/how-it-works/timeline.tsx
export function Timeline() {
const timeline = [
{
phase: "3-6 meses antes",
title: "Contacto y Planificación",
description: "Definición de objetivos, fechas y videollamada informativa.",
},
{
phase: "2-4 meses antes",
title: "Reserva de Plaza",
description: "Pago de seña (USD 500) y emisión de cartas de invitación.",
},
{
phase: "1-2 meses antes",
title: "Gestión de Vuelos",
description: "Compra de pasajes aéreos y presentación de fichas médicas.",
},
{
phase: "1 semana antes",
title: "Charla Pre-Viaje",
description: "Reunión final con coordinador, revisión de equipaje y logística.",
},
{
phase: "Día de llegada",
title: "Bienvenida y Pago Final",
description: "Recepción en Rosario, cancelación del saldo y check-in.",
},
]
return (
<section className="py-20 lg:py-28 bg-background">
<div className="container mx-auto px-4">
<div classNaNavbar function · typescript · L9-L85 (77 LOC)components/navbar.tsx
export function Navbar() {
const [isOpen, setIsOpen] = useState(false)
const navLinks = [
{ href: "/", label: "Inicio" },
{ href: "/programas", label: "Programas" },
{ href: "/como-funciona", label: "Cómo Funciona" },
{ href: "/nosotros", label: "Nosotros" },
{ href: "/experiencias", label: "Experiencias" },
]
return (
<nav className="sticky top-0 z-50 w-full border-b border-border/40 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60">
{/* Línea celeste superior AFA */}
<div className="h-1 bg-gradient-to-r from-primary via-primary-dark to-primary" />
<div className="container mx-auto px-4">
<div className="flex h-20 items-center justify-between">
{/* Logo */}
<Link href="/" className="flex items-center transition-opacity hover:opacity-80">
<Image src="/logo-dark.png" alt="ARGENGOAL" width={180} height={50} className="h-10 w-auto" priority />
</Link>
Repobility — same analyzer, your code, free for public repos · /scan/
ProgramComparison function · typescript · L4-L114 (111 LOC)components/programs/program-comparison.tsx
export function ProgramComparison() {
const comparison = [
{
feature: "Enfoque Principal",
rosario: "Equipos / Experiencia + Amistosos",
pro: "Individual / Formación Real",
},
{
feature: "Rango de Edad",
rosario: "7 a 20 años",
pro: "12 a 19 años",
},
{
feature: "Duración Base",
rosario: "10 días (Propuesta adaptable)",
pro: "1 semana a 30 días",
},
{
feature: "Sede",
rosario: "Rosario (sede única)",
pro: "Nacional (Bs As · Santa Fe · y más)",
},
{
feature: "Alojamiento",
rosario: "Hotel / Residencia deportiva",
pro: "Residencia/Pensión del club (Casa Fútbol)",
},
{
feature: "Competencia / Entrenamiento",
rosario: "Amistosos planificados + doble turno (Lun–Vie)",
pro: "Entrenamiento oficial + día a día dentro del club",
},
{
feature: "Inmersión Cultural",
rosario: "Alta (ciudad, estadios y recorridos)",
pro: ProgramsHero function · typescript · L1-L29 (29 LOC)components/programs/programs-hero.tsx
export function ProgramsHero() {
return (
<section className="relative py-20 lg:py-28 overflow-hidden">
<div className="absolute inset-0 z-0">
<img
src="/varias/fondos/17.jpeg"
alt="Football Training Argentina"
className="w-full h-full object-cover"
/>
<div className="absolute inset-0 bg-gradient-to-br from-black/80 via-black/60 to-primary/40" />
</div>
<div className="container relative z-10 mx-auto px-4">
<div className="max-w-3xl">
<h1 className="text-4xl md:text-5xl lg:text-6xl font-bold text-white mb-6 text-balance">
Programas de Fútbol en Argentina
</h1>
<p className="text-lg md:text-xl text-white/90 leading-relaxed text-pretty">
Dos propuestas claras y diferenciadas.
<strong> Rosario Experience</strong> está pensado para <strong>equipos</strong>: más partidos amistosos que un
torneo, combinados con recorridos y expProProgram function · typescript · L7-L238 (232 LOC)components/programs/pro-program.tsx
export function ProProgram() {
const features = [
"Entrenamiento oficial con tu categoría (según cupos y disponibilidad)",
"Alojamiento en Pensión/Residencia del Club (Casa Fútbol)",
"4 comidas diarias (nutrición deportiva)",
"Atención médica y kinesiología",
"Lavado de indumentaria",
"Staff: DT, PF, psicología y nutrición deportiva",
"Traslados internos y acceso a partidos (según agenda)",
"Informe de desarrollo y adaptación al entorno profesional",
]
const staff = [
{
role: "Entrenadores Oficiales",
description: "Cuerpo técnico del club: trabajo real con metodología y exigencia competitiva.",
},
{
role: "Preparadores Físicos",
description: "Carga y planificación adaptada al ritmo del fútbol argentino.",
},
{
role: "Área Médica",
description: "Médicos y kinesiólogos presentes en el proceso de entrenamiento.",
},
{
role: "Nutricionistas",
description: "Plan de alimentaciónpage 1 / 7next ›