mirror of
https://github.com/supabase/supabase.git
synced 2026-10-17 15:19:08 +03:00
* duplicate page * whale init * table background * prepare * sync undocumented remote schema from master * revert remote schema sync * add lw12 tickets migration file * ticket init * set up lw12 ticket layout * finish ticket layout and customization form * lw12 ticket og * ticket styling * code highlight border * launch week migrations * local dev progress * keep local gh config * comment section * comment section * comment out username.tsx * remove lw/ticekts temp * update copy * fix migration view * redirect to try * use misc * lw12 og * share * share correct * env var * username page * update example env * push new db schema * trigger deploy * update ticket og * ticket themes * bypass browser * change env var name * fix * fix * process env * create client server side * lw announcements * promoToast * animated bg * update ticket og bg * minor details * secret ticket * social share text * social share textgst * flow text * update og * update og handler * Update index.ts * use functions.invoke and use generic supabase URL * Update index.ts * Update handler.tsx * Update package-lock.json * Update handler.tsx * add next api route * moved to vercel edge function * set revalidate * Update route.tsx * Delete lw-ticket-og.tsx * Update route.tsx * Update [username].tsx * Update [username].tsx * add more fetches * Update turbo.json * ticket themes updated * copy and layout updated * Update index.tsx * Update Ticket.tsx * Update TicketingFlow.tsx * update countdown * updated bg * small updates * moat * Update [username].tsx * Update 20240723155310_add_lw12_ticketing_schema.sql * optimistic ticket stuff og generation * Update index.tsx * updated layout * update themes in og * Update constants.ts * attr renamed * Update TicketingFlow.tsx * Update TicketActions.tsx * grammar * moar updates * Update TicketActions.tsx * Update TicketActions2.tsx * Update TicketActions.tsx * Update Hero.tsx * Update TicketingFlow.tsx * remove console logs --------- Co-authored-by: Francesco Sansalvadore <f.sansalvadore@gmail.com>
54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
import { cn } from 'ui/src/lib/utils'
|
|
import CountdownStep from './CountdownStep'
|
|
|
|
interface CountdownWidgetProps {
|
|
days?: string
|
|
hours?: string
|
|
minutes?: string
|
|
seconds?: string
|
|
showCard?: boolean
|
|
className?: string
|
|
size?: 'small' | 'large'
|
|
}
|
|
|
|
export function CountdownWidget({
|
|
days,
|
|
hours,
|
|
minutes,
|
|
seconds,
|
|
showCard = true,
|
|
className,
|
|
size,
|
|
}: CountdownWidgetProps) {
|
|
const isLarge = size === 'large'
|
|
const Colon = () => (
|
|
<span className={cn('text-xs mx-px text-foreground-muted', isLarge && 'text-lg')}>:</span>
|
|
)
|
|
|
|
return (
|
|
<div className={cn('flex gap-1 items-center text-foreground-light', className)}>
|
|
{days !== undefined && days != '0' ? (
|
|
<>
|
|
<CountdownStep value={days} unit="d" showCard={showCard} size={size} />
|
|
<Colon />
|
|
</>
|
|
) : null}
|
|
{hours !== undefined && hours != '0' ? (
|
|
<>
|
|
<CountdownStep value={hours} unit="h" showCard={showCard} size={size} />
|
|
<Colon />
|
|
</>
|
|
) : null}
|
|
{minutes !== undefined && minutes != '0' ? (
|
|
<>
|
|
<CountdownStep value={minutes} unit="m" showCard={showCard} size={size} />
|
|
{seconds !== undefined && <Colon />}
|
|
</>
|
|
) : null}
|
|
{seconds !== undefined ? (
|
|
<CountdownStep value={seconds} unit="s" showCard={showCard} size={size} />
|
|
) : null}
|
|
</div>
|
|
)
|
|
}
|