67 lines
1.6 KiB
JavaScript
Raw Permalink Normal View History

2021-08-11 15:34:10 -05:00
import Countdown from 'react-countdown'
2024-04-16 17:58:26 -05:00
export default function SimpleCountdown (props) {
2021-08-11 15:34:10 -05:00
return (
2024-04-16 17:58:26 -05:00
<CountdownShared
{...props} formatter={props => {
return (
<>
{props.formatted.minutes}:{props.formatted.seconds}
</>
)
}}
/>
)
}
export function LongCountdown (props) {
return (
<CountdownShared
{...props} formatter={props => {
return (
<>
{props.formatted.days && `${props.formatted.days} days `}
{props.formatted.hours && `${props.formatted.hours} hours `}
{props.formatted.minutes && `${props.formatted.minutes} minutes `}
{props.formatted.seconds && `${props.formatted.seconds} seconds `}
</>
)
}}
/>
)
}
export function CompactLongCountdown (props) {
return (
<CountdownShared
{...props} formatter={props => {
return (
<>
{Number(props.formatted.days) > 0
2024-04-16 17:58:26 -05:00
? ` ${props.formatted.days}d ${props.formatted.hours}h ${props.formatted.minutes}m ${props.formatted.seconds}s`
: ` ${props.formatted.hours}:${props.formatted.minutes}:${props.formatted.seconds}`}
</>
)
}}
/>
2021-08-11 15:34:10 -05:00
)
}
2023-11-21 17:32:22 -06:00
2024-04-16 17:58:26 -05:00
function CountdownShared ({ className, onComplete, date, formatter }) {
2023-11-21 17:32:22 -06:00
return (
<span className={className}>
<Countdown
date={date}
renderer={props => {
return (
<span suppressHydrationWarning>
2024-04-16 17:58:26 -05:00
{formatter(props)}
2023-11-21 17:32:22 -06:00
</span>
)
}}
onComplete={onComplete}
/>
</span>
)
}