Herping the derp

This commit is contained in:
ScuroNeko 2023-05-19 02:28:46 +03:00
parent 6f43e6265a
commit 3ea75d83d2
33 changed files with 187 additions and 105 deletions

30
.gitignore vendored
View File

@ -219,3 +219,33 @@ fabric.properties
# Android studio 3.1+ serialized cache file # Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser .idea/caches/build_file_checksums.ser
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
build/

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

BIN
public/icon-192x192.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
public/icon-256x256.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
public/icon-384x384.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
public/icon-512x512.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -2,16 +2,20 @@
<html lang="ru"> <html lang="ru">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-title" content="Nix13"> <meta name="apple-mobile-web-app-title" content="nix13.pw">
<link rel="apple-touch-icon" href="./favicon.png">
<meta name="application-name" content="Nix13"> <meta name="application-name" content="Nix13">
<meta name="theme-color" content="#ff00ff"> <meta name="theme-color" content="#222222">
<link sizes="512x512" href="./favicon.png"> <link sizes="192x192" href="./icon-192x192.png">
<link sizes="256x256" href="./icon-256x256.png">
<link sizes="384x384" href="./icon-384x384.png">
<link sizes="512x512" href="./icon-512x512.png">
<link rel="shortcut icon" href="./icon-512x512.png" type="image/png">
<link rel="apple-touch-icon" href="./icon-192x192.png">
<link rel="manifest" href="./manifest.webmanifest"> <link rel="manifest" href="./manifest.webmanifest">
<!-- FontAwesome --> <!-- FontAwesome -->

View File

@ -1,11 +1,26 @@
{ {
"short_name": "Nix13", "theme_color": "#222222",
"name": "Nix13", "background_color": "#222222",
"display": "browser",
"scope": "/",
"start_url": "/",
"name": "Nix13 website",
"short_name": "Nix13 website",
"icons": [{ "icons": [{
"src": "favicon.png", "src": "/icon-192x192.png",
"sizes": "512x512", "sizes": "192x192",
"type": "image/png" "type": "image/png"
}], },{
"display": "fullscreen", "src": "/icon-256x256.png",
"start_url": "/" "sizes": "256x256",
"type": "image/png"
}, {
"src": "/icon-384x384.png",
"sizes": "384x384",
"type": "image/png"
}, {
"src": "/icon-512x512.png",
"sizes": "512x512",
"type": "image/png"
}]
} }

View File

@ -9,11 +9,11 @@ const App: FC = () => (
<div className="App"> <div className="App">
<Navbar/> <Navbar/>
<div className="Container"> <main className="Container">
<Main/> <Main/>
<Projects/> <Projects/>
<GenshinDownloads/> <GenshinDownloads/>
</div> </main>
</div> </div>
); );

View File

@ -1,13 +1,13 @@
import './Navbas.scss'; import './Navbas.scss';
const Navbar = () => ( const Navbar = () => (
<div className="Navbar"> <nav className="Navbar">
<div className="Navbar__Container"> <div className="Navbar__Container">
<a href="#Main" className='Navbar__Container_Link'>Основное</a> <a href="#Main" className='Navbar__Container_Link'>Основное</a>
<a href="#Projects" className='Navbar__Container_Link'>Проекты</a> <a href="#Projects" className='Navbar__Container_Link'>Проекты</a>
<a href="#GenshinDownloads" className='Navbar__Container_Link'>Genshin</a> <a href="#GenshinDownloads" className='Navbar__Container_Link'>Genshin</a>
</div> </div>
</div> </nav>
); );
export default Navbar; export default Navbar;

View File

