Skip to content

Commit c82ac97

Browse files
committed
pretty spin
1 parent 36568bc commit c82ac97

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed

poliloom-gui/src/components/layout/Header.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,10 @@ export function Header() {
8585
size="small"
8686
className="max-md:text-lg max-md:py-4 max-md:px-6 max-md:justify-start"
8787
>
88-
<SpinningCounter value={evaluationCount ?? 0} className="mr-2" /> Evaluations
88+
<SpinningCounter
89+
value={evaluationCount ?? 0}
90+
title="Total accepted and rejected statements"
91+
/>
8992
</Button>
9093
)}
9194
{status === 'authenticated' ? (

poliloom-gui/src/components/ui/SpinningCounter.tsx

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,42 +4,52 @@ interface SpinningCounterProps {
44
value: number
55
className?: string
66
minDigits?: number
7+
title?: string
78
}
89

10+
const DIGIT_HEIGHT = 22
11+
912
function DigitWheel({ digit }: { digit: number }) {
1013
return (
11-
<div className="relative h-5 w-3 overflow-hidden bg-zinc-900 rounded-sm">
14+
<div
15+
className="relative w-4 overflow-hidden bg-gray-50 border-x border-gray-100 first:border-l-0 first:rounded-l last:border-r-0 last:rounded-r"
16+
style={{ height: DIGIT_HEIGHT }}
17+
>
1218
<div
1319
className="absolute w-full transition-transform duration-500 ease-out"
1420
style={{
15-
transform: `translateY(-${digit * 20}px)`,
21+
transform: `translateY(-${digit * DIGIT_HEIGHT}px)`,
1622
}}
1723
>
1824
{[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map((n) => (
1925
<div
2026
key={n}
21-
className="h-5 flex items-center justify-center text-white font-bold text-xs leading-none"
27+
className="flex items-center justify-center text-gray-700 font-semibold text-sm leading-none tabular-nums"
28+
style={{ height: DIGIT_HEIGHT }}
2229
>
2330
{n}
2431
</div>
2532
))}
2633
</div>
27-
{/* Subtle shine overlay */}
28-
<div className="absolute inset-0 bg-gradient-to-b from-white/10 via-transparent to-black/20 pointer-events-none" />
2934
</div>
3035
)
3136
}
3237

33-
export function SpinningCounter({ value, className = '', minDigits = 4 }: SpinningCounterProps) {
38+
export function SpinningCounter({
39+
value,
40+
className = '',
41+
minDigits = 4,
42+
title,
43+
}: SpinningCounterProps) {
3444
// Convert to string and pad with zeros, always one extra leading zero
3545
const valueStr = String(value)
3646
const padLength = Math.max(minDigits, valueStr.length + 1)
3747
const digits = valueStr.padStart(padLength, '0').split('').map(Number)
3848

3949
return (
4050
<div
41-
className={`inline-flex items-center gap-[1px] bg-zinc-800 p-[3px] rounded shadow-inner ${className}`}
42-
style={{ boxShadow: 'inset 0 2px 4px rgba(0,0,0,0.3)' }}
51+
className={`inline-flex items-center bg-white border border-gray-200 rounded-md overflow-hidden ${className}`}
52+
title={title}
4353
>
4454
{digits.map((digit, index) => (
4555
<DigitWheel key={index} digit={digit} />

0 commit comments

Comments
 (0)