@@ -1,7 +1,6 @@ import React from 'react' import { Typography } from '@mui/material' import Box from '@mui/material/Box' -import { useThemeAndDevice } from '#/shared/lib/hooks' import TooltipModelTypes from '#/widgets/filters-gpt/ui/tooltip-model-types' import { CommonTextArea } from '#/shared/ui/common-textarea' @@ -17,7 +16,6 @@ interface IProps { } export const InputFilter = ({ filters, item_key, values, title, description, setNewParam }: IProps) => { - const { theme } = useThemeAndDevice() const [value, setValue] = React.useState(values?.default || '') React.useEffect(() => { @@ -1,10 +1,10 @@ import { createSlice } from '@reduxjs/toolkit' -export interface Theme { +export interface ParamsProps { params: Object } -const initialState: Theme = { +const initialState: ParamsProps = { params: {}, } @@ -3,7 +3,6 @@ import { configureStore } from '@reduxjs/toolkit' import { paramsStore } from '#/app/store/model-parametres-store' import { balanceSlice } from '#/entities/balance' -import { themeSlice } from '#/entities/theme' import { userSlice } from '#/entities/user-account' import { settingsSlice } from '#/entities/user-account/model/settings' import { chatsReducer } from '#/features/chats/chats-slice' @@ -15,7 +14,6 @@ import { notificationSlice } from './notification-slice' export const store = configureStore({ reducer: { - theme: themeSlice.reducer, balance: balanceSlice.reducer, stepper: stepperSlice.reducer, user: userSlice.reducer, @@ -7,7 +7,6 @@ export const emptyTemplate: Template = { keywords: [], tov: '', language: '', - theme: '', resources_urls: [], picture: '123', target_audience: '', @@ -3,7 +3,6 @@ export interface Template { title: string description: string picture: string - theme: string content: string target_audience: string resources_urls: string[] @@ -8,7 +8,6 @@ import BlockedSvg from '#/assets/svg/blocked.svg?react' import LockSvg from '#/assets/svg/lock.svg?react' import { IShortModel } from '#/entities/model-entity' import { c } from '#/shared/lib/helpers' -import { useThemeAndDevice } from '#/shared/lib/hooks' import { CommonButton } from '#/shared/ui/button' import { SvgIcon } from '#/shared/ui/svg' @@ -21,7 +20,6 @@ export function AudioModelCard({ description, image, title, slug, accessed_model return accessed_models && !accessed_models.includes(slug) ? '/account?scope=subscribe' : `audio/${slug}` }, [accessed_models]) - const { theme } = useThemeAndDevice() return ( @@ -6,7 +6,6 @@ import LockSvg from '#/assets/svg/lock.svg?react' import BlockedSvg from '#/assets/svg/blocked.svg?react' import styles from './card-chat.module.scss' -import { useThemeAndDevice } from '#/shared/lib/hooks' import { c } from '#/shared/lib/helpers' import { IShortModel } from '#/entities/model-entity' import { SvgIcon } from '#/shared/ui/svg' @@ -22,7 +21,6 @@ export function ChatModelCard({ description, image, title, slug, accessed_models return accessed_models && !accessed_models.includes(slug) ? '/account?scope=subscribe' : `chat-bot/${slug}` }, [accessed_models]) - const { theme } = useThemeAndDevice() return ( @@ -1,5 +1,4 @@ -import React, { useEffect, useMemo } from 'react' -import { Avatar, Box, Button, Typography } from '@mui/material' +import React, { useMemo } from 'react' import Image from 'next/image' import Link from 'next/link' @@ -9,7 +8,6 @@ import BlockedSvg from '#/assets/svg/blocked.svg?react' import LockSvg from '#/assets/svg/lock.svg?react' import { IShortModel } from '#/entities/model-entity' import { c } from '#/shared/lib/helpers' -import { useThemeAndDevice } from '#/shared/lib/hooks' import { CommonButton } from '#/shared/ui/button' import { SvgIcon } from '#/shared/ui/svg' @@ -22,7 +20,6 @@ export function ImageModelCard({ description, image, title, slug, accessed_model return accessed_models && !accessed_models.includes(slug) ? '/account?scope=subscribe' : `images/${slug}` }, [accessed_models]) - const { theme } = useThemeAndDevice() return ( @@ -1,5 +1,4 @@ -import React, { useEffect, useMemo } from 'react' -import { Avatar, Box, Button, Typography } from '@mui/material' +import React, { useMemo } from 'react' import Image from 'next/image' import Link from 'next/link' @@ -9,7 +8,6 @@ import BlockedSvg from '#/assets/svg/blocked.svg?react' import LockSvg from '#/assets/svg/lock.svg?react' import { IShortModel } from '#/entities/model-entity' import { c } from '#/shared/lib/helpers' -import { useThemeAndDevice } from '#/shared/lib/hooks' import { CommonButton } from '#/shared/ui/button' import { SvgIcon } from '#/shared/ui/svg' @@ -22,7 +20,6 @@ export function VideoModelCard({ description, image, title, slug, accessed_model return accessed_models && !accessed_models.includes(slug) ? '/account?scope=subscribe' : `videos/${slug}` }, [accessed_models]) - const { theme } = useThemeAndDevice() return ( @@ -1,23 +0,0 @@ -import { createSlice } from '@reduxjs/toolkit' - -export interface Theme { - theme: 'dark' -} - -const initialState: Theme = { - theme: 'dark', -} - -export const themeSlice = createSlice({ - name: 'themeSlice', - initialState, - reducers: { - change: (state, action) => { - state.theme = 'dark' - }, - }, -}) - -export const { change } = themeSlice.actions - -export default themeSlice.reducer @@ -1,13 +0,0 @@ -import React from 'react' - -import { change } from '#/entities/theme' -import { useAppDispatch, useAppSelector } from '#/app/store/store' - -export const useTheme = () => { - const dispatch = useAppDispatch() - - React.useEffect(() => { - dispatch(change('dark')) - document.documentElement.dataset.theme = 'dark' - }, [dispatch]) -} @@ -1,2 +0,0 @@ -export { change, themeSlice } from './model/theme' -export { useTheme } from './model/use-theme' @@ -2,9 +2,7 @@ import { useEffect } from 'react' import { c } from '#/shared' import { usePlatesStore } from '../model' import styles from './template.module.scss' - import PlusIcon from '#/assets/svg/plus.svg?react' -import { useThemeAndDevice } from '#/shared/lib/hooks' export type AlignX = 'left' | 'center' | 'right' export type AlignY = 'top' | 'center' | 'bottom' @@ -1,18 +1,11 @@ -import React, { FC, SyntheticEvent, useEffect, useState } from 'react' -import { Divider, InputAdornment, TextField } from '@mui/material' -import Stack from '@mui/material/Stack' +import React, { FC, useEffect } from 'react' import { TextFieldProps } from '@mui/material/TextField/TextField' -import Image from 'next/image' import classes from './model-input.module.scss' import { LoadImage } from '#/app/components/input_components/load_image' import { SendBtn } from '#/app/components/input_components/send_button' import { IModelInputs } from '#/shared/api/models/models' -import { useThemeAndDevice } from '#/shared/lib/hooks' -import { styleInputWithoutBorderFocus } from '#/shared/ui/input' -import LineLoader from '#/widgets/loaders/line-loader' -import ProgressLoader from '#/widgets/loaders/progress-loader-props' interface Input { loading: boolean @@ -17,8 +17,8 @@ import { IEmailForms } from '#/features/register-by-email/model/types' import { emailOptions } from '#/shared' import { InputStyleDark } from '#/shared' import { API_URL } from '#/shared/lib/constants/constants' -import { useThemeAndDevice } from '#/shared/lib/hooks' import { useShowDataStore } from '#/shared/lib/hooks/use-show-data' +import { useDeviceType } from '#/shared/lib/hooks/use-device-type' interface IRegisterEmailFormProps { successLogin: () => void @@ -27,7 +27,7 @@ interface IRegisterEmailFormProps { export const RegisterEmailForm: React.FC = ({ successLogin }) => { const { register, handleSubmit, reset, watch } = useForm() - const { desktop } = useThemeAndDevice() + const { desktop } = useDeviceType() const { showMessage } = useShowDataStore() @@ -1,166 +0,0 @@ -import { Dispatch, SetStateAction, useEffect, useState } from 'react' -import axios, { AxiosError, AxiosResponse } from 'axios' -import { ContentState, EditorState } from 'draft-js' -import { useSession } from 'next-auth/react' - -import { Template } from '#/domains/copywrite/proxy/types/template' -import { loadGeneration } from '#/features/use-copy/copy-slice' -import { useAppDispatch } from '#/app/store/store' -import { API_URL } from '#/shared/lib/constants' -import { Message, MessageSend } from '#/shared/lib/types/model' -import { useShowDataStore } from '#/shared/lib/hooks/use-show-data' - -type Languages = 'ru' | 'en' | 'it' | 'fr' -type LanguagesText = 'Русский' | 'Английский' | 'Итальянский' | 'Французский' - -export const langs: Record = { - Русский: 'ru', - Английский: 'en', - Итальянский: 'it', - Французский: 'fr', -} - -export const languages = { ...langs, Немецкий: 'de' } -export const target_audiences = ['Вся', '18+', '21+', '30+', '14-20', '35-40'] -export const tovs = ['Нейтральный', 'Спокойный', 'Агрессивный', 'Серьезный', 'Провокационный', 'Остроумный', 'Наставнический', 'Дружелюбный'] - -type Setting = Pick - -type UseTemplate = { - text: EditorState - isLoading: boolean - - lang: string - targetAudiences: string - tov: string - theme: string - content: string - keywords: string[] - resource_urls: string[] - - setLang: Dispatch> - setTargetAudiences: Dispatch> - setTov: Dispatch> - setTheme: Dispatch> - setContent: Dispatch> - setKeywords: Dispatch> - setResourceUrls: Dispatch> - - clearSetting: () => void - createText: () => void - onEditorChange: (a: any) => void -} - -export const useTemplate = (currentTemplate: Template | null): UseTemplate => { - const [text, setText] = useState(EditorState.createEmpty()) - - const onEditorChange = (editorState: any) => { - setText(editorState) - } - - const [isLoading, setIsLoading] = useState(false) - - const dispatch = useAppDispatch() - - const { showMessage } = useShowDataStore() - - const { data: session } = useSession() - - const [lang, setLang] = useState(() => { - const a = Object.entries(languages) - - const b = a.find(([key, value]) => value === currentTemplate?.language) - - if (b) { - return b[0] - } else { - return a[0][0] - } - }) - - const [targetAudiences, setTargetAudiences] = useState(currentTemplate?.target_audience || target_audiences[0]) - - const [tov, setTov] = useState(currentTemplate?.tov || tovs[0]) - - const [theme, setTheme] = useState(currentTemplate?.theme || '') - - const [content, setContent] = useState(currentTemplate?.content || '') - - const [keywords, setKeywords] = useState(currentTemplate?.keywords || []) - - const [resource_urls, setResourceUrls] = useState(currentTemplate?.resources_urls || []) - - const clearSetting = () => { - setLang('Русский') - setTargetAudiences(currentTemplate?.target_audience || target_audiences[0]) - setTov(currentTemplate?.tov || tovs[0]) - setTheme(currentTemplate?.theme || '') - setKeywords(currentTemplate?.keywords || []) - setResourceUrls(currentTemplate?.resources_urls || []) - } - - const createText = async () => { - const dataForSend: MessageSend = { - content: content, - file: null, - info: { - keywords, - language: Object.entries(languages).find(([key, value]) => key === lang)![1], - tov, - resources_urls: resource_urls, - target_audience: targetAudiences, - theme: theme, - }, - } - - if (!session?.access) { - showMessage('У вас неактивный токен, попробуйте перезайти в аккаунт') - return - } - - try { - setIsLoading(true) - const { data } = await axios.post>(API_URL + '/copywrite/', dataForSend, { - withCredentials: true, - headers: { - Authorization: `Bearer ${session?.access}`, - }, - }) - setIsLoading(false) - - const newContentState = ContentState.createFromText(data[0].content) - - setText(EditorState.createWithContent(newContentState)) - dispatch(loadGeneration(session?.access)) - } catch (err: any) { - setIsLoading(false) - return { - error: true, - message: 'Произошла ошибка при выполнении запроса', - details: err as AxiosError, - } - } - } - - return { - tov, - setTov, - lang, - setLang, - clearSetting, - createText, - isLoading, - keywords, - setKeywords, - setResourceUrls, - resource_urls, - setTargetAudiences, - targetAudiences, - setTheme, - text, - onEditorChange, - theme, - setContent, - content, - } -} @@ -4,7 +4,6 @@ import { useSession } from 'next-auth/react' import { dataLine as data } from '#/shared' import { API_URL } from '#/shared/lib/constants' -import { Error } from '#/shared/lib/types/entities' type ResponseStats = { source: string; amount: string }[] @@ -38,7 +37,6 @@ const getStatistic = async (type: string, interval: string, token?: string) => { } export const useStats = () => { - // const theme = useAppSelector(state => state.theme.theme) // let dataLine = { // datasets: [ @@ -63,7 +61,7 @@ export const useStats = () => { // borderWidth: 1, // Ширина линии графика // borderColor: '#8280FF', // pointRadius: 7, // Размер точек - // pointBackgroundColor: theme === 'dark' ? 'white' :'red', // Цвет точек + // pointBackgroundColor: 'white' // Цвет точек // pointBorderWidth: 1, // Ширина обводки точек // pointBorderColor: '#8280FF', // Цвет обводки точек // hoverRadius: 7, // Размер точек при наведении @@ -1,2 +1,2 @@ export { useAutoScroll } from './use-auto-scroll' -export { useThemeAndDevice } from './use-theme-and-device' +export { useDeviceType } from './use-device-type' \ No newline at end of file @@ -1,8 +1,8 @@ import { DeviceOs } from '../types/entities' -export const useThemeAndDevice = (device?: 'desktop' | 'mobile', deviceOs?: DeviceOs) => { +export const useDeviceType = (device?: 'desktop' | 'mobile', deviceOs?: DeviceOs) => { const desktop = device === 'desktop' const ios = deviceOs === 'ios' - return { theme: 'dark', desktop, ios } + return { desktop, ios } } @@ -1,4 +1,3 @@ -import { useTheme } from '@mui/material/styles' export const lineOptions = { responsive: true, @@ -4,7 +4,6 @@ import { TextField } from '@mui/material' import { TextFieldProps } from '@mui/material/TextField/TextField' import { baseColor } from '#/shared/lib/constants/colors' -import { useThemeAndDevice } from '#/shared/lib/hooks' export const styleInputWithoutBorderFocus = { '& .MuiOutlinedInput-root:hover': { @@ -20,13 +20,13 @@ import Title from '#/features/title/title' import { NextPageWithLayout } from '#/pages/_app' import { DrawerCustom, Loader } from '#/shared' import { c, getDeviceType, getOs } from '#/shared/lib/helpers' -import { useThemeAndDevice } from '#/shared/lib/hooks' import { useProgressLoader } from '#/shared/lib/hooks/use-progress-loader' import { useShowDataStore } from '#/shared/lib/hooks/use-show-data' import { SvgIcon } from '#/shared/ui/svg' import ProgressLoader from '#/widgets/loaders/progress-loader-props' import { AudioMessagesList } from '#/widgets/messages/ui/audio-messages-list' import { ModelApiView, StaticTabs } from '#/widgets/model-api-view' +import { useDeviceType } from '#/shared/lib/hooks' const AudioModelPage: NextPageWithLayout = () => { const { query, push } = useRouter() @@ -35,7 +35,7 @@ const AudioModelPage: NextPageWithLayout = () => { const deviceType = getDeviceType() const deviceOs = getOs() - const { desktop } = useThemeAndDevice(deviceType, deviceOs) + const { desktop } = useDeviceType(deviceType, deviceOs) const [scope, setScope] = useState<'playground' | 'api'>('playground') const [prompt, setPrompt] = useState('') @@ -10,14 +10,14 @@ import { AudioModelCard, IShortModel } from '#/entities/model-entity' import { NextPageWithLayout } from '#/pages/_app' import styles from './audio-models.module.scss' -import { useThemeAndDevice } from '#/shared/lib/hooks' import { getDeviceType, getOs } from '#/shared/lib/helpers' +import { useDeviceType } from '#/shared/lib/hooks' export const AudioModelsPage: NextPageWithLayout = () => { const [models, setModels] = useState(null) const deviceType = getDeviceType() const deviceOs = getOs() - const { desktop } = useThemeAndDevice(deviceType, deviceOs) + const { desktop } = useDeviceType(deviceType, deviceOs) const { data, status } = useSession() const payment_plan = useAppSelector((state) => state.user.payment_plan) @@ -18,13 +18,13 @@ import Title from '#/features/title/title' import { NextPageWithLayout } from '#/pages/_app' import { DrawerCustom, Loader } from '#/shared' import { c, getDeviceType, getOs } from '#/shared/lib/helpers' -import { useThemeAndDevice } from '#/shared/lib/hooks' import { useShowDataStore } from '#/shared/lib/hooks/use-show-data' import { SvgIcon } from '#/shared/ui/svg' import { ImageMessagesList } from '#/widgets/messages' import { ModelApiView, StaticTabs } from '#/widgets/model-api-view' import styles from './image-model.module.scss' +import { useDeviceType } from '#/shared/lib/hooks' const ImageModelPage: NextPageWithLayout = () => { const deviceOs = getOs() @@ -35,7 +35,7 @@ const ImageModelPage: NextPageWithLayout = () => { const [scope, setScope] = useState<'playground' | 'api'>('playground') const { botParams, version, modelType, fetchBotParams, resetParams, setDefaultParams, setVersion } = useImageBot(query.slug as string) - const { desktop } = useThemeAndDevice(deviceType, deviceOs) + const { desktop } = useDeviceType(deviceType, deviceOs) const { showMessage } = useShowDataStore() const { openFiltersMobile, setOpenFiltersMobile, params, setParams, includeParams } = useImagesBotFilters() const { refScrollMobile, refScrollDesktop, mobileScrollContainer, onObserverMounted, setMessages, fetchMessages, loading, offset, messages } = @@ -20,13 +20,13 @@ import Title from '#/features/title/title' import { NextPageWithLayout } from '#/pages/_app' import { DrawerCustom, Error, Loader } from '#/shared' import { c, getDeviceType, getOs } from '#/shared/lib/helpers' -import { useThemeAndDevice } from '#/shared/lib/hooks' import { useProgressLoader } from '#/shared/lib/hooks/use-progress-loader' import { useShowDataStore } from '#/shared/lib/hooks/use-show-data' import { SvgIcon } from '#/shared/ui/svg' import ProgressLoader from '#/widgets/loaders/progress-loader-props' import { VideoMessagesList } from '#/widgets/messages/ui/video-messages-list' import { ModelApiView, StaticTabs } from '#/widgets/model-api-view' +import { useDeviceType } from '#/shared/lib/hooks' const VideoModelPage: NextPageWithLayout = () => { const { query } = useRouter() @@ -34,7 +34,7 @@ const VideoModelPage: NextPageWithLayout = () => { const { data: session } = useSession() const deviceType = getDeviceType() const deviceOs = getOs() - const { desktop } = useThemeAndDevice(deviceType, deviceOs) + const { desktop } = useDeviceType(deviceType, deviceOs) const [scope, setScope] = useState<'playground' | 'api'>('playground') const [prompt, setPrompt] = useState('') @@ -8,7 +8,6 @@ import { signOut, useSession } from 'next-auth/react' import InfoBar from '#/app/layout/ui/info-bar' import { useAppDispatch, useAppSelector } from '#/app/store/store' import { getUserBalance } from '#/entities/balance' -import { useTheme } from '#/entities/theme' import { getAllInfo } from '#/entities/user-account' import { ChangePasswordPlate } from '#/features/change-password-corp' import { ErrorReportPlate } from '#/features/error-report' @@ -33,7 +32,6 @@ export const Layout: React.FC = ({ children, titlePage, isLoader, h const desktop = device === 'desktop' - useTheme() const { data, status } = useSession() @@ -4,13 +4,11 @@ import Head from 'next/head' import { LayoutProps } from '../types' -import { useTheme } from '#/entities/theme' import { getDeviceType } from '#/shared/lib/helpers' export const LayoutWithoutSideMenu = ({ children, titlePage, device = getDeviceType() }: LayoutProps) => { const desktop = device === 'desktop' - useTheme() return ( <>