import { Show, createSignal } from "solid-js" import { useNavigate } from "@solidjs/router" import { slugify } from "@/lib/slugify" import { createRelayForActiveTenant } from "@/lib/hooks" import { PLANS, type PlanId } from "@/lib/api" export default function RelayNew() { const navigate = useNavigate() const [name, setName] = createSignal("") const [subdomain, setSubdomain] = createSignal("") const [icon, setIcon] = createSignal("") const [description, setDescription] = createSignal("") const [plan, setPlan] = createSignal("free") const [submitting, setSubmitting] = createSignal(false) const [subdomainError, setSubdomainError] = createSignal("") function handleNameInput(value: string) { setName(value) setSubdomain(slugify(value)) setSubdomainError("") } async function handleSubmit(e: Event) { e.preventDefault() setSubdomainError("") setSubmitting(true) try { const relay = await createRelayForActiveTenant({ subdomain: slugify(subdomain()), plan: plan(), info_name: name().trim(), info_icon: icon().trim(), info_description: description().trim(), policy_public_join: 0, policy_strip_signatures: 0, groups_enabled: 1, management_enabled: 1, blossom_enabled: plan() === "free" ? 0 : 1, livekit_enabled: plan() === "free" ? 0 : 1, push_enabled: 1, }) navigate(`/relays/${relay.id}`) } catch (e) { setSubdomainError(e instanceof Error ? e.message : "Failed to create relay") } finally { setSubmitting(false) } } return (

New Relay

handleNameInput(e.currentTarget.value)} placeholder="My Community" class="w-full border border-gray-300 rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500" />
{ setSubdomain(e.currentTarget.value) setSubdomainError("") }} placeholder="my-community" class="flex-1 px-3 py-2 focus:outline-none" /> .spaces.coracle.social
{subdomainError()}
setIcon(e.currentTarget.value)} placeholder="https://example.com/icon.png" class="w-full border border-gray-300 rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500" />