import { useState } from "react"; import { Button } from "@/src/components/ui/button"; import { Dialog, DialogBody, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/src/components/ui/dialog"; import { Input } from "@/src/components/ui/input"; import { api } from "@/src/utils/api"; import { toast } from "sonner"; import { nanoid } from "nanoid"; export const BillingDiscountCodeButton = ({ orgId, }: { orgId: string | undefined; }) => { const [code, setCode] = useState(""); const [open, setOpen] = useState(false); const [processing, setProcessing] = useState(false); const [opId, setOpId] = useState(null); const utils = api.useUtils(); const mutation = api.cloudBilling.applyPromotionCode.useMutation({ onSuccess: async () => { toast.success("Promotion code applied"); setProcessing(false); setOpen(false); setCode(""); setOpId(null); await Promise.all([ utils.cloudBilling.getSubscriptionInfo.invalidate(), utils.cloudBilling.getInvoices.invalidate(), ]); }, onError: (err) => { setProcessing(false); toast.error(err.message || "Failed to apply promotion code"); }, }); if (!orgId) return null; return ( Add Promotion Code

Enter a valid promotion code to apply it to your subscription.

setCode(e.target.value)} placeholder="PROMO2025" disabled={processing} />
); };