import { ChevronDown, Code, Terminal } from 'lucide-react' import { useRouter } from 'next/router' import { useParams } from 'common' import { TerminalInstructions } from 'components/interfaces/Functions/TerminalInstructions' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization' import { useAiAssistantStateSnapshot } from 'state/ai-assistant-state' import { AiIconAnimation, Button, Dialog, DialogContent, DialogSection, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from 'ui' import { SIDEBAR_KEYS } from 'components/layouts/ProjectLayout/LayoutSidebar/LayoutSidebarProvider' import { useSidebarManagerSnapshot } from 'state/sidebar-manager-state' export const DeployEdgeFunctionButton = () => { const router = useRouter() const { ref } = useParams() const { data: org } = useSelectedOrganizationQuery() const snap = useAiAssistantStateSnapshot() const { openSidebar } = useSidebarManagerSnapshot() const { mutate: sendEvent } = useSendEventMutation() return ( { router.push(`/project/${ref}/functions/new`) sendEvent({ action: 'edge_function_via_editor_button_clicked', properties: { origin: 'secondary_action' }, groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) }} className="gap-4" >
Via Editor

Write and deploy in the browser

{ e.preventDefault() sendEvent({ action: 'edge_function_via_cli_button_clicked', properties: { origin: 'secondary_action' }, groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) }} >
Via CLI

Write locally, deploy with the CLI

Create your first Edge Function via the CLI
{ openSidebar(SIDEBAR_KEYS.AI_ASSISTANT) snap.newChat({ name: 'Create new edge function', initialInput: `Create a new edge function that ...`, suggestions: { title: 'I can help you create a new edge function. Here are a few example prompts to get you started:', prompts: [ { label: 'Stripe Payments', description: 'Create a new edge function that processes payments with Stripe', }, { label: 'Email with Resend', description: 'Create a new edge function that sends emails with Resend', }, { label: 'PDF Generator', description: 'Create a new edge function that generates PDFs from HTML templates', }, ], }, }) sendEvent({ action: 'edge_function_ai_assistant_button_clicked', properties: { origin: 'secondary_action' }, groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) }} >
Via AI Assistant

Let the Assistant write and deploy for you

) }