diff --git a/src/frontend/src/screens/auction/AuctionDetailPage.tsx b/src/frontend/src/screens/auction/AuctionDetailPage.tsx index 035c87b..021ddd9 100644 --- a/src/frontend/src/screens/auction/AuctionDetailPage.tsx +++ b/src/frontend/src/screens/auction/AuctionDetailPage.tsx @@ -268,13 +268,13 @@ export function AuctionDetailPage() { diff --git a/src/frontend/src/screens/auction/AwardComparePage.tsx b/src/frontend/src/screens/auction/AwardComparePage.tsx index 240a887..b0efb94 100644 --- a/src/frontend/src/screens/auction/AwardComparePage.tsx +++ b/src/frontend/src/screens/auction/AwardComparePage.tsx @@ -158,24 +158,24 @@ export function AwardComparePage() {
- +
- + {quotes.map((qc2) => ( ))} @@ -183,14 +183,14 @@ export function AwardComparePage() { - + {quotes.map((qc2) => ( - - + {quotes.map((qc2) => ( - ))} - + {quotes.map((qc2) => { const best = qc2.reputation === Math.max(...quotes.map((x) => x.reputation)); return ( - - + {quotes.map((qc2) => ( -
비교 항목비교 항목 - {qc2.recommended && 최적 추천} + {qc2.recommended && 최적 추천}
총액 (VAT 별도)총액 (VAT 별도) - + + {formatWon(qc2.totalPrice)} {qc2.isLowestPrice ? '최저가' : `+${qc2.priceDeltaPct}% 차이`} @@ -198,24 +198,24 @@ export function AwardComparePage() { ))}
납기 (시공 완료)납기 (시공 완료) + {qc2.leadDays}일 {qc2.isShortestLead && ( - 최단 납기 + 최단 납기 )}
업체 평판 (최근 1년)업체 평판 (최근 1년) - + + {' '} {qc2.reputation.toFixed(1)} @@ -224,16 +224,16 @@ export function AwardComparePage() { })}
종합 점수종합 점수 + {qc2.recommended ? ( - + {qc2.score.toFixed(1)} ) : ( {qc2.score.toFixed(1)} diff --git a/src/frontend/src/screens/auction/auction.css b/src/frontend/src/screens/auction/auction.css index 3d94a51..9de0811 100644 --- a/src/frontend/src/screens/auction/auction.css +++ b/src/frontend/src/screens/auction/auction.css @@ -291,7 +291,7 @@ gap: var(--space-3); } /* 비교표 컬럼 선택 버튼(낙찰 대상 선택) — 헤더 텍스트 스택을 버튼으로 감싼다. */ -.kx-compare__co-select { +.kx-bidcmp__co-select { display: flex; flex-direction: column; align-items: center; @@ -302,7 +302,7 @@ cursor: pointer; padding: 0; } -.kx-compare__co-select[aria-pressed='true'] .kx-compare__co-name { +.kx-bidcmp__co-select[aria-pressed='true'] .kx-bidcmp__co-name { color: var(--color-primary, var(--color-ai-accent)); } @@ -579,7 +579,7 @@ @media (prefers-reduced-motion: reduce) { .kx-rank__ws.is-live { animation: none; } } -.kx-toggle { +.kx-atoggle { display: inline-flex; align-items: center; gap: 8px; @@ -589,7 +589,7 @@ border: none; cursor: pointer; } -.kx-toggle__track { +.kx-atoggle__track { width: 38px; height: 20px; border-radius: var(--radius-pill); @@ -597,10 +597,10 @@ position: relative; transition: background 0.15s ease; } -.kx-toggle__track.is-on { +.kx-atoggle__track.is-on { background: var(--color-primary-600); } -.kx-toggle__knob { +.kx-atoggle__knob { position: absolute; top: 2px; left: 2px; @@ -610,7 +610,7 @@ background: var(--color-white); transition: transform 0.15s ease; } -.kx-toggle__track.is-on .kx-toggle__knob { +.kx-atoggle__track.is-on .kx-atoggle__knob { transform: translateX(18px); } @@ -771,48 +771,48 @@ } /* 비교 매트릭스 */ -.kx-compare { +.kx-bidcmp { width: 100%; border-collapse: collapse; font-size: var(--fs-body); } -.kx-compare th, -.kx-compare td { +.kx-bidcmp th, +.kx-bidcmp td { padding: var(--space-4); border-bottom: var(--border-card); text-align: center; } -.kx-compare thead th { +.kx-bidcmp thead th { background: var(--color-neutral-050); font-weight: var(--fw-bold); color: var(--color-neutral-900); } -.kx-compare thead th.kx-compare__metric-col, -.kx-compare td.kx-compare__metric-col { +.kx-bidcmp thead th.kx-bidcmp__metric-col, +.kx-bidcmp td.kx-bidcmp__metric-col { text-align: left; width: 22%; font-weight: var(--fw-semibold); color: var(--color-neutral-700); } -.kx-compare__co { +.kx-bidcmp__co { position: relative; } -.kx-compare__co-name { +.kx-bidcmp__co-name { font-size: var(--fs-h3); font-weight: var(--fw-bold); color: var(--color-neutral-900); } -.kx-compare__co--rec .kx-compare__co-name { +.kx-bidcmp__co--rec .kx-bidcmp__co-name { color: var(--color-primary-700); } -.kx-compare__co-sub { +.kx-bidcmp__co-sub { display: block; font-size: var(--fs-micro); font-weight: var(--fw-regular); color: var(--color-neutral-500); margin-top: 2px; } -.kx-compare__rec-tag { +.kx-bidcmp__rec-tag { display: inline-block; margin-bottom: 6px; font-size: var(--fs-nano); @@ -822,33 +822,33 @@ padding: 2px 8px; border-radius: var(--radius-pill); } -.kx-compare__best { +.kx-bidcmp__best { background: #f0fbf6; color: var(--color-success); font-weight: var(--fw-bold); } -.kx-compare__val-strong { +.kx-bidcmp__val-strong { font-size: var(--fs-h3); font-weight: var(--fw-bold); } -.kx-compare__note { +.kx-bidcmp__note { display: block; font-size: var(--fs-micro); color: var(--color-neutral-500); margin-top: 2px; } -.kx-compare__note--best { +.kx-bidcmp__note--best { color: var(--color-success); } -.kx-compare__score { +.kx-bidcmp__score { background: var(--color-ai-surface); } -.kx-compare__score-val { +.kx-bidcmp__score-val { font-size: var(--fs-display); font-weight: var(--fw-bold); color: var(--color-ai-accent); } -.kx-compare__star { +.kx-bidcmp__star { color: var(--color-warning); } diff --git a/src/frontend/src/screens/contractor/contractor.css b/src/frontend/src/screens/contractor/contractor.css index e615e61..6ae9196 100644 --- a/src/frontend/src/screens/contractor/contractor.css +++ b/src/frontend/src/screens/contractor/contractor.css @@ -116,13 +116,13 @@ } /* 시공 스테퍼 */ -.kx-stepper { +.kx-cstepper { position: relative; display: flex; justify-content: space-between; margin: var(--space-5) var(--space-2) var(--space-5); } -.kx-stepper::before { +.kx-cstepper::before { content: ''; position: absolute; top: 16px; diff --git a/src/frontend/src/screens/floorplan/BoothLayoutEditorPage.tsx b/src/frontend/src/screens/floorplan/BoothLayoutEditorPage.tsx index b508385..448f655 100644 --- a/src/frontend/src/screens/floorplan/BoothLayoutEditorPage.tsx +++ b/src/frontend/src/screens/floorplan/BoothLayoutEditorPage.tsx @@ -501,13 +501,13 @@ export function BoothLayoutEditorPage() { {summary && ( <> 부스 {summary.boothCount} / {summary.targetBoothCount} - + 판매면적 {summary.salesAreaM2.toLocaleString()}㎡ )} {localBooths.length > 0 && ( <> - + 신규 배치 {localBooths.length}개(미저장) ); diff --git a/src/frontend/src/screens/floorplan/editor.css b/src/frontend/src/screens/floorplan/editor.css index ca4e21c..7f1a558 100644 --- a/src/frontend/src/screens/floorplan/editor.css +++ b/src/frontend/src/screens/floorplan/editor.css @@ -208,7 +208,7 @@ font-size: var(--fs-body); color: var(--color-neutral-700); } -.kx-switch { +.kx-eswitch { width: 34px; height: 18px; border-radius: var(--radius-pill); @@ -217,10 +217,10 @@ position: relative; transition: background 0.15s ease; } -.kx-switch.is-on { +.kx-eswitch.is-on { background: var(--color-primary-600); } -.kx-switch__knob { +.kx-eswitch__knob { position: absolute; top: 2px; left: 2px; @@ -230,7 +230,7 @@ background: var(--color-white); transition: left 0.15s ease; } -.kx-switch.is-on .kx-switch__knob { +.kx-eswitch.is-on .kx-eswitch__knob { left: 18px; } @@ -352,7 +352,7 @@ background: var(--color-ai-surface, #efeaff); color: var(--color-ai-accent, #6d4aff); } -.kx-dot { +.kx-edot { width: 3px; height: 3px; border-radius: 50%; diff --git a/src/frontend/src/screens/gallery/VisualizationGalleryPage.tsx b/src/frontend/src/screens/gallery/VisualizationGalleryPage.tsx index 3196943..80ad7f7 100644 --- a/src/frontend/src/screens/gallery/VisualizationGalleryPage.tsx +++ b/src/frontend/src/screens/gallery/VisualizationGalleryPage.tsx @@ -133,15 +133,15 @@ export function VisualizationGalleryPage() { {lightbox && (
setLightbox(null)} /> -
+
-
+
{lightbox.shotPreset === 'S5' ? ( )}
-
-
+
+
생성일
{new Date(lightbox.createdAt).toLocaleString('ko-KR')}
@@ -183,7 +183,7 @@ export function VisualizationGalleryPage() {
{lightbox.schemaHash ?? '—'}
-

{lightbox.notice}

+

{lightbox.notice}

diff --git a/src/frontend/src/screens/gallery/gallery.css b/src/frontend/src/screens/gallery/gallery.css index 5756d66..904ad2d 100644 --- a/src/frontend/src/screens/gallery/gallery.css +++ b/src/frontend/src/screens/gallery/gallery.css @@ -112,7 +112,7 @@ } /* 라이트박스 */ -.kx-lightbox { +.kx-glightbox { position: relative; z-index: 1; width: min(880px, 94vw); @@ -123,7 +123,7 @@ padding: var(--space-5); box-shadow: var(--shadow-level2); } -.kx-lightbox__close { +.kx-glightbox__close { position: absolute; top: var(--space-3); right: var(--space-3); @@ -134,25 +134,25 @@ height: 32px; color: var(--color-neutral-700); } -.kx-lightbox__stage { +.kx-glightbox__stage { margin-bottom: var(--space-4); } -.kx-lightbox__dl { +.kx-glightbox__dl { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: var(--space-3); font-size: var(--fs-caption); } -.kx-lightbox__dl dt { +.kx-glightbox__dl dt { color: var(--color-neutral-500); margin-bottom: 2px; } -.kx-lightbox__dl dd { +.kx-glightbox__dl dd { margin: 0; color: var(--color-neutral-900); word-break: break-all; } -.kx-lightbox__notice { +.kx-glightbox__notice { margin-top: var(--space-3); font-size: var(--fs-micro); color: var(--color-neutral-500); diff --git a/src/frontend/src/screens/visitor/LeadScoringPage.tsx b/src/frontend/src/screens/visitor/LeadScoringPage.tsx index 58da43e..184376f 100644 --- a/src/frontend/src/screens/visitor/LeadScoringPage.tsx +++ b/src/frontend/src/screens/visitor/LeadScoringPage.tsx @@ -311,7 +311,7 @@ function LeadDetail({
    {lead.activity.map((a, i) => (
  • - + {a.text} {a.at}
  • diff --git a/src/frontend/src/screens/visitor/VisitorRegistrationDashboardPage.tsx b/src/frontend/src/screens/visitor/VisitorRegistrationDashboardPage.tsx index 61c0b6f..c32792d 100644 --- a/src/frontend/src/screens/visitor/VisitorRegistrationDashboardPage.tsx +++ b/src/frontend/src/screens/visitor/VisitorRegistrationDashboardPage.tsx @@ -166,10 +166,10 @@ export function VisitorRegistrationDashboardPage() {

    등록 · 체크인 추이

@@ -218,7 +218,7 @@ export function VisitorRegistrationDashboardPage() {
    {summary.types.map((s) => (
  • - + {s.name} {s.value}%
  • @@ -237,7 +237,7 @@ export function VisitorRegistrationDashboardPage() { {summary.forms.map((f) => (
  • - + {f.name} {f.count.toLocaleString()}명 @@ -460,7 +460,7 @@ function CheckinPill({ state }: { state: string }) { const s = (KNOWN_CHECKIN as string[]).includes(state) ? (state as CheckinState) : 'waiting'; return ( - {CHECKIN_LABEL[s]} + {CHECKIN_LABEL[s]} ); } diff --git a/src/frontend/src/screens/visitor/visitor.css b/src/frontend/src/screens/visitor/visitor.css index 77dc080..98be2d4 100644 --- a/src/frontend/src/screens/visitor/visitor.css +++ b/src/frontend/src/screens/visitor/visitor.css @@ -84,7 +84,7 @@ } /* 도트 */ -.kx-dot { +.kx-vdot { width: 8px; height: 8px; border-radius: 50%; @@ -92,10 +92,10 @@ flex-shrink: 0; background: var(--color-neutral-500); } -.kx-dot.is-on { +.kx-vdot.is-on { background: var(--color-primary-600); } -.kx-dot.is-off { +.kx-vdot.is-off { background: var(--color-neutral-200); } @@ -442,19 +442,19 @@ .kx-vis__checkin.is-done { color: var(--color-success); } -.kx-vis__checkin.is-done .kx-dot { +.kx-vis__checkin.is-done .kx-vdot { background: var(--color-success); } .kx-vis__checkin.is-waiting { color: var(--color-neutral-500); } -.kx-vis__checkin.is-waiting .kx-dot { +.kx-vis__checkin.is-waiting .kx-vdot { background: var(--color-neutral-500); } .kx-vis__checkin.is-cancelled { color: var(--color-error); } -.kx-vis__checkin.is-cancelled .kx-dot { +.kx-vis__checkin.is-cancelled .kx-vdot { background: var(--color-error); } @@ -734,7 +734,7 @@ align-items: baseline; gap: var(--space-2); } -.kx-vis__activity .kx-dot { +.kx-vis__activity .kx-vdot { background: var(--color-ai-accent); align-self: center; }