diff --git a/frontend/src/assets/img/img_landing_episode.png b/frontend/src/assets/img/img_landing_episode.png
index bc014556..dd3e0fbe 100644
Binary files a/frontend/src/assets/img/img_landing_episode.png and b/frontend/src/assets/img/img_landing_episode.png differ
diff --git a/frontend/src/assets/img/img_landing_mindmap.png b/frontend/src/assets/img/img_landing_mindmap.png
index 7950d794..be534d61 100644
Binary files a/frontend/src/assets/img/img_landing_mindmap.png and b/frontend/src/assets/img/img_landing_mindmap.png differ
diff --git a/frontend/src/assets/img/img_landing_selftest.png b/frontend/src/assets/img/img_landing_selftest.png
index aee3bb90..6dd1c79e 100644
Binary files a/frontend/src/assets/img/img_landing_selftest.png and b/frontend/src/assets/img/img_landing_selftest.png differ
diff --git a/frontend/src/features/landing/components/LandingInfo.tsx b/frontend/src/features/landing/components/LandingInfo.tsx
new file mode 100644
index 00000000..b33c2db7
--- /dev/null
+++ b/frontend/src/features/landing/components/LandingInfo.tsx
@@ -0,0 +1,34 @@
+import { ComponentPropsWithoutRef } from "react";
+
+import landingEpisode from "@/assets/img/img_landing_episode.png";
+import landingMain from "@/assets/img/img_landing_main.png";
+import landingMindmap from "@/assets/img/img_landing_mindmap.png";
+import landingSelfTest from "@/assets/img/img_landing_selftest.png";
+import { exhaustiveCheck } from "@/utils/exhaustive_check";
+
+type LandingInfoType = "episode" | "main" | "mindmap" | "self_test";
+type Props = ComponentPropsWithoutRef<"img"> & {
+ name: LandingInfoType;
+};
+
+const LandingInfo = ({ name, ...rest }: Props) => {
+ return ;
+};
+
+export default LandingInfo;
+
+const getLandingInfo = (type: LandingInfoType) => {
+ switch (type) {
+ case "episode":
+ return landingEpisode;
+ case "main":
+ return landingMain;
+ case "mindmap":
+ return landingMindmap;
+ case "self_test":
+ return landingSelfTest;
+
+ default:
+ exhaustiveCheck(`${type}의 landing info 는 올바르지 않습니다.`);
+ }
+};
diff --git a/frontend/src/features/landing/pages/LandingPage.tsx b/frontend/src/features/landing/pages/LandingPage.tsx
index 752d641c..70287b4b 100644
--- a/frontend/src/features/landing/pages/LandingPage.tsx
+++ b/frontend/src/features/landing/pages/LandingPage.tsx
@@ -2,6 +2,7 @@ import { useCallback, useEffect, useRef, useState } from "react";
import { Link } from "react-router";
import { useAuth } from "@/features/auth/hooks/useAuth";
+import LandingInfo from "@/features/landing/components/LandingInfo";
import Button from "@/shared/components/button/Button";
import CallToActionButton from "@/shared/components/call_to_action_button/CallToActionButton";
import GlobalNavigationBar from "@/shared/components/global_navigation_bar/GlobalNavigationBar";
@@ -94,12 +95,10 @@ const LandingPage = () => {
return prev.intersectionRatio >= cur.intersectionRatio ? prev : cur;
});
- const key = (best.target as HTMLElement).dataset.section as FocusKey | undefined;
- if (!key) {
- return;
+ const key = (best.target as HTMLElement).dataset.section;
+ if (key === "mindmap" || key === "self_diagnosis" || key === "episode_archive") {
+ setFocused((prev) => (prev === key ? prev : key));
}
-
- setFocused((prev) => (prev === key ? prev : key));
},
{
root,
@@ -189,11 +188,11 @@ const LandingPage = () => {