import { CheckIcon, SparklesIcon, StarsIcon } from "lucide-react"; import { ReactNode, useState } from "react"; import { Badge } from "src/components/ui/badge"; import { ExternalLinkButton } from "src/components/ui/custom/external-link-button"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "src/components/ui/dialog"; import { DropdownMenuItem } from "src/components/ui/dropdown-menu"; import { Separator } from "src/components/ui/separator"; import { useAlbyMe } from "src/hooks/useAlbyMe"; import { useInfo } from "src/hooks/useInfo"; interface UpgradeDialogProps { children?: ReactNode; open?: boolean; onOpenChange?: (open: boolean) => void; } interface ProDropdownMenuItemProps { children: ReactNode; onClick?: () => void; } export function ProDropdownMenuItem({ children, onClick, }: ProDropdownMenuItemProps) { const { data: albyMe } = useAlbyMe(); if (!albyMe?.subscription.plan_code) { return ( {children} Pro ); } return ( {children} Pro ); } export const UpgradeDialog = ({ children, open: controlledOpen, onOpenChange: controlledOnOpenChange, }: UpgradeDialogProps) => { const [internalOpen, setInternalOpen] = useState(false); const open = controlledOpen ?? internalOpen; const setOpen = controlledOnOpenChange ?? setInternalOpen; const { data: albyMe } = useAlbyMe(); const { data: info } = useInfo(); if (!info || (info.albyAccountConnected && !albyMe)) { // still loading - make sure button does not incorrectly show return; } if (albyMe?.subscription.plan_code) { return null; } return ( {children && ( setOpen(true)} className="cursor-pointer"> {children} )} Upgrade to Pro Upgrade to Alby Hub Pro to unlock advanced features and help fund Alby's open-source work. Do more with your Hub Pro Unlock advanced features and help fund Alby's open-source work. $3 / month Billed $36 yearly · bitcoin or credit card · cancel anytime {[ "Unlimited sub-wallets", info.backendType === "LDK" && "Encrypted remote backups", "Custom lightning address", "Export transactions", "Email notifications", "Priority support", ] .filter((b): b is string => Boolean(b)) .map((benefit) => ( {benefit} ))} Upgrade to Pro 30-day money-back guarantee ); };
Unlock advanced features and help fund Alby's open-source work.
Billed $36 yearly · bitcoin or credit card · cancel anytime
30-day money-back guarantee