@ -24,6 +24,10 @@
&_Link { &_Link {
font-size: 20px; font-size: 20px;
&:hover {
text-decoration: underline var(--accent-color);
}
&:not(:last-child) { &:not(:last-child) {
margin-right: 8px; margin-right: 8px;
} }

View File

@ -1,11 +1,6 @@
import { createRoot } from 'react-dom/client'; import { createRoot } from 'react-dom/client';
import { BrowserRouter } from "react-router-dom";
import App from './components/App/App'; import App from './components/App/App';
const container = document.getElementById('root') as HTMLElement; const container = document.getElementById('root') as HTMLElement;
createRoot(container).render( createRoot(container).render(<App/>);
<BrowserRouter>
<App/>
</BrowserRouter>
);

View File

@ -2,6 +2,15 @@
.GenshinDownloads { .GenshinDownloads {
padding-top: var(--navbar-height); padding-top: var(--navbar-height);
display: flex;
flex-direction: column;
&__Title {
font-size: 3rem;
text-align: center;
font-weight: 200;
text-decoration: underline var(--accent-color);
}
&__Item { &__Item {
&_Title { &_Title {
@ -35,6 +44,7 @@
&__Actual, &__Outdated, &__Beta { &__Actual, &__Outdated, &__Beta {
text-align: center; text-align: center;
font-size: 2rem;
border-bottom: 1px solid #fff; border-bottom: 1px solid #fff;
margin-bottom: 4px; margin-bottom: 4px;
padding-bottom: 4px; padding-bottom: 4px;

View File

@ -1,7 +1,6 @@
import {useEffect, useState} from "react"; import {useEffect, useState} from "react";
import './GenshinDownloads.scss'; import './GenshinDownloads.scss';
import Loading from "../../ui/Loading/Loading"; import Loading from "../../ui/Loading/Loading";
import * as url from "url";
const GenshinDownloads = () => { const GenshinDownloads = () => {
const [genshinDL, setGenshinDL] = useState<GenshinDLType[]>([]); const [genshinDL, setGenshinDL] = useState<GenshinDLType[]>([]);
@ -10,9 +9,7 @@ const GenshinDownloads = () => {
const [betaCollapse, setBetaCollapse] = useState(true); const [betaCollapse, setBetaCollapse] = useState(true);
useEffect(() => { useEffect(() => {
// const url = 'https://baka.nix13.pw/genshin'; fetch('https://baka.nix13.pw/genshin')
const url = 'http://localhost:8099/genshin'
fetch(url)
.then(r => r.json()) .then(r => r.json())
.then(r => setGenshinDL(r.genshin)) .then(r => setGenshinDL(r.genshin))
.then(_ => setLoading(false)); .then(_ => setLoading(false));
@ -21,7 +18,9 @@ const GenshinDownloads = () => {
if(loading || !genshinDL) return <Loading/>; if(loading || !genshinDL) return <Loading/>;
return ( return (
<div className={'GenshinDownloads'} id='GenshinDownloads'> <div className={'GenshinDownloads'} id='GenshinDownloads'>
<h1 className={'GenshinDownloads__Actual'}>Актуальная версия</h1> <div className="GenshinDownloads__Title">Genshin Impact</div>
<span className={'GenshinDownloads__Actual'}>Актуальная версия</span>
{genshinDL.filter(dl => !dl.outdated && !dl.beta).map(dl => ( {genshinDL.filter(dl => !dl.outdated && !dl.beta).map(dl => (
<div className={'GenshinDownloads__Item'} key={dl.name}> <div className={'GenshinDownloads__Item'} key={dl.name}>
<h2 className={'GenshinDownloads__Item_Title'}>{dl.name}</h2> <h2 className={'GenshinDownloads__Item_Title'}>{dl.name}</h2>
@ -40,7 +39,7 @@ const GenshinDownloads = () => {
</div> </div>
))} ))}
<h1 className={`GenshinDownloads__Outdated ${outdatedCollapse && 'GenshinDownloads__Outdated--NotCollapsed'}`} onClick={() => setOutdatedCollapse(!outdatedCollapse)}>Устаревшие версии</h1> <span className={`GenshinDownloads__Outdated ${outdatedCollapse && 'GenshinDownloads__Outdated--NotCollapsed'}`} onClick={() => setOutdatedCollapse(!outdatedCollapse)}>Устаревшие версии</span>
{!outdatedCollapse && genshinDL.filter(dl => dl.outdated && !dl.beta).map(dl => ( {!outdatedCollapse && genshinDL.filter(dl => dl.outdated && !dl.beta).map(dl => (
<div className={'GenshinDownloads__Item'} key={dl.name}> <div className={'GenshinDownloads__Item'} key={dl.name}>
<h2 className={'GenshinDownloads__Item_Title'}>{dl.name}</h2> <h2 className={'GenshinDownloads__Item_Title'}>{dl.name}</h2>
@ -58,7 +57,7 @@ const GenshinDownloads = () => {
</div> </div>
))} ))}
<h1 className={`GenshinDownloads__Beta ${betaCollapse && 'GenshinDownloads__Beta--NotCollapsed'}`} onClick={() => setBetaCollapse(!betaCollapse)}>Бета версии</h1> <span className={`GenshinDownloads__Beta ${betaCollapse && 'GenshinDownloads__Beta--NotCollapsed'}`} onClick={() => setBetaCollapse(!betaCollapse)}>Бета версии</span>
{!betaCollapse && genshinDL.filter(dl => dl.beta).map(dl => ( {!betaCollapse && genshinDL.filter(dl => dl.beta).map(dl => (
<div className={'GenshinDownloads__Item'} key={dl.name}> <div className={'GenshinDownloads__Item'} key={dl.name}>
<h2 className={'GenshinDownloads__Item_Title'}>{dl.name}</h2> <h2 className={'GenshinDownloads__Item_Title'}>{dl.name}</h2>

View File

@ -2,8 +2,9 @@
.Main { .Main {
width: 100%; width: 100%;
height: calc(100vh - var(--navbar-height)); height: calc(100vh - var(--navbar-height) - env(safe-area-inset-top));
box-sizing: border-box; box-sizing: border-box;
padding-bottom: calc(8px + env(safe-area-inset-bottom));
&__Center { &__Center {
height: calc(100% - var(--navbar-height)); height: calc(100% - var(--navbar-height));
@ -33,15 +34,10 @@
&_Link { &_Link {
display: flex; display: flex;
align-items: center; align-items: center;
font-size: 2rem;
& > :first-child {
margin-right: 4px;
}
&:not(:last-child) { &:not(:last-child) {
margin-right: 4px; margin-right: 12px;
padding-right: 4px;
border-right: 1px solid white;
} }
} }
} }

View File

@ -12,6 +12,10 @@ const Main = () => {
'Golang fullstack', 'Golang fullstack',
1000, 1000,
'Python fullstack', 'Python fullstack',
1000,
'Kotlin developer',
1000,
'Web developer',
1000 1000
]} ]}
repeat={Infinity} repeat={Infinity}
@ -22,36 +26,23 @@ const Main = () => {
<div className="Main__Links"> <div className="Main__Links">
<a className="Main__Links_Link" href='https://t.me/DarkShinigani' target='_blank' rel='noopener noreferrer'> <a className="Main__Links_Link" href='https://t.me/DarkShinigani' target='_blank' rel='noopener noreferrer'>
<i className="fa-brands fa-telegram"/> <i className="fa-brands fa-telegram"/>
<span>Телеграм</span>
</a> </a>
<a className="Main__Links_Link" href='https://vk.com/scur0nek0' target='_blank' rel='noopener noreferrer'> <a className="Main__Links_Link" href='https://vk.com/scur0nek0' target='_blank' rel='noopener noreferrer'>
<i className="fa-brands fa-vk"/> <i className="fa-brands fa-vk"/>
ВК
</a> </a>
<a className="Main__Links_Link" href='https://github.com/Nix1304' target='_blank' rel='noopener noreferrer'> <a className="Main__Links_Link" href='https://github.com/Nix1304' target='_blank' rel='noopener noreferrer'>
<i className="fa-brands fa-github"/> <i className="fa-brands fa-github"/>
GitHub
</a> </a>
<a className="Main__Links_Link" href='https://git.nix13.pw/' target='_blank' rel='noopener noreferrer'> <a className="Main__Links_Link" href='https://git.nix13.pw/' target='_blank' rel='noopener noreferrer'>
<i className="fa-brands fa-git"/> <i className="fa-brands fa-git"/>
Git
</a> </a>
<a className="Main__Links_Link" href='https://mvn.nix13.pw/' target='_blank' rel='noopener noreferrer'> <a className="Main__Links_Link" href='https://mvn.nix13.pw/' target='_blank' rel='noopener noreferrer'>
<i className="fa-brands fa-readme"></i> <i className="fa-brands fa-readme"></i>
Maven
</a> </a>
<a className="Main__Links_Link" href='https://files.nix13.pw/' target='_blank' rel='noopener noreferrer'> <a className="Main__Links_Link" href='https://files.nix13.pw/' target='_blank' rel='noopener noreferrer'>
<i className="fa-light fa-files"/> <i className="fa-light fa-files"/>
Files
</a> </a>
</div> </div>
{/*<div className="Buttons">*/}
{/* <button className="Button_Outline--Glow">Aboba</button>*/}
{/* <button className="Button_Outline--Glow">Aboba</button>*/}
{/* <button className="Button_Outline--Glow">Aboba</button>*/}
{/*</div>*/}
</div> </div>
); );
} }

View File

@ -1,7 +1,24 @@
.Projects { .Projects {
padding-top: var(--navbar-height); padding-top: var(--navbar-height);
width: 100%; width: 100%;
display: flex;
flex-direction: column;
&_Title {
font-size: 3rem;
text-align: center;
font-weight: 200;
text-decoration: underline var(--accent-color);
}
&__Title {
text-align: center;
font-size: 2rem;
border-bottom: 1px solid #fff;
margin-bottom: 4px;
padding-bottom: 4px;
}
&__List { &__List {
margin-top: 8px; margin-top: 8px;
} }

View File

@ -1,6 +1,7 @@
import React, {useEffect, useState} from "react"; import React, {useEffect, useState} from "react";
import ProjectCard from "../../ui/ProjectCard/ProjectCard"; import ProjectCard from "../../ui/ProjectCard/ProjectCard";
import './Projects.scss'; import './Projects.scss';
import Loading from "../../ui/Loading/Loading";
type ProjectsState = { type ProjectsState = {
done: ProjectType[] done: ProjectType[]
@ -18,10 +19,12 @@ const Projects = () => {
.then(_ => setLoading(false)); .then(_ => setLoading(false));
}, []); }, []);
if(loading) return <div>Грузится, бля...</div> if(loading) return <Loading/>;
return ( return (
<div className="Projects" id='Projects'> <div className="Projects" id='Projects'>
<h2>Завершенные и в разработке</h2> <div className="Projects_Title">Проекты</div>
<span className='Projects__Title' style={{ borderColor: '#ab1bff', color: '#ab1bff' }}>Завершенные и в разработке</span>
<div className="Projects__List"> <div className="Projects__List">
{projects.done.map(project => ( {projects.done.map(project => (
<ProjectCard <ProjectCard
@ -32,7 +35,7 @@ const Projects = () => {
))} ))}
</div> </div>
<h2>Замороженные и брошенные</h2> <span className='Projects__Title' style={{ borderColor: '#19b3a6', color: '#19b3a6' }}>Замороженные и брошенные</span>
<div className="Projects__List"> <div className="Projects__List">
{projects.dropped.map(project => ( {projects.dropped.map(project => (
<ProjectCard <ProjectCard

View File

@ -0,0 +1,5 @@
const StarRailDownloads = () => {
}
export default StarRailDownloads;

View File

@ -1,5 +1,5 @@
const Loading = () => ( const Loading = () => (
<div>Грузится бля!</div> <div>Загрузка...</div>
); );
export default Loading; export default Loading;

View File

@ -1,3 +0,0 @@
.ProjectLinkBadge
&:not(:last-child)
margin-right: 8px

View File

@ -0,0 +1,5 @@
.ProjectLinkBadge {
&:not(:last-child) {
margin-right: 8px;
}
}

View File

@ -1,4 +1,4 @@
import './ProjectLinkBadge.sass'; import './ProjectLinkBadge.scss';
type Props = { type Props = {
linkImage: ProjectLink linkImage: ProjectLink

View File

@ -1,3 +0,0 @@
.ProjectStackBadge
&:not(:last-child)
margin-right: 8px

View File

@ -0,0 +1,5 @@
.ProjectStackBadge {
&:not(:last-child) {
margin-right: 8px
}
}

View File

@ -1,4 +1,4 @@
import './ProjectStackBadge.sass'; import './ProjectStackBadge.scss';
type Props = { type Props = {
stack: ProjectStack stack: ProjectStack

View File

@ -1,17 +0,0 @@
.ProjectStatus
font-size: 16px
font-weight: 300
height: fit-content
padding: 2px 6px
&__Development
background-color: #ff9c1b
&__Release
background-color: #ab1bff
&__Freeze
background-color: #19b3a6
&__Dropped
background-color: #ff1b1b

View File

@ -0,0 +1,19 @@
.ProjectStatus {
font-size: 16px;
font-weight: 300;
height: fit-content;
padding: 2px 6px;
&__Development {
background-color: #ff9c1b;
}
&__Release {
background-color: #ab1bff;
}
&__Freeze {
background-color: #19b3a6;
}
&__Dropped {
background-color: #ff1b1b;
}
}

View File

@ -1,5 +1,5 @@
import { capitalize } from "../../utils"; import { capitalize } from "../../utils";
import './ProjectStatusBadge.sass'; import './ProjectStatusBadge.scss';
type Props = { type Props = {
status: ProjectStatus status: ProjectStatus

View File

@ -1,23 +0,0 @@
.ProjectCard
background-color: #333
padding: 8px
margin: 0 8px 8px 0
box-sizing: border-box
border: 2px solid var(--accent-color)
&__Title
display: flex
justify-content: space-between
margin-bottom: 4px
&__Content, &__Links, &__Stack
border-top: 1px solid #d8858d
padding-top: 4px
&__Content, &__Stack
margin-bottom: 4px
&__Links
font-weight: 500
&_Link:not(:first-child)
margin-left: 4px

View File

@ -0,0 +1,30 @@
.ProjectCard {
background-color: #333;
padding: 8px;
box-sizing: border-box;
border: 2px solid var(--accent-color);
margin-bottom: 8px;
&__Title {
display: flex;
justify-content: space-between;
margin-bottom: 4px;
}
&__Content, &__Links, &__Stack {
border-top: 1px solid #d8858d;
padding-top: 4px;
}
&__Content, &__Stack {
margin-bottom: 4px;
}
&__Links {
font-weight: 500;
&_Link:not(:first-child) {
margin-left: 4px;
}
}
}

View File

@ -2,7 +2,7 @@ import React from "react";
import ProjectLinkBadge from "../ProjectBadge/ProjectLinkBadge"; import ProjectLinkBadge from "../ProjectBadge/ProjectLinkBadge";
import ProjectStackBadge from "../ProjectBadge/ProjectStackBadge"; import ProjectStackBadge from "../ProjectBadge/ProjectStackBadge";
import ProjectStatusBadge from "../ProjectBadge/ProjectStatusBadge"; import ProjectStatusBadge from "../ProjectBadge/ProjectStatusBadge";
import './ProjectCard.sass'; import './ProjectCard.scss';
type Props = { type Props = {
title: string title: string