"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { Lock, Add, Close } from "@openstatus/icons"; import { Button } from "@openstatus/ui/components/ui/button"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@openstatus/ui/components/ui/form"; import { Input } from "@openstatus/ui/components/ui/input"; import NextLink from "next/link"; import { useTransition } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; import { Link } from "@/components/common/link"; import { FormCard, FormCardContent, FormCardDescription, FormCardFooter, FormCardFooterInfo, FormCardHeader, FormCardTitle, FormCardUpgrade, } from "@/components/forms/form-card"; // TODO: add headers const schema = z.object({ endpoint: z.url("Please enter a valid URL"), headers: z .array(z.object({ key: z.string(), value: z.string() })) .prefault([]), }); type FormValues = z.input; export function FormOtel({ locked, defaultValues, onSubmit, ...props }: Omit, "onSubmit"> & { locked?: boolean; defaultValues?: FormValues; onSubmit: (values: FormValues) => Promise; }) { const form = useForm({ resolver: zodResolver(schema), defaultValues: defaultValues ?? { endpoint: "", headers: [] }, }); const [isPending, startTransition] = useTransition(); function submitAction(values: FormValues) { if (isPending) return; startTransition(async () => { try { const promise = onSubmit(values); toast.promise(promise, { loading: "Saving...", success: "Saved", error: "Failed to save", }); await promise; } catch (error) { console.error(error); } }); } return (
{locked ? : null} OpenTelemetry Configure your OpenTelemetry Exporter. ( Endpoint )} /> ( Request Headers {field.value?.map((header, index) => (
{ const newHeaders = [...(field.value ?? [])]; newHeaders[index] = { ...newHeaders[index], key: e.target.value, }; field.onChange(newHeaders); }} /> { const newHeaders = [...(field.value ?? [])]; newHeaders[index] = { ...newHeaders[index], value: e.target.value, }; field.onChange(newHeaders); }} />
))}
)} />
Learn more about{" "} OTel . {locked ? ( ) : ( )}
); }