props.setIsOpen(false)}
size={"4xl"}
>
-
Изменить никнейм
-
+ Изменить никнейм
+
{loading ?
@@ -173,8 +173,8 @@ export const ProfileEditLoginModal = (props: {
}
>
}
-
-
+
+
{_loginData.is_change_available && (
Отмена
-
+
);
};
diff --git a/app/components/Profile/Profile.EditModal.tsx b/app/components/Profile/Profile.EditModal.tsx
index 3b01f0b..d20b39c 100644
--- a/app/components/Profile/Profile.EditModal.tsx
+++ b/app/components/Profile/Profile.EditModal.tsx
@@ -1,6 +1,6 @@
"use client";
-import { FileInput, Label, Modal, useThemeMode } from "flowbite-react";
+import { FileInput, Label, Modal, ModalBody, ModalHeader, useThemeMode } from "flowbite-react";
import { Spinner } from "../Spinner/Spinner";
import useSWR from "swr";
import { ENDPOINTS } from "#/api/config";
@@ -201,8 +201,8 @@ export const ProfileEditModal = (props: {
onClose={() => props.setIsOpen(false)}
size={"7xl"}
>
-
Редактирование профиля
-
+ Редактирование профиля
+
{prefLoading ?
:
@@ -394,7 +394,7 @@ export const ProfileEditModal = (props: {
}
-
+
{props.token ?
<>
diff --git a/app/components/Profile/Profile.EditPrivacyModal.tsx b/app/components/Profile/Profile.EditPrivacyModal.tsx
index 59c8bdb..9311edf 100644
--- a/app/components/Profile/Profile.EditPrivacyModal.tsx
+++ b/app/components/Profile/Profile.EditPrivacyModal.tsx
@@ -1,6 +1,6 @@
"use client";
-import { Modal, useThemeMode } from "flowbite-react";
+import { Modal, ModalBody, ModalHeader, useThemeMode } from "flowbite-react";
import { ENDPOINTS } from "#/api/config";
import { useState } from "react";
import { toast } from "react-toastify";
@@ -98,8 +98,8 @@ export const ProfileEditPrivacyModal = (props: {
onClose={() => props.setIsOpen(false)}
size={"4xl"}
>
-
{setting_text[props.setting]}
-
+ {setting_text[props.setting]}
+
{props.setting != "none" ?
<>
@@ -202,7 +202,7 @@ export const ProfileEditPrivacyModal = (props: {
>
: ""}
-
+
);
};
diff --git a/app/components/Profile/Profile.EditSocialModal.tsx b/app/components/Profile/Profile.EditSocialModal.tsx
index 128c418..244e689 100644
--- a/app/components/Profile/Profile.EditSocialModal.tsx
+++ b/app/components/Profile/Profile.EditSocialModal.tsx
@@ -1,6 +1,15 @@
"use client";
-import { Button, Modal, Label, TextInput, useThemeMode } from "flowbite-react";
+import {
+ Button,
+ Label,
+ Modal,
+ ModalBody,
+ ModalFooter,
+ ModalHeader,
+ TextInput,
+ useThemeMode,
+} from "flowbite-react";
import { Spinner } from "../Spinner/Spinner";
import { ENDPOINTS } from "#/api/config";
import { useEffect, useState } from "react";
@@ -164,8 +173,8 @@ export const ProfileEditSocialModal = (props: {
onClose={() => props.setIsOpen(false)}
size={"4xl"}
>
-
Соц. сети
-
+ Соц. сети
+
Укажите ссылки на свои социальные сети, чтобы другие пользователи
могли с вами связаться
@@ -177,7 +186,7 @@ export const ProfileEditSocialModal = (props: {
:
-
+ ВКонтакте
-
+ Telegram
-
+ Discord
-
+ Instagram
}
-
-
+
+
_setSocialSetting()}
@@ -253,7 +262,7 @@ export const ProfileEditSocialModal = (props: {
>
Отмена
-
+
);
};
diff --git a/app/components/Profile/Profile.EditStatusModal.tsx b/app/components/Profile/Profile.EditStatusModal.tsx
index d8d870f..13cafbe 100644
--- a/app/components/Profile/Profile.EditStatusModal.tsx
+++ b/app/components/Profile/Profile.EditStatusModal.tsx
@@ -1,6 +1,6 @@
"use client";
-import { Button, Modal, Textarea, useThemeMode } from "flowbite-react";
+import { Button, Modal, ModalBody, ModalFooter, ModalHeader, Textarea, useThemeMode } from "flowbite-react";
import { ENDPOINTS } from "#/api/config";
import { useEffect, useState } from "react";
import { useSWRConfig } from "swr";
@@ -96,8 +96,8 @@ export const ProfileEditStatusModal = (props: {
onClose={() => props.setIsOpen(false)}
size={"4xl"}
>
- Изменить статус
-
+ Изменить статус
+
-
+
+
_setStatusSetting()}
@@ -123,7 +123,7 @@ export const ProfileEditStatusModal = (props: {
props.setIsOpen(false)}>
Отмена
-
+
);
};
diff --git a/app/components/Profile/Profile.ReleaseRatings.tsx b/app/components/Profile/Profile.ReleaseRatings.tsx
index c93e69f..108a522 100644
--- a/app/components/Profile/Profile.ReleaseRatings.tsx
+++ b/app/components/Profile/Profile.ReleaseRatings.tsx
@@ -1,10 +1,4 @@
-import {
- Card,
- RatingStar,
- Rating,
- Modal,
- Button,
-} from "flowbite-react";
+import { Button, Card, Modal, ModalHeader, Rating, RatingStar } from "flowbite-react";
import { unixToDate, useSWRfetcher } from "#/api/utils";
import Link from "next/link";
@@ -119,7 +113,7 @@ const ProfileReleaseRatingsModal = (props: {
onClose={() => props.setIsOpen(false)}
size={"4xl"}
>
- Оценки
+ Оценки
-
-
-
+
+
+
{props.country ?
props.country.toLowerCase() == "япония" ?
@@ -40,45 +40,45 @@ export const ReleaseInfoInfo = (props: {
:
}
-
-
+
+
{props.country && props.country}
{(props.aired_on_date != 0 || props.year) && ", "}
{props.season && props.season != 0 ?
`${YearSeason[props.season]} `
: ""}
{props.year && `${props.year} г.`}
-
-
-
-
+
+
+
+
-
-
+
+
{props.episodes.released ? props.episodes.released : "?"}
{"/"}
{props.episodes.total ? props.episodes.total + " эп. " : "? эп. "}
{props.duration != 0 &&
`по ${minutesToTime(props.duration, "daysHours")}`}
-
-
-
-
+
+
+
+
-
-
+
+
{props.category}
{", "}
{props.broadcast == 0 ?
props.status.toLowerCase()
: `выходит ${weekDay[props.broadcast]}`}
-
-
-
-
+
+
+
+
-
-
+
+
{props.studio && (
<>
{"Студия: "}
@@ -117,13 +117,13 @@ export const ReleaseInfoInfo = (props: {
/>
>
)}
-
-
-
-
+
+
+
+
-
-
+
+
{props.genres &&
props.genres.split(", ").map((genre: string, index: number) => {
return (
@@ -133,14 +133,14 @@ export const ReleaseInfoInfo = (props: {
);
})}
-
-
+
+
{props.status.toLowerCase() == "анонс" && (
-
-
+
+
-
-
+
+
{props.aired_on_date != 0 ?
unixToDate(props.aired_on_date, "full")
: props.year ?
@@ -151,10 +151,10 @@ export const ReleaseInfoInfo = (props: {
{props.year && `${props.year} г.`}
>
: "Скоро"}
-
-
+
+
)}
-
+
);
diff --git a/app/components/ReleaseInfo/ReleaseInfo.Rating.tsx b/app/components/ReleaseInfo/ReleaseInfo.Rating.tsx
index 6f78499..f63304f 100644
--- a/app/components/ReleaseInfo/ReleaseInfo.Rating.tsx
+++ b/app/components/ReleaseInfo/ReleaseInfo.Rating.tsx
@@ -1,20 +1,26 @@
import {
- Card,
- Rating,
- Flowbite,
Button,
- CustomFlowbiteTheme,
+ Card,
Modal,
+ ModalBody,
+ ModalFooter,
+ ModalHeader,
+ Rating,
+ RatingAdvanced,
+ RatingStar,
+ RatingAdvancedTheme,
} from "flowbite-react";
import { numberDeclension } from "#/api/utils";
import { useState } from "react";
import { ENDPOINTS } from "#/api/config";
-const RatingTheme: CustomFlowbiteTheme = {
- ratingAdvanced: {
- progress: {
- base: "mx-4 h-5 w-3/4 rounded bg-gray-200 dark:bg-gray-700",
- },
+const CustomRatingTheme: RatingAdvancedTheme = {
+ base: "flex items-center",
+ label: "text-sm font-medium text-cyan-600 dark:text-cyan-500",
+ progress: {
+ base: "mx-4 h-5 w-3/4 rounded bg-gray-200 dark:bg-gray-700",
+ fill: "h-5 rounded bg-yellow-400",
+ label: "text-sm font-medium text-cyan-600 dark:text-cyan-500",
},
};
export const ReleaseInfoRating = (props: {
@@ -39,7 +45,7 @@ export const ReleaseInfoRating = (props: {
-
+
{props.grade.toFixed(2)} из 5
@@ -48,7 +54,7 @@ export const ReleaseInfoRating = (props: {
<>
- {vote ? (
+ {vote ?
<>
ваша оценка: {vote}
@@ -62,8 +68,7 @@ export const ReleaseInfoRating = (props: {
изменить
>
- ) : (
-
оценить
- )}
+ }
>
)}
@@ -80,47 +85,50 @@ export const ReleaseInfoRating = (props: {
{props.votes.total}{" "}
{numberDeclension(props.votes.total, "голос", "голоса", "голосов")}
-
-
- 5
-
-
- 4
-
-
- 3
-
-
- 2
-
-
- 1
-
-
+
+ 5
+
+
+ 4
+
+
+ 3
+
+
+ 2
+
+
+ 1
+
props.setIsOpen(false)}
>
- Оценка
-
+ Оценка
+
@@ -191,7 +199,7 @@ const ReleaseInfoRatingModal = (props: {
onMouseOut={() => setCurElement(0)}
onClick={() => setVote(element)}
>
-
@@ -208,7 +216,7 @@ const ReleaseInfoRatingModal = (props: {
onMouseOut={() => setCurElement(0)}
onClick={() => setVote(element)}
>
-
@@ -216,8 +224,8 @@ const ReleaseInfoRatingModal = (props: {
-
-
+
+
-
+
);
};
diff --git a/app/components/ReleaseInfo/ReleaseInfo.UserList.tsx b/app/components/ReleaseInfo/ReleaseInfo.UserList.tsx
index b0fec48..bf2d5e1 100644
--- a/app/components/ReleaseInfo/ReleaseInfo.UserList.tsx
+++ b/app/components/ReleaseInfo/ReleaseInfo.UserList.tsx
@@ -5,7 +5,7 @@ import useSWRInfinite from "swr/infinite";
import { useCallback, useEffect, useState } from "react";
import { tryCatchAPI, useSWRfetcher } from "#/api/utils";
import { toast } from "react-toastify";
-import { useThemeMode } from "flowbite-react";
+import { DropdownItem, ModalHeader, useThemeMode } from "flowbite-react";
const lists = [
{ list: 0, name: "Не смотрю" },
@@ -174,12 +174,12 @@ export const ReleaseInfoUserList = (props: {
disabled={listEventDisabled}
>
{lists.map((list) => (
- _addToList(list.list)}
>
{list.name}
-
+
))}
props.setIsOpen(false)}
>
- Выбор коллекции
+ Выбор коллекции
{
theme={DropdownTheme}
>
{voiceoverInfo.map((voiceover: any) => (
-
setSelectedVoiceoverAndSaveAsPreferred(voiceover)
}
>
{voiceover.name}
-
+
))}
{
theme={DropdownTheme}
>
{sourcesInfo.map((source: any) => (
- setSelectedPlayerAndSaveAsPreferred(source)}
>
{source.name}
-
+
))}
diff --git a/app/components/ReleasePlayer/SourceSelector.tsx b/app/components/ReleasePlayer/SourceSelector.tsx
index a8d0514..e02cbfb 100644
--- a/app/components/ReleasePlayer/SourceSelector.tsx
+++ b/app/components/ReleasePlayer/SourceSelector.tsx
@@ -1,6 +1,6 @@
"use client";
-import { Dropdown } from "flowbite-react";
+import { Dropdown, DropdownItem } from "flowbite-react";
import { numberDeclension } from "#/api/utils";
import { useUserPlayerPreferencesStore } from "#/store/player";
@@ -55,7 +55,7 @@ export const SourceSelector = (props: {
)}
>
{props.availableSource.map((source: Source) => (
- {
playerPreferenceStore.setPreferredPlayer(
@@ -69,7 +69,7 @@ export const SourceSelector = (props: {
}}
>
-
+
))}
);
diff --git a/app/components/ReleasePlayer/VoiceoverSelector.tsx b/app/components/ReleasePlayer/VoiceoverSelector.tsx
index 6ee2448..80cf8d1 100644
--- a/app/components/ReleasePlayer/VoiceoverSelector.tsx
+++ b/app/components/ReleasePlayer/VoiceoverSelector.tsx
@@ -1,6 +1,6 @@
"use client";
-import { Dropdown } from "flowbite-react";
+import { Dropdown, DropdownItem } from "flowbite-react";
import { numberDeclension } from "#/api/utils";
import { useUserPlayerPreferencesStore } from "#/store/player";
@@ -26,7 +26,7 @@ const DropdownTrigger = ({ icon, name, pinned }: Voiceover) => {
);
};
-const DropdownItem = ({
+const DropdownItemInternal = ({
icon,
name,
pinned,
@@ -80,7 +80,7 @@ export const VoiceoverSelector = (props: {
)}
>
{props.availableVoiceover.map((voiceover: Voiceover) => (
- {
@@ -94,8 +94,8 @@ export const VoiceoverSelector = (props: {
});
}}
>
-
-
+
+
))}
);
diff --git a/app/components/SettingsModal/SettingsModal.tsx b/app/components/SettingsModal/SettingsModal.tsx
index 3786e80..8254957 100644
--- a/app/components/SettingsModal/SettingsModal.tsx
+++ b/app/components/SettingsModal/SettingsModal.tsx
@@ -4,12 +4,16 @@ import { CURRENT_APP_VERSION } from "#/api/config";
import { useUserStore } from "#/store/auth";
import { usePreferencesStore } from "#/store/preferences";
import {
- Modal,
Button,
- useThemeMode,
- ToggleSwitch,
- HR,
+ ButtonGroup,
Dropdown,
+ DropdownItem,
+ HR,
+ Modal,
+ ModalBody,
+ ModalHeader,
+ ToggleSwitch,
+ useThemeMode,
} from "flowbite-react";
import Link from "next/link";
@@ -54,8 +58,8 @@ export const SettingsModal = (props: { isOpen: boolean; setIsOpen: any }) => {
show={props.isOpen}
onClose={() => props.setIsOpen(false)}
>
- Настройки
-
+ Настройки
+
@@ -63,7 +67,7 @@ export const SettingsModal = (props: { isOpen: boolean; setIsOpen: any }) => {
Тема
-
+
setMode("light")}
@@ -76,7 +80,7 @@ export const SettingsModal = (props: { isOpen: boolean; setIsOpen: any }) => {
>
Темная
-
+
@@ -121,7 +125,7 @@ export const SettingsModal = (props: { isOpen: boolean; setIsOpen: any }) => {
>
{Object.keys(HomeCategory).map((key) => {
return (
-
preferenceStore.setParams({
@@ -133,7 +137,7 @@ export const SettingsModal = (props: { isOpen: boolean; setIsOpen: any }) => {
}
>
{HomeCategory[key]}
-
+
);
})}
@@ -152,7 +156,7 @@ export const SettingsModal = (props: { isOpen: boolean; setIsOpen: any }) => {
>
{Object.keys(BookmarksCategory).map((key) => {
return (
-
preferenceStore.setParams({
@@ -164,7 +168,7 @@ export const SettingsModal = (props: { isOpen: boolean; setIsOpen: any }) => {
}
>
{BookmarksCategory[key]}
-
+
);
})}
@@ -182,7 +186,7 @@ export const SettingsModal = (props: { isOpen: boolean; setIsOpen: any }) => {
{Object.keys(NavbarTitles).map(
(key: "always" | "links" | "selected" | "never") => {
return (
-
@@ -192,7 +196,7 @@ export const SettingsModal = (props: { isOpen: boolean; setIsOpen: any }) => {
}
>
{NavbarTitles[key]}
-
+
);
}
)}
@@ -211,7 +215,7 @@ export const SettingsModal = (props: { isOpen: boolean; setIsOpen: any }) => {
: "Нет"
}
>
-
preferenceStore.setFlags({
showFifthButton: null,
@@ -219,10 +223,10 @@ export const SettingsModal = (props: { isOpen: boolean; setIsOpen: any }) => {
}
>
Не показывать
-
+
{Object.keys(FifthButton).map((key) => {
return (
-
preferenceStore.setFlags({
@@ -231,7 +235,7 @@ export const SettingsModal = (props: { isOpen: boolean; setIsOpen: any }) => {
}
>
{FifthButton[key]}
-
+
);
})}
@@ -340,7 +344,7 @@ export const SettingsModal = (props: { isOpen: boolean; setIsOpen: any }) => {
-
+
);
};
diff --git a/app/pages/BookmarksCategory.tsx b/app/pages/BookmarksCategory.tsx
index ea4ed0b..b53b3fa 100644
--- a/app/pages/BookmarksCategory.tsx
+++ b/app/pages/BookmarksCategory.tsx
@@ -5,7 +5,7 @@ import { Spinner } from "#/components/Spinner/Spinner";
import { useState, useEffect } from "react";
import { useScrollPosition } from "#/hooks/useScrollPosition";
import { useUserStore } from "../store/auth";
-import { Dropdown, Button } from "flowbite-react";
+import { Button, ButtonGroup, Dropdown, DropdownItem } from "flowbite-react";
import { sort } from "./common";
import { ENDPOINTS } from "#/api/config";
import { BookmarksList, useSWRfetcher } from "#/api/utils";
@@ -151,7 +151,7 @@ export function BookmarksCategoryPage(props: any) {
: ""}
-
+
{props.SectionTitleMapping["abandoned"]}
-
+
@@ -237,7 +237,7 @@ export function BookmarksCategoryPage(props: any) {
theme={DropdownTheme}
>
{sort.values.map((item, index) => (
- setSelectedSort(index)}>
+ setSelectedSort(index)}>
{item.name}
-
+
))}
diff --git a/app/pages/CreateCollection.tsx b/app/pages/CreateCollection.tsx
index cd0c3b7..bdb690c 100644
--- a/app/pages/CreateCollection.tsx
+++ b/app/pages/CreateCollection.tsx
@@ -5,14 +5,15 @@ import { useEffect, useState, useCallback } from "react";
import { useSearchParams, useRouter } from "next/navigation";
import { ENDPOINTS } from "#/api/config";
import {
- Card,
Button,
+ Card,
Checkbox,
- TextInput,
- Textarea,
FileInput,
Label,
Modal,
+ ModalHeader,
+ Textarea,
+ TextInput,
useThemeMode,
} from "flowbite-react";
import { PosterWithStuff } from "#/components/ReleasePoster/PosterWithStuff";
@@ -388,10 +389,9 @@ export const CreateCollectionPage = () => {
-
+
+ Название (минимум 10, максимум 60 символов)
+
{
{stringLength.title}/60
-
+
+ Описание (максимум 1000 символов)
+
props.setIsOpen(false)}
size={"7xl"}
>
- Изменить релизы в коллекции
+ Изменить релизы в коллекции
{sort.values.map((item, index) => (
- setSelectedSort(index)}>
+ setSelectedSort(index)}>
{item.name}
-
+
))}
diff --git a/app/pages/IndexCategory.tsx b/app/pages/IndexCategory.tsx
index f79dbf7..f3ba11d 100644
--- a/app/pages/IndexCategory.tsx
+++ b/app/pages/IndexCategory.tsx
@@ -5,7 +5,7 @@ import { useState, useEffect } from "react";
import { useScrollPosition } from "#/hooks/useScrollPosition";
import { useUserStore } from "../store/auth";
import { _FetchHomePageReleases } from "#/api/utils";
-import { Button } from "flowbite-react";
+import { Button, ButtonGroup } from "flowbite-react";
import { useRouter } from "next/navigation";
export function IndexCategoryPage(props) {
@@ -53,13 +53,13 @@ export function IndexCategoryPage(props) {
return (
<>
-
+
router.push("/home/last")}>{props.SectionTitleMapping["last"]}
router.push("/home/finished")}>{props.SectionTitleMapping["finished"]}
router.push("/home/ongoing")}>{props.SectionTitleMapping["ongoing"]}
router.push("/home/announce")}>{props.SectionTitleMapping["announce"]}
router.push("/home/films")}>{props.SectionTitleMapping["films"]}
-
+
{content && content.length > 0 ? (
_cancel()}>
- Фильтры
-
+ Фильтры
+
Искать в
@@ -376,12 +376,12 @@ const FiltersModal = (props: {
return <>>;
} else {
return (
-
setWhere(item)}
key={`where--${item}`}
>
{WhereMapping[item]}
-
+
);
}
})}
@@ -395,12 +395,12 @@ const FiltersModal = (props: {
{Object.keys(ListsMapping).map((item) => {
return (
- setList(item)}
key={`list--${item}`}
>
{ListsMapping[item].name}
-
+
);
})}
@@ -414,20 +414,20 @@ const FiltersModal = (props: {
{Object.keys(TagMapping).map((item) => {
return (
- setSearchBy(item)}
key={`tag--${item}`}
>
{TagMapping[item].name}
-
+
);
})}
: ""}
-
-
+
+
_cancel()}>
Отменить
@@ -436,7 +436,7 @@ const FiltersModal = (props: {
Применить
-
+
);
};
diff --git a/next.config.js b/next.config.js
index 1b76294..627945f 100644
--- a/next.config.js
+++ b/next.config.js
@@ -1,8 +1,7 @@
const { withPlausibleProxy } = require("next-plausible");
-
-module.exports = withPlausibleProxy({
- customDomain: "https://analytics.wah.su",
-})({
+const withFlowbiteReact = require("flowbite-react/plugin/nextjs");
+/** @type {import('next').NextConfig} */
+const NextConfig = {
reactStrictMode: false,
images: {
unoptimized: true,
@@ -10,68 +9,88 @@ module.exports = withPlausibleProxy({
async headers() {
return [
{
- source: '/bookmarks/:slug*',
+ source: "/bookmarks/:slug*",
headers: [
{
- key: 'Cache-Control',
- value: 's-maxage=2592000, stale-while-revalidate=86400',
+ key: "Cache-Control",
+ value: "s-maxage=2592000, stale-while-revalidate=86400",
},
],
},
{
- source: '/collection/:slug*',
+ source: "/collection/:slug*",
headers: [
{
- key: 'Cache-Control',
- value: 's-maxage=2592000, stale-while-revalidate=86400',
+ key: "Cache-Control",
+ value: "s-maxage=2592000, stale-while-revalidate=86400",
},
],
},
{
- source: '/home/:slug*',
+ source: "/home/:slug*",
headers: [
{
- key: 'Cache-Control',
- value: 's-maxage=2592000, stale-while-revalidate=86400',
+ key: "Cache-Control",
+ value: "s-maxage=2592000, stale-while-revalidate=86400",
},
],
},
{
- source: '/profile/:slug*',
+ source: "/profile/:slug*",
headers: [
{
- key: 'Cache-Control',
- value: 's-maxage=2592000, stale-while-revalidate=86400',
+ key: "Cache-Control",
+ value: "s-maxage=2592000, stale-while-revalidate=86400",
},
],
},
{
- source: '/release/:slug*',
+ source: "/release/:slug*",
headers: [
{
- key: 'Cache-Control',
- value: 's-maxage=2592000, stale-while-revalidate=86400',
+ key: "Cache-Control",
+ value: "s-maxage=2592000, stale-while-revalidate=86400",
},
],
},
{
- source: '/related/:slug*',
+ source: "/related/:slug*",
headers: [
{
- key: 'Cache-Control',
- value: 's-maxage=2592000, stale-while-revalidate=86400',
+ key: "Cache-Control",
+ value: "s-maxage=2592000, stale-while-revalidate=86400",
},
],
},
{
- source: '/search',
+ source: "/search",
headers: [
{
- key: 'Cache-Control',
- value: 's-maxage=2592000, stale-while-revalidate=86400',
+ key: "Cache-Control",
+ value: "s-maxage=2592000, stale-while-revalidate=86400",
},
],
},
];
},
-});
+};
+
+const config = () => {
+ const plugins = [withPlausibleProxy, withFlowbiteReact];
+ return (
+ plugins.reduce((acc, next) => {
+ console.log(`INIT: ${next.name}`);
+ if (next.name === "withPlausibleProxy") {
+ return next(acc, {
+ customDomain: "https://analytics.wah.su",
+ });
+ }
+
+ return next(acc);
+ }),
+ { ...NextConfig }
+ );
+};
+
+console.log(config());
+module.exports = config();
diff --git a/package-lock.json b/package-lock.json
index 3f175bf..7238a77 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,7 @@
"apexcharts": "^3.52.0",
"deepmerge-ts": "^7.1.0",
"flowbite": "^2.4.1",
- "flowbite-react": "^0.10.1",
+ "flowbite-react": "^0.11.7",
"hls-video-element": "^1.5.0",
"markdown-to-jsx": "^7.4.7",
"media-chrome": "^4.8.0",
@@ -153,12 +153,12 @@
}
},
"node_modules/@floating-ui/core": {
- "version": "1.6.6",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.6.tgz",
- "integrity": "sha512-Vkvsw6EcpMHjvZZdMkSY+djMGFbt7CRssW99Ne8tar2WLnZ/l3dbxeTShbLQj+/s35h+Qb4cmnob+EzwtjrXGQ==",
+ "version": "1.6.9",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz",
+ "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==",
"license": "MIT",
"dependencies": {
- "@floating-ui/utils": "^0.2.6"
+ "@floating-ui/utils": "^0.2.9"
}
},
"node_modules/@floating-ui/dom": {
@@ -172,18 +172,18 @@
}
},
"node_modules/@floating-ui/react": {
- "version": "0.26.21",
- "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.21.tgz",
- "integrity": "sha512-7P5ncDIiYd6RrwpCDbKyFzvabM014QlzlumtDbK3Bck0UueC+Rp8BLS34qcGBcN1pZCTodl4QNnCVmKv4tSxfQ==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.3.tgz",
+ "integrity": "sha512-CLHnes3ixIFFKVQDdICjel8muhFLOBdQH7fgtHNPY8UbCNqbeKZ262G7K66lGQOUQWWnYocf7ZbUsLJgGfsLHg==",
"license": "MIT",
"dependencies": {
- "@floating-ui/react-dom": "^2.1.1",
- "@floating-ui/utils": "^0.2.6",
+ "@floating-ui/react-dom": "^2.1.2",
+ "@floating-ui/utils": "^0.2.9",
"tabbable": "^6.0.0"
},
"peerDependencies": {
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
+ "react": ">=17.0.0",
+ "react-dom": ">=17.0.0"
}
},
"node_modules/@floating-ui/react-dom": {
@@ -243,6 +243,12 @@
"dev": true,
"license": "BSD-3-Clause"
},
+ "node_modules/@iarna/toml": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
+ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==",
+ "license": "ISC"
+ },
"node_modules/@iconify-json/fa6-brands": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/@iconify-json/fa6-brands/-/fa6-brands-1.2.5.tgz",
@@ -1619,6 +1625,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/array-timsort": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz",
+ "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==",
+ "license": "MIT"
+ },
"node_modules/array-union": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
@@ -1749,6 +1761,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/ast-types": {
+ "version": "0.16.1",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz",
+ "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/ast-types-flow": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
@@ -2106,6 +2130,22 @@
"node": ">= 6"
}
},
+ "node_modules/comment-json": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz",
+ "integrity": "sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==",
+ "license": "MIT",
+ "dependencies": {
+ "array-timsort": "^1.0.3",
+ "core-util-is": "^1.0.3",
+ "esprima": "^4.0.1",
+ "has-own-prop": "^2.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -2138,6 +2178,12 @@
"webpack": "^5.1.0"
}
},
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "license": "MIT"
+ },
"node_modules/cropperjs": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.6.2.tgz",
@@ -2245,9 +2291,9 @@
}
},
"node_modules/debounce": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/debounce/-/debounce-2.1.0.tgz",
- "integrity": "sha512-OkL3+0pPWCqoBc/nhO9u6TIQNTK44fnBnzuVtJAbp13Naxw9R6u21x+8tVTka87AhDZ3htqZ2pSSsZl9fqL2Wg==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debounce/-/debounce-2.2.0.tgz",
+ "integrity": "sha512-Xks6RUDLZFdz8LIdR6q0MTH44k7FikOmnh5xkSjMig6ch45afc8sjTjRQf3P6ax8dMgcQrYO/AR2RGWURrruqw==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -2260,7 +2306,6 @@
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
@@ -3049,6 +3094,19 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/esquery": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
@@ -3288,34 +3346,174 @@
}
},
"node_modules/flowbite-react": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/flowbite-react/-/flowbite-react-0.10.2.tgz",
- "integrity": "sha512-qkayK6IFmfH7zuuDnHmS0hJxLtL0KpW4vo4i/VQfZ6ZfaNlUsNLQxCGcmXwbZZtUm2WVw8x71aaDOAxftG9tmg==",
+ "version": "0.11.7",
+ "resolved": "https://registry.npmjs.org/flowbite-react/-/flowbite-react-0.11.7.tgz",
+ "integrity": "sha512-Z8m+ycHEsXPacSAi8P4yYDeff7LvcHNwbGAnL/+Fpiv+6ZWDEAGY/YPKhUofZsZa837JTYrbcbmgjqQ1bpt51g==",
"license": "MIT",
"dependencies": {
- "@floating-ui/core": "1.6.6",
- "@floating-ui/react": "0.26.21",
+ "@floating-ui/core": "1.6.9",
+ "@floating-ui/react": "0.27.3",
+ "@iarna/toml": "2.2.5",
+ "@typescript-eslint/typescript-estree": "8.26.0",
+ "chokidar": "4.0.3",
"classnames": "2.5.1",
- "debounce": "2.1.0",
- "flowbite": "2.5.1",
- "react-icons": "5.2.1",
- "tailwind-merge": "2.4.0"
+ "comment-json": "4.2.5",
+ "debounce": "2.2.0",
+ "deepmerge-ts": "7.1.4",
+ "klona": "2.0.6",
+ "package-manager-detector": "0.2.9",
+ "recast": "0.23.11",
+ "tailwind-merge-v2": "npm:tailwind-merge@2.6.0",
+ "tailwind-merge-v3": "npm:tailwind-merge@3.0.1"
+ },
+ "bin": {
+ "flowbite-react": "dist/cli/bin.js"
},
"peerDependencies": {
- "react": ">=18",
- "react-dom": ">=18",
- "tailwindcss": "^3"
+ "react": "^18 || ^19",
+ "react-dom": "^18 || ^19",
+ "tailwindcss": "^3 || ^4"
}
},
- "node_modules/flowbite-react/node_modules/flowbite": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/flowbite/-/flowbite-2.5.1.tgz",
- "integrity": "sha512-7jP1jy9c3QP7y+KU9lc8ueMkTyUdMDvRP+lteSWgY5TigSZjf9K1kqZxmqjhbx2gBnFQxMl1GAjVThCa8cEpKA==",
+ "node_modules/flowbite-react/node_modules/@typescript-eslint/types": {
+ "version": "8.26.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.0.tgz",
+ "integrity": "sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/flowbite-react/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.26.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.0.tgz",
+ "integrity": "sha512-tiJ1Hvy/V/oMVRTbEOIeemA2XoylimlDQ03CgPPNaHYZbpsc78Hmngnt+WXZfJX1pjQ711V7g0H7cSJThGYfPQ==",
"license": "MIT",
"dependencies": {
- "@popperjs/core": "^2.9.3",
- "flowbite-datepicker": "^1.3.0",
- "mini-svg-data-uri": "^1.4.3"
+ "@typescript-eslint/types": "8.26.0",
+ "@typescript-eslint/visitor-keys": "8.26.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^2.0.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/flowbite-react/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.26.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.0.tgz",
+ "integrity": "sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==",
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.26.0",
+ "eslint-visitor-keys": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/flowbite-react/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/flowbite-react/node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/flowbite-react/node_modules/deepmerge-ts": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.4.tgz",
+ "integrity": "sha512-fxqo6nHGQ9zOVgI4KXqtWXJR/yCLtC7aXIVq+6jc8tHPFUxlFmuUcm2kC4vztQ+LJxQ3gER/XAWearGYQ8niGA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/flowbite-react/node_modules/eslint-visitor-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/flowbite-react/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/flowbite-react/node_modules/readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/flowbite-react/node_modules/ts-api-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
+ "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.12"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
}
},
"node_modules/for-each": {
@@ -3660,6 +3858,15 @@
"node": ">=8"
}
},
+ "node_modules/has-own-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz",
+ "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/has-property-descriptors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
@@ -4417,6 +4624,15 @@
"json-buffer": "3.0.1"
}
},
+ "node_modules/klona": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz",
+ "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/language-subtag-registry": {
"version": "0.3.23",
"resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz",
@@ -4670,7 +4886,6 @@
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true,
"license": "MIT"
},
"node_modules/mz": {
@@ -5035,6 +5250,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/package-manager-detector": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.9.tgz",
+ "integrity": "sha512-+vYvA/Y31l8Zk8dwxHhL3JfTuHPm6tlxM2A3GeQyl7ovYnSp1+mzAxClxaOr0qO1TtPxbQxetI7v5XqKLJZk7Q==",
+ "license": "MIT"
+ },
"node_modules/parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -5416,15 +5637,6 @@
"react": "^18.3.1"
}
},
- "node_modules/react-icons": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.2.1.tgz",
- "integrity": "sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw==",
- "license": "MIT",
- "peerDependencies": {
- "react": "*"
- }
- },
"node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
@@ -5478,6 +5690,22 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/recast": {
+ "version": "0.23.11",
+ "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz",
+ "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==",
+ "license": "MIT",
+ "dependencies": {
+ "ast-types": "^0.16.1",
+ "esprima": "~4.0.0",
+ "source-map": "~0.6.1",
+ "tiny-invariant": "^1.3.3",
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
"node_modules/reflect.getprototypeof": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
@@ -5522,6 +5750,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
@@ -5790,7 +6027,6 @@
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
- "dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -5984,9 +6220,7 @@
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
"license": "BSD-3-Clause",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -6458,10 +6692,22 @@
"integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==",
"license": "MIT"
},
- "node_modules/tailwind-merge": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.4.0.tgz",
- "integrity": "sha512-49AwoOQNKdqKPd9CViyH5wJoSKsCDjUlzL8DxuGp3P1FsGY36NJDAa18jLZcaHAUUuTj+JB8IAo8zWgBNvBF7A==",
+ "node_modules/tailwind-merge-v2": {
+ "name": "tailwind-merge",
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz",
+ "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/dcastil"
+ }
+ },
+ "node_modules/tailwind-merge-v3": {
+ "name": "tailwind-merge",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.0.1.tgz",
+ "integrity": "sha512-AvzE8FmSoXC7nC+oU5GlQJbip2UO7tmOhOfQyOmPhrStOGXHU08j8mZEHZ4BmCqY5dWTCo4ClWkNyRNx1wpT0g==",
"license": "MIT",
"funding": {
"type": "github",
@@ -6621,6 +6867,12 @@
"node": ">=0.8"
}
},
+ "node_modules/tiny-invariant": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
+ "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==",
+ "license": "MIT"
+ },
"node_modules/tinyglobby": {
"version": "0.2.12",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz",
@@ -6796,7 +7048,6 @@
"version": "5.8.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
"integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
- "dev": true,
"license": "Apache-2.0",
"peer": true,
"bin": {
diff --git a/package.json b/package.json
index 750aeb8..6519a9b 100644
--- a/package.json
+++ b/package.json
@@ -6,13 +6,14 @@
"dev": "next dev",
"build": "next build",
"start": "next start",
- "lint": "next lint"
+ "lint": "next lint",
+ "postinstall": "flowbite-react patch"
},
"dependencies": {
"apexcharts": "^3.52.0",
"deepmerge-ts": "^7.1.0",
"flowbite": "^2.4.1",
- "flowbite-react": "^0.10.1",
+ "flowbite-react": "^0.11.7",
"hls-video-element": "^1.5.0",
"markdown-to-jsx": "^7.4.7",
"media-chrome": "^4.8.0",
@@ -43,4 +44,4 @@
"tailwind-scrollbar": "^3.1.0",
"tailwindcss": "^3.4.1"
}
-}
+}
\ No newline at end of file
diff --git a/tailwind.config.js b/tailwind.config.js
index 6befeef..e25fe12 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -1,5 +1,9 @@
const { addIconSelectors } = require("@iconify/tailwind");
-import flowbite from "flowbite-react/tailwind";
+const flowbiteReact = require("flowbite-react/plugin/tailwindcss");
+
+flowbiteReact.config = {
+ charts: true,
+}
/** @type {import('tailwindcss').Config} */
module.exports = {
@@ -7,14 +11,12 @@ module.exports = {
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
"./components/**/*.{js,ts,jsx,tsx,mdx}",
"./app/**/*.{js,ts,jsx,tsx,mdx}",
- flowbite.content(),
+ ".flowbite-react\\class-list.json"
],
plugins: [
addIconSelectors(["mdi", "material-symbols", "twemoji", "fa6-brands"]),
require("tailwind-scrollbar"),
- flowbite.plugin()({
- charts: true,
- }),
+ flowbiteReact
],
darkMode: "selector",
theme: {
@@ -43,4 +45,4 @@ module.exports = {
},
},
},
-};
+};
\ No newline at end of file