diff --git a/apps/dm_new/app/(landing)/reuse/_components/CaseTabsCarousel.tsx b/apps/dm_new/app/(landing)/reuse/_components/CaseTabsCarousel.tsx
index 8d916817e..ece8f0848 100644
--- a/apps/dm_new/app/(landing)/reuse/_components/CaseTabsCarousel.tsx
+++ b/apps/dm_new/app/(landing)/reuse/_components/CaseTabsCarousel.tsx
@@ -8,6 +8,7 @@ import React, {
useRef,
useState,
} from "react";
+import Image from "next/image";
/**
* CaseTabsCarousel.tsx (FINAL OPTIMIZED)
@@ -459,10 +460,12 @@ export default function CaseTabsCarousel() {
].join(" ")}
aria-label="이전"
>
-
@@ -480,10 +483,12 @@ export default function CaseTabsCarousel() {
].join(" ")}
aria-label="다음"
>
-
@@ -513,10 +518,13 @@ export default function CaseTabsCarousel() {
className="overflow-hidden rounded-[22px] border-2 border-sky-400 bg-white"
>
-
diff --git a/apps/dm_new/app/(landing)/reuse/_components/ImageSlider.tsx b/apps/dm_new/app/(landing)/reuse/_components/ImageSlider.tsx
index 6c50d5a5c..41d8987b8 100644
--- a/apps/dm_new/app/(landing)/reuse/_components/ImageSlider.tsx
+++ b/apps/dm_new/app/(landing)/reuse/_components/ImageSlider.tsx
@@ -1,6 +1,7 @@
// apps/dm/app/(landing)/reuse/_components/ImageSlider.tsx
"use client";
+import Image from "next/image";
import { useEffect, useMemo, useRef, useState } from "react";
type Slide = { src: string; alt?: string };
@@ -86,10 +87,12 @@ export default function CaseImageSlider({
w-[80px] h-[80px] rounded-full border border-black/20 bg-white
grid place-items-center shadow-sm hover:bg-black/[0.03]"
>
-
@@ -102,10 +105,12 @@ export default function CaseImageSlider({
w-[80px] h-[80px] rounded-full border border-black/20 bg-white
grid place-items-center shadow-sm hover:bg-black/[0.03]"
>
-
@@ -129,10 +134,13 @@ export default function CaseImageSlider({
>
{safeSlides.map((s, i) => (
-
diff --git a/apps/dm_new/app/(landing)/reuse/_components/Lnb.tsx b/apps/dm_new/app/(landing)/reuse/_components/Lnb.tsx
index 22066069a..f5bc7bbfe 100644
--- a/apps/dm_new/app/(landing)/reuse/_components/Lnb.tsx
+++ b/apps/dm_new/app/(landing)/reuse/_components/Lnb.tsx
@@ -1,6 +1,7 @@
// apps/dm/app/(landing)/reuse/_components/Lnb.tsx
"use client";
+import Image from "next/image";
import Link from "next/link";
import { usePathname } from "next/navigation";
import { useMemo, useState } from "react";
@@ -89,10 +90,12 @@ export default function Lnb({ title, items }: { title: string; items: LnbItem[]
isOpen ? "rotate-180" : "rotate-0",
].join(" ")}
>
-
diff --git a/apps/dm_new/app/(landing)/reuse/_components/TopNav.tsx b/apps/dm_new/app/(landing)/reuse/_components/TopNav.tsx
index 8174da2cf..17c6f5e04 100644
--- a/apps/dm_new/app/(landing)/reuse/_components/TopNav.tsx
+++ b/apps/dm_new/app/(landing)/reuse/_components/TopNav.tsx
@@ -1,6 +1,7 @@
// apps/dm/app/(landing)/reuse/_components/TopNav.tsx
"use client";
+import Image from "next/image";
import Link from "next/link";
import { useEffect, useId, useState } from "react";
import { useRouter } from "next/navigation";
@@ -367,10 +368,13 @@ export default function TopNav() {
{/* 좌측: 로고 */}
-
@@ -423,7 +427,13 @@ export default function TopNav() {
>
로그인
-
+
) : (
@@ -438,7 +448,13 @@ export default function TopNav() {
>
로그아웃
-
+
>
diff --git a/apps/dm_new/app/(landing)/reuse/_sections/Cases.tsx b/apps/dm_new/app/(landing)/reuse/_sections/Cases.tsx
index 077d05cfe..757950369 100644
--- a/apps/dm_new/app/(landing)/reuse/_sections/Cases.tsx
+++ b/apps/dm_new/app/(landing)/reuse/_sections/Cases.tsx
@@ -1,6 +1,9 @@
// apps/dm/app/(landing)/reuse/_sections/Cases.tsx
"use client";
+import Image from "next/image";
+import section03 from "@/public/images/landing/section_03.png";
+
export default function Cases() {
return (
@@ -50,10 +53,11 @@ export default function Cases() {
w-full max-w-[720px]
"
>
-
@@ -62,4 +66,4 @@ export default function Cases() {
);
-}
\ No newline at end of file
+}
diff --git a/apps/dm_new/app/(landing)/reuse/_sections/Hero.tsx b/apps/dm_new/app/(landing)/reuse/_sections/Hero.tsx
index 8f93bdd72..c520f5aea 100644
--- a/apps/dm_new/app/(landing)/reuse/_sections/Hero.tsx
+++ b/apps/dm_new/app/(landing)/reuse/_sections/Hero.tsx
@@ -1,4 +1,5 @@
// apps/dm/app/(landing)/reuse/_sections/Hero.tsx
+import Image from "next/image";
import styles from "../reuse.module.css";
export default function Hero() {
@@ -21,9 +22,15 @@ export default function Hero() {
-

+
scroll down
);
-}
\ No newline at end of file
+}
diff --git a/apps/dm_new/app/(landing)/reuse/_sections/IntroCards.tsx b/apps/dm_new/app/(landing)/reuse/_sections/IntroCards.tsx
index e7153d721..c8c69ad7b 100644
--- a/apps/dm_new/app/(landing)/reuse/_sections/IntroCards.tsx
+++ b/apps/dm_new/app/(landing)/reuse/_sections/IntroCards.tsx
@@ -1,12 +1,17 @@
// apps/dm/app/(landing)/reuse/_sections/IntroCards.tsx
"use client";
+import Image, { type StaticImageData } from "next/image";
import Link from "next/link";
+import card01 from "@/public/images/landing/card_01.jpg";
+import card02 from "@/public/images/landing/card_02.jpg";
+import card03 from "@/public/images/landing/card_03.jpg";
+import card04 from "@/public/images/landing/card_04.jpg";
type IntroCardItem = {
title: string;
desc: string;
- image: string;
+ image: StaticImageData;
href: string;
};
@@ -14,25 +19,25 @@ const INTRO_CARDS: IntroCardItem[] = [
{
title: "물 재이용 법",
desc: "물의 재이용 촉진 및 지원에 관한 법률을 시행하고, 일부 법률은 개정되었습니다.",
- image: "/images/landing/card_01.jpg",
+ image: card01,
href: "/reuse/intro/law",
},
{
title: "친환경 수자원 빗물",
desc: "가뭄을 극복하고 홍수를 예방하기 위해 비가 내릴 때 빗물을 모아두었다가 사용합니다.",
- image: "/images/landing/card_02.jpg",
+ image: card02,
href: "/reuse/intro/rain",
},
{
title: "알뜰하게 재이용되는 중수",
desc: "한번 사용한 물을 중수도 시설을 통해 재생하여 개별적 또는 지역적으로 재이용할 수 있습니다.",
- image: "/images/landing/card_03.jpg",
+ image: card03,
href: "/reuse/intro/greywater",
},
{
title: "하수처리수 재이용",
desc: "사용하고 버려진 공공하수처리장으로 모여진 물을 용도에 맞는 처리 후 재이용 할 수 있습니다.",
- image: "/images/landing/card_04.jpg",
+ image: card04,
href: "/reuse/intro/treated",
},
];
@@ -61,10 +66,12 @@ export default function IntroCards() {
className="group relative h-[280px] md:h-[320px] lg:h-[500px] overflow-hidden rounded-2xl cursor-pointer focus:outline-none focus:ring-2 focus:ring-sky-400/60"
>
{/* 배경 이미지 (이미 그라디언트 포함) */}
-
{/* 텍스트 영역 */}
@@ -83,4 +90,4 @@ export default function IntroCards() {
);
-}
\ No newline at end of file
+}
diff --git a/apps/dm_new/app/(landing)/reuse/cases/greywater/page.tsx b/apps/dm_new/app/(landing)/reuse/cases/greywater/page.tsx
index 3ca2adb63..6d4d00af1 100644
--- a/apps/dm_new/app/(landing)/reuse/cases/greywater/page.tsx
+++ b/apps/dm_new/app/(landing)/reuse/cases/greywater/page.tsx
@@ -1,7 +1,12 @@
// apps/dm/app/(landing)/reuse/cases/greywater/page.tsx
"use client";
+import Image, { type StaticImageData } from "next/image";
import SubPageHeader from "../../_components/SubPageHeader";
+import greywaterOverall from "@/public/images/landing/cases/greywater_overall.png";
+import greywaterFactory from "@/public/images/landing/cases/greywater_factory.png";
+import greywaterBuilding from "@/public/images/landing/cases/greywater_building.png";
+import greywaterUsage from "@/public/images/landing/cases/greywater_usage.png";
function SectionTitle({ children }: { children: React.ReactNode }) {
return (
@@ -21,17 +26,18 @@ function Hr({ className = "" }: HrProps) {
}
type ImgCardProps = {
- src: string;
+ src: StaticImageData;
alt: string;
};
function ImgCard({ src, alt }: ImgCardProps) {
return (
-
);
@@ -58,7 +64,7 @@ export default function GreywaterPage() {
전체 중수도 설치 및 이용 현황 (공장 및 발전시설 제외)
@@ -68,7 +74,7 @@ export default function GreywaterPage() {
공장 및 발전시설 내 중수도 설치 및 이용 현황
@@ -78,7 +84,7 @@ export default function GreywaterPage() {
@@ -88,7 +94,7 @@ export default function GreywaterPage() {
diff --git a/apps/dm_new/app/(landing)/reuse/cases/rain/page.tsx b/apps/dm_new/app/(landing)/reuse/cases/rain/page.tsx
index b9aa54f15..3d7aa9a3f 100644
--- a/apps/dm_new/app/(landing)/reuse/cases/rain/page.tsx
+++ b/apps/dm_new/app/(landing)/reuse/cases/rain/page.tsx
@@ -1,7 +1,11 @@
// apps/dm/app/(landing)/reuse/cases/rain/page.tsx
"use client";
+import Image, { type StaticImageData } from "next/image";
import SubPageHeader from "../../_components/SubPageHeader";
+import rainwaterBuilding from "@/public/images/landing/cases/rainwater_building.png";
+import rainwaterUsage from "@/public/images/landing/cases/rainwater_usage.png";
+import rainwaterUsageAmount from "@/public/images/landing/cases/rainwater_usage_amount.png";
function SectionTitle({ children }: { children: React.ReactNode }) {
return (
@@ -21,17 +25,18 @@ function Hr({ className = "" }: HrProps) {
}
type ImgCardProps = {
- src: string;
+ src: StaticImageData;
alt: string;
};
function ImgCard({ src, alt }: ImgCardProps) {
return (
-
);
@@ -58,7 +63,7 @@ export default function GreywaterPage() {
@@ -68,7 +73,7 @@ export default function GreywaterPage() {
빗물이용시설의 용도별 분포 (2023년 기준)
@@ -78,7 +83,7 @@ export default function GreywaterPage() {
diff --git a/apps/dm_new/app/(landing)/reuse/cases/treated/page.tsx b/apps/dm_new/app/(landing)/reuse/cases/treated/page.tsx
index e3c900557..b9e9073c0 100644
--- a/apps/dm_new/app/(landing)/reuse/cases/treated/page.tsx
+++ b/apps/dm_new/app/(landing)/reuse/cases/treated/page.tsx
@@ -1,7 +1,12 @@
// apps/dm/app/(landing)/reuse/cases/treated/page.tsx
"use client";
+import Image, { type StaticImageData } from "next/image";
import SubPageHeader from "../../_components/SubPageHeader";
+import treatedWaterYear from "@/public/images/landing/cases/treated_water_year.png";
+import treatedWaterUsage from "@/public/images/landing/cases/treated_water_usage.png";
+import treatedWaterFacility from "@/public/images/landing/cases/treated_water_facility.png";
+import treatedWaterRegion from "@/public/images/landing/cases/treated_water_region.png";
function SectionTitle({ children }: { children: React.ReactNode }) {
return (
@@ -21,17 +26,18 @@ function Hr({ className = "" }: HrProps) {
}
type ImgCardProps = {
- src: string;
+ src: StaticImageData;
alt: string;
};
function ImgCard({ src, alt }: ImgCardProps) {
return (
-
);
@@ -58,7 +64,7 @@ export default function GreywaterPage() {
@@ -68,7 +74,7 @@ export default function GreywaterPage() {
@@ -78,7 +84,7 @@ export default function GreywaterPage() {
@@ -88,7 +94,7 @@ export default function GreywaterPage() {
diff --git a/apps/dm_new/app/(landing)/reuse/intro/greywater/page.tsx b/apps/dm_new/app/(landing)/reuse/intro/greywater/page.tsx
index 470f49ee2..d694d040e 100644
--- a/apps/dm_new/app/(landing)/reuse/intro/greywater/page.tsx
+++ b/apps/dm_new/app/(landing)/reuse/intro/greywater/page.tsx
@@ -1,7 +1,11 @@
// apps/dm/app/(landing)/reuse/intro/greywater/page.tsx
"use client";
+import Image, { type StaticImageData } from "next/image";
import SubPageHeader from "../../_components/SubPageHeader";
+import greywaterIntro from "@/public/images/landing/intro/greywater_intro.png";
+import greywaterMandatory from "@/public/images/landing/intro/greywater_mandatory.png";
+import greywaterStandard from "@/public/images/landing/intro/greywater_standard.png";
function SectionTitle({ children }: { children: React.ReactNode }) {
return (
@@ -21,17 +25,18 @@ function Hr({ className = "" }: HrProps) {
}
type ImgCardProps = {
- src: string;
+ src: StaticImageData;
alt: string;
};
function ImgCard({ src, alt }: ImgCardProps) {
return (
-
);
@@ -58,7 +63,7 @@ export default function GreywaterPage() {
@@ -68,7 +73,7 @@ export default function GreywaterPage() {
@@ -78,7 +83,7 @@ export default function GreywaterPage() {
diff --git a/apps/dm_new/app/(landing)/reuse/intro/law/page.tsx b/apps/dm_new/app/(landing)/reuse/intro/law/page.tsx
index 284b884de..c9952bf0b 100644
--- a/apps/dm_new/app/(landing)/reuse/intro/law/page.tsx
+++ b/apps/dm_new/app/(landing)/reuse/intro/law/page.tsx
@@ -1,7 +1,14 @@
// apps/dm/app/(landing)/reuse/intro/law/page.tsx
"use client";
+import Image, { type StaticImageData } from "next/image";
import SubPageHeader from "../../_components/SubPageHeader";
+import lawTimeline from "@/public/images/landing/intro/law_timeline.png";
+import performanceLeft from "@/public/images/landing/intro/performance_left.png";
+import domesticTextbox from "@/public/images/landing/intro/domestic_textbox.png";
+import policyTimeline from "@/public/images/landing/intro/policy_timeline.png";
+import relNote from "@/public/images/landing/intro/rel_note.png";
+import linkage from "@/public/images/landing/intro/linkage.png";
function SectionTitle({ children }: { children: React.ReactNode }) {
return (
@@ -21,17 +28,18 @@ function Hr({ className = "" }: HrProps) {
}
type ImgCardProps = {
- src: string;
+ src: StaticImageData;
alt: string;
};
function ImgCard({ src, alt }: ImgCardProps) {
return (
-
);
@@ -58,7 +66,7 @@ export default function WaterReuseLawPage() {
@@ -68,7 +76,7 @@ export default function WaterReuseLawPage() {
@@ -78,7 +86,7 @@ export default function WaterReuseLawPage() {
@@ -88,7 +96,7 @@ export default function WaterReuseLawPage() {
@@ -98,7 +106,7 @@ export default function WaterReuseLawPage() {
@@ -114,7 +122,7 @@ export default function WaterReuseLawPage() {
• 물관리 계획(국가수도기본계획, 국가 및 유역하수도종합계획, 하천유역수자원관리계획 등)과의 연계성 확보 → 통합적인 관점에서 물이용 체계 구축 필요
-
+
diff --git a/apps/dm_new/app/(landing)/reuse/intro/rain/page.tsx b/apps/dm_new/app/(landing)/reuse/intro/rain/page.tsx
index bb9dc37db..fdd48aa5a 100644
--- a/apps/dm_new/app/(landing)/reuse/intro/rain/page.tsx
+++ b/apps/dm_new/app/(landing)/reuse/intro/rain/page.tsx
@@ -1,7 +1,12 @@
// apps/dm/app/(landing)/reuse/intro/law/page.tsx
"use client";
+import Image, { type StaticImageData } from "next/image";
import SubPageHeader from "../../_components/SubPageHeader";
+import rainreuseIntro from "@/public/images/landing/intro/rainreuse_intro.png";
+import rainreuseMandatory from "@/public/images/landing/intro/rainreuse_mandatory.png";
+import rainwaterDesign from "@/public/images/landing/intro/rainwater_design.png";
+import rainwaterStandards from "@/public/images/landing/intro/rainwater_standards.png";
function SectionTitle({ children }: { children: React.ReactNode }) {
return (
@@ -21,17 +26,18 @@ function Hr({ className = "" }: HrProps) {
}
type ImgCardProps = {
- src: string;
+ src: StaticImageData;
alt: string;
};
function ImgCard({ src, alt }: ImgCardProps) {
return (
-
);
@@ -58,7 +64,7 @@ export default function RainwaterReusePage() {
@@ -68,7 +74,7 @@ export default function RainwaterReusePage() {
@@ -78,7 +84,7 @@ export default function RainwaterReusePage() {
@@ -88,7 +94,7 @@ export default function RainwaterReusePage() {
diff --git a/apps/dm_new/app/(landing)/reuse/intro/treated/page.tsx b/apps/dm_new/app/(landing)/reuse/intro/treated/page.tsx
index 14e4582cb..e64299f70 100644
--- a/apps/dm_new/app/(landing)/reuse/intro/treated/page.tsx
+++ b/apps/dm_new/app/(landing)/reuse/intro/treated/page.tsx
@@ -1,7 +1,10 @@
// apps/dm/app/(landing)/reuse/intro/treated/page.tsx
"use client";
+import Image, { type StaticImageData } from "next/image";
import SubPageHeader from "../../_components/SubPageHeader";
+import treatedwaterIntro from "@/public/images/landing/intro/treatedwater_intro.png";
+import treatedwaterMandatory from "@/public/images/landing/intro/treatedwater_mandatory.png";
function SectionTitle({ children }: { children: React.ReactNode }) {
return (
@@ -21,17 +24,18 @@ function Hr({ className = "" }: HrProps) {
}
type ImgCardProps = {
- src: string;
+ src: StaticImageData;
alt: string;
};
function ImgCard({ src, alt }: ImgCardProps) {
return (
-
);
@@ -58,7 +62,7 @@ export default function TreatedWaterPage() {
@@ -68,7 +72,7 @@ export default function TreatedWaterPage() {