"use client"; import Button from "@components/Button"; import InlineLink from "@components/InlineLink"; import { Input } from "@components/Input"; import { Modal, ModalClose, ModalContent, ModalFooter, ModalTrigger, } from "@components/modal/Modal"; import ModalHeader from "@components/modal/ModalHeader"; import { notify } from "@components/Notification"; import Paragraph from "@components/Paragraph"; import Separator from "@components/Separator"; import { IconSettings2 } from "@tabler/icons-react"; import { useApiCall } from "@utils/api"; import { ExternalLinkIcon, PlusCircle, User2 } from "lucide-react"; import React, { useMemo, useState } from "react"; import { useSWRConfig } from "swr"; import { Role, User } from "@/interfaces/User"; import { UserRoleSelector } from "@/modules/users/UserRoleSelector"; type Props = { children: React.ReactNode; }; export default function ServiceUserModal({ children }: Props) { const [modal, setModal] = useState(false); return ( <> {children} setModal(false)} /> > ); } type ModalProps = { onSuccess?: () => void; }; export function ServiceUserModalContent({ onSuccess }: ModalProps) { const userRequest = useApiCall("/users"); const { mutate } = useSWRConfig(); const [name, setName] = useState(""); const [role, setRole] = useState("user"); const create = async () => { notify({ title: "Service user created", description: `${name} was successfully created.`, promise: userRequest .post({ name, role, auto_groups: [], is_service_user: true, }) .then(() => { onSuccess && onSuccess(); mutate("/users?service_user=true"); }), loadingMessage: "Creating service user...", }); }; const isDisabled = useMemo(() => { return name.length === 0; }, [name]); return ( } title={"Create Service User"} description={ "Service users are non-login users that are not associated with any specific person." } color={"netbird"} /> } placeholder={"John Doe"} value={name} data-cy={"service-user-name"} onChange={(e) => setName(e.target.value)} /> Learn more about Service Users Cancel Create Service User ); }