diff --git a/src/components/pages/admin/users/(partials)/users-list-card.tsx b/src/components/pages/admin/users/(partials)/users-list-card.tsx new file mode 100644 index 0000000..14c3a0f --- /dev/null +++ b/src/components/pages/admin/users/(partials)/users-list-card.tsx @@ -0,0 +1,69 @@ +import Avatar from "@/src/components/general/avatar"; +import { NSQLITE_TURBOCI_ADMIN_USERS } from "@/src/db/types"; +import { AppContext } from "@/src/pages/_app"; +import LucideIcon from "@/twui/components/elements/lucide-icon"; +import Tag from "@/twui/components/elements/Tag"; +import Button from "@/twui/components/layout/Button"; +import Row from "@/twui/components/layout/Row"; +import Span from "@/twui/components/layout/Span"; +import Stack from "@/twui/components/layout/Stack"; +import { useContext } from "react"; +import DeleteDeplotmentUserButton from "../deployment-user/(partials)/delete-deployment-user-button"; + +type Props = { + dep_usr: NSQLITE_TURBOCI_ADMIN_USERS; +}; + +export default function UsersListCard({ dep_usr }: Props) { + const { pageProps } = useContext(AppContext); + + const is_super_admin = Boolean(dep_usr.is_super_admin); + + return ( + + + + + + {dep_usr.first_name} {dep_usr.last_name} + + + + + ); + + return ( +
{ + if (!window.confirm(`Delete User?`)) { + return; + } + + setLoading(true); + + fetchApi( + `/api/admin/delete-user`, + { + method: "POST", + body: { + user_id: dep_user.id, + }, + }, + ).then((res) => { + console.log(res); + }); + }} + > + {loading ? : passed_target || target} +
+ ); +} diff --git a/src/components/pages/admin/users/deployment-user/index.tsx b/src/components/pages/admin/users/deployment-user/index.tsx index 253d5e3..fccca18 100644 --- a/src/components/pages/admin/users/deployment-user/index.tsx +++ b/src/components/pages/admin/users/deployment-user/index.tsx @@ -4,6 +4,9 @@ import Divider from "@/twui/components/layout/Divider"; import AdminHero from "@/src/components/general/admin/hero"; import Tag from "@/twui/components/elements/Tag"; import Row from "@/twui/components/layout/Row"; +import SignupForm from "../../../auth/signup/(partials)/signup-form"; +import Stack from "@/twui/components/layout/Stack"; +import DeleteDeplotmentUserButton from "./(partials)/delete-deployment-user-button"; export default function Main() { const { pageProps } = useContext(AppContext); @@ -13,8 +16,6 @@ export default function Main() { return null; } - console.log("deployment_user", deployment_user); - const is_super_admin = Boolean(deployment_user.is_super_admin); return ( @@ -29,8 +30,19 @@ export default function Main() { ) : null} } + ctas={ + <> + + + } /> + + + ); } diff --git a/src/components/pages/auth/signup/(partials)/signup-form.tsx b/src/components/pages/auth/signup/(partials)/signup-form.tsx index ac58cc6..4f7cc44 100644 --- a/src/components/pages/auth/signup/(partials)/signup-form.tsx +++ b/src/components/pages/auth/signup/(partials)/signup-form.tsx @@ -7,6 +7,7 @@ import { APIReqObject } from "@/src/types"; import { APIResponseObject } from "@moduletrace/datasquirel/dist/package-shared/types"; import { useEffect } from "react"; import { NSQLITE_TURBOCI_ADMIN_USERS } from "@/src/db/types"; +import { twMerge } from "tailwind-merge"; type Props = { new_deployment_user?: boolean; @@ -43,6 +44,7 @@ export default function SignupForm({ { setNewUser((prev) => ({ ...prev, @@ -55,6 +57,7 @@ export default function SignupForm({ { setNewUser((prev) => ({ ...prev, @@ -67,6 +70,7 @@ export default function SignupForm({ placeholder="Email Address" title="Email" type="email" + defaultValue={existing_user?.email} changeHandler={(v) => { setNewUser((prev) => ({ ...prev, @@ -80,6 +84,7 @@ export default function SignupForm({ { setNewUser((prev) => ({ ...prev, @@ -97,47 +102,60 @@ export default function SignupForm({ } wrapperWrapperProps={{ - className: "items-start!", + className: twMerge( + "items-start!", + Boolean(existing_user?.username) + ? "opacity-70 pointer-events-none" + : "", + ), }} + disabled={Boolean(existing_user?.username)} required showLabel /> ) : null} - { - setNewUser((prev) => ({ - ...prev, - password: v, - })); - }} - validity={{ - isValid: - !Boolean(newUser.password?.match(/./)) || - !Boolean(newUser.confirmed_password?.match(/./)) - ? true - : is_password_valid, - msg: `Passwords don't match`, - }} - required - showLabel - /> - { - setNewUser((prev) => ({ - ...prev, - confirmed_password: v, - })); - setIsPasswordConfirmed(v == newUser.password); - }} - showLabel - /> + {existing_user?.id ? null : ( + <> + { + setNewUser((prev) => ({ + ...prev, + password: v, + })); + }} + validity={{ + isValid: + !Boolean(newUser.password?.match(/./)) || + !Boolean( + newUser.confirmed_password?.match(/./), + ) + ? true + : is_password_valid, + msg: `Passwords don't match`, + }} + required + showLabel + /> + { + setNewUser((prev) => ({ + ...prev, + confirmed_password: v, + })); + + setIsPasswordConfirmed(v == newUser.password); + }} + showLabel + /> + + )}