diff --git a/non-used/BookmarkPage/BookmarkPage.tsx b/non-used/BookmarkPage/BookmarkPage.tsx index 2340861..77297d5 100644 --- a/non-used/BookmarkPage/BookmarkPage.tsx +++ b/non-used/BookmarkPage/BookmarkPage.tsx @@ -1,7 +1,7 @@ import { useEffect, useMemo, useRef, useState } from "react"; import Header from "../../src/components/Header/Header"; import BottomBar from "../../src/components/BottomBar/BottomBar"; -import { HOSPITALS, type Hospital } from "../../src/pages/LocationPage/hospitals"; +import { HOSPITALS, type Hospital } from "../../src/pages/ListPage/hospitals"; import "./BookmarkPage.css"; type SortKey = "distance" | "alpha"; diff --git a/non-used/LocationPage.tsx b/non-used/LocationPage.tsx index d435e3d..0b30674 100644 --- a/non-used/LocationPage.tsx +++ b/non-used/LocationPage.tsx @@ -1,7 +1,7 @@ import { useEffect, useMemo, useRef, useState } from "react"; import Header from "../src/components/Header/Header"; import BottomBar from "../src/components/BottomBar/BottomBar"; -import { HOSPITALS, type Hospital, type Hours, type Day } from "../src/pages/LocationPage/hospitals"; +import { HOSPITALS, type Hospital, type Hours, type Day } from "../src/pages/ListPage/hospitals"; import { useLocation, useNavigate, useNavigationType } from "react-router-dom"; import "./LocationPage.css"; diff --git a/src/components/Map.tsx b/non-used/Map.tsx similarity index 94% rename from src/components/Map.tsx rename to non-used/Map.tsx index 2940fb1..8ae00d7 100644 --- a/src/components/Map.tsx +++ b/non-used/Map.tsx @@ -1,6 +1,6 @@ import { useEffect, useRef } from "react"; -import { HOSPITALS, type Hospital } from "../pages/LocationPage/hospitals"; -import { geocodeByRest } from "../utils/geocode"; +import { HOSPITALS, type Hospital } from "../src/pages/ListPage/hospitals"; +import { geocodeByRest } from "./geocode"; interface MapProps { onSelectHospital?: (hospital: Hospital | null) => void; diff --git a/non-used/SearchPage/SearchPage.tsx b/non-used/SearchPage/SearchPage.tsx index 9d98781..66e9796 100644 --- a/non-used/SearchPage/SearchPage.tsx +++ b/non-used/SearchPage/SearchPage.tsx @@ -1,6 +1,6 @@ import { useEffect, useMemo, useState } from "react"; import { useLocation, useNavigate } from "react-router-dom"; -import { HOSPITALS } from "../../src/pages/LocationPage/hospitals"; +import { HOSPITALS } from "../../src/pages/ListPage/hospitals"; import "./SearchPage.css"; type HistoryItem = { id: string; term: string; ts: number }; diff --git a/src/utils/geocode.ts b/non-used/geocode.ts similarity index 100% rename from src/utils/geocode.ts rename to non-used/geocode.ts diff --git a/public/Guide/Guide-box.svg b/public/Guide/Guide-box.svg deleted file mode 100644 index e0c635e..0000000 --- a/public/Guide/Guide-box.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/Guide/Guide-logo.svg b/public/Guide/Guide-logo.svg new file mode 100644 index 0000000..8036197 --- /dev/null +++ b/public/Guide/Guide-logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/Guide/Information-box.svg b/public/Guide/Information-logo.svg similarity index 96% rename from public/Guide/Information-box.svg rename to public/Guide/Information-logo.svg index 909dfb4..903023d 100644 --- a/public/Guide/Information-box.svg +++ b/public/Guide/Information-logo.svg @@ -1,33 +1,18 @@ - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - + + - - + + - - + + diff --git a/public/Help/eventplus-icon.svg b/public/Help/eventplus-icon.svg deleted file mode 100644 index ea6241e..0000000 --- a/public/Help/eventplus-icon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/public/Home/ExSearch-logo.svg b/public/Home/ExSearch-logo.svg new file mode 100644 index 0000000..8d9185e --- /dev/null +++ b/public/Home/ExSearch-logo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/public/Home/Feedback-logo.svg b/public/Home/Feedback-logo.svg new file mode 100644 index 0000000..a5cc4c3 --- /dev/null +++ b/public/Home/Feedback-logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/Home/Guide-logo.svg b/public/Home/Guide-logo.svg new file mode 100644 index 0000000..7a13b83 --- /dev/null +++ b/public/Home/Guide-logo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/Home/Home_ExSearch.svg b/public/Home/Home_ExSearch.svg deleted file mode 100644 index 4a63ae1..0000000 --- a/public/Home/Home_ExSearch.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/Home/Home_Feedback.svg b/public/Home/Home_Feedback.svg deleted file mode 100644 index 36da326..0000000 --- a/public/Home/Home_Feedback.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/Home/Home_Guide.svg b/public/Home/Home_Guide.svg deleted file mode 100644 index 7f57152..0000000 --- a/public/Home/Home_Guide.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/Home/Home_HosSearch.svg b/public/Home/Home_HosSearch.svg deleted file mode 100644 index af71dca..0000000 --- a/public/Home/Home_HosSearch.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/Home/HosSearch-logo.svg b/public/Home/HosSearch-logo.svg new file mode 100644 index 0000000..7ed71ba --- /dev/null +++ b/public/Home/HosSearch-logo.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/public/Info/Benefit-logo.svg b/public/Info/Benefit-logo.svg new file mode 100644 index 0000000..248a9c9 --- /dev/null +++ b/public/Info/Benefit-logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/Info/Compensation-logo.svg b/public/Info/Compensation-logo.svg new file mode 100644 index 0000000..09ae100 --- /dev/null +++ b/public/Info/Compensation-logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/Info/Glossary-logo.svg b/public/Info/Glossary-logo.svg new file mode 100644 index 0000000..9e32ac0 --- /dev/null +++ b/public/Info/Glossary-logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/Info/NoImage.svg b/public/Info/NoImage.svg deleted file mode 100644 index 43e32f0..0000000 --- a/public/Info/NoImage.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/public/Info/Process-logo.svg b/public/Info/Process-logo.svg new file mode 100644 index 0000000..6ed2abf --- /dev/null +++ b/public/Info/Process-logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/Info/Process.svg b/public/Info/Process.svg deleted file mode 100644 index 4276ee8..0000000 --- a/public/Info/Process.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/public/Info/Tip-box.svg b/public/Info/Tip-box.svg deleted file mode 100644 index 84534ea..0000000 --- a/public/Info/Tip-box.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/Info/icff-logo.svg b/public/Info/icff-logo.svg deleted file mode 100644 index e2e7f7f..0000000 --- a/public/Info/icff-logo.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/public/Info/iscfr-logo.svg b/public/Info/iscfr-logo.svg deleted file mode 100644 index 058fda7..0000000 --- a/public/Info/iscfr-logo.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/App.tsx b/src/App.tsx index af8a10b..8938227 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -6,7 +6,7 @@ import HomePage from "./pages/HomePage/HomePage"; import CasePage from "./pages/CasePage/CasePage"; import CaseDetailPage from "./pages/CasePage/CaseDetailPage"; import GuidePage from "./pages/Comp-GuidePage/Comp-GuidePage"; -import ListPage from "./pages/LocationPage/ListPage" +import ListPage from "./pages/ListPage/ListPage" import InfoPage from "./pages/InfoPage/InfoPage"; import InfoCompPage from "./pages/InfoPage/InfoCompPage/InfoCompPage"; diff --git a/src/pages/CasePage/CasePage.css b/src/pages/CasePage/CasePage.css index 44ab5d2..5da1f8b 100644 --- a/src/pages/CasePage/CasePage.css +++ b/src/pages/CasePage/CasePage.css @@ -11,9 +11,39 @@ html, body, #root { min-height: 100%; } .case-fixed { margin-top: 14px; background: #fff; } /* Tabs */ -.case-tabs { margin: 14px 16px 0; display: flex; gap: 8px; } -.tab-btn { flex: 1; height: 34px; border-radius: 10px; border: 1px solid #DEDEDE; background: #fff; font-size: 12px; font-weight: 500; color: #2b2f3a; } -.tab-btn.is-active { background: #DEF0FF; color: #0C8CFF; border-color: #0C8CFF; } +.case-tabs { + margin: 14px 16px 0; + display: flex; + justify-content: center; + gap: 8px; + flex-wrap: nowrap; +} + +.tab-btn { + flex: 1 1 auto; /* 폭 자동 확장 가능 */ + min-width: 80px; /* 최소 폭 */ + padding: 6px 10px; + border-radius: 10px; + border: 1px solid #DEDEDE; + background: #fff; + font-size: 12px; + font-weight: 500; + color: #2b2f3a; + + display: flex; + align-items: center; + justify-content: center; + text-align: center; + word-break: break-word; /* 글자가 길면 줄바꿈 */ + line-height: 1.2; +} + +.tab-btn.is-active { + background: #DEF0FF; + color: #0C8CFF; + border-color: #0C8CFF; +} + /* Filter area */ .case-filter-area { position: relative; margin: 16px 16px 0; display: inline-block; } @@ -68,9 +98,29 @@ html, body, #root { min-height: 100%; } .case-row .title { background: none; border: 0; padding: 0; text-align: left; cursor: pointer; color: #0C8CFF; font-weight: 700; font-size: 15px; line-height: 1; } /* Meta */ -.case-meta { display: flex; align-items: center; gap: 9px; margin-top: 9px; } -.approval { width: auto; height: 17px; border: 1px solid #767676; border-radius: 4px; display: inline-flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 500; color: #767676; padding: 0 8px; } -.tag { font-size: 13px; font-weight: 500; color: #000; } +.case-meta { display: flex; align-items: center; gap: 9px; margin-top: 9px; flex-wrap: wrap;} +.approval { + display: inline-flex; + align-items: center; + justify-content: center; + border: 1px solid #767676; + border-radius: 4px; + padding: 4px 8px; + font-size: 10px; + font-weight: 500; + color: #767676; + height: auto; + min-height: 17px; + line-height: 1.2; + word-break: break-word; +} + +.tag { + font-size: 13px; + font-weight: 500; + color: #000; + line-height: 1.2; +} /* Filter arrow (inline SVG) */ .arrow-icon { diff --git a/src/pages/CenterPage/CenterPage.css b/src/pages/CenterPage/CenterPage.css index 4ec7ee0..0ca76b7 100644 --- a/src/pages/CenterPage/CenterPage.css +++ b/src/pages/CenterPage/CenterPage.css @@ -24,7 +24,7 @@ } /* 대제목 */ -.section-title { +.center-subtitle { position: relative; display: block; width: fit-content; @@ -37,7 +37,7 @@ } /* 하이라이터 효과 */ -.section-title.hl::after { +.center-subtitle.hl::after { content: ""; position: absolute; left: -6px; diff --git a/src/pages/CenterPage/CenterPage.tsx b/src/pages/CenterPage/CenterPage.tsx index 4267354..24c4021 100644 --- a/src/pages/CenterPage/CenterPage.tsx +++ b/src/pages/CenterPage/CenterPage.tsx @@ -12,7 +12,7 @@ export default function CenterPage() {

센터 소개 (Center Info)

{/* 인천외국인종합지원센터 */} -

인천외국인종합지원센터

+

인천외국인종합지원센터

{/* 로고 및 설명 */}
@@ -27,7 +27,7 @@ export default function CenterPage() {
{/* 센터 정보 안내 */} -

센터 정보 안내

+

센터 정보 안내

{/* 정보 박스들 */}
diff --git a/src/pages/Comp-GuidePage/Comp-GuidePage.css b/src/pages/Comp-GuidePage/Comp-GuidePage.css index d66666c..2dd59a6 100644 --- a/src/pages/Comp-GuidePage/Comp-GuidePage.css +++ b/src/pages/Comp-GuidePage/Comp-GuidePage.css @@ -3,12 +3,13 @@ background: #fafbfc; display: flex; flex-direction: column; - font-family: Pretendard, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, - "Helvetica Neue", Arial, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", - sans-serif; + font-family: Pretendard, -apple-system, BlinkMacSystemFont, "Segoe UI", + Roboto, "Helvetica Neue", Arial, "Apple SD Gothic Neo", "Noto Sans KR", + "Malgun Gothic", sans-serif; overflow-y: auto; } +/* 컨텐츠 */ .guide-content { flex: 1; display: flex; @@ -16,126 +17,108 @@ align-items: center; padding: 50px 20px 100px; box-sizing: border-box; - overflow-y: auto; - min-width: 260px; + min-width: 260px; } -/* ==카드 그룹== */ +/* 카드 그룹 */ .guide-photo-group { display: flex; flex-direction: column; align-items: center; - gap: 30px; + gap: 50px; width: 100%; max-width: 900px; } -/* ==개별 카드== */ +/* 개별 카드 */ .guide-photo-item { - position: relative; width: 95%; max-width: 600px; - border-radius: 12px; - overflow: hidden; cursor: pointer; - transition: transform 0.2s ease; + transition: transform 0.15s ease; } .guide-photo-item:hover { - transform: translateY(-3px); /* ✅ hover 시 위로 살짝 */ + transform: translateY(-3px); } -/* 이미지 */ -.guide-shadow-img { - width: 100%; - height: auto; - display: block; - object-fit: cover; - border: none; - box-shadow: none; - background: none; +/* 카드 배경 */ +.guide-card-bg { + background: #ffffff; + border-radius: 28px; + padding: 28px 24px; + position: relative; + box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.05); +} + +/* 카드 1 */ +.guide-flex { + display: flex; + align-items: center; + justify-content: space-between; } -/* 텍스트 */ .guide-photo-text { - position: absolute; - top: 28px; - left: 24px; - right: 24px; - text-align: left; - z-index: 2; + display: flex; + flex-direction: column; + flex: 1; + word-break: keep-all; } -/* 제목 */ .guide-comp-title { font-size: 20px; font-weight: 700; - line-height: 1.3; color: #000; - margin-right: 10px; + line-height: 1.3; } -/* 서브타이틀 */ .guide-comp-subtitle { margin-top: 10px; - font-weight: 500; font-size: 12px; - line-height: 1.4; + font-weight: 500; color: #92939f; - text-align: left; - margin-right: 50px; /* 이모지겹침 방지 */ } -/* === 반응형 === */ -@media (max-width: 259px) { - .guide-comp-title { - font-size: 15px !important; - } - .guide-comp-subtitle { - font-size: 10px !important; - } +/* 카드 1 로고 */ +.guide-logo { + width: 70px; + flex-shrink: 0; + object-fit: contain; } -/* 260px 이상일 때 */ -@media (min-width: 260px) { - .guide-comp-title { - margin-top: 5px; - font-size: 15px; - } - .guide-comp-subtitle { - font-size: 10px; - } +/* 카드 2 */ +.bottom-logo-wrapper .guide-photo-text { + position: relative; + z-index: 2; /* 텍스트 위 */ } -/* 350px 이상일 때 */ -@media (min-width: 350px) { - .guide-comp-title { - margin-top: 10px; - font-size: 20px; - } - .guide-comp-subtitle { - font-size: 12px; - } +.guide-bottom-logo { + position: absolute; + width: 160px; + bottom: 15px; + right: 20px; + opacity: 0.7; /* 투명도 */ + z-index: 0; /* 로고 아래 */ + object-fit: contain; + pointer-events: none; } -/* 480px 이상 */ -@media (min-width: 480px) { - .guide-comp-title { - margin-top: 15px; - font-size: 22px; - } - .guide-comp-subtitle { - font-size: 13px; - } +/* 공통 오른쪽 화살표 */ +.guide-arrow { + position: absolute; + right: 10px; + top: 50%; + height: auto; + transform: translateY(-50%); + z-index: 3; } -/* 768px 이상 */ -@media (min-width: 768px) { - .guide-comp-title { - margin-top: 10px; - font-size: 23px; +/* 반응형 */ +@media (max-width: 350px) { + .guide-logo { + width: 55px; } - .guide-comp-subtitle { - font-size: 14px; + .guide-bottom-logo { + width: 130px; } } diff --git a/src/pages/Comp-GuidePage/Comp-GuidePage.tsx b/src/pages/Comp-GuidePage/Comp-GuidePage.tsx index 87c6e57..397711b 100644 --- a/src/pages/Comp-GuidePage/Comp-GuidePage.tsx +++ b/src/pages/Comp-GuidePage/Comp-GuidePage.tsx @@ -8,45 +8,60 @@ import { useLocalization } from "../../contexts/LocalizationContext"; export default function GuidePage() { const navigate = useNavigate(); const { t } = useLocalization(); + return (
-
+
- {/* 카드 1 */} -
navigate("/info")} - > - 산업재해 정보 가이드 -
-
{t("guideInfo")}
-
{t("guideIntroduce")}
+ + {/* 카드 1 — 텍스트 왼쪽 / 로고 오른쪽 */} +
navigate("/info")}> +
+
+
{t("guideInfo")}
+
{t("guideIntroduce")}
+
+ + Information Logo + + {/* 오른쪽 화살표 */} + arrow
- {/* 카드 2 */} -
navigate("/medicare")} - > - 최초 요양 급여 신청서 연습 -
-
{t("guidePractice")}
-
- {t("guidePreview")} + {/* 카드 2 — 로고는 아래 깔리고 글자 위로 겹침 가능 */} +
navigate("/medicare")}> +
+
+
{t("guidePractice")}
+
{t("guidePreview")}
+ + Guide Logo + + {/* 오른쪽 화살표 */} + arrow
+
diff --git a/src/pages/HomePage/HomePage.css b/src/pages/HomePage/HomePage.css index a668ff1..0203e9a 100644 --- a/src/pages/HomePage/HomePage.css +++ b/src/pages/HomePage/HomePage.css @@ -140,7 +140,7 @@ body { top: 240px; left: 0; right: 0; - bottom: 50px; /* BottomBar 높이 고려 */ + bottom: 50px; background: var(--bg); border-top-left-radius: 20px; border-top-right-radius: 20px; @@ -175,7 +175,7 @@ body { margin-bottom: 15px; } -/* ================= 이미지 카드 그룹 ================= */ +/* == 새로운 카드 그룹 == */ .photo-group { display: flex; flex-wrap: wrap; @@ -184,72 +184,61 @@ body { margin-top: 10px; } -.photo-item { +.new-card { position: relative; - width: 88%; - max-width: 600px; - height: auto; - border-radius: 12px; - overflow: hidden; + width: 346px; + min-height: 120px; + background: #ffffff; + border-radius: 28px; + box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.05); + + padding: 20px 24px; + display: flex; + justify-content: space-between; + align-items: center; cursor: pointer; + transition: transform 0.12s ease; + gap: 10px; } -.shadow-img { - width: 100%; - height: 100%; - border-radius: 12px; - object-fit: cover; - display: block; - box-shadow: none; - z-index: 1; +.new-card:hover { + transform: translateY(-2px); } -/* 이미지 위 텍스트 - 일반 카드 */ -.photo-item:not(.feedback) .photo-text { - position: absolute; - top: 30px; - left: 24px; - z-index: 2; +.card-text { + display: flex; + flex-direction: column; + flex: 1; + word-break: keep-all; + white-space: normal; } -.photo-item:not(.feedback) .photo-text .title { +.card-text .title { font-size: 20px; font-weight: 700; color: var(--ink); line-height: 1.3; } -.photo-item:not(.feedback) .photo-text .subtitle { - margin-top: 8px; - font-size: 11px; /* 🔹 작게 조정 */ +.card-text .subtitle { + margin-top: 6px; + font-size: 13px; font-weight: 500; color: var(--blue); } -.photo-text .title, -.photo-text .subtitle { - padding-right: 100px; - word-break: keep-all; - white-space: normal; /* 자동 줄바꿈 허용 */ -} - -/* 피드백 카드 중앙 정렬 */ -.photo-item.feedback .photo-text { - position: absolute; - top: 50%; - left: 24px; - transform: translateY(-50%); - text-align: left; -} - -.photo-item.feedback .photo-text .title { - font-size: 22px; - font-weight: 700; - color: var(--ink); +/* 오른쪽 아이콘 */ +.card-icon { + width: 60px; + height: auto; + object-fit: contain; } -.photo-item.feedback .photo-text .subtitle { - display: none; +/* 반응형 */ +@media (max-width: 420px) { + .new-card { + width: calc(100% - 40px); + } } .global { @@ -262,43 +251,3 @@ body { cursor: pointer; transition: transform 0.2s ease, color 0.2s ease; } - -/* ================= 반응형 ================= */ -@media (min-width: 480px) { - .photo-item { - max-width: 400px; - } - - .photo-item:not(.feedback) .photo-text .title { - font-size: 20px; - margin-top: 5px; - } - - .photo-item:not(.feedback) .photo-text .subtitle { - font-size: 13px; - } - - .photo-item.feedback .photo-text .title { - font-size: 22px; - } -} - -@media (min-width: 768px) { - .photo-item { - max-width: 500px; - } - - .photo-item:not(.feedback) .photo-text .title { - font-size: 22px; - margin-top: 15px; - } - - .photo-item:not(.feedback) .photo-text .subtitle { - font-size: 16px; - margin-top: 20px; - } - - .photo-item.feedback .photo-text .title { - font-size: 23px; - } -} diff --git a/src/pages/HomePage/HomePage.tsx b/src/pages/HomePage/HomePage.tsx index 9200515..0286716 100644 --- a/src/pages/HomePage/HomePage.tsx +++ b/src/pages/HomePage/HomePage.tsx @@ -33,41 +33,40 @@ export default function App() {
-
navigate("/guide")}> - 산재 신청 가이드 -
+ +
navigate("/guide")}> +
{t('mainIndustry')}
{t('mainLookup')}
+ guide
-
navigate("/cases")}> - 사례 검색 -
+
navigate("/cases")}> +
{t('mainSearch')}
{t('mainExample')}
+ example
-
navigate("/list")}> - 의료기관 검색 -
+
navigate("/list")}> +
{t('mainHospital')}
{t('mainFindHospital')}
+ hospital
- -
window.open("https://forms.gle/B7AHzR2ZHYhriUDx9", "_blank")} - > - 피드백 하기 -
+ +
window.open("https://forms.gle/B7AHzR2ZHYhriUDx9", "_blank")}> +
{t('mainFeed')}
+ feedback
+
diff --git a/src/pages/InfoPage/InfoCompPage/InfoCompPage.css b/src/pages/InfoPage/InfoCompPage/InfoCompPage.css index cef32fd..b3f0079 100644 --- a/src/pages/InfoPage/InfoCompPage/InfoCompPage.css +++ b/src/pages/InfoPage/InfoCompPage/InfoCompPage.css @@ -38,29 +38,8 @@ color: #2f3747; } -/* 섹션 제목 */ -.section-title { - position: relative; - display: block; - width: fit-content; - z-index: 0; - margin: 25px 0 0; - font-size: 20px; - font-weight: 600; - line-height: 1.3; - color: #2f3747; -} -.section-title.hl::after { - content: ""; - position: absolute; - left: -6px; - right: -27px; - top: 50%; - height: 12px; - background: #e0eeff; - border-radius: 4px; - z-index: -1; -} + + .section-title + .paragraph, .section-title + .check-list, .section-title + .dash-list { diff --git a/src/pages/InfoPage/InfoCompPage/InfoCompPage.tsx b/src/pages/InfoPage/InfoCompPage/InfoCompPage.tsx index 609ec36..746e509 100644 --- a/src/pages/InfoPage/InfoCompPage/InfoCompPage.tsx +++ b/src/pages/InfoPage/InfoCompPage/InfoCompPage.tsx @@ -1,35 +1,8 @@ -// 산재 정보 안내 (리팩토링 최종 버전) import Header from "../../../components/Header/Header"; import BottomBar from "../../../components/BottomBar/BottomBar"; import { useLocalization } from "../../../contexts/LocalizationContext"; import "./InfoCompPage.css"; - -// ✅ 내부 유틸: HTML/텍스트 → bullet 라인 배열로 변환 -function toLines(input: unknown): string[] { - if (Array.isArray(input)) { - return input.map((s) => String(s).trim()).filter(Boolean); - } - - const s = String(input ?? "").trim(); - if (!s) return []; - - // li 태그가 있으면 그 내부만 사용 - const liMatches = [...s.matchAll(/]*>([\s\S]*?)<\/li>/gi)].map((m) => - m[1] - .replace(//gi, "") - .replace(/<[^>]+>/g, "") - .replace(/\s+/g, " ") - .trim() - ); - if (liMatches.length) return liMatches.filter(Boolean); - - //
제거 후 줄/구분자 분해, 앞의 "• ", "- ", "· " 제거 - const cleaned = s.replace(//gi, "").replace(/<[^>]+>/g, ""); - return cleaned - .split(/\?|·|•|;|,|、/g) - .map((t) => t.trim().replace(/^[-•·]\s*/, "")) // ← bullet 문자 제거 핵심 - .filter(Boolean); -} +import "../../../../src/styles/infopage.css" export default function InfoCompPage() { const { t } = useLocalization(); diff --git a/src/pages/InfoPage/InfoDictionPage/InfoDictionPage.css b/src/pages/InfoPage/InfoDictionPage/InfoDictionPage.css index 21e15cb..a384dae 100644 --- a/src/pages/InfoPage/InfoDictionPage/InfoDictionPage.css +++ b/src/pages/InfoPage/InfoDictionPage/InfoDictionPage.css @@ -22,30 +22,7 @@ color: #2f3747; } -/* 대제목 */ -.section-title { - position: relative; - display: block; - width: fit-content; - z-index: 1; - margin: 25px 0 0; - font-size: 20px; - font-weight: 600; - line-height: 1.3; - color: #2f3747; -} -/* 대제목 */ -.section-title.hl::after { - content: ""; - position: absolute; - left: -6px; - right: -27px; - top: 55%; - height: 12px; - background: #e0eeff; - border-radius: 4px; - z-index: -1; -} + /* 소제목 (1-1, 1-2, 1-3, 제외사유) */ .sub-title { diff --git a/src/pages/InfoPage/InfoDictionPage/InfoDictionPage.tsx b/src/pages/InfoPage/InfoDictionPage/InfoDictionPage.tsx index 95fe3cd..40227ac 100644 --- a/src/pages/InfoPage/InfoDictionPage/InfoDictionPage.tsx +++ b/src/pages/InfoPage/InfoDictionPage/InfoDictionPage.tsx @@ -2,8 +2,9 @@ import Header from "../../../components/Header/Header"; import BottomBar from "../../../components/BottomBar/BottomBar"; import { useLocalization } from "../../../contexts/LocalizationContext"; import "./InfoDictionPage.css"; +import "../../../../src/styles/infopage.css" -// ✅ 내부 유틸:

안의 '•' 라인 자동 분리 +// 내부 유틸:

안의 '•' 라인 자동 분리 function toBullets(text: string): string[] { return text .split(//gi) diff --git a/src/pages/InfoPage/InfoPage.css b/src/pages/InfoPage/InfoPage.css index 2313ffa..17a8558 100644 --- a/src/pages/InfoPage/InfoPage.css +++ b/src/pages/InfoPage/InfoPage.css @@ -14,8 +14,8 @@ .info-content { flex: 1; display: flex; - justify-content: center; - align-items: center; + justify-content: center; /* 세로 가운데 */ + align-items: center; padding: 0px 20px 100px; box-sizing: border-box; overflow-x: auto; @@ -28,19 +28,23 @@ display: flex; flex-direction: column; align-items: center; - gap: 15px; + gap: 22px; width: 100%; max-width: 900px; } /* === 카드 === */ .info-card-item { - position: relative; + display: flex; + justify-content: space-between; + align-items: center; + background: #ffffff; + border-radius: 28px; + box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.05); + padding: 15px 24px; width: 100%; max-width: 600px; min-width: 280px; - border-radius: 12px; - overflow: hidden; cursor: pointer; transition: transform 0.2s ease; } @@ -49,25 +53,12 @@ transform: translateY(-3px); } -/* 이미지 */ -.info-card-img { - width: 100%; - height: auto; - display: block; - object-fit: cover; - border: none; - box-shadow: none; - background: none; -} - -/* 텍스트 */ +/* === 텍스트 === */ .info-card-text { - position: absolute; - top: 28px; - left: 24px; - right: 24px; - text-align: left; - z-index: 2; + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; } /* 제목 */ @@ -76,7 +67,6 @@ font-weight: 700; line-height: 1.3; color: #000; - margin-right:60px; margin-bottom: 0px; } @@ -87,10 +77,14 @@ font-size: 12px; line-height: 1.4; color: #92939f; - text-align: left; - white-space: pre-line; /* 줄바꿈 유지 */ - margin-right:50px; - + white-space: pre-line; +} + + +.info-card-logo img { + display: block; + width: 58px; + height: auto; } /* === 반응형 === */ @@ -98,7 +92,6 @@ /* 260px 이상 */ @media (min-width: 260px) { .info-card-title { - margin-top: 5px; font-size: 15px; } .info-card-subtitle { @@ -109,7 +102,6 @@ /* 350px 이상 */ @media (min-width: 350px) { .info-card-title { - margin-top: 10px; font-size: 18px; } .info-card-subtitle { @@ -120,7 +112,6 @@ /* 480px 이상 */ @media (min-width: 480px) { .info-card-title { - margin-top: 15px; font-size: 20px; } .info-card-subtitle { @@ -137,7 +128,6 @@ max-width: 500px; } .info-card-title { - margin-top: 10px; font-size: 21px; } .info-card-subtitle { @@ -163,7 +153,7 @@ .info-card-group { flex-direction: row; - gap: 20px; + gap: 2px; width: max-content; } @@ -179,4 +169,4 @@ .info-card-subtitle { font-size: 10px; } -} \ No newline at end of file +} diff --git a/src/pages/InfoPage/InfoPage.tsx b/src/pages/InfoPage/InfoPage.tsx index 5b5da00..7e40c0a 100644 --- a/src/pages/InfoPage/InfoPage.tsx +++ b/src/pages/InfoPage/InfoPage.tsx @@ -12,25 +12,25 @@ export default function InfoPage() { { title: t('infoInsurance'), subtitle: t('infoExplain'), - img: "/Info/Compensation-box.svg", + img: "/Info/Compensation-logo.svg", path: "/info/compensation", }, { title: t('infoStep'), subtitle: t('infoReward'), - img: "/Info/Process-box.svg", + img: "/Info/Process-logo.svg", path: "/info/process", }, { title: t('infoWage'), subtitle: t('infoKindOfWage'), - img: "/Info/Benefit-box.svg", + img: "/Info/Benefit-logo.svg", path: "/info/salary", }, { title: t('infoDic'), subtitle: t('infoDicintro'), - img: "/Info/Glossary-box.svg", + img: "/Info/Glossary-logo.svg", path: "/info/dictionary", }, ]; @@ -42,17 +42,20 @@ export default function InfoPage() {

{infoCards.map((card, i) => ( -
navigate(card.path)} - > - {card.title} -
-

{card.title}

-

{card.subtitle}

-
+
navigate(card.path)} + > +
+

{card.title}

+

{card.subtitle}

+
+ {card.title} +
+
+ ))}
diff --git a/src/pages/InfoPage/InfoProcessPage/InfoProcessPage.css b/src/pages/InfoPage/InfoProcessPage/InfoProcessPage.css index 4b193cb..8df26be 100644 --- a/src/pages/InfoPage/InfoProcessPage/InfoProcessPage.css +++ b/src/pages/InfoPage/InfoProcessPage/InfoProcessPage.css @@ -28,27 +28,16 @@ .proc-section { margin-bottom: 30px; } /* 서브타이틀 */ -.section-title { - position: relative; - display: block; - width: fit-content; - z-index: 0; - margin: 0 0 30px 0; /* 섹션 타이틀 → 컨텐츠 30px */ +.section-subtitle { + margin-top: 20px; + display: inline; /* inline으로 변경 */ font-size: 20px; font-weight: 600; line-height: 1.3; color: #2f3747; -} -.section-title.hl::after { - content: ""; - position: absolute; - left: -6px; - right: -27px; - top: 50%; - height: 12px; - background: #e0eeff; + background: #e0eeff; /* 하이라이트 배경 */ border-radius: 4px; - z-index: -1; + padding: 2px 6px; /* 위아래 여백, 좌우 여백 */ } /* 본문 */ diff --git a/src/pages/InfoPage/InfoProcessPage/InfoProcessPage.tsx b/src/pages/InfoPage/InfoProcessPage/InfoProcessPage.tsx index 21e513e..7fdfc8f 100644 --- a/src/pages/InfoPage/InfoProcessPage/InfoProcessPage.tsx +++ b/src/pages/InfoPage/InfoProcessPage/InfoProcessPage.tsx @@ -2,6 +2,7 @@ import Header from "../../../components/Header/Header"; import BottomBar from "../../../components/BottomBar/BottomBar"; import { useLocalization } from "../../../contexts/LocalizationContext"; import "./InfoProcessPage.css"; +import "../../../../src/styles/infopage.css" function stripOrderedPrefix(text: string) { return text.replace(/^\s*\d+\.\s*/, ""); @@ -42,11 +43,6 @@ export default function InfoProcessPage() {

{t("second_step5")}

{t("second_step6")}

- {t("second_diff_step1")} {/* 업무상 질병 산재 보험 신청 절차 */}
@@ -79,7 +75,6 @@ export default function InfoProcessPage() {
-
diff --git a/src/pages/InfoPage/InfoSalaryPage/InfoSalaryPage.css b/src/pages/InfoPage/InfoSalaryPage/InfoSalaryPage.css index 8b86508..230c7cc 100644 --- a/src/pages/InfoPage/InfoSalaryPage/InfoSalaryPage.css +++ b/src/pages/InfoPage/InfoSalaryPage/InfoSalaryPage.css @@ -60,57 +60,55 @@ /* 트리거 박스 */ .acc-trigger { width: var(--box-w); - height: var(--box-h); + min-height: var(--box-h); background: var(--box-bg); border: 0; border-radius: 3px; cursor: pointer; position: relative; - display: block; - - text-align: left; + display: flex; + align-items: center; + justify-content: flex-start; + padding: 0 var(--icon-right); + box-sizing: border-box; } /* 트리거 라벨 */ .acc-trigger__label { - position: absolute; - left: var(--label-pad-left); - top: 50%; - transform: translateY(-50%); - + flex: 1; + text-align: left; + white-space: normal; + word-break: break-word; + overflow-wrap: break-word; font-size: 16px; font-weight: 600; color: #2f3747; - white-space: nowrap; } +/* 화살표 아이콘 */ .acc-trigger__icon { position: absolute; right: var(--icon-right); top: 50%; - width: 11px; transform: translateY(-50%); - pointer-events: none; + width: 11px; + height: auto; } -/* 펼쳐지는 내용 */ +/* 펼쳐지는 패널 */ .acc-panel { - width: var(--box-w); - margin-top: var(--box-gap); + width: 100%; + margin-top: var(--box-gap); margin-bottom: var(--box-gap); font-size: var(--content-font); font-weight: 400; line-height: 1.6; color: #3a4152; - word-break: keep-all; - padding-left: 5px; - - word-break: break-all; /* 단어 중간이라도 줄바꿈 허용 */ - overflow-wrap: anywhere; /* 긴 단어도 줄바꿈 허용 */ + word-break: break-word; + overflow-wrap: break-word; padding-left: 5px; } - /* details 내부 summary 기본 스타일 보완 */ .acc-panel details { margin-top: 10px; diff --git a/src/pages/InfoPage/InfoSalaryPage/InfoSalaryPage.tsx b/src/pages/InfoPage/InfoSalaryPage/InfoSalaryPage.tsx index 49fc33e..c406921 100644 --- a/src/pages/InfoPage/InfoSalaryPage/InfoSalaryPage.tsx +++ b/src/pages/InfoPage/InfoSalaryPage/InfoSalaryPage.tsx @@ -1,9 +1,9 @@ -// 산재 보험 급여 안내 import { useState } from "react"; import Header from "../../../components/Header/Header"; import BottomBar from "../../../components/BottomBar/BottomBar"; import { useLocalization } from "../../../contexts/LocalizationContext"; import "./InfoSalaryPage.css"; +import "../../../../src/styles/infopage.css" type Item = { key: string; diff --git a/src/pages/LocationPage/ListPage.css b/src/pages/ListPage/ListPage.css similarity index 79% rename from src/pages/LocationPage/ListPage.css rename to src/pages/ListPage/ListPage.css index 28f6e2f..c5b6d45 100644 --- a/src/pages/LocationPage/ListPage.css +++ b/src/pages/ListPage/ListPage.css @@ -28,21 +28,39 @@ /* === 필터 바 === */ .loc-filterbar.in-sheet { display: flex; - gap: 12px; + flex-wrap: wrap; /* 줄바꿈 허용 */ + gap: 12px; /* 버튼 간격 */ padding-top: 20px; padding-left: 25px; - background: #fff; + padding-right: 25px; } -.chip { - padding: 8px 12px; - font-size: 13px; +/* 버튼 */ +.chip, +.region-chip, +.dept-chip, +.hours-chip { + display: inline-flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + white-space: normal; + text-align: center; + padding: 8px 12px; border-radius: 40px; - height: 25px; border: 1px solid #dedede; - background: #fff; - color: #111; + font-size: 13px; cursor: pointer; + background: #fff; + min-width: 80px; + line-height: 1.2; +} + +.region-chip, +.dept-chip, +.hours-chip { + margin-left: 10px; + line-height: 16px; } .chip--active { @@ -143,7 +161,6 @@ .hospital-dept { color: #8c8c8c; font-size: 14px; - margin-bottom: 2px; } .hospital-info { @@ -154,7 +171,7 @@ } .phone { - margin-top: 4px; + margin-top: 3px; font-weight: 500; } @@ -163,14 +180,14 @@ height: 16px; } -/* ✅ 영업 상태 색상 표시 */ +/* 영업 상태 색상 표시 */ .status-open { - color: #16a34a; /* 초록색 */ + color: #16a34a; font-weight: 600; } .status-closed { - color: #dc2626; /* 빨간색 */ + color: #dc2626; font-weight: 600; } @@ -181,3 +198,7 @@ font-size: 14px; padding: 40px 0; } + +.hospital-info > div:nth-child(2) { + margin-top: 3px; /* 주소 위쪽 여백 */ +} \ No newline at end of file diff --git a/src/pages/LocationPage/ListPage.tsx b/src/pages/ListPage/ListPage.tsx similarity index 100% rename from src/pages/LocationPage/ListPage.tsx rename to src/pages/ListPage/ListPage.tsx diff --git a/src/pages/LocationPage/hospitals.ts b/src/pages/ListPage/hospitals.ts similarity index 100% rename from src/pages/LocationPage/hospitals.ts rename to src/pages/ListPage/hospitals.ts diff --git a/src/styles/infopage.css b/src/styles/infopage.css new file mode 100644 index 0000000..adf71f7 --- /dev/null +++ b/src/styles/infopage.css @@ -0,0 +1,8 @@ +/* info 페이지 공용 하이라이터 */ +.section-title.hl { + display: inline; + box-shadow: inset 0 -0.45em 0 #e0eeff; + line-height: 1.3; + box-decoration-break: clone; + -webkit-box-decoration-break: clone; +} diff --git a/tsconfig.app.json b/tsconfig.app.json index 9dd362f..4c600b4 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -27,5 +27,5 @@ "types": ["vite/client", "navermaps"], "typeRoots": ["./types", "./node_modules/@types"] }, - "include": ["src", "non-used/HelpPage", "non-used/FavoritePage", "non-used/MyPage", "non-used/SearchPage", "non-used/BookmarkPage", "non-used/LocationPage.tsx", "non-used/InfoTipPage", "non-used/LoginPage", "non-used/SignupPage", "non-used/TermsPage", "src/pages/SplashPage"] + "include": ["src", "non-used/HelpPage", "non-used/FavoritePage", "non-used/MyPage", "non-used/SearchPage", "non-used/BookmarkPage", "non-used/LocationPage.tsx", "non-used/InfoTipPage", "non-used/LoginPage", "non-used/SignupPage", "non-used/TermsPage", "src/pages/SplashPage", "non-used/Map.tsx", "non-used/navermaps", "non-used/navermaps", "non-used/geocode.ts"] }