♻️ refactor: extract bookmark logic from banner component
This commit is contained in:
23
features/home/sections/Hero/components/AddToList.tsx
Normal file
23
features/home/sections/Hero/components/AddToList.tsx
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import { useAuth } from "@/shared/contexts/AuthContext";
|
||||||
|
import { Button } from "@/shared/libs/shadcn/ui/button";
|
||||||
|
import { Icon } from "@iconify/react";
|
||||||
|
|
||||||
|
const AddToList = ({ mediaId }: { mediaId: string }) => {
|
||||||
|
const { session } = useAuth();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{session?.user && (
|
||||||
|
<Button
|
||||||
|
variant="secondary"
|
||||||
|
className="h-full flex gap-1 px-4 rounded-xl border border-neutral-400/10 bg-neutral-950/20 hover:bg-neutral-950/40 backdrop-blur-lg text-neutral-200"
|
||||||
|
>
|
||||||
|
<Icon icon="boxicons:bookmark" className="size-5.5" />
|
||||||
|
<span>Add to List</span>
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default AddToList;
|
||||||
@ -6,7 +6,7 @@ import { Autoplay, Navigation, Pagination } from "swiper/modules";
|
|||||||
import { Swiper, SwiperSlide } from "swiper/react";
|
import { Swiper, SwiperSlide } from "swiper/react";
|
||||||
import { Icon } from "@iconify/react";
|
import { Icon } from "@iconify/react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { useAuth } from "@/shared/contexts/AuthContext";
|
import AddToList from "./AddToList";
|
||||||
|
|
||||||
export interface HeroSwiperProps {
|
export interface HeroSwiperProps {
|
||||||
data: {
|
data: {
|
||||||
@ -23,7 +23,6 @@ export interface HeroSwiperProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const HeroSwiper = (props: HeroSwiperProps) => {
|
const HeroSwiper = (props: HeroSwiperProps) => {
|
||||||
const { session } = useAuth();
|
|
||||||
return (
|
return (
|
||||||
<div className="h-full rounded-lg overflow-hidden">
|
<div className="h-full rounded-lg overflow-hidden">
|
||||||
<Swiper
|
<Swiper
|
||||||
@ -84,15 +83,7 @@ const HeroSwiper = (props: HeroSwiperProps) => {
|
|||||||
</span>
|
</span>
|
||||||
</Button>
|
</Button>
|
||||||
</Link>
|
</Link>
|
||||||
{session?.user && (
|
<AddToList mediaId={slide.id} />
|
||||||
<Button
|
|
||||||
variant="secondary"
|
|
||||||
className="h-full flex gap-2 px-4 rounded-xl border border-neutral-400/10 bg-neutral-950/20 hover:bg-neutral-950/40 backdrop-blur-lg text-neutral-200"
|
|
||||||
>
|
|
||||||
<Icon icon="boxicons:bookmark" className="size-6" />
|
|
||||||
<span>Add to List</span>
|
|
||||||
</Button>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</SwiperSlide>
|
</SwiperSlide>
|
||||||
|
|||||||
Reference in New Issue
Block a user