Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
d79317e
refactor: 불필요한 import 와 소켓 삭제 기본대화 chat으로 api 변경
hyonun321 Jun 21, 2025
b1281db
refactor: 상수 파일로 분리
hyonun321 Jun 21, 2025
36f9f0e
refactor: 메타데이터 추출 파일로 분리
hyonun321 Jun 21, 2025
0f3fba1
refactor: streamchat함수 분리 및 각 파일마다 역할 부여 리팩토링
hyonun321 Jun 21, 2025
303bb1f
chore: 기본대화 chat 으로 api 변경
hyonun321 Jun 21, 2025
d541be8
feat: function call 더 엄격하게 검출
hyonun321 Jun 21, 2025
752ab63
chore: 소켓 종료 emit
hyonun321 Jun 22, 2025
3edabab
chore: api chat 으로 변경 (socket)
hyonun321 Jun 22, 2025
5ed7182
chore: 단일 모델응답 4.1 로 변경
hyonun321 Jun 22, 2025
3d143ab
Merge branch 'dev' of https://github.com/yeji424/me-plus into Feat/백엔…
hyonun321 Jun 23, 2025
58b49b2
Feat: 서비스 가이드 페이지 분리
leeemingyu Jun 23, 2025
57abf4b
Design: 서비스 가이드 레이아웃 수정
leeemingyu Jun 23, 2025
3da2e3d
Merge pull request #77 from yeji424/Design/서비스가이드-디자인-수정
leeemingyu Jun 23, 2025
d1e0002
Merge branch 'dev' of https://github.com/yeji424/me-plus into dev
hyonun321 Jun 23, 2025
47ebcd2
Feat: Header 색상 추가 및 적용
yeji424 Jun 23, 2025
58880dd
Merge branch 'dev' of https://github.com/yeji424/me-plus into Feat/백엔…
hyonun321 Jun 23, 2025
412ed19
style: 메세지 전송버튼 비율 안줄어들게 수정
hyonun321 Jun 23, 2025
779901e
style: 카드 컴포넌트 가로스크롤 제거 및 레이아웃 조정
hyonun321 Jun 23, 2025
0bc2142
chore: 즉 제거
hyonun321 Jun 23, 2025
d3ba8ef
style: 헤더 그라데이션 제거
hyonun321 Jun 23, 2025
ccba4dc
fix: planLists다음 전송버튼 비활성화 버그 수정
hyonun321 Jun 23, 2025
1d76fb9
Merge pull request #80 from yeji424/Feat/ChatbotPage-완성도-다듬기
hyonun321 Jun 23, 2025
9e7f239
Feat: 비교 페이지 레이아웃 정리 및 애니메이션 구현
yeji424 Jun 23, 2025
35e7cde
Merge branch 'dev' of https://github.com/yeji424/me-plus into Feat/애니…
yeji424 Jun 23, 2025
7ceb396
Feat: 비교 페이지 레이아웃 정리 및 애니메이션 구현
yeji424 Jun 23, 2025
c108da6
Feat : 요금제 추천 페이지 API 연동 및 불필요한 코드 정리
chemnida Jun 23, 2025
83ea0d1
Feat : 더미 요금제 데이터 PlanResult 타입 일치 lint오류 수정
chemnida Jun 23, 2025
2d2bcf5
Feat : 요금제 추천 페이지 API 연동 및 불필요한 코드 정리
chemnida Jun 23, 2025
54757de
Feat : 테스트 결과페이지 header 스타일수정
chemnida Jun 23, 2025
c4ca727
Feat: 애니메이션 스케일 및 바텀시트 레이아웃 수정
yeji424 Jun 24, 2025
55095ad
Design: rounded 적용
leeemingyu Jun 24, 2025
b2fea13
Merge pull request #83 from yeji424/Design/요금제테스트페이지-rounded-적용
leeemingyu Jun 24, 2025
3d31617
Merge branch 'dev' of https://github.com/yeji424/me-plus into Feat/백엔…
hyonun321 Jun 24, 2025
55ac5e6
Fix: footer가 화면 덮는 문제 해결
leeemingyu Jun 24, 2025
d7cd336
Merge pull request #84 from yeji424/Feat/백엔드-고도화-1
hyonun321 Jun 24, 2025
b0756de
Fix: root padding 삭제
yeji424 Jun 24, 2025
8d09615
Merge branch 'dev' of https://github.com/yeji424/me-plus into Feat/애니…
yeji424 Jun 24, 2025
dbacd3d
Fix: root padding 삭제
yeji424 Jun 24, 2025
0e58afc
Feat : 상담원연결 모달 추가
chemnida Jun 24, 2025
d817663
Feat : 상담원연결 모달 추가
chemnida Jun 24, 2025
267b6e1
Design: 캐러셀 버튼 UI 수정
leeemingyu Jun 24, 2025
7f8789c
Design: 요금제선택 카드 크기 수정
leeemingyu Jun 24, 2025
f27de52
Fix: confict 해결
leeemingyu Jun 24, 2025
897fb58
Desgin: 요금제비교페이지 전체 패딩 적용
leeemingyu Jun 24, 2025
c31a656
Merge pull request #87 from yeji424/Design-요금제비교페이지-UI-수정
leeemingyu Jun 24, 2025
8dc56e8
Refactor: 요금제 정보 분리
leeemingyu Jun 24, 2025
f9b081b
Merge pull request #88 from yeji424/Refactor/요금제-정보-분리
leeemingyu Jun 24, 2025
8919b68
chore: 새로운 API 로 GPT응답 변경
hyonun321 Jun 24, 2025
ebabc1c
Merge branch 'dev' of https://github.com/yeji424/me-plus into Feat/백엔…
hyonun321 Jun 24, 2025
6a9eb8e
Fix: 병합 문제 해결
leeemingyu Jun 24, 2025
8bb69d1
Merge pull request #89 from yeji424/Design-요금제비교페이지-UI-수정
leeemingyu Jun 24, 2025
4be1f55
Merge branch 'dev' of https://github.com/yeji424/me-plus into Feat/백엔…
hyonun321 Jun 24, 2025
9519e2d
Feat: 테스트 및 결과 로딩 페이지 애니메이션
yeji424 Jun 24, 2025
680296a
Feat : 폭죽 애니메이션 추가
chemnida Jun 24, 2025
fe93eca
Feat : 폭죽 애니메이션 추가
chemnida Jun 24, 2025
99d07f6
Feat: 비교 페이지 레이아웃 변경
yeji424 Jun 24, 2025
60beebb
Merge branch 'dev' of https://github.com/yeji424/me-plus into Feat/애니…
yeji424 Jun 24, 2025
d3f7203
Feat: 비교 페이지 추가 구현 및 테스트 로딩 페이지 애니메이션 구현
yeji424 Jun 24, 2025
7127263
chore: 사용하지않는 파일 제거
hyonun321 Jun 24, 2025
1363bf4
chore: 미니 모델 추가
hyonun321 Jun 24, 2025
9bf8f2b
chore: 사용하지않는 주석 제거
hyonun321 Jun 24, 2025
67961c2
feat: 역질문 구현
hyonun321 Jun 24, 2025
5f4703a
chore: 불필요한 파일 제거
hyonun321 Jun 24, 2025
69556f3
feat: request카드와 showplanLists일때만 역질문 나오게 추가
hyonun321 Jun 24, 2025
0bac9d9
feat: 현재 토큰 사용량 및 역질문 프롬프팅 조정
hyonun321 Jun 24, 2025
9cd598c
chore: 불필요한 log 삭제
hyonun321 Jun 24, 2025
0565dd7
Feat: 테스트 페이지 애니메이션 구현
yeji424 Jun 24, 2025
323aefa
Feat: 테스트 페이지 애니메이션 구현
yeji424 Jun 24, 2025
7af09e2
Feat: 테스트 결과 페이지 레이아웃 재구성 및 애니메이션 구현
yeji424 Jun 24, 2025
9340dc4
Merge branch 'dev' of https://github.com/yeji424/me-plus into Feat/애니…
yeji424 Jun 24, 2025
93b26d3
Feat: 테스트 결과 페이지 레이아웃 재구성 및 애니메이션 구현
yeji424 Jun 24, 2025
529e3b0
feat: DOM 변경 감지하는 옵저버로 스크롤 인식 추가
hyonun321 Jun 24, 2025
98c63c2
chore: 불필요한 콘솔로그 제거
hyonun321 Jun 24, 2025
ce8406f
Feat : 서비스가이드-가운데정렬하기
chemnida Jun 24, 2025
fda70d2
Feat : 서비스가이드-가운데정렬하기
chemnida Jun 24, 2025
8b0762f
Feat : 맞춤형요금제 결과페이지 세부조정
chemnida Jun 24, 2025
59467e2
Feat : 맞춤형요금제 결과페이지 세부조정
chemnida Jun 24, 2025
d50ecc4
feat: 토글 카드 열렸을때 스크롤 이동 기능 구현
hyonun321 Jun 24, 2025
ad3be6b
feat: 유저정보 URL로 온다면 유저프로필 로컬스토리지에 저장 후, 페이지 로딩마다 체크하여 읽어옴
hyonun321 Jun 24, 2025
e5e5cbe
chore: 불필요한 콘솔로그 제거
hyonun321 Jun 24, 2025
5112e7e
chore: 프롬프트에 불필요한 이모지 제거
hyonun321 Jun 24, 2025
551dcfa
Merge branch 'dev' of https://github.com/yeji424/me-plus into Feat/백엔…
hyonun321 Jun 24, 2025
5ab167a
style: 메인페이지 가운데 정렬
hyonun321 Jun 24, 2025
0460970
Merge pull request #96 from yeji424/Feat/백엔드-고도화-2
hyonun321 Jun 24, 2025
3953c1e
Feat : 요금제 결과 페이지 요금제 이름 mt조절
chemnida Jun 25, 2025
49963d2
Feat : 오타 변경
chemnida Jun 25, 2025
462670a
Design: 정렬 원상복구
leeemingyu Jun 25, 2025
242e0e3
Refactor: 서비스가이드 리팩토링
leeemingyu Jun 25, 2025
eed453b
Merge pull request #97 from yeji424/Refactor/-서비스가이드-리팩토링
leeemingyu Jun 25, 2025
c7edb69
Feat : 바탕화면 설정
chemnida Jun 25, 2025
d67c186
Merge pull request #98 from yeji424/Feat/배경-수정
chemnida Jun 25, 2025
3766d39
Design: 타이틀 위치, 선택 카드 버튼 정렬 수정
leeemingyu Jun 25, 2025
ed4d477
Merge branch 'dev' of https://github.com/yeji424/me-plus into Refacto…
leeemingyu Jun 25, 2025
13d4a37
chore: 불필요한 콘솔로그 제거
hyonun321 Jun 25, 2025
adb9bc6
chore: 불필요한 로그 제거
hyonun321 Jun 25, 2025
e651b06
feat: 요금제 데이터 DB로 조회 기능 및 기존 대화내용 반영하여 클라이언트에서 발송하도록 구현
hyonun321 Jun 25, 2025
357032f
Refactor: PlanList 컴포넌트로 내부 렌더링 로직 캡슐화
leeemingyu Jun 25, 2025
2b4b77d
feat: 요금제가 비었을 경우 렌더링 안하게 처리, 역질문 프롬프트와 플랜 검색 프롬프트 고도화
hyonun321 Jun 25, 2025
ba32c3f
Refactor: 중복 상태 초기화 함수 통합, 변수명 명확화, 조건문 가독성 향상
leeemingyu Jun 25, 2025
05e12c6
Chore: 오타 수정
leeemingyu Jun 25, 2025
62c021a
Refactor: 컴포넌트 이름 명확화
leeemingyu Jun 25, 2025
bdc7cbd
Chore: import문 정리
leeemingyu Jun 25, 2025
3d1d8af
Chore: 주석 제거
leeemingyu Jun 25, 2025
d368437
Merge pull request #99 from yeji424/Refactor/비교페이지-리팩토링
leeemingyu Jun 25, 2025
a8d9d00
Fix: 버튼 클릭 영역 축소 문제 해결
leeemingyu Jun 25, 2025
9641978
Merge pull request #100 from yeji424/Fix/공통-버튼-클릭-잘안됨
leeemingyu Jun 25, 2025
ec1ac65
feat: 이전 요금제 정보 대화내용에 전송하도록 수정
hyonun321 Jun 25, 2025
4a94921
feat: 부가서비스 안내 URL 요청 프롬프트 추가
hyonun321 Jun 25, 2025
68c19a1
feat: ImageCard용 프롬프트 추가
hyonun321 Jun 25, 2025
78af3af
Merge branch 'dev' of https://github.com/yeji424/me-plus into Feat/백엔…
hyonun321 Jun 25, 2025
a6db777
Merge pull request #101 from yeji424/Feat/백엔드-요금제-DB-조회-구현
hyonun321 Jun 25, 2025
66f36f5
Feat: 이미지 카드 색상 변경
yeji424 Jun 25, 2025
8be1542
Feat: 유저 버블 색상 변경
yeji424 Jun 25, 2025
0c85cc5
Fix: 챗봇 페이지 확장 문제 및 토글 비활 문제 해결
yeji424 Jun 25, 2025
ee8d50b
Feat: 유저 버블 애니메이션 적용 및 색상 고정
yeji424 Jun 25, 2025
48c7a60
Merge branch 'dev' of https://github.com/yeji424/me-plus into Feat/애니…
yeji424 Jun 25, 2025
ea5e0be
Feat: 테스트 페이지 무너 float반경 축소
yeji424 Jun 25, 2025
79ff7d9
Fix: 버튼 끝 선택 시 이벤트 미발생 해결
yeji424 Jun 25, 2025
49eac90
Feat: 채팅 페이지 외 에러 해결
yeji424 Jun 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,13 @@
"axios": "^1.10.0",
"framer-motion": "^12.18.1",
"react": "^19.1.0",
"react-confetti": "^6.4.0",
"react-dom": "^19.1.0",
"react-gradient-scroll-indicator": "^1.0.1",
"react-router-dom": "^7.6.2",
"react-spring": "^10.0.1",
"react-spring-bottom-sheet": "3.5.0-alpha.0",
"react-use": "^17.6.0",
"socket.io-client": "^4.8.1",
"swiper": "^11.2.8",
"tailwindcss": "^4.1.10"
Expand Down
Binary file added client/public/background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 6 additions & 1 deletion client/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,16 @@ import ComparePage from './pages/ComparePage';
import TestResultPage from './pages/TestResultPage';
import MainPage from './pages/MainPage';
import Footer from './components/common/Footer';
import ServiceGuidePage from './pages/ServiceGuidePage';

