import * as React from "react" import { buttonVariants } from "@/components/ui/button" import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, SheetTrigger, } from "@/components/ui/sheet" import { Form, FormControl, FormField, FormItem, FormLabel, } from "@/components/ui/form" import { Button } from "@/components/ui/button" import { cn } from "@/lib/utils" import { LoaderCircleIcon, UsersIcon } from "lucide-react" import { set, useForm } from "react-hook-form" import { zodResolver } from "@hookform/resolvers/zod" import { z } from "zod" import { Switch } from "../ui/switch" import { useAppDispatch, useAppSelector } from "@/common/hooks" import { Input } from "../ui/input" import { setTrulienceSettings } from "@/store/reducers/global" import { toast } from "sonner" export function TrulienceCfgSheet() { const dispatch = useAppDispatch() const trulienceSettings = useAppSelector((state) => state.global.trulienceSettings) return ( Trulience Avatar You can configure the Trulience Avatar settings here. This will give you a nice avatar for your chat.
{ if (data.enable_trulience_avatar === true) { if (!data.trulience_avatar_id) { toast.error("Trulience Settings", { description: `Please provide Trulience Avatar ID`, }) return } } dispatch(setTrulienceSettings({ enabled: data.enable_trulience_avatar as boolean, avatarId: data.trulience_avatar_id as string, avatarToken: data.trulience_avatar_token as string, avatarDesktopLargeWindow: data.trulience_large_window as boolean, trulienceSDK: data.trulience_sdk_url as string, animationURL: data.trulience_animation_url as string, })) toast.success("Trulience Settings", { description: `Settings updated successfully`, }) }} />
); } const TrulienceCfgForm = ({ initialData, onUpdate, }: { initialData: Record; onUpdate: (data: Record) => void; }) => { const formSchema = z.record(z.string(), z.union([z.string(), z.boolean(), z.null()])); const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: initialData, }); const { watch } = form; // Watch for changes in "enable_trulience_avatar" field const enableTrulienceAvatar = watch("enable_trulience_avatar"); const onSubmit = (data: z.infer) => { onUpdate(data); }; return (
( Enable Trulience Avatar
)} /> { enableTrulienceAvatar && ( <> ( Trulience Avatar ID
)} /> ( Trulience Avatar Token
)} /> ( Trulience Large Window
)} /> ( Trulience SDK URL
)} /> ( Trulience Animation URL
)} /> ) } ); };