credits, clean up css, add more translations
This commit is contained in:
parent
9abb1dfc97
commit
9e4f84cf09
10 changed files with 195 additions and 15 deletions
|
|
@ -24,7 +24,8 @@
|
||||||
"proxy": "Proxy",
|
"proxy": "Proxy",
|
||||||
"tab": "Tab",
|
"tab": "Tab",
|
||||||
"custom": "Customization",
|
"custom": "Customization",
|
||||||
"misc": "Misc"
|
"misc": "Misc",
|
||||||
|
"credits": "Credits"
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"title": "Proxy",
|
"title": "Proxy",
|
||||||
|
|
@ -56,10 +57,22 @@
|
||||||
"subtitle": "Enter the URL of your bare server",
|
"subtitle": "Enter the URL of your bare server",
|
||||||
"select": "Select"
|
"select": "Select"
|
||||||
},
|
},
|
||||||
|
"wisp": {
|
||||||
|
"title": "Wisp Server",
|
||||||
|
"subtitle": "Enter the url of a Wisp server",
|
||||||
|
"select": "Select"
|
||||||
|
},
|
||||||
|
"transport": {
|
||||||
|
"title": "Transport",
|
||||||
|
"desc": "Select the transport to use"
|
||||||
|
},
|
||||||
"theme": {
|
"theme": {
|
||||||
"title": "Theme",
|
"title": "Theme",
|
||||||
"subtitle": "Choose a theme so your eyes don't hate us",
|
"subtitle": "Choose a theme so your eyes don't hate us",
|
||||||
"select": "Select"
|
"select": "Select",
|
||||||
|
"particles": "Particles",
|
||||||
|
"particlesDesc": "Choose a particles wallpaper",
|
||||||
|
"particlesNone": "None"
|
||||||
},
|
},
|
||||||
"httpProxy": {
|
"httpProxy": {
|
||||||
"title": "(Advanced) HTTP Proxy",
|
"title": "(Advanced) HTTP Proxy",
|
||||||
|
|
@ -118,5 +131,10 @@
|
||||||
"q": "Nebula is slow.",
|
"q": "Nebula is slow.",
|
||||||
"a": "You might be connected to the wrong server. Check the bare server you are connected to and make sure its the country you're closest to."
|
"a": "You might be connected to the wrong server. Check the bare server you are connected to and make sure its the country you're closest to."
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"credits": {
|
||||||
|
"devs": "Site Developers",
|
||||||
|
"jpTranslators": "Japanese Translators",
|
||||||
|
"esTranslators": "Spanish Translators"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,8 @@
|
||||||
"proxy": "Proxy",
|
"proxy": "Proxy",
|
||||||
"tab": "Pestaña",
|
"tab": "Pestaña",
|
||||||
"custom": "Personalización",
|
"custom": "Personalización",
|
||||||
"misc": "Misc"
|
"misc": "Misc",
|
||||||
|
"credits": "Créditos"
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"title": "Proxy",
|
"title": "Proxy",
|
||||||
|
|
@ -56,9 +57,21 @@
|
||||||
"subtitle": "Pon tu url de tu bare server",
|
"subtitle": "Pon tu url de tu bare server",
|
||||||
"select": "Seleccionar"
|
"select": "Seleccionar"
|
||||||
},
|
},
|
||||||
|
"wisp": {
|
||||||
|
"title": "Servidor Wisp",
|
||||||
|
"subtitle": "Introduzca la URL de un servidor Wisp",
|
||||||
|
"select": "Seleccionar"
|
||||||
|
},
|
||||||
|
"transport": {
|
||||||
|
"title": "Transporte",
|
||||||
|
"desc": "Seleccione el transporte que desea utilizar"
|
||||||
|
},
|
||||||
"theme": {
|
"theme": {
|
||||||
"title": "Mirar",
|
"title": "Mirar",
|
||||||
"subtitle": "Elige una mirada para que tus ojos no nos odienn"
|
"subtitle": "Elige una mirada para que tus ojos no nos odienn",
|
||||||
|
"particles": "Partículas",
|
||||||
|
"particlesDesc": "Elige un fondo de pantalla de partículas",
|
||||||
|
"particlesNone": "Ninguna"
|
||||||
},
|
},
|
||||||
"httpProxy": {
|
"httpProxy": {
|
||||||
"title": "Proxy HTTP (avanzado)",
|
"title": "Proxy HTTP (avanzado)",
|
||||||
|
|
@ -117,5 +130,10 @@
|
||||||
"q": "Nebula es lento.",
|
"q": "Nebula es lento.",
|
||||||
"a": "Es posible que estés conectado al servidor incorrecto. Verifica el servidor bare al que estás conectado y asegúrate de que sea el país más cercano a ti."
|
"a": "Es posible que estés conectado al servidor incorrecto. Verifica el servidor bare al que estás conectado y asegúrate de que sea el país más cercano a ti."
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"credits": {
|
||||||
|
"devs": "Desarrolladores del sitio",
|
||||||
|
"jpTranslators": "Traductores de japonés",
|
||||||
|
"esTranslators": "Traductores de español"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,8 @@
|
||||||
"proxy": "プロキシ",
|
"proxy": "プロキシ",
|
||||||
"tab": "タブ",
|
"tab": "タブ",
|
||||||
"custom": "カスタマイズ",
|
"custom": "カスタマイズ",
|
||||||
"misc": "その他"
|
"misc": "その他",
|
||||||
|
"credits": "クレジット"
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"title": "プロキシ",
|
"title": "プロキシ",
|
||||||
|
|
@ -56,9 +57,21 @@
|
||||||
"subtitle": "Bare サーバー URL を入力してください",
|
"subtitle": "Bare サーバー URL を入力してください",
|
||||||
"select": "選択する"
|
"select": "選択する"
|
||||||
},
|
},
|
||||||
|
"wisp": {
|
||||||
|
"title": "Wisp サーバ",
|
||||||
|
"subtitle": "Wisp サーバの URL を入力してください",
|
||||||
|
"select": "選択"
|
||||||
|
},
|
||||||
|
"transport": {
|
||||||
|
"title": "輸送",
|
||||||
|
"desc": "使用するトランスポートを選択します"
|
||||||
|
},
|
||||||
"theme": {
|
"theme": {
|
||||||
"title": "テーマ",
|
"title": "テーマ",
|
||||||
"subtitle": "目が嫌いにならないようにテーマを選んでください"
|
"subtitle": "目が嫌いにならないようにテーマを選んでください",
|
||||||
|
"particles": "粒子",
|
||||||
|
"particlesDesc": "粒子の壁紙を選択してください",
|
||||||
|
"particlesNone": "なし"
|
||||||
},
|
},
|
||||||
"httpProxy": {
|
"httpProxy": {
|
||||||
"title": "(高度な) HTTPプロキシ",
|
"title": "(高度な) HTTPプロキシ",
|
||||||
|
|
@ -117,5 +130,10 @@
|
||||||
"q": "ネビュラが遅いです。",
|
"q": "ネビュラが遅いです。",
|
||||||
"a": "間違ったサーバーに接続している可能性があります。接続しているベアサーバーを確認し、最も近い国であることを確認してください。"
|
"a": "間違ったサーバーに接続している可能性があります。接続しているベアサーバーを確認し、最も近い国であることを確認してください。"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"credits": {
|
||||||
|
"devs": "サイト開発者",
|
||||||
|
"jpTranslators": "日本語翻訳者",
|
||||||
|
"esTranslators": "スペイン語翻訳者"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
99
src/pages/Settings/Credits.tsx
Normal file
99
src/pages/Settings/Credits.tsx
Normal file
|
|
@ -0,0 +1,99 @@
|
||||||
|
import { motion } from "framer-motion";
|
||||||
|
import { tabContentVariant, settingsPageVariant } from "./Variants";
|
||||||
|
import Dropdown from "./Dropdown";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { PersonCard } from "./PersonCard";
|
||||||
|
|
||||||
|
export const Credits = ({ id, active }) => {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<motion.div
|
||||||
|
role="tabpanel"
|
||||||
|
id={id}
|
||||||
|
className="tab-content"
|
||||||
|
variants={tabContentVariant}
|
||||||
|
animate={active ? "active" : "inactive"}
|
||||||
|
initial="inactive"
|
||||||
|
>
|
||||||
|
<motion.div
|
||||||
|
variants={settingsPageVariant}
|
||||||
|
className="content-card flex w-full flex-row flex-wrap justify-center gap-4"
|
||||||
|
>
|
||||||
|
<div className="w-full p-10 text-input-text">
|
||||||
|
<div className="py-3">
|
||||||
|
<p className="text-4xl">{t("credits.devs")}</p>
|
||||||
|
<div className="grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3">
|
||||||
|
<PersonCard
|
||||||
|
name="Riftriot"
|
||||||
|
url="https://github.com/riftriot/"
|
||||||
|
profile="https://avatars.githubusercontent.com/u/117926989?v=4"
|
||||||
|
/>
|
||||||
|
<PersonCard
|
||||||
|
name="MotorTruck1221"
|
||||||
|
url="https://github.com/MotorTruck1221"
|
||||||
|
profile="https://avatars.githubusercontent.com/u/73721704?v=4"
|
||||||
|
/>
|
||||||
|
<PersonCard
|
||||||
|
name="Cohen"
|
||||||
|
url="https://github.com/cohenerickson"
|
||||||
|
profile="https://avatars.githubusercontent.com/u/72945444?v=4"
|
||||||
|
/>
|
||||||
|
<PersonCard
|
||||||
|
name="FireStreaker2"
|
||||||
|
url="https://github.com/FireStreaker2"
|
||||||
|
profile="https://avatars.githubusercontent.com/u/103970465?v=4"
|
||||||
|
/>
|
||||||
|
<PersonCard
|
||||||
|
name="wearr"
|
||||||
|
url="https://github.com/wearrrrr"
|
||||||
|
profile="https://avatars.githubusercontent.com/u/99224452?v=4"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<p className="mt-12 text-4xl">{t("credits.jpTranslators")}</p>
|
||||||
|
<div className="grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3">
|
||||||
|
<PersonCard
|
||||||
|
name="ProgrammerIn-wonderland"
|
||||||
|
url="https://github.com/ProgrammerIn-wonderland"
|
||||||
|
profile="https://avatars.githubusercontent.com/u/30693865?v=4"
|
||||||
|
/>
|
||||||
|
<PersonCard
|
||||||
|
name="wearr"
|
||||||
|
url="https://github.com/wearrrrr"
|
||||||
|
profile="https://avatars.githubusercontent.com/u/99224452?v=4"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<p className="mt-12 text-4xl">{t("credits.esTranslators")}</p>
|
||||||
|
<div className="grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3">
|
||||||
|
<PersonCard
|
||||||
|
name="Cohen"
|
||||||
|
url="https://github.com/cohenerickson"
|
||||||
|
profile="https://avatars.githubusercontent.com/u/72945444?v=4"
|
||||||
|
/>
|
||||||
|
<PersonCard
|
||||||
|
name="Notplayingallday383"
|
||||||
|
url="https://github.com/Notplayingallday383"
|
||||||
|
profile="https://avatars.githubusercontent.com/u/72810050?v=4"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<a href="https://github.com/titaniumnetwork-dev/Ultraviolet">
|
||||||
|
<p className="mt-12 text-4xl underline">Ultraviolet</p>
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/binary-person/Rammerhead">
|
||||||
|
<p className="mt-12 text-4xl underline">Rammerhead</p>
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/nebulaservices/dynamic">
|
||||||
|
<p className="mt-12 text-4xl underline">Dynamic</p>
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/MercuryWorkshop/epoxy-tls">
|
||||||
|
<p className="mt-12 text-4xl underline">epoxy-tls</p>
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/MercuryWorkshop/libcurl.js">
|
||||||
|
<p className="mt-12 text-4xl underline">libcurl.js</p>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</motion.div>
|
||||||
|
</motion.div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
@ -16,7 +16,7 @@ function Customization({ id, active }) {
|
||||||
];
|
];
|
||||||
|
|
||||||
const particles = [
|
const particles = [
|
||||||
{ id: "none", label: "None" },
|
{ id: "none", label: t("settings.theme.particlesNone") },
|
||||||
{ id: "/crismas.json", label: t("themes.crismas") }
|
{ id: "/crismas.json", label: t("themes.crismas") }
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -44,10 +44,10 @@ function Customization({ id, active }) {
|
||||||
</div>
|
</div>
|
||||||
<div className="flex h-64 w-80 flex-col flex-wrap content-center items-center rounded-lg border border-input-border-color bg-lighter p-2 text-center">
|
<div className="flex h-64 w-80 flex-col flex-wrap content-center items-center rounded-lg border border-input-border-color bg-lighter p-2 text-center">
|
||||||
<div className="p-2 text-3xl font-bold text-input-text">
|
<div className="p-2 text-3xl font-bold text-input-text">
|
||||||
Particles
|
{t("settings.theme.particles")}
|
||||||
</div>
|
</div>
|
||||||
<div className="text-md p-4 font-bold text-input-text">
|
<div className="text-md p-4 font-bold text-input-text">
|
||||||
Choose a particles wallpaper.
|
{t("settings.theme.particlesDesc")}
|
||||||
</div>
|
</div>
|
||||||
<Dropdown storageKey="particles" options={particles} refresh={true} />
|
<Dropdown storageKey="particles" options={particles} refresh={true} />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
18
src/pages/Settings/PersonCard.tsx
Normal file
18
src/pages/Settings/PersonCard.tsx
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
interface props {
|
||||||
|
name: string;
|
||||||
|
url: string;
|
||||||
|
profile: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const PersonCard = (props) => {
|
||||||
|
return (
|
||||||
|
<div class="flex flex-row mr-8">
|
||||||
|
<p className="text-lg">
|
||||||
|
<a href={props.url} class="underline">
|
||||||
|
<img src={props.profile} className="h-12 w-12 rounded-md" />
|
||||||
|
{props.name}
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
@ -123,20 +123,20 @@ const Proxy = ({ id, active }) => {
|
||||||
{transport !== "bare" && (
|
{transport !== "bare" && (
|
||||||
<div className="flex h-64 w-80 flex-col flex-wrap content-center items-center rounded-lg border border-input-border-color bg-lighter p-2 text-center">
|
<div className="flex h-64 w-80 flex-col flex-wrap content-center items-center rounded-lg border border-input-border-color bg-lighter p-2 text-center">
|
||||||
<div className="p-2 text-3xl font-bold text-input-text">
|
<div className="p-2 text-3xl font-bold text-input-text">
|
||||||
Wisp Server
|
{t("settings.wisp.title")}
|
||||||
</div>
|
</div>
|
||||||
<div className="text-md p-4 font-bold text-input-text">
|
<div className="text-md p-4 font-bold text-input-text">
|
||||||
Enter the url of a Wisp server
|
{t("settings.wisp.subtitle")}
|
||||||
</div>
|
</div>
|
||||||
<WispInput placeholder={wispUrl} />
|
<WispInput placeholder={wispUrl} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<div className="flex h-64 w-80 flex-col flex-wrap content-center items-center rounded-lg border border-input-border-color bg-lighter p-2 text-center">
|
<div className="flex h-64 w-80 flex-col flex-wrap content-center items-center rounded-lg border border-input-border-color bg-lighter p-2 text-center">
|
||||||
<div className="p-2 text-3xl font-bold text-input-text">
|
<div className="p-2 text-3xl font-bold text-input-text">
|
||||||
Transport
|
{t("settings.transport.title")}
|
||||||
</div>
|
</div>
|
||||||
<div className="text-md p-4 font-bold text-input-text">
|
<div className="text-md p-4 font-bold text-input-text">
|
||||||
Select the transport to use
|
{t("settings.transport.desc")}
|
||||||
</div>
|
</div>
|
||||||
<TransportDropdown
|
<TransportDropdown
|
||||||
storageKey="transport"
|
storageKey="transport"
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ function WispInput(props: WispInputProps) {
|
||||||
className="font-roboto mt-2 flex h-4 w-36 cursor-pointer flex-row items-center justify-center rounded-xl border border-input-border-color bg-input p-5 text-center text-lg text-input-text"
|
className="font-roboto mt-2 flex h-4 w-36 cursor-pointer flex-row items-center justify-center rounded-xl border border-input-border-color bg-input p-5 text-center text-lg text-input-text"
|
||||||
onClick={handleChange}
|
onClick={handleChange}
|
||||||
>
|
>
|
||||||
Select
|
{t("settings.wisp.select")}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ img {
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-size: 20px;
|
font-size: 14px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ import { GoBrowser } from "react-icons/go";
|
||||||
import { AiOutlineLaptop } from "react-icons/ai";
|
import { AiOutlineLaptop } from "react-icons/ai";
|
||||||
import { FaPalette } from "react-icons/fa";
|
import { FaPalette } from "react-icons/fa";
|
||||||
import { FaGear } from "react-icons/fa6";
|
import { FaGear } from "react-icons/fa6";
|
||||||
|
import { IoMdPerson } from "react-icons/io";
|
||||||
|
import { Credits } from "./Credits";
|
||||||
|
|
||||||
const tabs = [
|
const tabs = [
|
||||||
{
|
{
|
||||||
|
|
@ -36,6 +38,13 @@ const tabs = [
|
||||||
icon: <FaGear />,
|
icon: <FaGear />,
|
||||||
color: "#f56868",
|
color: "#f56868",
|
||||||
content: Misc
|
content: Misc
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "settings.tabs.credits",
|
||||||
|
id: "credits",
|
||||||
|
icon: <IoMdPerson />,
|
||||||
|
color: "#fefefe",
|
||||||
|
content: Credits
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue