diff --git a/frontend/components/admin/dashboard/data-sources/MultiApiConfig.tsx b/frontend/components/admin/dashboard/data-sources/MultiApiConfig.tsx
index 05288c96..93be7a68 100644
--- a/frontend/components/admin/dashboard/data-sources/MultiApiConfig.tsx
+++ b/frontend/components/admin/dashboard/data-sources/MultiApiConfig.tsx
@@ -630,8 +630,8 @@ export default function MultiApiConfig({ dataSource, onChange, onTestResult }: M
{testResult.success ? (
@@ -710,12 +710,12 @@ export default function MultiApiConfig({ dataSource, onChange, onTestResult }: M
}[type];
const typeColor = {
- number: "text-blue-600 bg-blue-50",
- string: "text-gray-600 bg-gray-50",
- date: "text-purple-600 bg-purple-50",
- boolean: "text-green-600 bg-green-50",
- object: "text-orange-600 bg-orange-50",
- unknown: "text-gray-400 bg-gray-50"
+ number: "text-primary bg-primary/10",
+ string: "text-muted-foreground bg-muted",
+ date: "text-purple-500 bg-purple-500/10",
+ boolean: "text-success bg-success/10",
+ object: "text-warning bg-warning/10",
+ unknown: "text-muted-foreground/50 bg-muted"
}[type];
return (
@@ -746,7 +746,7 @@ export default function MultiApiConfig({ dataSource, onChange, onTestResult }: M
h-4 w-4 rounded border-2 flex items-center justify-center transition-colors
${isSelected
? "border-primary bg-primary"
- : "border-gray-300 bg-background"
+ : "border-border bg-background"
}
`}>
{isSelected && (
diff --git a/frontend/components/admin/dashboard/data-sources/MultiDataSourceConfig.tsx b/frontend/components/admin/dashboard/data-sources/MultiDataSourceConfig.tsx
index 9ef48140..5c6dfc13 100644
--- a/frontend/components/admin/dashboard/data-sources/MultiDataSourceConfig.tsx
+++ b/frontend/components/admin/dashboard/data-sources/MultiDataSourceConfig.tsx
@@ -324,10 +324,10 @@ export default function MultiDataSourceConfig({
{(item.status || item.level) && (
{item.status || item.level}
diff --git a/frontend/components/admin/dashboard/data-sources/MultiDatabaseConfig.tsx b/frontend/components/admin/dashboard/data-sources/MultiDatabaseConfig.tsx
index e2760830..db7c8e50 100644
--- a/frontend/components/admin/dashboard/data-sources/MultiDatabaseConfig.tsx
+++ b/frontend/components/admin/dashboard/data-sources/MultiDatabaseConfig.tsx
@@ -406,8 +406,8 @@ ORDER BY 하위부서수 DESC`,
{testResult.success ? (
@@ -491,12 +491,12 @@ ORDER BY 하위부서수 DESC`,
}[type];
const typeColor = {
- number: "text-blue-600 bg-blue-50",
- string: "text-gray-600 bg-gray-50",
- date: "text-purple-600 bg-purple-50",
- boolean: "text-green-600 bg-green-50",
- object: "text-orange-600 bg-orange-50",
- unknown: "text-gray-400 bg-gray-50"
+ number: "text-primary bg-primary/10",
+ string: "text-foreground bg-muted",
+ date: "text-purple-500 bg-purple-500/10",
+ boolean: "text-success bg-success/10",
+ object: "text-warning bg-warning/10",
+ unknown: "text-muted-foreground bg-muted"
}[type];
return (
@@ -527,7 +527,7 @@ ORDER BY 하위부서수 DESC`,
h-4 w-4 rounded border-2 flex items-center justify-center transition-colors
${isSelected
? "border-primary bg-primary"
- : "border-gray-300 bg-background"
+ : "border-border bg-background"
}
`}>
{isSelected && (
diff --git a/frontend/components/admin/dashboard/widgets/CalendarSettings.tsx b/frontend/components/admin/dashboard/widgets/CalendarSettings.tsx
index 89633cc8..7323b9f8 100644
--- a/frontend/components/admin/dashboard/widgets/CalendarSettings.tsx
+++ b/frontend/components/admin/dashboard/widgets/CalendarSettings.tsx
@@ -91,19 +91,19 @@ export function CalendarSettings({ config, onSave, onClose }: CalendarSettingsPr
{
value: "light",
label: "Light",
- gradient: "bg-gradient-to-br from-white to-gray-100",
- text: "text-gray-900",
+ gradient: "bg-gradient-to-br from-background to-muted",
+ text: "text-foreground",
},
{
value: "dark",
label: "Dark",
- gradient: "bg-gradient-to-br from-gray-800 to-gray-900",
+ gradient: "bg-gradient-to-br from-foreground to-foreground",
text: "text-white",
},
{
value: "custom",
label: "사용자",
- gradient: "bg-gradient-to-br from-blue-400 to-purple-600",
+ gradient: "bg-gradient-to-br from-primary to-purple-500",
text: "text-white",
},
].map((theme) => (
diff --git a/frontend/components/admin/dashboard/widgets/CalendarWidget.tsx b/frontend/components/admin/dashboard/widgets/CalendarWidget.tsx
index b5638f94..a6a4ee0c 100644
--- a/frontend/components/admin/dashboard/widgets/CalendarWidget.tsx
+++ b/frontend/components/admin/dashboard/widgets/CalendarWidget.tsx
@@ -81,7 +81,7 @@ export function CalendarWidget({ element, onConfigUpdate }: CalendarWidgetProps)
return (
{/* 헤더 - 네비게이션 */}
-
+
{/* 이전 월 버튼 */}
@@ -123,7 +123,7 @@ export function CalendarWidget({ element, onConfigUpdate }: CalendarWidgetProps)
-
+
diff --git a/frontend/components/admin/dashboard/widgets/ClockSettings.tsx b/frontend/components/admin/dashboard/widgets/ClockSettings.tsx
index 43a452fe..b62b597e 100644
--- a/frontend/components/admin/dashboard/widgets/ClockSettings.tsx
+++ b/frontend/components/admin/dashboard/widgets/ClockSettings.tsx
@@ -97,19 +97,19 @@ export function ClockSettings({ config, onSave, onClose }: ClockSettingsProps) {
{
value: "light",
label: "Light",
- gradient: "bg-gradient-to-br from-white to-gray-100",
- text: "text-gray-900",
+ gradient: "bg-gradient-to-br from-background to-muted",
+ text: "text-foreground",
},
{
value: "dark",
label: "Dark",
- gradient: "bg-gradient-to-br from-gray-800 to-gray-900",
+ gradient: "bg-gradient-to-br from-foreground to-foreground",
text: "text-white",
},
{
value: "custom",
label: "사용자",
- gradient: "bg-gradient-to-br from-blue-400 to-purple-600",
+ gradient: "bg-gradient-to-br from-primary to-purple-500",
text: "text-white",
},
].map((theme) => (
diff --git a/frontend/components/admin/dashboard/widgets/ClockWidget.tsx b/frontend/components/admin/dashboard/widgets/ClockWidget.tsx
index fff65bc4..6577bbdb 100644
--- a/frontend/components/admin/dashboard/widgets/ClockWidget.tsx
+++ b/frontend/components/admin/dashboard/widgets/ClockWidget.tsx
@@ -116,7 +116,7 @@ export function ClockWidget({ element, onConfigUpdate }: ClockWidgetProps) {
-
+
diff --git a/frontend/components/admin/dashboard/widgets/DigitalClock.tsx b/frontend/components/admin/dashboard/widgets/DigitalClock.tsx
index 5ed506c5..e202cb31 100644
--- a/frontend/components/admin/dashboard/widgets/DigitalClock.tsx
+++ b/frontend/components/admin/dashboard/widgets/DigitalClock.tsx
@@ -112,22 +112,22 @@ function getThemeClasses(theme: string, customColor?: string) {
const themes = {
light: {
- container: "bg-white text-gray-900",
- date: "text-gray-600",
- time: "text-gray-900",
- timezone: "text-gray-500",
+ container: "bg-background text-foreground",
+ date: "text-foreground",
+ time: "text-foreground",
+ timezone: "text-muted-foreground",
},
dark: {
container: "bg-gray-900 text-white",
- date: "text-gray-300",
+ date: "text-muted-foreground",
time: "text-white",
- timezone: "text-gray-400",
+ timezone: "text-muted-foreground",
},
custom: {
- container: "bg-gradient-to-br from-blue-400 to-purple-600 text-white",
- date: "text-blue-100",
+ container: "bg-gradient-to-br from-primary to-purple-500 text-white",
+ date: "text-primary/70",
time: "text-white",
- timezone: "text-blue-200",
+ timezone: "text-primary/80",
},
};
diff --git a/frontend/components/admin/dashboard/widgets/DriverListView.tsx b/frontend/components/admin/dashboard/widgets/DriverListView.tsx
index cddbe6c6..51862926 100644
--- a/frontend/components/admin/dashboard/widgets/DriverListView.tsx
+++ b/frontend/components/admin/dashboard/widgets/DriverListView.tsx
@@ -25,25 +25,25 @@ export function DriverListView({ drivers, config, isCompact = false }: DriverLis
return (
-
{drivers.length}
-
전체 기사
+
{drivers.length}
+
전체 기사
-
-
{stats.driving}
-
운행중
+
-
-
{stats.standby}
-
대기중
+
-
-
{stats.resting}
-
휴식중
+
-
-
{stats.maintenance}
-
점검중
+
+
{stats.maintenance}
+
점검중
@@ -53,54 +53,54 @@ export function DriverListView({ drivers, config, isCompact = false }: DriverLis
// 빈 데이터 처리
if (drivers.length === 0) {
return (
-
조회된 기사 정보가 없습니다
+
조회된 기사 정보가 없습니다
);
}
return (
-
+
{visibleColumns.includes("status") && (
- {COLUMN_LABELS.status}
+ {COLUMN_LABELS.status}
)}
{visibleColumns.includes("name") && (
- {COLUMN_LABELS.name}
+ {COLUMN_LABELS.name}
)}
{visibleColumns.includes("vehicleNumber") && (
- {COLUMN_LABELS.vehicleNumber}
+ {COLUMN_LABELS.vehicleNumber}
)}
{visibleColumns.includes("vehicleType") && (
- {COLUMN_LABELS.vehicleType}
+ {COLUMN_LABELS.vehicleType}
)}
{visibleColumns.includes("departure") && (
- {COLUMN_LABELS.departure}
+ {COLUMN_LABELS.departure}
)}
{visibleColumns.includes("destination") && (
- {COLUMN_LABELS.destination}
+ {COLUMN_LABELS.destination}
)}
{visibleColumns.includes("departureTime") && (
- {COLUMN_LABELS.departureTime}
+ {COLUMN_LABELS.departureTime}
)}
{visibleColumns.includes("estimatedArrival") && (
-
+
{COLUMN_LABELS.estimatedArrival}
)}
{visibleColumns.includes("phone") && (
- {COLUMN_LABELS.phone}
+ {COLUMN_LABELS.phone}
)}
{visibleColumns.includes("progress") && (
- {COLUMN_LABELS.progress}
+ {COLUMN_LABELS.progress}
)}
-
+
{drivers.map((driver) => {
const statusColors = getStatusColor(driver.status);
return (
-
+
{visibleColumns.includes("status") && (
)}
{visibleColumns.includes("name") && (
- {driver.name}
+ {driver.name}
)}
{visibleColumns.includes("vehicleNumber") && (
- {driver.vehicleNumber}
+ {driver.vehicleNumber}
)}
{visibleColumns.includes("vehicleType") && (
- {driver.vehicleType}
+ {driver.vehicleType}
)}
{visibleColumns.includes("departure") && (
-
- {driver.departure || - }
+
+ {driver.departure || - }
)}
{visibleColumns.includes("destination") && (
-
- {driver.destination || - }
+
+ {driver.destination || - }
)}
{visibleColumns.includes("departureTime") && (
- {formatTime(driver.departureTime)}
+ {formatTime(driver.departureTime)}
)}
{visibleColumns.includes("estimatedArrival") && (
- {formatTime(driver.estimatedArrival)}
+ {formatTime(driver.estimatedArrival)}
)}
{visibleColumns.includes("phone") && (
- {driver.phone}
+ {driver.phone}
)}
{visibleColumns.includes("progress") && (
{driver.progress !== undefined ? (
-
{driver.progress}%
+
{driver.progress}%
) : (
- -
+ -
)}
)}
diff --git a/frontend/components/admin/dashboard/widgets/DriverManagementSettings.tsx b/frontend/components/admin/dashboard/widgets/DriverManagementSettings.tsx
index 0f09286e..2219f835 100644
--- a/frontend/components/admin/dashboard/widgets/DriverManagementSettings.tsx
+++ b/frontend/components/admin/dashboard/widgets/DriverManagementSettings.tsx
@@ -110,7 +110,7 @@ export function DriverManagementSettings({ config, onSave, onClose }: DriverMana
toggleColumn(key)}
>
@@ -128,7 +128,7 @@ export function DriverManagementSettings({ config, onSave, onClose }: DriverMana
{/* 푸터 - 고정 */}
-
+
취소
diff --git a/frontend/components/admin/dashboard/widgets/DriverManagementWidget.tsx b/frontend/components/admin/dashboard/widgets/DriverManagementWidget.tsx
index 60d5c615..d9d34b25 100644
--- a/frontend/components/admin/dashboard/widgets/DriverManagementWidget.tsx
+++ b/frontend/components/admin/dashboard/widgets/DriverManagementWidget.tsx
@@ -70,14 +70,14 @@ export function DriverManagementWidget({ element, onConfigUpdate }: DriverManage
const isCompact = element.size.width < 400 || element.size.height < 300;
return (
-
+
{/* 헤더 - 컴팩트 모드가 아닐 때만 표시 */}
{!isCompact && (
-
+
{/* 검색 */}
-
+
{/* 통계 정보 */}
-
+
- 전체 {filteredDrivers.length} 명
+ 전체 {filteredDrivers.length} 명
- |
+ |
운행중{" "}
-
+
{filteredDrivers.filter((d) => d.status === "driving").length}
명
- |
- 최근 업데이트: {lastRefresh.toLocaleTimeString("ko-KR")}
+ |
+ 최근 업데이트: {lastRefresh.toLocaleTimeString("ko-KR")}
)}
diff --git a/frontend/components/admin/dashboard/widgets/ListWidget.tsx b/frontend/components/admin/dashboard/widgets/ListWidget.tsx
index f529c0a9..b3ac17be 100644
--- a/frontend/components/admin/dashboard/widgets/ListWidget.tsx
+++ b/frontend/components/admin/dashboard/widgets/ListWidget.tsx
@@ -168,8 +168,8 @@ export function ListWidget({ element, onConfigUpdate }: ListWidgetProps) {
return (
-
-
데이터 로딩 중...
+
+
데이터 로딩 중...
);
@@ -181,8 +181,8 @@ export function ListWidget({ element, onConfigUpdate }: ListWidgetProps) {
⚠️
-
오류 발생
-
{error}
+
오류 발생
+
{error}
);
@@ -194,8 +194,8 @@ export function ListWidget({ element, onConfigUpdate }: ListWidgetProps) {
📋
-
리스트를 설정하세요
-
⚙️ 버튼을 클릭하여 데이터 소스와 컬럼을 설정해주세요
+
리스트를 설정하세요
+
⚙️ 버튼을 클릭하여 데이터 소스와 컬럼을 설정해주세요
);
@@ -222,7 +222,7 @@ export function ListWidget({ element, onConfigUpdate }: ListWidgetProps) {
{/* 제목 - 항상 표시 */}
-
{element.customTitle || element.title}
+ {element.customTitle || element.title}
{/* 테이블 뷰 */}
@@ -251,7 +251,7 @@ export function ListWidget({ element, onConfigUpdate }: ListWidgetProps) {
col.visible).length}
- className="text-center text-gray-500"
+ className="text-center text-muted-foreground"
>
데이터가 없습니다
@@ -281,7 +281,7 @@ export function ListWidget({ element, onConfigUpdate }: ListWidgetProps) {
{config.viewMode === "card" && (
{paginatedRows.length === 0 ? (
-
데이터가 없습니다
+
데이터가 없습니다
) : (
col.visible)
.map((col) => (
-
{col.label || col.name}
+
{col.label || col.name}
{String(row[col.dataKey || col.field] ?? "")}
@@ -315,7 +315,7 @@ export function ListWidget({ element, onConfigUpdate }: ListWidgetProps) {
{/* 페이지네이션 */}
{config.enablePagination && totalPages > 1 && (
-
+
{startIdx + 1}-{Math.min(endIdx, data.rows.length)} / {data.rows.length}개
@@ -328,9 +328,9 @@ export function ListWidget({ element, onConfigUpdate }: ListWidgetProps) {
이전
- {currentPage}
- /
- {totalPages}
+ {currentPage}
+ /
+ {totalPages}
-
+
{/* 헤더 */}
📋 리스트 위젯 설정
-
데이터 소스와 컬럼을 설정하세요
+
데이터 소스와 컬럼을 설정하세요
-
+
@@ -173,34 +173,34 @@ export function ListWidgetConfigModal({ isOpen, element, onClose, onSave }: List
{/* 참고: 리스트 위젯은 제목이 항상 표시됩니다 */}
-
💡 리스트 위젯은 제목이 항상 표시됩니다
+
💡 리스트 위젯은 제목이 항상 표시됩니다
{/* 진행 상태 표시 */}
-
+
-
= 1 ? "text-blue-600" : "text-gray-400"}`}>
+
= 1 ? "text-primary" : "text-muted-foreground"}`}>
= 1 ? "bg-blue-600 text-white" : "bg-gray-300"}`}
+ className={`flex h-8 w-8 items-center justify-center rounded-full ${currentStep >= 1 ? "bg-primary text-white" : "bg-muted"}`}
>
1
데이터 소스
-
-
= 2 ? "text-blue-600" : "text-gray-400"}`}>
+
+
= 2 ? "text-primary" : "text-muted-foreground"}`}>
= 2 ? "bg-blue-600 text-white" : "bg-gray-300"}`}
+ className={`flex h-8 w-8 items-center justify-center rounded-full ${currentStep >= 2 ? "bg-primary text-white" : "bg-muted"}`}
>
2
데이터 가져오기
-
-
= 3 ? "text-blue-600" : "text-gray-400"}`}>
+
+
= 3 ? "text-primary" : "text-muted-foreground"}`}>
= 3 ? "bg-blue-600 text-white" : "bg-gray-300"}`}
+ className={`flex h-8 w-8 items-center justify-center rounded-full ${currentStep >= 3 ? "bg-primary text-white" : "bg-muted"}`}
>
3
@@ -240,21 +240,21 @@ export function ListWidgetConfigModal({ isOpen, element, onClose, onSave }: List
{/* 오른쪽: 데이터 미리보기 */}
{queryResult && queryResult.rows.length > 0 ? (
-