@@ -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+
912function 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