Release v0.2.0 #74
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "proxyraye-next",
|
||||
"version": "0.1.0",
|
||||
"version": "0.2.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "proxyraye-next",
|
||||
"version": "0.1.0",
|
||||
"version": "0.2.0",
|
||||
"dependencies": {
|
||||
"@picocss/pico": "^2.0.6",
|
||||
"@reduxjs/toolkit": "^2.2.3",
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
'use client'
|
||||
|
||||
import "@/styles/globals.scss"
|
||||
|
||||
import ReduxProvider from "@/store/redux-provider";
|
||||
import type { Metadata } from 'next'
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'ProxyRaye',
|
||||
description: 'Watch porn videos without tracking or annoying ads!',
|
||||
}
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
|
@ -14,9 +17,7 @@ export default function RootLayout({
|
|||
|
||||
return (
|
||||
<>
|
||||
<ReduxProvider>
|
||||
{children}
|
||||
</ReduxProvider>
|
||||
{children}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
'use client'
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import Head from 'next/head';
|
||||
|
||||
import { AppProgressBar as ProgressBar } from 'next-nprogress-bar';
|
||||
|
||||
import { useAppSelector } from '@/store/store';
|
||||
import { LAYOUT_COLORS_PINK, LAYOUT_COLORS_YELLOW } from '@/constants/colors';
|
||||
import { Themes } from '@/meta/settings';
|
||||
|
||||
const Content: React.FC<React.PropsWithChildren> = (props) => {
|
||||
|
||||
const { children } = props;
|
||||
|
||||
const theme = useAppSelector((state) => state.settings.theme);
|
||||
|
||||
return (
|
||||
<html data-theme={theme} /*lang={locale}*/>
|
||||
<Head>
|
||||
<meta charSet="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
</Head>
|
||||
<body>
|
||||
<main className="container">{children}</main>
|
||||
<ProgressBar
|
||||
height="4px"
|
||||
color={theme == Themes.dark ? LAYOUT_COLORS_YELLOW : LAYOUT_COLORS_PINK}
|
||||
options={{ showSpinner: false }}
|
||||
shallowRouting
|
||||
/>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
};
|
||||
|
||||
export default Content;
|
|
@ -2,17 +2,17 @@
|
|||
|
||||
import React from 'react';
|
||||
|
||||
import { SiGitea } from "react-icons/si";
|
||||
import { SiCodeberg } from "react-icons/si";
|
||||
|
||||
import Icon from '../Icon';
|
||||
|
||||
import { REPO_GITEA_URL } from '@/constants/repo';
|
||||
import { REPO_CODEBERG_URL } from '@/constants/repo';
|
||||
|
||||
const Menu: React.FC = () => {
|
||||
|
||||
return (
|
||||
<Icon handleClick={() => {window.location.href = REPO_GITEA_URL;}}>
|
||||
{<SiGitea size={24} />}
|
||||
<Icon handleClick={() => {window.location.href = REPO_CODEBERG_URL;}}>
|
||||
{<SiCodeberg size={24} />}
|
||||
</Icon>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -1,38 +1,18 @@
|
|||
'use client'
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import Head from 'next/head';
|
||||
|
||||
import { AppProgressBar as ProgressBar } from 'next-nprogress-bar';
|
||||
|
||||
import { useAppSelector } from '@/store/store';
|
||||
import { LAYOUT_COLORS_PINK, LAYOUT_COLORS_YELLOW } from '@/constants/colors';
|
||||
import { Themes } from '@/meta/settings';
|
||||
import WithRedux from '@/store/withRedux';
|
||||
import Content from './Content';
|
||||
|
||||
const Layout: React.FC<React.PropsWithChildren> = (props) => {
|
||||
|
||||
const { children } = props;
|
||||
|
||||
const theme = useAppSelector((state) => state.settings.theme);
|
||||
|
||||
return (
|
||||
<html data-theme={theme} /*lang={locale}*/>
|
||||
<Head>
|
||||
<meta charSet="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Proxy Raye: watch porn videos without tracking or annoying ads!</title>
|
||||
</Head>
|
||||
<body>
|
||||
<main className="container">{children}</main>
|
||||
<ProgressBar
|
||||
height="4px"
|
||||
color={theme == Themes.dark ? LAYOUT_COLORS_YELLOW : LAYOUT_COLORS_PINK }
|
||||
options={{ showSpinner: false }}
|
||||
shallowRouting
|
||||
/>
|
||||
</body>
|
||||
</html>
|
||||
<WithRedux>
|
||||
<Content>
|
||||
{children}
|
||||
</Content>
|
||||
</WithRedux>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
export const REPO_GITEA_URL = 'https://git.lamacchinadesiderante.org/lamacchinadesiderante/proxyraye-nextjs'
|
||||
export const REPO_CODEBERG_URL = 'https://codeberg.org/lamacchinadesiderante/proxyraye'
|
|
@ -4,7 +4,24 @@ import { useDispatch, TypedUseSelectorHook, useSelector } from "react-redux";
|
|||
import { settingsReducer } from "@/store/settingsSlice";
|
||||
|
||||
import { persistReducer } from "redux-persist";
|
||||
import storage from "redux-persist/lib/storage";
|
||||
|
||||
import createWebStorage from "redux-persist/lib/storage/createWebStorage";
|
||||
|
||||
const createNoopStorage = () => {
|
||||
return {
|
||||
getItem(_key: any) {
|
||||
return Promise.resolve(null);
|
||||
},
|
||||
setItem(_key: any, value: any) {
|
||||
return Promise.resolve(value);
|
||||
},
|
||||
removeItem(_key: any) {
|
||||
return Promise.resolve();
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
const storage = typeof window !== "undefined" ? createWebStorage("local") : createNoopStorage();
|
||||
|
||||
const settingsPersistConfig = {
|
||||
key: "settings",
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
'use client'
|
||||
|
||||
import ReduxProvider from "@/store/redux-provider";
|
||||
|
||||
export default function WithRedux({
|
||||
children,
|
||||
}: Readonly<{
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
|
||||
return (
|
||||
<>
|
||||
<ReduxProvider>
|
||||
{children}
|
||||
</ReduxProvider>
|
||||
</>
|
||||
);
|
||||
}
|
Loading…
Reference in New Issue