import { createEffect, createSignal } from "solid-js" import type { Relay } from "@/lib/hooks" import { slugify } from "@/lib/slugify" export type RelayFormValues = { info_name: string subdomain: string info_icon: string info_description: string } type RelayFormProps = { initialValues: Pick syncSubdomainWithName?: boolean onSubmit: (values: RelayFormValues, e: Event) => void | Promise submitting: boolean error?: string submitLabel: string submittingLabel: string } export default function RelayForm(props: RelayFormProps) { const [name, setName] = createSignal(props.initialValues.info_name) const [subdomain, setSubdomain] = createSignal(props.initialValues.subdomain) const [icon, setIcon] = createSignal(props.initialValues.info_icon) const [description, setDescription] = createSignal(props.initialValues.info_description) createEffect(() => { setName(props.initialValues.info_name) setSubdomain(props.initialValues.subdomain) setIcon(props.initialValues.info_icon) setDescription(props.initialValues.info_description) }) function handleSubmit(e: Event) { e.preventDefault() void props.onSubmit( { info_name: name(), subdomain: subdomain(), info_icon: icon(), info_description: description(), }, e, ) } return (
{/* Basic info */}
{ const value = e.currentTarget.value setName(value) if (props.syncSubdomainWithName) setSubdomain(slugify(value)) }} required class="w-full border border-gray-300 rounded-lg px-3 py-2" />
setSubdomain(e.currentTarget.value)} required class="flex-1 px-3 py-2" /> .spaces.coracle.social
setIcon(e.currentTarget.value)} class="w-full border border-gray-300 rounded-lg px-3 py-2" />