el.xwx.moe/components/Modal/Link/index.tsx

94 lines
2.7 KiB
TypeScript
Raw Normal View History

import { Tab } from "@headlessui/react";
import { LinkIncludingShortenedCollectionAndTags } from "@/types/global";
2023-06-26 18:35:12 -05:00
import AddOrEditLink from "./AddOrEditLink";
import LinkDetails from "./LinkDetails";
type Props =
| {
toggleLinkModal: Function;
method: "CREATE";
2023-06-24 16:54:35 -05:00
isOwnerOrMod?: boolean;
activeLink?: LinkIncludingShortenedCollectionAndTags;
defaultIndex?: number;
className?: string;
}
| {
toggleLinkModal: Function;
method: "UPDATE";
2023-06-24 16:54:35 -05:00
isOwnerOrMod: boolean;
activeLink: LinkIncludingShortenedCollectionAndTags;
defaultIndex?: number;
className?: string;
};
2023-06-24 16:54:35 -05:00
export default function LinkModal({
className,
defaultIndex,
toggleLinkModal,
2023-06-24 16:54:35 -05:00
isOwnerOrMod,
activeLink,
method,
}: Props) {
return (
<div className={className}>
<Tab.Group defaultIndex={defaultIndex}>
{method === "CREATE" && (
2023-08-11 00:11:02 -05:00
<p className="text-xl text-black dark:text-white text-center">
New Link
</p>
)}
2023-06-24 08:17:24 -05:00
<Tab.List
2023-08-11 00:11:02 -05:00
className={`flex justify-center flex-col max-w-[15rem] sm:max-w-[30rem] mx-auto sm:flex-row gap-2 sm:gap-3 mb-5 text-black dark:text-white ${
2023-06-24 16:54:35 -05:00
isOwnerOrMod ? "" : "pb-8"
2023-06-24 08:17:24 -05:00
}`}
>
2023-06-24 16:54:35 -05:00
{method === "UPDATE" && isOwnerOrMod && (
<>
<Tab
className={({ selected }) =>
selected
2023-08-14 22:25:25 -05:00
? "px-2 py-1 bg-sky-200 dark:bg-sky-600 duration-100 rounded-md outline-none"
: "px-2 py-1 hover:bg-slate-200 hover:dark:bg-neutral-700 rounded-md duration-100 outline-none"
}
>
Link Details
</Tab>
<Tab
className={({ selected }) =>
selected
2023-08-14 22:25:25 -05:00
? "px-2 py-1 bg-sky-200 dark:bg-sky-600 duration-100 rounded-md outline-none"
: "px-2 py-1 hover:bg-slate-200 hover:dark:bg-neutral-700 rounded-md duration-100 outline-none"
}
>
Edit Link
</Tab>
</>
)}
</Tab.List>
<Tab.Panels>
{activeLink && method === "UPDATE" && (
<Tab.Panel>
<LinkDetails link={activeLink} />
</Tab.Panel>
)}
<Tab.Panel>
{activeLink && method === "UPDATE" ? (
2023-06-26 18:35:12 -05:00
<AddOrEditLink
toggleLinkModal={toggleLinkModal}
method="UPDATE"
activeLink={activeLink}
/>
) : (
2023-06-26 18:35:12 -05:00
<AddOrEditLink
toggleLinkModal={toggleLinkModal}
method="CREATE"
/>
)}
</Tab.Panel>
</Tab.Panels>
</Tab.Group>
</div>
);
}