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 {