Hero.tsx 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import React, {useState, useEffect} from 'react';
  2. import DarkOverlay from "@/components/DarkOverlay.jsx";
  3. const images = [
  4. '/hero.jpg',
  5. // '/hero2.png',
  6. '/hero.jpg',
  7. ];
  8. const Hero = () => {
  9. const [currentImageIndex, setCurrentImageIndex] = useState(0);
  10. useEffect(() => {
  11. const timer = setInterval(() => {
  12. setCurrentImageIndex((prevIndex) =>
  13. prevIndex === images.length - 1 ? 0 : prevIndex + 1
  14. );
  15. }, 5000);
  16. return () => clearInterval(timer);
  17. }, [currentImageIndex]);
  18. const handleDotClick = (index: number) => {
  19. setCurrentImageIndex(index);
  20. };
  21. return (
  22. <div
  23. style={{ backgroundImage: `url(${images[currentImageIndex]})` }}
  24. className="relative w-full h-screen bg-cover bg-center inline-flex justify-center items-center"
  25. >
  26. <DarkOverlay />
  27. {/* 🔹 콘텐츠 */}
  28. <div className="relative flex flex-col mt-15 gap-10">
  29. <div className="text-center justify-center text-white text-6xl font-semibold font-['Inter']">
  30. 스마트 네트워크 리더 반도산전
  31. </div>
  32. <div className="self-stretch text-center justify-start text-zinc-100 text-xl font-normal font-['Inter']">
  33. 부·울·경 시공능력평가 1위를 넘어 대한민국 시공능력평가 1위로 도약합니다.
  34. <br />
  35. 고객의 스마트 네트워크 산업을 더욱 가치있게 만들어 나갑니다.
  36. </div>
  37. <div className="self-stretch p-2.5 inline-flex justify-center items-center gap-4 overflow-hidden">
  38. <div className="flex w-44 px-8 py-3 outline outline-offset-[-0.5px] outline-white justify-center items-center overflow-hidden hover:bg-white group transition-all duration-300 cursor-pointer">
  39. <div className="w-28 text-center justify-start text-white text-base font-semibold font-['Inter'] group-hover:text-blue-700">
  40. ABOUT
  41. </div>
  42. </div>
  43. </div>
  44. </div>
  45. {/* 🔹 인디케이터 */}
  46. <div className="absolute bottom-[12vh] inline-flex gap-2">
  47. {images.map((_, index: number) => (
  48. <div
  49. key={index}
  50. onClick={() => handleDotClick(index)}
  51. className={`w-2 h-2 relative select-none ${index === currentImageIndex ? 'bg-white' : 'bg-white/50'} rounded cursor-pointer`}
  52. />
  53. ))}
  54. </div>
  55. </div>
  56. );
  57. };
  58. export default Hero;