| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import { Check, Mail } from 'lucide-react'
- import Link from 'next/link'
- import { useRouter } from 'next/router'
- import { useState } from 'react'
- import { Button, cn, DialogSectionSeparator } from 'ui'
- import { Admonition } from 'ui-patterns'
- import { LinkSupportTicketForm } from './LinkSupportTicketForm'
- export function LinkSupportTicketPage() {
- return (
- <div className="mx-auto my-16 max-w-2xl w-full px-4 lg:px-6">
- <LinkSupportTicketPageContent />
- </div>
- )
- }
- function LinkSupportTicketPageContent() {
- const router = useRouter()
- const conversationId = router.query.conversationId as string | undefined
- const [isSuccess, setIsSuccess] = useState(false)
- // Wait for router to be ready before checking for conversationId
- if (!router.isReady) {
- return null
- }
- if (!conversationId) {
- return (
- <Admonition
- type="warning"
- title="Missing conversation ID"
- description="Please provide a conversationId in the URL to link your support ticket."
- />
- )
- }
- return (
- <div
- className={cn(
- 'min-w-full w-full space-y-12 rounded-sm border bg-panel-body-light shadow-md border-default'
- )}
- >
- {isSuccess ? (
- <LinkSupportTicketSuccess />
- ) : (
- <LinkSupportTicketForm
- conversationId={conversationId}
- onSuccess={() => setIsSuccess(true)}
- />
- )}
- </div>
- )
- }
- function LinkSupportTicketSuccess() {
- return (
- <div className="w-full flex flex-col items-center">
- <div className="flex flex-col items-center gap-y-4 py-8">
- <div className="relative">
- <Mail strokeWidth={1.5} size={60} className="text-brand" />
- <div className="h-6 w-6 rounded-full bg-brand absolute bottom-1 -right-1.5 flex items-center justify-center">
- <Check strokeWidth={4} size={16} className="text-contrast" />
- </div>
- </div>
- <div className="flex items-center flex-col gap-y-2 text-center">
- <h3 className="text-xl">Support ticket linked</h3>
- <p className="text-sm text-foreground-light">
- Your support conversation has been linked to your account.
- </p>
- </div>
- </div>
- <DialogSectionSeparator />
- <div className="w-full py-4 px-4 flex items-center justify-end">
- <Button asChild type="default">
- <Link href="/">Finish</Link>
- </Button>
- </div>
- </div>
- )
- }
|