Welcome to
Academic Bridge English School
Starting the dream in September 2012 Academic Bridge Ltd opened its doors to students from all over the world to study and enjoy learning the English Language. Over the past three years we have grown from having only 10 students in the school to 300 students attending our school.
GET A QUOTE
Learn English in Ireland
HOW TO STUDY WITH US
Choose your consultant
Our consultants are experts in cultural exchanges. They will guide you through every step of the process.
Documents
After settling your course fees, you will receive an enrolment letter, a document confirming your attendance at the school, allowing you to travel with peace of mind and security.
Induction Day
A warm welcome for our students, during which we go over all the school’s rules and offer valuable tips to ensure the success of your exchange.
About Us
Starting the dream in September 2012 Academic Bridge Ltd opened its doors to students from all over the world to study and enjoy learning the English Language. Over the past three years we have grown from having only 10 students in the school to 300 students attending our school.
As a school we want to become the best and most memorable chain of English schools around the globe. We will do this by providing an unforgettable learning experience for students and deliver the best customer service in the existing market. Students’ happiness is our main concern in this company. We believe that if we work together as a team we will be able to reach both the dreams of the students and that of the school.
OUR SERVICES
TESTIMONIALS
I was very happy to be able to learn english in Ireland studying at Academic Bridge. My teachers and classmates are so nice! I am grateful for all the support given by the marketing team! It has been a great experience so far!
Academic Bridge is a great school, all the staff are lovely and they take their role as a school very seriously. There is an awesome students’ lounge, a huge yard for events and classes are always fun! I LOVE AB!
It’s a very good school! Academic Bridge gave me all the support that the agency did not give me. And the staff are friendly and helpful.
// components/ThreeDCarousel.tsx
"use client";
import React, {
useRef,
useEffect,
useState,
TouchEvent,
} from "react";
import { ChevronLeft, ChevronRight, ArrowRight } from "lucide-react";
import { Card, CardContent } from "@/app/component2/ui/card";
import { useIsMobile } from "../hooks/use-mobile";
import Link from "next/link";
export interface ThreeDCarouselItem {
id: number;
title: string;
brand: string;
description: string;
tags: string[];
imageUrl: string;
link: string;
}
interface ThreeDCarouselProps {
items: ThreeDCarouselItem[];
autoRotate?: boolean;
rotateInterval?: number;
cardHeight?: number;
title?: string;
subtitle?: string;
tagline?: string;
isMobileSwipe?: boolean;
}
const ThreeDCarousel = ({
items,
autoRotate = true,
rotateInterval = 4000,
cardHeight = 500,
title = "From Textile to Intelligence",
subtitle = "Customer Cases",
tagline = "Explore how our textile sensor technology is revolutionizing multiple industries with intelligent fabric solutions tailored to specific needs.",
isMobileSwipe = true,
}: ThreeDCarouselProps) => {
const [active, setActive] = useState(0);
const carouselRef = useRef(null);
const [isInView, setIsInView] = useState(false);
const [isHovering, setIsHovering] = useState(false);
const [touchStart, setTouchStart] = useState(null);
const [touchEnd, setTouchEnd] = useState(null);
const isMobile = useIsMobile();
const minSwipeDistance = 50;
useEffect(() => {
if (autoRotate && isInView && !isHovering) {
const interval = setInterval(() => {
setActive((prev) => (prev + 1) % items.length);
}, rotateInterval);
return () => clearInterval(interval);
}
}, [isInView, isHovering, autoRotate, rotateInterval, items.length]);
useEffect(() => {
const observer = new IntersectionObserver(
([entry]) => setIsInView(entry.isIntersecting),
{ threshold: 0.2 }
);
return () => observer.disconnect();
}, []);
const onTouchStart = (e: TouchEvent) => {
setTouchStart(e.targetTouches[0].clientX);
setTouchEnd(null);
};
const onTouchMove = (e: TouchEvent) => {
setTouchEnd(e.targetTouches[0].clientX);
};
const onTouchEnd = () => {
if (!touchStart || !touchEnd) return;
const distance = touchStart - touchEnd;
if (distance > minSwipeDistance) {
setActive((prev) => (prev + 1) % items.length);
} else if (distance < -minSwipeDistance) {
setActive((prev) => (prev - 1 + items.length) % items.length);
}
};
const getCardAnimationClass = (index: number) => {
if (index === active) return "scale-100 opacity-100 z-20";
if (index === (active + 1) % items.length)
return "translate-x-[40%] scale-95 opacity-60 z-10";
if (index === (active - 1 + items.length) % items.length)
return "translate-x-[-40%] scale-95 opacity-60 z-10";
return "scale-90 opacity-0";
};
return (
setIsHovering(true)}
onMouseLeave={() => setIsHovering(false)}
onTouchStart={onTouchStart}
onTouchMove={onTouchMove}
onTouchEnd={onTouchEnd}
ref={carouselRef}
>
{items.map((item, index) => (
{item.brand.toUpperCase()}
{item.title}
{item.title}
{item.brand}
{item.description}
{item.tags.map((tag, idx) => (
{tag}
))}
{
if (item.link.startsWith("/")) {
window.scrollTo(0, 0);
}
}}
>
Learn more
))}
{!isMobile && (
<>
>
)}
{items.map((_, idx) => (
);
};
export default ThreeDCarousel;