const MainLayout = () => {
return (
<>
<div className=" min-h-screen flex flex-col">
<main className="flex-grow mt-[55px]">
<main
className="flex-1"
style={{ minHeight: 'calc(100vh - 50px - 80px)' }}
>
<Outlet />
</main>
<Footer />
Expand All @@ -40,6 +44,7 @@ function App() {
<Route path="test-wait" element={<TestWaitingPage />} />
<Route path="test-result" element={<TestResultPage />} />
<Route path="compare" element={<ComparePage />} />
<Route path="service-guide" element={<ServiceGuidePage />} />
<Route path="/chat-test" element={<ChatTestPage />} />
<Route path="*" element={<Navigate to="/" replace />} />
</Route>
Expand Down
8 changes: 8 additions & 0 deletions client/src/api/testPlan.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import axios from 'axios';

const baseURL = import.meta.env.VITE_API_BASE_URL;

export const getAllPlans = async () => {
const response = await axios.get(`${baseURL}/api/plan/explore`);
return response.data;
};
Binary file removed client/src/assets/icon/robot_icon.png
Binary file not shown.
Binary file added client/src/assets/icon/service_guide_icon1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added client/src/assets/icon/service_guide_icon2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added client/src/assets/icon/service_guide_icon34.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added client/src/assets/icon/service_guide_icon5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added client/src/assets/icon/sorry_robot_icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
79 changes: 69 additions & 10 deletions client/src/components/ComparePage/BenefitComparisonRow.tsx
Original file line number Diff line number Diff line change
@@ -1,32 +1,91 @@
import type { ReactNode } from 'react';
import sorryRobotIcon from '@/assets/icon/sorry_robot_icon.png';

interface BenefitComparisonRowProps {
leftContent: string | null;
rightContent: string | null;
leftContent: ReactNode | null;
rightContent: ReactNode | null;
title: string;
leftIcon?: string;
rightIcon?: string;
iconAlt?: string;
hasLeftPlan?: boolean;
hasRightPlan?: boolean;
}
const ImageWrapper = ({ children }: { children: ReactNode }) => (
<div className="w-[80px] h-[68px] flex items-center justify-center">
{children}
</div>
);

const TextWrapper = ({ children }: { children: ReactNode }) => (
<div className="min-h-[32px] text-xs text-center">{children}</div>
);
const SorryMessage = ({ title }: { title: string }) => (
<>
<ImageWrapper>
<img
src={sorryRobotIcon}
alt="sorry robot"
// className="w-[80px] h-[68px]"
/>
</ImageWrapper>
<TextWrapper>
<div className="text-gray400">
{title.includes('혜택')
? '제공되는 혜택이 없습니다'
: '제공되는 서비스가 없습니다'}
</div>
</TextWrapper>
</>
);
const BenefitComparisonRow: React.FC<BenefitComparisonRowProps> = ({
leftContent,
rightContent,
title,
leftIcon,
rightIcon,
iconAlt = 'benefit icon',
hasLeftPlan,
hasRightPlan,
}) => {
return (
<div className="flex w-full">
<div className="flex-[2] relative flex flex-col items-center gap-1 justify-center">
{leftIcon && leftContent && <img src={leftIcon} alt={iconAlt} />}
<div className="text-xs text-gray500">{leftContent || '-'}</div>
</div>
<div className="flex-[1] text-sm flex items-center justify-center">
{title}
<div className="flex-[2] relative flex flex-col items-center gap-1 ">
{leftIcon && leftContent && (
<ImageWrapper>
<img src={leftIcon} alt={iconAlt} />
</ImageWrapper>
)}
{leftContent ? (
<TextWrapper>
<div className="text-gray500">{leftContent}</div>
</TextWrapper>
) : hasLeftPlan ? (
<SorryMessage title={title} />
) : (
<TextWrapper>
<div className="text-xs text-gray500"></div>
</TextWrapper>
)}
</div>
<div className="pt-[13%] w-25 text-sm flex justify-center">{title}</div>
<div className="flex-[2] relative flex flex-col items-center gap-1 justify-center">
{rightIcon && rightContent && <img src={rightIcon} alt={iconAlt} />}
<div className="text-xs text-gray500">{rightContent || '-'}</div>
{rightIcon && rightContent && (
<ImageWrapper>
<img src={rightIcon} alt={iconAlt} />
</ImageWrapper>
)}
{rightContent ? (
<TextWrapper>
<div className="text-xs text-gray500">{rightContent}</div>
</TextWrapper>
) : hasRightPlan ? (
<SorryMessage title={title} />
) : (
<TextWrapper>
<div className="text-xs text-gray500"></div>
</TextWrapper>
)}
</div>
</div>
);
Expand Down
17 changes: 10 additions & 7 deletions client/src/components/ComparePage/Carousel.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useRef, useState, useEffect } from 'react';
import { useRef, useState, useEffect } from 'react';

interface CategoryCarouselProps {
categoryList: string[];
Expand Down Expand Up @@ -58,7 +58,7 @@ const Carousel: React.FC<CategoryCarouselProps> = ({
return (
<div
ref={scrollContainerRef}
className="w-full flex gap-2 overflow-x-auto py-3 text-xs select-none"
className="w-full flex gap-2 overflow-x-auto py-[5px] px-5 text-xs select-none"
style={{
scrollbarWidth: 'none',
msOverflowStyle: 'none',
Expand All @@ -69,11 +69,14 @@ const Carousel: React.FC<CategoryCarouselProps> = ({
{categoryList.map((label, idx) => (
<div
key={idx}
className={`h-9 rounded-xl shadow-small flex justify-center items-center cursor-pointer transition-colors duration-100 px-[13px] whitespace-nowrap ${
activeIndex === idx
? 'bg-secondary-purple-60 text-background-40'
: 'bg-white'
}`}
className={`h-9 rounded-xl shadow-sm flex justify-center items-center cursor-pointer
transition-colors duration-200 ease-in-out px-[13px] whitespace-nowrap
${
activeIndex === idx
? 'bg-secondary-purple-60 text-background-40'
: 'bg-white text-gray-700 hover:bg-gray-100'
}
`}
onClick={() => handleCardClick(idx)}
>
{label}
Expand Down
16 changes: 10 additions & 6 deletions client/src/components/ComparePage/ComparisonActionButtons.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import Button from '@/components/common/Button';

interface ComparisonActionButtonsProps {
leftButtonText?: string;
rightButtonText?: string;
Expand All @@ -13,29 +15,31 @@ const ComparisonActionButtons: React.FC<ComparisonActionButtonsProps> = ({
}) => {
return (
<div
className="flex flex-col justify-center items-center text-center gap-6 fixed bottom-[24px] max-w-[560px] h-[116px]"
className="flex flex-col justify-center items-center text-center gap-6 fixed bottom-[50px] max-w-[560px]"
style={{ width: 'calc(100% - 40px)' }}
>
<div className="flex w-full">
<div className="flex-[2] relative flex flex-col items-center gap-1 justify-center rounded-[10px]">
<div className="flex-[2] relative flex flex-col items-center justify-center rounded-[10px]">
{leftButtonText && (
<button
<Button
onClick={onLeftClick}
className="text-xs text-background-40 font-semibold bg-primary-pink w-full h-[38px] flex items-center justify-center rounded-[10px] cursor-pointer shadow-basic"
variant="custom"
>
{leftButtonText}
</button>
</Button>
)}
</div>
<div className="flex-[1] text-sm flex items-center justify-center" />
<div className="flex-[2] relative flex flex-col items-center gap-1 justify-center rounded-[10px]">
{rightButtonText && (
<button
<Button
onClick={onRightClick}
className="text-xs text-background-40 font-semibold bg-primary-pink w-full h-[38px] flex items-center justify-center rounded-[10px] cursor-pointer shadow-basic"
variant="custom"
>
{rightButtonText}
</button>
</Button>
)}
</div>
</div>
Expand Down
51 changes: 32 additions & 19 deletions client/src/components/ComparePage/ComparisonResult.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import DataComparisonBar from './DataComparisonBar';
import BenefitComparisonRow from './BenefitComparisonRow';
import ComparisonActionButtons from './ComparisonActionButtons';
import togetherIcon from '@/assets/image/card_family.png';
import premiumAddonsIcon from '@/assets/icon/special.png';
import mediaAddonsIcon from '@/assets/icon/media.png';
import BenefitText from '@/components/common/BenefitText';
import DataComparisonBar from '@/components/ComparePage/DataComparisonBar';
import BenefitComparisonRow from '@/components/ComparePage/BenefitComparisonRow';
import ComparisonActionButtons from '@/components/ComparePage/ComparisonActionButtons';
import type { Plan } from '@/components/types/Plan';

interface ComparisonResultProps {
Expand Down Expand Up @@ -75,40 +76,48 @@ const ComparisonResult: React.FC<ComparisonResultProps> = ({
leftLabel={leftDataLabel}
rightLabel={rightDataLabel}
title="데이터"
// showComparison={hasBothPlans}
/>
<DataComparisonBar
leftValue={leftSharedDataValue}
rightValue={rightSharedDataValue}
leftLabel={leftSharedDataLabel}
rightLabel={rightSharedDataLabel}
title="공유 데이터"
// showComparison={hasBothPlans}
/>
</div>

<div className="w-full bg-gray200 h-[1px] my-5" />

<div className="flex flex-col justify-center items-center text-center w-full gap-6 mb-[106px]">
<BenefitComparisonRow
leftContent={selectedLeft?.bundleBenefit || null}
rightContent={selectedRight?.bundleBenefit || null}
leftContent={
selectedLeft?.bundleBenefit ? (
<BenefitText text={selectedLeft.bundleBenefit} />
) : null
}
rightContent={
selectedRight?.bundleBenefit ? (
<BenefitText text={selectedRight.bundleBenefit} />
) : null
}
title="결합 할인"
leftIcon={selectedLeft?.bundleBenefit ? togetherIcon : undefined}
rightIcon={selectedRight?.bundleBenefit ? togetherIcon : undefined}
iconAlt="togetherIcon"
hasLeftPlan={!!selectedLeft}
hasRightPlan={!!selectedRight}
/>

<BenefitComparisonRow
leftContent={
selectedLeft?.premiumAddons
? `(택1) ${selectedLeft?.premiumAddons}`
: null
selectedLeft?.premiumAddons ? (
<BenefitText text={`(택1) ${selectedLeft.premiumAddons}`} />
) : null
}
rightContent={
selectedRight?.premiumAddons
? `(택1) ${selectedRight?.premiumAddons}`
: null
selectedRight?.premiumAddons ? (
<BenefitText text={`(택1) ${selectedRight.premiumAddons}`} />
) : null
}
title="프리미엄 서비스"
leftIcon={
Expand All @@ -118,23 +127,27 @@ const ComparisonResult: React.FC<ComparisonResultProps> = ({
selectedRight?.premiumAddons ? premiumAddonsIcon : undefined
}
iconAlt="premiumIcon"
hasLeftPlan={!!selectedLeft}
hasRightPlan={!!selectedRight}
/>

<BenefitComparisonRow
leftContent={
selectedLeft?.mediaAddons
? `(택1) ${selectedLeft?.mediaAddons}`
: null
selectedLeft?.mediaAddons ? (
<BenefitText text={`(택1) ${selectedLeft.mediaAddons}`} />
) : null
}
rightContent={
selectedRight?.mediaAddons
? `(택1) ${selectedRight?.mediaAddons}`
: null
selectedRight?.mediaAddons ? (
<BenefitText text={`(택1) ${selectedRight.mediaAddons}`} />
) : null
}
title="미디어 서비스"
leftIcon={selectedLeft?.mediaAddons ? mediaAddonsIcon : undefined}
rightIcon={selectedRight?.mediaAddons ? mediaAddonsIcon : undefined}
iconAlt="premiumIcon"
hasLeftPlan={!!selectedLeft}
hasRightPlan={!!selectedRight}
/>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion client/src/components/ComparePage/DataComparisonBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ const DataComparisonBar: React.FC<DataComparisonBarProps> = ({
/>
<div className="text-xs text-gray500">{leftLabel}</div>
</div>
<div className="flex-[1] text-sm">{title}</div>
<div className="w-20 text-sm flex justify-center">{title}</div>
<div className="flex-[2] relative flex flex-col items-start gap-1">
<div
className="bg-gradation rounded-r-full h-5 transition-all duration-800"
Expand Down
6 changes: 3 additions & 3 deletions client/src/components/ComparePage/FilterSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ const FilterSection: React.FC<FilterSectionProps> = ({
onPriceIndexChange,
}) => {
return (
<div className="w-full pt-2 bg-background-40 z-5">
<div className="flex flex-col gap-1">
<div className="fixed top-[45px] w-full pt-2 bg-background-40 z-5">
<div className="flex flex-col gap-1 px-5">
<p className="text-[22px] font-semibold">요금제 선택</p>
<p className="text-[13px] text-gray500">
비교하고 싶은 요금제를 선택해주세요
</p>
</div>
<div className="mb-[3px] flex flex-col justify-center ">
<div className="pt-2 pb-3 flex flex-col justify-center ">
<Carousel
categoryList={dataList}
activeIndex={activeDataIndex}
Expand Down
9 changes: 5 additions & 4 deletions client/src/components/ComparePage/PlanDetailInfo.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Button from '@/components/common/Button';
import type { Plan } from '@/components/types/Plan';
import Button from '../common/Button';

interface PlanDetailInfoProps {
plan: Plan;
Expand All @@ -18,7 +18,7 @@ const PlanDetailInfo: React.FC<PlanDetailInfoProps> = ({
const formattedSmsCount =
plan.smsCount === -1 ? '무제한' : `${plan.smsCount}건`;
return (
<div className="bg-background rounded-b-[7px] p-3 text-[13px] flex flex-col gap-2">
<div className="bg-background rounded-b-[7px] p-3 text-[13px] flex flex-col gap-[10px]">
<div className="flex gap-[5px]">
<p className="min-w-[90px] text-secondary-purple-80">전화</p>
<p className="w-full">{formattedVoiceMinutes}</p>
Expand All @@ -44,14 +44,15 @@ const PlanDetailInfo: React.FC<PlanDetailInfoProps> = ({
<p className="w-full">{plan.mediaAddons ? plan.mediaAddons : ' - '}</p>
</div>

<div className="h-[43px] mt-2">
<div className="mt-">
<Button
className="rounded-[12px] flex items-center justify-center"
fullWidth
variant="primary"
onClick={onClick}
disabled={disabled}
>
선택하기
<span>선택하기</span>
</Button>
</div>
</div>
Expand Down
Loading