import { zodResolver } from "@hookform/resolvers/zod"; import { t, Trans } from "@lingui/macro"; import { defaultProfile, profileSchema } from "@reactive-resume/schema"; import { Avatar, AvatarImage, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Input, } from "@reactive-resume/ui"; import { ControllerRenderProps, useForm } from "react-hook-form"; import { z } from "zod"; import { SectionDialog } from "../sections/shared/section-dialog"; import { URLInput } from "../sections/shared/url-input"; import { useDebounceValue } from "usehooks-ts"; import { useCallback } from "react"; const formSchema = profileSchema; type FormValues = z.infer; export const ProfilesDialog = () => { const form = useForm({ defaultValues: defaultProfile, resolver: zodResolver(formSchema), }); const [iconSrc, setIconSrc] = useDebounceValue("", 400) const handleIconChange = useCallback((event: React.ChangeEvent) => { if (event.target.value === "") { setIconSrc(""); } else { setIconSrc(`https://cdn.simpleicons.org/${event.target.value}`); } }, []); return ( id="profiles" form={form} defaultValues={defaultProfile}>
( {t`Network`} {/* eslint-disable-next-line lingui/no-unlocalized-strings */} )} /> ( {t`Username`} )} /> ( {t`Website`} )} /> ( {t`Icon`}
{iconSrc && ( )} { field.onChange(event) handleIconChange(event) }} />
Powered by{" "} Simple Icons
)} />
); };