diff --git a/app/components/Discovery/Modal/PopularFilters.ts b/app/components/Discovery/Modal/PopularFilters.ts
new file mode 100644
index 0000000..82d0948
--- /dev/null
+++ b/app/components/Discovery/Modal/PopularFilters.ts
@@ -0,0 +1,34 @@
+import { FilterDefault } from "#/api/utils";
+
+export const TabOngoing = {
+ id: "ongoing",
+ name: "Онгоинги",
+ filter: {
+ ...FilterDefault,
+ sort: 3,
+ episodes_from: 1,
+ episodes_to: 48,
+ status_id: 2,
+ },
+};
+
+export const TabFinished = {
+ id: "finished",
+ name: "Завершённые",
+ filter: { ...FilterDefault, sort: 3, status_id: 1 },
+};
+
+export const TabFilms = {
+ id: "films",
+ name: "Фильмы",
+ filter: { ...FilterDefault, sort: 3, category_id: 2 },
+};
+
+export const TabOVA = {
+ id: "ova",
+ name: "OVA",
+ filter: { ...FilterDefault, sort: 3, category_id: 3 },
+};
+
+export const tabs = [TabOngoing, TabFinished, TabFilms, TabOVA];
+export const tabsId = { ongoing: 0, finished: 1, films: 2, ova: 3 };
diff --git a/app/components/Discovery/Modal/PopularModal.tsx b/app/components/Discovery/Modal/PopularModal.tsx
new file mode 100644
index 0000000..36616ab
--- /dev/null
+++ b/app/components/Discovery/Modal/PopularModal.tsx
@@ -0,0 +1,82 @@
+"use client";
+
+import { ENDPOINTS } from "#/api/config";
+import { FetchFilter, useSWRfetcher } from "#/api/utils";
+import { useUserStore } from "#/store/auth";
+import useSWR from "swr";
+
+import { tabs, tabsId } from "./PopularFilters";
+import {
+ Button,
+ ButtonGroup,
+ Modal,
+ ModalBody,
+ ModalHeader,
+} from "flowbite-react";
+import { useEffect, useState } from "react";
+import { ReleaseLink } from "#/components/ReleaseLink/ReleaseLinkUpdate";
+import { Spinner } from "#/components/Spinner/Spinner";
+type ModalProps = {
+ isOpen: boolean;
+ setIsOpen: (value: boolean) => void;
+};
+
+export const PopularModal = ({ isOpen, setIsOpen }: ModalProps) => {
+ const token = useUserStore((state) => state.token);
+ const [tab, setTab] = useState<
+ "ongoing" | "finished" | "films" | "ova" | string
+ >("ongoing");
+ const [content, setContent] = useState(null);
+
+ useEffect(() => {
+ setContent(null);
+ async function _loadReleases() {
+ const [data, error] = await FetchFilter(
+ tabs[tabsId[tab]].filter,
+ 0,
+ token
+ );
+ if (!error) {
+ setContent(data.content);
+ }
+ }
+ _loadReleases();
+ }, [tab, token]);
+
+ return (
+