"use client"; import { usePreferencesStore } from "#/store/preferences"; import { Modal, Button, useThemeMode, ToggleSwitch, HR, Dropdown, } from "flowbite-react"; import Link from "next/link"; const HomeCategory = { last: "Последние релизы", finished: "Завершенные релизы", ongoing: "Выходит", announce: "Анонсированные релизы", films: "Фильмы", }; const BookmarksCategory = { watching: "Смотрю", planned: "В планах", watched: "Просмотрено", delayed: "Отложено", abandoned: "Заброшено", }; export const SettingsModal = (props: { isOpen: boolean; setIsOpen: any }) => { const preferenceStore = usePreferencesStore(); const { computedMode, setMode } = useThemeMode(); return ( <Modal dismissible show={props.isOpen} onClose={() => props.setIsOpen(false)} > <Modal.Header>Настройки</Modal.Header> <Modal.Body> <div className="space-y-6"> <div className="flex items-center gap-2"> <span className="w-6 h-6 iconify material-symbols--palette-outline"></span> <p className="text-lg font-bold dark:text-white">Интерфейс</p> </div> <div className="flex items-center justify-between"> <p className=" dark:text-white">Тема</p> <Button.Group> <Button color={computedMode == "light" ? "blue" : "gray"} onClick={() => setMode("light")} > Светлая </Button> <Button color={computedMode == "dark" ? "blue" : "gray"} onClick={() => setMode("dark")} > Темная </Button> </Button.Group> </div> <div className="flex items-center justify-between"> <p className=" dark:text-white max-w-96"> Пропускать страницу выбора категорий на страницах Домашняя и Закладки </p> <ToggleSwitch color="blue" theme={{ toggle: { checked: { color: { blue: "border-blue-700 bg-blue-700", }, }, }, }} onChange={() => preferenceStore.setParams({ skipToCategory: { ...preferenceStore.params.skipToCategory, enabled: !preferenceStore.params.skipToCategory.enabled, }, }) } checked={preferenceStore.params.skipToCategory.enabled} /> </div> {preferenceStore.params.skipToCategory.enabled ? ( <> <div className="flex items-center justify-between"> <p className=" dark:text-white max-w-96"> Категория домашней страницы </p> <Dropdown color="blue" label={ HomeCategory[ preferenceStore.params.skipToCategory.homeCategory ] } > {Object.keys(HomeCategory).map((key) => { return ( <Dropdown.Item key={key} onClick={() => preferenceStore.setParams({ skipToCategory: { ...preferenceStore.params.skipToCategory, homeCategory: key, }, }) } > {HomeCategory[key]} </Dropdown.Item> ); })} </Dropdown> </div> <div className="flex items-center justify-between"> <p className=" dark:text-white max-w-96"> Категория страницы закладок </p> <Dropdown color="blue" label={ BookmarksCategory[ preferenceStore.params.skipToCategory.bookmarksCategory ] } > {Object.keys(BookmarksCategory).map((key) => { return ( <Dropdown.Item key={key} onClick={() => preferenceStore.setParams({ skipToCategory: { ...preferenceStore.params.skipToCategory, bookmarksCategory: key, }, }) } > {BookmarksCategory[key]} </Dropdown.Item> ); })} </Dropdown> </div> </> ) : ( "" )} <HR className="my-4 dark:bg-slate-400" /> <div className="flex items-center gap-2"> <span className="w-6 h-6 iconify material-symbols--settings-outline"></span> <p className="text-lg font-bold dark:text-white">Приложение</p> </div> <div className="flex items-center justify-between"> <p className=" dark:text-white">Показывать список изменений</p> <ToggleSwitch color="blue" theme={{ toggle: { checked: { color: { blue: "border-blue-700 bg-blue-700", }, }, }, }} onChange={() => preferenceStore.setFlags({ showChangelog: !preferenceStore.flags.showChangelog, }) } checked={preferenceStore.flags.showChangelog} /> </div> <div className="flex items-center justify-between"> <div> <p className=" dark:text-white">Отправка аналитики</p> <p className="text-gray-500 dark:text-gray-300"> Требуется перезагрузка для применения </p> </div> <ToggleSwitch color="blue" theme={{ toggle: { checked: { color: { blue: "border-blue-700 bg-blue-700", }, }, }, }} onChange={() => preferenceStore.setFlags({ enableAnalytics: !preferenceStore.flags.enableAnalytics, }) } checked={preferenceStore.flags.enableAnalytics} /> </div> <HR className="my-4 dark:bg-slate-400" /> <div className="flex items-center gap-2"> <span className="w-6 h-6 iconify material-symbols--experiment-outline"></span> <p className="text-lg font-bold dark:text-white">Эксперименты</p> </div> <div className="flex items-center justify-between"> <div> <p className=" dark:text-white">Новый плеер</p> <p className="text-gray-500 dark:text-gray-300"> Поддерживаемые источники: Kodik, Sibnet, Libria </p> </div> <ToggleSwitch color="blue" theme={{ toggle: { checked: { color: { blue: "border-blue-700 bg-blue-700", }, }, }, }} onChange={() => preferenceStore.setParams({ experimental: { ...preferenceStore.params.experimental, newPlayer: !preferenceStore.params.experimental.newPlayer, }, }) } checked={preferenceStore.params.experimental.newPlayer} /> </div> </div> <HR className="my-4 dark:bg-slate-400" /> <div> <Link href={"https://t.me/anix_web"} className="flex items-center gap-2 p-2 text-left rounded-md hover:bg-gray-100 dark:hover:bg-gray-900" > <span className="w-8 h-8 iconify fa6-brands--telegram"></span> <div> <p>Телеграм канал</p> <p className="text-sm text-gray-400 dark:text-gray-200"> @anix_web </p> </div> </Link> <Link href={"https://wah.su/radiquum"} className="flex items-center gap-2 p-2 text-left rounded-md hover:bg-gray-100 dark:hover:bg-gray-900" > <span className="w-8 h-8 iconify mdi--code"></span> <div> <p>Разработчик</p> <p className="text-sm text-gray-400 dark:text-gray-200"> Radiquum </p> </div> </Link> </div> </Modal.Body> </Modal> ); };