From 2bb828c0077b13659b2c5163573f0ae924392079 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Thu, 12 Jun 2025 03:40:59 +0900 Subject: [PATCH 01/36] =?UTF-8?q?feat:=EB=A1=9C=EA=B7=B8=EC=9D=B8=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EB=82=B4=EA=B3=84=EC=A2=8C=EC=97=B0?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/dashboard/page.tsx | 6 +++--- components/StockDetails.tsx | 26 ++++++++++++++++---------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/app/dashboard/page.tsx b/app/dashboard/page.tsx index ef0466f..32a85f4 100644 --- a/app/dashboard/page.tsx +++ b/app/dashboard/page.tsx @@ -261,7 +261,7 @@ export default function Dashboard() { const { data: walletData, isLoading: isWalletLoading, isError: isWalletError } = useGetWalletQuery(); const { data: overallData, isLoading: isPortfolioLoading, isError: isPortfolioError } = useGetOverallPortfolioQuery(); - const cyberDollars = walletData?.data?.cyberDollar ?? 0; + const cyberDollar = walletData?.data?.cyberDollar ?? 0; const portfolioData = { totalAssets: overallData?.data?.totalAsset ?? 0, investmentAmount: overallData?.data?.investedAmount ?? 0, @@ -650,7 +650,7 @@ export default function Dashboard() { name={selectedInfo.name} price={selectedInfo.price} totalAssets={portfolioData.totalAssets} - cyberDollar={cyberDollars} + cyberDollar={cyberDollar} investmentAmount={portfolioData.investmentAmount} profitLoss={portfolioData.profitLoss} returnRate={portfolioData.returnRate} @@ -669,7 +669,7 @@ export default function Dashboard() { name={selectedInfo.name} price={selectedInfo.price} totalAssets={portfolioData.totalAssets} - cyberDollar={cyberDollars} + cyberDollar={cyberDollar} investmentAmount={portfolioData.investmentAmount} profitLoss={portfolioData.profitLoss} returnRate={portfolioData.returnRate} diff --git a/components/StockDetails.tsx b/components/StockDetails.tsx index aaba433..2961aee 100644 --- a/components/StockDetails.tsx +++ b/components/StockDetails.tsx @@ -7,10 +7,10 @@ import type { StockDetails, NewsItem, Stock } from '@/lib/types'; import { Check, ChevronDown, ChevronLeft, Heart } from 'lucide-react'; import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; -import mockPortfolio from "@/lib/mock/mockportfolio"; +// import mockPortfolio from "@/lib/mock/mockportfolio"; import { TrendingUp, TrendingDown } from "lucide-react" - -// 주식 상세 정보를 보여주는 컴포넌트(종목정보 상세, 내 계좌, AI 추천 탭) +import { useGetOverallPortfolioQuery,useGetWalletQuery } from "@/lib/api"; +// 주식 상세 정보를 보여주는 컴포넌트(종목정보 상세, 내 계좌, AI 추천 탭) interface StockDetailsProps { symbol: string; // 주식 심볼 activeTab: '종목정보 상세' | '내 계좌' | 'AI 추천'; // 현재 활성화된 탭 @@ -30,7 +30,13 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS const [showReasonDetail, setShowReasonDetail] = useState(false); const [aiSubmitted, setAiSubmitted] = useState(false); const [isHeartFilled, setIsHeartFilled] = useState(false); - const [portfolioData, setPortfolioData] = useState(mockPortfolio); + // const [portfolioData, setPortfolioData] = useState(mockPortfolio); + const { data: portfolioResponse, isLoading: portfolioLoading, isError: portfolioError } = useGetOverallPortfolioQuery(); + const { data: walletResponse, isLoading: walletLoading, isError: walletError } = useGetWalletQuery(); + const portfolioData = portfolioResponse?.data; + const walletData = walletResponse?.data; + if (portfolioLoading || walletLoading) return
로딩 중...
; + if (portfolioError || walletError || !portfolioData || !walletData) return
에러 발생
; useEffect(() => { const fetchData = async () => { @@ -240,7 +246,7 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS 총자산
$ - {portfolioData.totalAssets.toLocaleString("en-US", { + {portfolioData.totalSeed.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2, })} @@ -251,7 +257,7 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS 시드머니
$ - {portfolioData.seedMoney.toLocaleString("en-US", { + {walletData.cyberDollar.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2, })} @@ -263,7 +269,7 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS
$ - {portfolioData.investmentAmount.toLocaleString("en-US", { + {portfolioData.investedAmount.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2, })} @@ -275,15 +281,15 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS 평가손익
= 0 + ${portfolioData.evalGain >= 0 ? "text-[#e74c3c] group-hover:text-[#c0392b]" : "text-[#3498db] group-hover:text-[#2c80b4]"} `} > $ - {portfolioData.profitLoss >= 0 ? "+" : "-"} - {Math.abs(portfolioData.profitLoss).toLocaleString("en-US", { + {portfolioData.evalGain >= 0 ? "+" : "-"} + {Math.abs(portfolioData.evalGain).toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2, })} From c254e2f16274c39ba84a385d237ef9763516da92 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Thu, 12 Jun 2025 03:46:56 +0900 Subject: [PATCH 02/36] =?UTF-8?q?fix:=EC=98=A4=EB=A5=98=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/StockDetails.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/components/StockDetails.tsx b/components/StockDetails.tsx index 2961aee..3e2c8bc 100644 --- a/components/StockDetails.tsx +++ b/components/StockDetails.tsx @@ -31,11 +31,13 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS const [aiSubmitted, setAiSubmitted] = useState(false); const [isHeartFilled, setIsHeartFilled] = useState(false); // const [portfolioData, setPortfolioData] = useState(mockPortfolio); + + const { data: portfolioResponse, isLoading: portfolioLoading, isError: portfolioError } = useGetOverallPortfolioQuery(); const { data: walletResponse, isLoading: walletLoading, isError: walletError } = useGetWalletQuery(); + if (portfolioLoading || walletLoading) return
로딩 중...
; const portfolioData = portfolioResponse?.data; const walletData = walletResponse?.data; - if (portfolioLoading || walletLoading) return
로딩 중...
; if (portfolioError || walletError || !portfolioData || !walletData) return
에러 발생
; useEffect(() => { From ffc45936823dbf3e87a4b907577b35df64e4f40c Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Thu, 12 Jun 2025 03:53:27 +0900 Subject: [PATCH 03/36] =?UTF-8?q?fix:=EC=98=A4=EB=A5=98=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/StockDetails.tsx | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/components/StockDetails.tsx b/components/StockDetails.tsx index 3e2c8bc..74e12ad 100644 --- a/components/StockDetails.tsx +++ b/components/StockDetails.tsx @@ -36,10 +36,21 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS const { data: portfolioResponse, isLoading: portfolioLoading, isError: portfolioError } = useGetOverallPortfolioQuery(); const { data: walletResponse, isLoading: walletLoading, isError: walletError } = useGetWalletQuery(); if (portfolioLoading || walletLoading) return
로딩 중...
; - const portfolioData = portfolioResponse?.data; - const walletData = walletResponse?.data; - if (portfolioError || walletError || !portfolioData || !walletData) return
에러 발생
; + + +if (portfolioError || walletError) return
에러 발생
; + +const portfolioData = portfolioResponse?.data ?? { + totalAsset: 0, + investedAmount: 0, + evalGain: 0, + returnRate: 0 +}; + +const walletData = walletResponse?.data ?? { + cyberDollar: 100000 +}; useEffect(() => { const fetchData = async () => { if (!symbol) return; // symbol이 없으면 실행하지 않음 @@ -248,7 +259,7 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS 총자산
$ - {portfolioData.totalSeed.toLocaleString("en-US", { + {portfolioData.totalAsset.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2, })} From 32dd4bc00e15cb25cc4a8a8db4ad28f05ea21786 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Thu, 12 Jun 2025 04:19:49 +0900 Subject: [PATCH 04/36] =?UTF-8?q?fix:=20=EB=82=B4=EA=B3=84=EC=A2=8C=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/StockDetails.tsx | 56 +++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/components/StockDetails.tsx b/components/StockDetails.tsx index 74e12ad..5f8f17d 100644 --- a/components/StockDetails.tsx +++ b/components/StockDetails.tsx @@ -32,25 +32,53 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS const [isHeartFilled, setIsHeartFilled] = useState(false); // const [portfolioData, setPortfolioData] = useState(mockPortfolio); - - const { data: portfolioResponse, isLoading: portfolioLoading, isError: portfolioError } = useGetOverallPortfolioQuery(); - const { data: walletResponse, isLoading: walletLoading, isError: walletError } = useGetWalletQuery(); - if (portfolioLoading || walletLoading) return
로딩 중...
; + // RTK Query 호출 +const { + data: portfolioResponse, + isLoading: portfolioLoading, + isError: portfolioError, +} = useGetOverallPortfolioQuery(); +const { + data: walletResponse, + isLoading: walletLoading, + isError: walletError, +} = useGetWalletQuery(); +// 로딩 처리 +if (portfolioLoading || walletLoading) return
로딩 중...
; -if (portfolioError || walletError) return
에러 발생
; +// 에러 처리 (응답 자체가 실패한 경우) +if (portfolioError || walletError) { + console.error("에러 발생", { + portfolioError, + walletError, + portfolioResponse, + walletResponse, + }); + return
에러 발생
; +} -const portfolioData = portfolioResponse?.data ?? { - totalAsset: 0, - investedAmount: 0, - evalGain: 0, - returnRate: 0 -}; +// 안전한 기본값 처리 +const portfolioData = portfolioResponse?.data && typeof portfolioResponse.data.totalAsset === 'number' + ? portfolioResponse.data + : { + totalAsset: 0, + investedAmount: 0, + evalGain: 0, + returnRate: 0, + totalSeed: 100000, + investRatio: 0, + cash: 100000, + }; -const walletData = walletResponse?.data ?? { - cyberDollar: 100000 -}; +const walletData = walletResponse?.data && typeof walletResponse.data.cyberDollar === 'number' + ? walletResponse.data + : { + cyberDollar: 100000, + }; + + useEffect(() => { const fetchData = async () => { if (!symbol) return; // symbol이 없으면 실행하지 않음 From 434af1b9ad85d8e9416a3ab05e59ccbdc49df0f4 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Thu, 12 Jun 2025 04:28:46 +0900 Subject: [PATCH 05/36] =?UTF-8?q?fix:=20=EB=B9=84=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=EC=8B=9C=20=ED=98=B8=EC=B6=9C=EC=95=88=EB=90=98?= =?UTF-8?q?=EA=B2=8C=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/StockDetails.tsx | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/components/StockDetails.tsx b/components/StockDetails.tsx index 5f8f17d..3b9315e 100644 --- a/components/StockDetails.tsx +++ b/components/StockDetails.tsx @@ -37,17 +37,24 @@ const { data: portfolioResponse, isLoading: portfolioLoading, isError: portfolioError, -} = useGetOverallPortfolioQuery(); +} = useGetOverallPortfolioQuery(undefined, { + skip: !isLoggedIn, // 로그인 안 되어 있으면 호출 안 함 +}); const { data: walletResponse, isLoading: walletLoading, isError: walletError, -} = useGetWalletQuery(); - +} = useGetWalletQuery(undefined, { + skip: !isLoggedIn, +}); // 로딩 처리 -if (portfolioLoading || walletLoading) return
로딩 중...
; +if (!isLoggedIn) { + return
로그인이 필요합니다.
; +} +if (portfolioLoading || walletLoading) return
로딩 중...
; +if (portfolioError || walletError) return
에러 발생
; // 에러 처리 (응답 자체가 실패한 경우) if (portfolioError || walletError) { console.error("에러 발생", { @@ -67,9 +74,6 @@ const portfolioData = portfolioResponse?.data && typeof portfolioResponse.data.t investedAmount: 0, evalGain: 0, returnRate: 0, - totalSeed: 100000, - investRatio: 0, - cash: 100000, }; const walletData = walletResponse?.data && typeof walletResponse.data.cyberDollar === 'number' From 0150af6d45eb3e69724ceda889e74a927d6eac1e Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Thu, 12 Jun 2025 04:43:10 +0900 Subject: [PATCH 06/36] =?UTF-8?q?feat:=20=EB=AA=A9=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=EC=82=AD=EC=A0=9C=20=EA=B3=84=EC=A2=8C=EC=97=B0?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/StockDetails.tsx | 199 ++++++++++++++---------------------- 1 file changed, 77 insertions(+), 122 deletions(-) diff --git a/components/StockDetails.tsx b/components/StockDetails.tsx index 3b9315e..fb78650 100644 --- a/components/StockDetails.tsx +++ b/components/StockDetails.tsx @@ -7,9 +7,8 @@ import type { StockDetails, NewsItem, Stock } from '@/lib/types'; import { Check, ChevronDown, ChevronLeft, Heart } from 'lucide-react'; import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; -// import mockPortfolio from "@/lib/mock/mockportfolio"; import { TrendingUp, TrendingDown } from "lucide-react" -import { useGetOverallPortfolioQuery,useGetWalletQuery } from "@/lib/api"; +import { useGetOverallPortfolioQuery, useGetWalletQuery } from "@/lib/api"; // 주식 상세 정보를 보여주는 컴포넌트(종목정보 상세, 내 계좌, AI 추천 탭) interface StockDetailsProps { symbol: string; // 주식 심볼 @@ -30,59 +29,10 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS const [showReasonDetail, setShowReasonDetail] = useState(false); const [aiSubmitted, setAiSubmitted] = useState(false); const [isHeartFilled, setIsHeartFilled] = useState(false); - // const [portfolioData, setPortfolioData] = useState(mockPortfolio); - // RTK Query 호출 -const { - data: portfolioResponse, - isLoading: portfolioLoading, - isError: portfolioError, -} = useGetOverallPortfolioQuery(undefined, { - skip: !isLoggedIn, // 로그인 안 되어 있으면 호출 안 함 -}); + const { data: portfolioData, isLoading: isPortfolioLoading } = useGetOverallPortfolioQuery(); + const { data: walletData, isLoading: isWalletLoading } = useGetWalletQuery(); -const { - data: walletResponse, - isLoading: walletLoading, - isError: walletError, -} = useGetWalletQuery(undefined, { - skip: !isLoggedIn, -}); -// 로딩 처리 -if (!isLoggedIn) { - return
로그인이 필요합니다.
; -} - -if (portfolioLoading || walletLoading) return
로딩 중...
; -if (portfolioError || walletError) return
에러 발생
; -// 에러 처리 (응답 자체가 실패한 경우) -if (portfolioError || walletError) { - console.error("에러 발생", { - portfolioError, - walletError, - portfolioResponse, - walletResponse, - }); - return
에러 발생
; -} - -// 안전한 기본값 처리 -const portfolioData = portfolioResponse?.data && typeof portfolioResponse.data.totalAsset === 'number' - ? portfolioResponse.data - : { - totalAsset: 0, - investedAmount: 0, - evalGain: 0, - returnRate: 0, - }; - -const walletData = walletResponse?.data && typeof walletResponse.data.cyberDollar === 'number' - ? walletResponse.data - : { - cyberDollar: 100000, - }; - - useEffect(() => { const fetchData = async () => { if (!symbol) return; // symbol이 없으면 실행하지 않음 @@ -284,85 +234,90 @@ const walletData = walletResponse?.data && typeof walletResponse.data.cyberDolla {activeTab === '내 계좌' ? ( isLoggedIn ? (
- {/* Financial Information */} -
- {/* Total Assets */} -
- 총자산 -
- $ - {portfolioData.totalAsset.toLocaleString("en-US", { - minimumFractionDigits: 2, - maximumFractionDigits: 2, - })} -
+ {isPortfolioLoading || isWalletLoading ? ( +
+
데이터 로딩 중...
- {/* 시드머니 */} -
- 시드머니 -
- $ - {walletData.cyberDollar.toLocaleString("en-US", { - minimumFractionDigits: 2, - maximumFractionDigits: 2, - })} + ) : ( +
+ {/* Total Assets */} +
+ 총자산 +
+ $ + {portfolioData?.data?.totalAsset?.toLocaleString("en-US", { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }) ?? '-'} +
-
- {/* Investment Amount */} -
- 투자금액 -
- $ - - {portfolioData.investedAmount.toLocaleString("en-US", { + {/* 시드머니 */} +
+ 시드머니 +
+ $ + {walletData?.data?.cyberDollar?.toLocaleString("en-US", { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }) ?? '-'} +
+
+ {/* Investment Amount */} +
+ 투자금액 +
+ $ + + {portfolioData?.data?.investedAmount?.toLocaleString("en-US", { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }) ?? '-'} + +
+
+ {/* Unrealized P&L */} +
+ 평가손익 +
= 0 + ? "text-[#e74c3c] group-hover:text-[#c0392b]" + : "text-[#3498db] group-hover:text-[#2c80b4]"} + `} + > + $ + + {(portfolioData?.data?.evalGain ?? 0) >= 0 ? "+" : "-"} + {Math.abs(portfolioData?.data?.evalGain ?? 0).toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2, })}
-
- {/* Unrealized P&L */} -
- 평가손익 -
= 0 - ? "text-[#e74c3c] group-hover:text-[#c0392b]" - : "text-[#3498db] group-hover:text-[#2c80b4]"} +
+ {/* Return Rate */} +
+ 수익률 + +
= 0 + ? "text-[#e74c3c] group-hover:text-[#4caf50]" + : "text-[#3498db] group-hover:text-[#a73d2a]"} `} - > - $ - - {portfolioData.evalGain >= 0 ? "+" : "-"} - {Math.abs(portfolioData.evalGain).toLocaleString("en-US", { - minimumFractionDigits: 2, - maximumFractionDigits: 2, - })} - -
-
- {/* Return Rate */} -
- 수익률 - -
= 0 - ? "text-[#e74c3c] group-hover:text-[#4caf50]" - : "text-[#3498db] group-hover:text-[#a73d2a]"} - `} - > - {portfolioData.returnRate >= 0 ? ( - - ) : ( - - )} - {portfolioData.returnRate >= 0 ? "+" : "-"} - {Math.abs(portfolioData.returnRate).toFixed(2)}% + > + {(portfolioData?.data?.returnRate ?? 0) >= 0 ? ( + + ) : ( + + )} + {(portfolioData?.data?.returnRate ?? 0) >= 0 ? "+" : "-"} + {Math.abs(portfolioData?.data?.returnRate ?? 0).toFixed(2)}% +
+
-
-
+ )}
) : (
From 9ac596a94dcf29003582e03b6e0e3b3bd048ecd0 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Thu, 12 Jun 2025 04:59:50 +0900 Subject: [PATCH 07/36] =?UTF-8?q?feat:=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=ED=8F=AC=ED=8A=B8=ED=8F=B4=EB=A6=AC?= =?UTF-8?q?=EC=98=A4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/dashboard/mypage/page.tsx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/app/dashboard/mypage/page.tsx b/app/dashboard/mypage/page.tsx index 7761edd..4281242 100644 --- a/app/dashboard/mypage/page.tsx +++ b/app/dashboard/mypage/page.tsx @@ -29,8 +29,21 @@ export default function MyPage() { const [isLoggedIn, setIsLoggedIn] = useState(true); - const { data: walletData, isLoading, isError,refetch: refetchWallet } = useGetWalletQuery(); - const { data, isLoading: Loading, isError:error,refetch: refetchPortfolio } = useGetOverallPortfolioQuery(); + const { data: walletData, isLoading, isError, refetch: refetchWallet } = useGetWalletQuery(undefined, { + skip: !isLoggedIn, // 로그인하지 않은 경우 쿼리 실행하지 않음 + }); + const { data, isLoading: Loading, isError:error, refetch: refetchPortfolio } = useGetOverallPortfolioQuery(undefined, { + skip: !isLoggedIn, // 로그인하지 않은 경우 쿼리 실행하지 않음 + }); + + // 로그인 상태가 변경될 때마다 데이터 새로고침 + useEffect(() => { + if (isLoggedIn) { + refetchPortfolio(); + refetchWallet(); + } + }, [isLoggedIn, refetchPortfolio, refetchWallet]); + if (isLoading) return
로딩 중...
; if (error || !data?.data) return
에러 발생
; From d14845c6ea2d336b1d6a2281e24303c8d7f313f5 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Thu, 12 Jun 2025 05:09:02 +0900 Subject: [PATCH 08/36] =?UTF-8?q?fix:=EC=B4=9D=ED=88=AC=EC=9E=90=EB=B9=84?= =?UTF-8?q?=EC=9C=A8,=20=EC=88=98=EC=9D=B5=EB=A5=A0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/dashboard/mypage/page.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/dashboard/mypage/page.tsx b/app/dashboard/mypage/page.tsx index 4281242..8a5bbdc 100644 --- a/app/dashboard/mypage/page.tsx +++ b/app/dashboard/mypage/page.tsx @@ -52,8 +52,8 @@ export default function MyPage() { totalAssets: data.data.totalAsset, //총자산 investmentAmount: data.data.investedAmount, //투자금액 profitLoss: data.data.evalGain, //평가손익 - returnRate: data.data.returnRate * 100, // %로 보기 좋게 - investRatio: data.data.investRatio * 100, // 총 투자비율 + returnRate: data.data.returnRate , // %로 보기 좋게 + investRatio: data.data.investRatio , // 총 투자비율 cash: data.data.cash,// 현금자산 }; From 2f50b23e26bc655229b2ea8ee7c705072b7d68c2 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Thu, 12 Jun 2025 09:41:00 +0900 Subject: [PATCH 09/36] test --- app/dashboard/mypage/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/dashboard/mypage/page.tsx b/app/dashboard/mypage/page.tsx index 8a5bbdc..e9428d2 100644 --- a/app/dashboard/mypage/page.tsx +++ b/app/dashboard/mypage/page.tsx @@ -45,7 +45,7 @@ export default function MyPage() { }, [isLoggedIn, refetchPortfolio, refetchWallet]); if (isLoading) return
로딩 중...
; - if (error || !data?.data) return
에러 발생
; + if (error || !data?.data) return
잠시만 기다려주세요
; //포트폴리오 데이터 const portfolioData = { From d5573f775cbe47f4429ad5b0465554d0535e1e97 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Thu, 12 Jun 2025 10:38:23 +0900 Subject: [PATCH 10/36] chore: update email placeholder text --- components/common/RegistrationModal.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/components/common/RegistrationModal.tsx b/components/common/RegistrationModal.tsx index 71b5395..fb279b3 100644 --- a/components/common/RegistrationModal.tsx +++ b/components/common/RegistrationModal.tsx @@ -162,7 +162,7 @@ export default function RegistrationModal({ isOpen, onClose }: RegistrationModal name="email" value={formData.email} onChange={handleChange} - placeholder="test@gmail.com" + placeholder="이메일" className={`w-full rounded bg-[#bfdbfe]/30 p-3 outline-none ${errors.email ? "border border-red-500" : ""}`} /> {errors.email &&

{errors.email}

} @@ -178,6 +178,7 @@ export default function RegistrationModal({ isOpen, onClose }: RegistrationModal name="password" value={formData.password} onChange={handleChange} + placeholder="비밀번호 (8자 이상)" className={`w-full rounded bg-[#bfdbfe]/30 p-3 outline-none ${errors.password ? "border border-red-500" : ""}`} /> {errors.password &&

{errors.password}

} @@ -193,6 +194,7 @@ export default function RegistrationModal({ isOpen, onClose }: RegistrationModal name="nickname" value={formData.nickname} onChange={handleChange} + placeholder="닉네임 2자 이상" className={`w-full rounded bg-[#bfdbfe]/30 p-3 outline-none ${errors.nickname ? "border border-red-500" : ""}`} /> {errors.nickname &&

{errors.nickname}

} From f2c09d9d851f4ddc51e615f9cd19d41449e95f42 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Thu, 12 Jun 2025 20:06:33 +0900 Subject: [PATCH 11/36] Merge branch 'sanghyun' of https://github.com/WeGoMars/mars-fe into JL --- components/StockDetails.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/components/StockDetails.tsx b/components/StockDetails.tsx index cf835dc..556d4a3 100644 --- a/components/StockDetails.tsx +++ b/components/StockDetails.tsx @@ -8,8 +8,7 @@ import { Check, ChevronDown, ChevronLeft, Heart } from 'lucide-react'; import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; import { TrendingUp, TrendingDown } from "lucide-react" -import { useGetOverallPortfolioQuery, useGetWalletQuery } from "@/lib/api"; -// 주식 상세 정보를 보여주는 컴포넌트(종목정보 상세, 내 계좌, AI 추천 탭) +import { useGetOverallPortfolioQuery, useGetWalletQuery } from "@/lib/api"; import { mutate } from 'swr'; // 주식 상세 정보를 보여주는 컴포넌트(종목정보 상세, 내 계좌, AI 추천 탭) From e6ac8a10a031f658180d546f85e0fc707845adb8 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Thu, 12 Jun 2025 20:30:35 +0900 Subject: [PATCH 12/36] =?UTF-8?q?chore:=20=EA=B8=80=EC=94=A8=EC=83=89?= =?UTF-8?q?=EC=83=81=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/BuyPanel.tsx | 8 ++++---- components/SellPanel.tsx | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/components/BuyPanel.tsx b/components/BuyPanel.tsx index e0eeb9e..c4e1a3b 100644 --- a/components/BuyPanel.tsx +++ b/components/BuyPanel.tsx @@ -118,20 +118,20 @@ export default function BuyPanel({ open, onClose, symbol, name, totalAssets, pri
투자금액
- $ - {investmentAmount.toFixed(2)} + $ + {investmentAmount.toFixed(2)}
평가손익
= 0 ? "text-[#e74c3c]" : "text-[#3498db]"}`} + className={`text-xs mr-1 ${profitLoss >= 0 ? "text-[#439a86]" : "text-[#e74c3c]"}`} > $ = 0 ? "text-[#e74c3c]" : "text-[#3498db]"}`} + className={`text-xl font-bold ${profitLoss >= 0 ? "text-[#439a86]" : "text-[#e74c3c]"}`} > {profitLoss >= 0 ? "+" : "-"} {Math.abs(profitLoss).toFixed(2)} diff --git a/components/SellPanel.tsx b/components/SellPanel.tsx index 96d3a88..34b2b3d 100644 --- a/components/SellPanel.tsx +++ b/components/SellPanel.tsx @@ -116,20 +116,20 @@ export default function SellPanel({ open, onClose, symbol, name, price, totalAss
투자금액
- $ - {investmentAmount.toFixed(2)} + $ + {investmentAmount.toFixed(2)}
평가손익
= 0 ? "text-[#e74c3c]" : "text-[#3498db]"}`} + className={`text-xs mr-1 ${profitLoss >= 0 ? "text-[#439a86]" : "text-[#e74c3c]"}`} > $ = 0 ? "text-[#e74c3c]" : "text-[#3498db]"}`} + className={`text-xl font-bold ${profitLoss >= 0 ? "text-[#439a86]" : "text-[#e74c3c]"}`} > {profitLoss >= 0 ? "+" : "-"} {Math.abs(profitLoss).toFixed(2)} From d31e1fc62dbf4438508f7d7d43280bb806e243ba Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Thu, 12 Jun 2025 23:47:12 +0900 Subject: [PATCH 13/36] =?UTF-8?q?chore:=20=EC=88=98=EC=9D=B5=EB=A5=A0=20?= =?UTF-8?q?=ED=91=9C=ED=98=84=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/dashboard/mypage/page.tsx | 2 +- components/BuyPanel.tsx | 6 +++--- components/SellPanel.tsx | 6 +++--- components/StockDetails.tsx | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/dashboard/mypage/page.tsx b/app/dashboard/mypage/page.tsx index ec15c20..4b02c94 100644 --- a/app/dashboard/mypage/page.tsx +++ b/app/dashboard/mypage/page.tsx @@ -365,7 +365,7 @@ export default function MyPage() { )} {portfolioData.returnRate >= 0 ? "+" : "-"} - {Math.abs(portfolioData.returnRate).toFixed(2)}% + {Math.abs(portfolioData.returnRate*100).toFixed(2)}%
Return Rate
diff --git a/components/BuyPanel.tsx b/components/BuyPanel.tsx index c4e1a3b..9bb73a0 100644 --- a/components/BuyPanel.tsx +++ b/components/BuyPanel.tsx @@ -105,14 +105,14 @@ export default function BuyPanel({ open, onClose, symbol, name, totalAssets, pri
수익률
$ - {returnRate.toFixed(2)}% + {(returnRate * 100).toFixed(2)}%
시드머니
- $ - {cyberDollar.toFixed(2)} + $ + {cyberDollar.toFixed(2)}
diff --git a/components/SellPanel.tsx b/components/SellPanel.tsx index 34b2b3d..4b6cd1f 100644 --- a/components/SellPanel.tsx +++ b/components/SellPanel.tsx @@ -103,14 +103,14 @@ export default function SellPanel({ open, onClose, symbol, name, price, totalAss
수익률
$ - {returnRate.toFixed(2)}% + {(returnRate * 100).toFixed(2)}%
시드머니
- $ - {cyberDollar.toFixed(2)} + $ + {cyberDollar.toFixed(2)}
diff --git a/components/StockDetails.tsx b/components/StockDetails.tsx index 5f49347..e283806 100644 --- a/components/StockDetails.tsx +++ b/components/StockDetails.tsx @@ -479,7 +479,7 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS )} {(portfolioData?.data?.returnRate ?? 0) >= 0 ? "+" : "-"} - {Math.abs(portfolioData?.data?.returnRate ?? 0).toFixed(2)}% + {Math.abs((portfolioData?.data?.returnRate ?? 0)*100).toFixed(2)}%
From 5b07a7226215ed30e82e025b4b629b507aa7610b Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Fri, 13 Jun 2025 00:10:39 +0900 Subject: [PATCH 14/36] =?UTF-8?q?chore:=20=EA=B8=80=EC=94=A8=EC=83=89?= =?UTF-8?q?=EC=83=81=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/dashboard/mypage/page.tsx | 3 ++- components/StockDetails.tsx | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/dashboard/mypage/page.tsx b/app/dashboard/mypage/page.tsx index 4b02c94..e29ec2b 100644 --- a/app/dashboard/mypage/page.tsx +++ b/app/dashboard/mypage/page.tsx @@ -394,7 +394,8 @@ export default function MyPage() { {/* 시드머니 문의 */} -
+
alert("준비중입니다. 곧 제공될 예정입니다.")}>
시드머니 문의
diff --git a/components/StockDetails.tsx b/components/StockDetails.tsx index e283806..a8daad5 100644 --- a/components/StockDetails.tsx +++ b/components/StockDetails.tsx @@ -448,8 +448,8 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS
= 0 - ? "text-[#e74c3c] group-hover:text-[#c0392b]" - : "text-[#3498db] group-hover:text-[#2c80b4]"} + ? "text-[#41c3a9] group-hover:text-[#4caf50]" + : "text-[#e74c3c] group-hover:text-[#a73d2a]"} `} > $ @@ -469,8 +469,8 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS
= 0 - ? "text-[#e74c3c] group-hover:text-[#4caf50]" - : "text-[#3498db] group-hover:text-[#a73d2a]"} + ? "text-[#41c3a9] group-hover:text-[#4caf50]" + : "text-[#e74c3c] group-hover:text-[#a73d2a]"} `} > {(portfolioData?.data?.returnRate ?? 0) >= 0 ? ( From cb5f7818a32b121947d6f77e521f100cc98cd564 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Fri, 13 Jun 2025 00:19:32 +0900 Subject: [PATCH 15/36] =?UTF-8?q?chore:=ED=88=AC=EC=9E=90=EA=B8=88?= =?UTF-8?q?=EC=95=A1=20=EC=83=89=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/StockDetails.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/StockDetails.tsx b/components/StockDetails.tsx index a8daad5..0a51833 100644 --- a/components/StockDetails.tsx +++ b/components/StockDetails.tsx @@ -433,8 +433,8 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS
투자금액
- $ - + $ + {portfolioData?.data?.investedAmount?.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2, @@ -479,7 +479,7 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS )} {(portfolioData?.data?.returnRate ?? 0) >= 0 ? "+" : "-"} - {Math.abs((portfolioData?.data?.returnRate ?? 0)*100).toFixed(2)}% + {Math.abs((portfolioData?.data?.returnRate ?? 0) * 100).toFixed(2)}%
From c874cb156138f732fce7a7d53392d74576b8c577 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Fri, 13 Jun 2025 01:40:47 +0900 Subject: [PATCH 16/36] =?UTF-8?q?chroe:=20=EB=82=B4=EA=B3=84=EC=A2=8C=20%?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/StockDetails.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/StockDetails.tsx b/components/StockDetails.tsx index 0a51833..5159d78 100644 --- a/components/StockDetails.tsx +++ b/components/StockDetails.tsx @@ -479,7 +479,7 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS )} {(portfolioData?.data?.returnRate ?? 0) >= 0 ? "+" : "-"} - {Math.abs((portfolioData?.data?.returnRate ?? 0) * 100).toFixed(2)}% + {Math.abs(Number(portfolioData?.data?.returnRate ?? 0)*100).toFixed(2)}%
From 9467f0ce9b0b5d18ae0ad10d92fdf8d1ab6f1d50 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Fri, 13 Jun 2025 02:11:07 +0900 Subject: [PATCH 17/36] =?UTF-8?q?chroe:=20roe=20,=20=EB=B6=80=EC=B1=84?= =?UTF-8?q?=EB=B9=84=EC=9C=A8=20%=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/StockDetails.tsx | 7 ++++--- components/common/LoginModal.tsx | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/StockDetails.tsx b/components/StockDetails.tsx index 5159d78..78127cc 100644 --- a/components/StockDetails.tsx +++ b/components/StockDetails.tsx @@ -479,7 +479,8 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS )} {(portfolioData?.data?.returnRate ?? 0) >= 0 ? "+" : "-"} - {Math.abs(Number(portfolioData?.data?.returnRate ?? 0)*100).toFixed(2)}% + {Math.abs((portfolioData?.data?.returnRate ?? 0)*1000).toFixed(2)}% +
@@ -809,7 +810,7 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS
ROE - {details.roe !== undefined ? `${details.roe.toFixed(2)}%` : '-'} + {details.roe !== undefined ? `${(details.roe*100).toFixed(2)}%` : '-'}
EPS @@ -833,7 +834,7 @@ export default function StockDetails({ symbol, activeTab, onTabChange, favoriteS
부채비율 - {details.debtRatio !== undefined ? `${details.debtRatio.toFixed(2)}%` : '-'} + {details.debtRatio !== undefined ? `${(details.debtRatio * 100).toFixed(2)}%` : '-'}
diff --git a/components/common/LoginModal.tsx b/components/common/LoginModal.tsx index 8c1850d..3f66174 100644 --- a/components/common/LoginModal.tsx +++ b/components/common/LoginModal.tsx @@ -108,7 +108,6 @@ export default function LoginModal({ open, onOpenChange }: LoginModalProps) { type="email" value={email} onChange={(e) => setEmail(e.target.value)} - placeholder="test@gmail.com" className="border-none bg-[#bfdbfe] dark:bg-gray-700 placeholder:text-[#3c3c43]/70 dark:placeholder:text-gray-400" required /> From 6d2ee1a858d6cd39dd9b7838e1f778635242a244 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Fri, 13 Jun 2025 02:26:36 +0900 Subject: [PATCH 18/36] =?UTF-8?q?chroe:=20=EC=88=98=EC=9D=B5=EB=A5=A0=20%?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/dashboard/mypage/page.tsx | 2 +- app/dashboard/page.tsx | 3 +-- lib/mock/mockportfolio.ts | 31 ------------------------------- 3 files changed, 2 insertions(+), 34 deletions(-) delete mode 100644 lib/mock/mockportfolio.ts diff --git a/app/dashboard/mypage/page.tsx b/app/dashboard/mypage/page.tsx index e29ec2b..0c03825 100644 --- a/app/dashboard/mypage/page.tsx +++ b/app/dashboard/mypage/page.tsx @@ -124,7 +124,7 @@ export default function MyPage() { totalAssets: data.data.totalAsset, //총자산 investmentAmount: data.data.investedAmount, //투자금액 profitLoss: data.data.evalGain, //평가손익 - returnRate: data.data.returnRate * 100, // %로 보기 좋게 + returnRate: data.data.returnRate * 10, // %로 보기 좋게 investRatio: data.data.investRatio * 100, // 총 투자비율 cash: data.data.cash,// 현금자산 }; diff --git a/app/dashboard/page.tsx b/app/dashboard/page.tsx index e0c9dbf..38d094e 100644 --- a/app/dashboard/page.tsx +++ b/app/dashboard/page.tsx @@ -16,7 +16,6 @@ import Link from "next/link"; import { Button } from "@/components/ui/button"; import ProfileModal from "@/components/common/ProfileModal"; import { Heart } from "lucide-react"; -import mockPortfolio from "@/lib/mock/mockportfolio"; import ProfileHandler from "@/components/common/ProfileHandler"; import useSWR from "swr"; @@ -321,7 +320,7 @@ export default function Dashboard() { totalAssets: overallData?.data?.totalAsset ?? 0, investmentAmount: overallData?.data?.investedAmount ?? 0, profitLoss: overallData?.data?.evalGain ?? 0, - returnRate: (overallData?.data?.returnRate ?? 0) * 100, + returnRate: (overallData?.data?.returnRate ?? 0) * 10, }; return ( diff --git a/lib/mock/mockportfolio.ts b/lib/mock/mockportfolio.ts deleted file mode 100644 index f1203c3..0000000 --- a/lib/mock/mockportfolio.ts +++ /dev/null @@ -1,31 +0,0 @@ - -export type PortfolioData = { - totalAssets: number; - investmentAmount: number; - profitLoss: number; - returnRate: number; - seedMoney: number; -}; - -// 계산 로직을 함수로 관리 -export function createMockPortfolio( - investmentAmount: number, - profitLoss: number, - seedMoney: number -): PortfolioData { - const totalAssets = investmentAmount + profitLoss; - const returnRate = parseFloat(((profitLoss / investmentAmount) * 100).toFixed(2)); - - return { - investmentAmount, - profitLoss, - totalAssets, - returnRate, - seedMoney, - }; -} - -// 기본 mock 데이터 -const mockPortfolio = createMockPortfolio(1000,120.5, 1550); - -export default mockPortfolio; \ No newline at end of file From 30f22a3bae80d909e9d7518ab5c8dd4008fa3726 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Sun, 15 Jun 2025 00:15:35 +0900 Subject: [PATCH 19/36] =?UTF-8?q?style:=20=ED=8F=AC=ED=8A=B8=ED=8F=B4?= =?UTF-8?q?=EB=A6=AC=EC=98=A4,=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/dashboard/mypage/page.tsx | 12 ++++++++---- app/page.tsx | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/dashboard/mypage/page.tsx b/app/dashboard/mypage/page.tsx index f34d37d..6ff9674 100644 --- a/app/dashboard/mypage/page.tsx +++ b/app/dashboard/mypage/page.tsx @@ -3,7 +3,7 @@ import Link from "next/link" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { Button } from "@/components/ui/button" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" -import { TrendingUp, TrendingDown, ChevronRight, Menu } from "lucide-react" +import { TrendingUp, TrendingDown, ChevronRight, Menu,PieChart } from "lucide-react" import Image from "next/image"; import { useRouter } from "next/navigation" import { useEffect, useState } from "react" @@ -284,9 +284,13 @@ export default function MyPage() { {/* Integrated Portfolio Overview Block */} - - 포트폴리오 현황 - + + + + 포트폴리오 현황 + +

실시간 투자 성과 분석

+
{/* 총자산 */} diff --git a/app/page.tsx b/app/page.tsx index 50f817e..0b01819 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -362,8 +362,8 @@ export default function FinanceDashboard() { url.searchParams.set("modal", "login") router.push(url.toString()) }} - className="bg-[#006ffd] text-white px-4 py-2 rounded-md hover:bg-[#0057cc] transition-colors" - > + + className="px-4 py-2 hidden md:flex bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-700 hover:to-purple-700 rounded-xl shadow-lg hover:shadow-xl transition-all duration-200"> 로그인 Date: Sun, 15 Jun 2025 00:50:55 +0900 Subject: [PATCH 20/36] =?UTF-8?q?style:=20=ED=8F=AC=ED=8A=B8=ED=8F=B4?= =?UTF-8?q?=EB=A6=AC=EC=98=A4,=20=EB=B2=84=ED=8A=BCui=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/dashboard/mypage/page.tsx | 2 +- app/page.tsx | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/dashboard/mypage/page.tsx b/app/dashboard/mypage/page.tsx index 6ff9674..fd0fae4 100644 --- a/app/dashboard/mypage/page.tsx +++ b/app/dashboard/mypage/page.tsx @@ -283,7 +283,7 @@ export default function MyPage() {
{/* Integrated Portfolio Overview Block */} - + diff --git a/app/page.tsx b/app/page.tsx index 0b01819..3753675 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -2,6 +2,7 @@ import { useState, useEffect } from "react"; import { Search, X, Menu, ChevronLeft, Minus, Plus } from "lucide-react"; +import { Button } from "@/components/ui/button" import Image from "next/image"; import StockChart from "@/components/StockChart"; import LoginModal from "@/components/common/LoginModal"; @@ -346,26 +347,30 @@ export default function FinanceDashboard() {
{/* - + { From 435363289322f4c03947a673d302ec35fb11dab7 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Sun, 15 Jun 2025 01:37:25 +0900 Subject: [PATCH 21/36] =?UTF-8?q?style:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=ED=8F=BC=20=EC=88=98=EC=A0=95=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/common/RegistrationModal.tsx | 28 ++++++++++++++++++------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/components/common/RegistrationModal.tsx b/components/common/RegistrationModal.tsx index 3ec8e6b..d133a1e 100644 --- a/components/common/RegistrationModal.tsx +++ b/components/common/RegistrationModal.tsx @@ -3,7 +3,7 @@ import type React from "react" import { useState } from "react" -import { X } from "lucide-react" +import { X, User, } from "lucide-react" import { useRouter } from "next/navigation" import Link from "next/link" import Image from "next/image"; @@ -143,14 +143,25 @@ export default function RegistrationModal({ isOpen, onClose }: RegistrationModal className="relative max-h-[90vh] w-full max-w-md overflow -auto rounded-lg bg-white shadow-lg" onClick={handleModalClick} > -
+ {/*
- {/*
Logo Here
*/}

MARS 모의투자에 오신걸 환영합니다 !!!

-

회원가입

- +

회원가입

*/} +
+ {/* Header */} +
+
+
+ +
+
+

+ 회원가입 +

+

MARS 모의투자에 오신걸 환영합니다!

+
@@ -203,14 +214,15 @@ export default function RegistrationModal({ isOpen, onClose }: RegistrationModal
{/* test */} -
+
이미 계정이 있으신가요?{" "}
@@ -205,8 +205,8 @@ export default function RegistrationModal({ isOpen, onClose }: RegistrationModal name="nickname" value={formData.nickname} onChange={handleChange} - placeholder="닉네임 2자 이상" - className={`w-full rounded bg-[#bfdbfe]/30 p-3 outline-none ${errors.nickname ? "border border-red-500" : ""}`} + placeholder="닉네임 2자 이상 입력해주세요" + className={`w-full pl-4 pr-12 py-3 rounded-xl border-2 bg-white/70 backdrop-blur-sm transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-blue-500/20 focus:border-blue-500 ${errors.nickname ? "border border-red-500" : ""}`} /> {errors.nickname &&

{errors.nickname}

}
From bacbc12568c1a0f9440f110e82ca9dc9f46e1a28 Mon Sep 17 00:00:00 2001 From: Jun-Lae Kim Date: Sun, 15 Jun 2025 02:16:56 +0900 Subject: [PATCH 23/36] =?UTF-8?q?style:=20=EB=A1=9C=EA=B7=B8=EC=95=84?= =?UTF-8?q?=EC=9B=83=EB=B2=84=ED=8A=BC=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/dashboard/page.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/dashboard/page.tsx b/app/dashboard/page.tsx index ae8dd77..723a43a 100644 --- a/app/dashboard/page.tsx +++ b/app/dashboard/page.tsx @@ -395,7 +395,7 @@ export default function Dashboard() { 내계좌 - + 로그아웃 @@ -413,7 +413,7 @@ export default function Dashboard() {
oo님 mars 모투에 오신걸 환영합니다
-