diff --git a/src/App.tsx b/src/App.tsx index 750d59a..07350ea 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -25,11 +25,19 @@ export default function App() { const [isRotating, setIsRotating] = useState(() => !prefersReducedMotion()) const [resetRevision, setResetRevision] = useState(0) const selectedPeriod = getPeriodOption(mode) + const comparisonPeriod = getPeriodOption(mode === 'week' ? 'month' : 'week') const allActivityCount = sumActivityCount(selectedPeriod.buckets) + const comparisonActivityCount = sumActivityCount(comparisonPeriod.buckets) const visibleBuckets = selectedPeriod.buckets.filter((bucket) => visibleKinds.has(bucket.kind)) const visibleActivityCount = sumActivityCount(visibleBuckets) const topBucket = getTopBucket(visibleBuckets) const selectedBucket = selectedPeriod.buckets.find((bucket) => bucket.kind === selectedKind) ?? topBucket + const comparisonBucket = + comparisonPeriod.buckets.find((bucket) => bucket.kind === selectedBucket.kind) ?? comparisonPeriod.buckets[0] + const selectedShare = getActivityShare(selectedBucket, allActivityCount) + const comparisonShare = getActivityShare(comparisonBucket, comparisonActivityCount) + const shareDelta = selectedShare - comparisonShare + const shareDeltaLabel = shareDelta === 0 ? '변화 없음' : `${shareDelta > 0 ? '+' : ''}${shareDelta}%p` const listedBuckets = [...selectedPeriod.buckets].sort((left, right) => listOrder === 'count' ? right.count - left.count : 0, ) @@ -205,13 +213,23 @@ export default function App() {

{selectedBucket.description}

-
- +
+ + {selectedPeriod.metricLabel} {selectedShare}% + + + + {comparisonPeriod.metricLabel} {comparisonShare}% + + + {comparisonPeriod.metricLabel} 대비 {shareDeltaLabel} +
diff --git a/src/index.css b/src/index.css index aa62492..4205b65 100644 --- a/src/index.css +++ b/src/index.css @@ -363,8 +363,12 @@ input:focus-visible { cursor: not-allowed; } +.inspector { + padding-block: 18px; +} + .inspector p { - margin: 12px 0 0; + margin: 8px 0 0; color: var(--color-muted); font-size: 13px; line-height: 1.55; @@ -374,7 +378,7 @@ input:focus-visible { display: inline-flex; align-items: center; gap: 4px; - margin-top: 12px; + margin-top: 8px; border: 1px solid var(--color-border); border-radius: 6px; padding: 3px; @@ -407,19 +411,33 @@ input:focus-visible { font-weight: 800; } -.share-meter { - height: 5px; - margin-top: 14px; - overflow: hidden; - border-radius: var(--radius-pill); - background: color-mix(in srgb, var(--color-text) 8%, transparent); +.period-comparison { + min-height: 30px; + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 4px 7px; + margin-top: 8px; + padding: 5px 8px; + border: 1px solid var(--color-border); + border-radius: var(--radius-frame); + color: var(--color-muted); + background: var(--color-bg); + font-size: 10px; } -.share-meter span { - display: block; - height: 100%; - min-width: 5px; - border-radius: inherit; +.period-comparison strong { + color: var(--color-text); + font-variant-numeric: tabular-nums; +} + +.comparison-divider { + color: var(--color-subtle); +} + +.comparison-delta { + margin-left: auto; + font-size: 10px; } .galaxy-stage {