+
{ROLES.map((role) => (
diff --git a/frontend/src/pages/apihub/ApiHubDashboardPage.tsx b/frontend/src/pages/apihub/ApiHubDashboardPage.tsx
index 7ee4f35..bb3d5b9 100644
--- a/frontend/src/pages/apihub/ApiHubDashboardPage.tsx
+++ b/frontend/src/pages/apihub/ApiHubDashboardPage.tsx
@@ -128,7 +128,7 @@ const ApiHubDashboardPage = () => {
if (isLoading) {
return (
);
}
@@ -136,10 +136,10 @@ const ApiHubDashboardPage = () => {
return (
{/* 히어로 배너 */}
-
+
{/* 장식 글로우 원 */}
-
-
+
+
{/* 제목 */}
KCG API HUB
@@ -155,8 +155,8 @@ const ApiHubDashboardPage = () => {
-
인기 API
-
최근 7일 기준
+
인기 API
+
최근 7일 기준
{popularApis.map((api, idx) => {
@@ -164,7 +164,7 @@ const ApiHubDashboardPage = () => {
return (
api.serviceId && api.apiId
? navigate(`/api-hub/services/${api.serviceId}/apis/${api.apiId}`)
@@ -187,17 +187,17 @@ const ApiHubDashboardPage = () => {
)}
{api.apiName}
-
+
-
주간 호출
-
+
주간 호출
+
{api.count.toLocaleString()}
- 회
+ 회
-
최신 등록 API
+
최신 등록 API
{recentTop3.length > 0 ? (
@@ -228,7 +228,7 @@ const ApiHubDashboardPage = () => {
return (
navigate(`/api-hub/services/${api.serviceId}/apis/${api.apiId}`)}
>
@@ -241,17 +241,17 @@ const ApiHubDashboardPage = () => {
)}
{api.apiName}
{api.description && (
-
+
{truncate(api.description, 80)}
)}
-
+
) : (
-
+
등록된 API가 없습니다
)}
@@ -286,7 +286,7 @@ const ApiHubDashboardPage = () => {
/>
-
서비스 도메인
+
서비스 도메인
{domainList.map((item) => {
@@ -297,9 +297,9 @@ const ApiHubDashboardPage = () => {
navigate(`/api-hub/domains/${encodeURIComponent(item.domain)}`)}
- className={`group relative overflow-hidden rounded-xl border bg-white dark:bg-gray-800 ${palette.border} cursor-pointer transition-all duration-200 hover:-translate-y-1 hover:shadow-xl`}
+ className={`group relative overflow-hidden rounded-xl border bg-[var(--color-bg-surface)] ${palette.border} cursor-pointer transition-all duration-200 hover:-translate-y-1 hover:shadow-xl`}
>
-
+

{
const allOperational = services.length > 0 && services.every((s) => s.currentStatus === 'UP');
if (isLoading) {
- return
로딩 중...
;
+ return
로딩 중...
;
}
return (
-
Service Status
- 마지막 갱신: {lastUpdated}
+ Service Status
+ 마지막 갱신: {lastUpdated}
{/* Overall Status Banner */}
@@ -80,30 +80,30 @@ const ServiceStatusPage = () => {
{/* Service List */}
{services.map((svc) => (
-
+
{/* Service Header */}
-
+
navigate(`/monitoring/service-status/${svc.serviceId}`)}
>
{svc.serviceName}
-
+
{STATUS_TEXT[svc.currentStatus] || svc.currentStatus}
{svc.lastResponseTime !== null && (
- {svc.lastResponseTime}ms
+ {svc.lastResponseTime}ms
)}
-
- 90일 Uptime:
{svc.uptimePercent90d.toFixed(2)}%
+
+ 90일 Uptime: {svc.uptimePercent90d.toFixed(2)}%
@@ -128,10 +128,10 @@ const ServiceStatusPage = () => {
))
) : (
-
+
)}
-
+
{svc.dailyUptime.length > 0 ? formatDate(svc.dailyUptime[0].date) : ''}
Today
@@ -140,7 +140,7 @@ const ServiceStatusPage = () => {
))}
{services.length === 0 && (
-
등록된 서비스가 없습니다
+
등록된 서비스가 없습니다
)}
diff --git a/frontend/src/store/ThemeContext.tsx b/frontend/src/store/ThemeContext.tsx
index 3d7473c..50171f3 100644
--- a/frontend/src/store/ThemeContext.tsx
+++ b/frontend/src/store/ThemeContext.tsx
@@ -28,8 +28,10 @@ const ThemeProvider = ({ children }: ThemeProviderProps) => {
useEffect(() => {
if (theme === 'dark') {
document.documentElement.classList.add('dark');
+ document.documentElement.classList.remove('light');
} else {
document.documentElement.classList.remove('dark');
+ document.documentElement.classList.add('light');
}
localStorage.setItem('theme', theme);
}, [theme]);