mirror of
https://github.com/supabase/supabase.git
synced 2026-10-17 23:29: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>
47 lines
1.5 KiB
TypeScript
47 lines
1.5 KiB
TypeScript
import { useState, useRef } from 'react'
|
|
import { LW_URL } from '~/lib/constants'
|
|
import { Check, Copy } from 'lucide-react'
|
|
import useConfData from '../../hooks/use-conf-data'
|
|
|
|
export default function TicketCopy() {
|
|
const { userData } = useConfData()
|
|
const { username, platinum, secret } = userData
|
|
const [copied, setCopied] = useState(false)
|
|
const buttonRef = useRef<HTMLButtonElement>(null)
|
|
const hasSecretTicket = secret
|
|
const displayUrl = `.../launch-week/tickets/${username}?lw=12${
|
|
hasSecretTicket ? '&secret=true' : platinum ? `&platinum=true` : ''
|
|
}`
|
|
const url = `${LW_URL}/tickets/${username}?lw=12${
|
|
hasSecretTicket ? '&secret=true' : platinum ? `&platinum=true` : ''
|
|
}`
|
|
|
|
return (
|
|
// <div className="h-full w-full">
|
|
<button
|
|
type="button"
|
|
name="Copy"
|
|
ref={buttonRef}
|
|
onClick={() => {
|
|
navigator.clipboard.writeText(url).then(() => {
|
|
setCopied(true)
|
|
setTimeout(() => {
|
|
setCopied(false)
|
|
}, 2000)
|
|
})
|
|
}}
|
|
className="font-mono w-full flex justify-center items-center gap-2 relative text-foreground-light hover:text-foreground text-sm"
|
|
>
|
|
<div className="w-4 min-w-4 flex-shrink-0">
|
|
{copied ? (
|
|
<Check size={14} strokeWidth={3} className="text-foreground" />
|
|
) : (
|
|
<Copy size={14} strokeWidth={1.5} />
|
|
)}
|
|
</div>
|
|
<span className="truncate">{displayUrl}</span>
|
|
</button>
|
|
// </div>
|
|
)
|
|
}
|