"use client"; import { LoadingIcon } from "@/components/LoadingIcon"; import { callServerPromise } from "@/components/callServerPromise"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { useAuth, useClerk } from "@clerk/nextjs"; import { MoreVertical } from "lucide-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; export function ButtonAction({ action, children, routerAction = "back", ...rest }: { action: () => Promise; routerAction?: "refresh" | "back"; children: React.ReactNode; }) { const [pending, setPending] = useState(false); const router = useRouter(); return ( ); } export function ButtonActionMenu(props: { title?: string; actions: { title: string; action: () => Promise; }[]; }) { const user = useAuth(); const [isLoading, setIsLoading] = useState(false); const clerk = useClerk(); return ( {props.actions.map((action) => ( { if (!user.isSignedIn) { clerk.openSignIn({ redirectUrl: window.location.href, }); return; } setIsLoading(true); await callServerPromise(action.action()); setIsLoading(false); }} > {action.title} ))} ); }