Remove old
This commit is contained in:
parent
567b6784d5
commit
fa0805275a
62 changed files with 0 additions and 59363 deletions
|
@ -1,7 +0,0 @@
|
||||||
venv
|
|
||||||
.idea
|
|
||||||
.vscode
|
|
||||||
.DS_Store
|
|
||||||
.git
|
|
||||||
Dockerfile.save
|
|
||||||
|
|
13
Dockerfile
13
Dockerfile
|
@ -1,13 +0,0 @@
|
||||||
FROM python:3.8-slim-buster
|
|
||||||
|
|
||||||
ARG HOST
|
|
||||||
ARG PORT
|
|
||||||
|
|
||||||
WORKDIR .
|
|
||||||
|
|
||||||
COPY requirements.txt requirements.txt
|
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
|
||||||
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
CMD [ "python", "main.py" ]
|
|
|
@ -1,6 +0,0 @@
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
HOST = '0.0.0.0'
|
|
||||||
PORT = 7632
|
|
||||||
|
|
||||||
birthdate = datetime(2007, 10, 13)
|
|
142
main.py
142
main.py
|
@ -1,142 +0,0 @@
|
||||||
from fastapi import FastAPI
|
|
||||||
from fastapi.staticfiles import StaticFiles
|
|
||||||
from fastapi.templating import Jinja2Templates
|
|
||||||
from fastapi import Request
|
|
||||||
from starlette.middleware.cors import CORSMiddleware
|
|
||||||
|
|
||||||
import uvicorn
|
|
||||||
import requests
|
|
||||||
|
|
||||||
import threading
|
|
||||||
import time
|
|
||||||
import os
|
|
||||||
import math
|
|
||||||
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from models.Project import Project
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import logging
|
|
||||||
|
|
||||||
import config
|
|
||||||
|
|
||||||
# Parse arguments
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument('--host', dest='host', type=str, help='Hostname of the server')
|
|
||||||
parser.add_argument('--port', dest='port', type=int, help='Port of the server')
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
# Initialize global application
|
|
||||||
app = FastAPI()
|
|
||||||
app.mount("/static", StaticFiles(directory="static"), name="static")
|
|
||||||
templates = Jinja2Templates(directory="static/templates")
|
|
||||||
|
|
||||||
app.add_middleware(
|
|
||||||
CORSMiddleware,
|
|
||||||
allow_origins=['*'],
|
|
||||||
allow_credentials=True,
|
|
||||||
allow_methods=['*'],
|
|
||||||
allow_headers=['*'],
|
|
||||||
)
|
|
||||||
|
|
||||||
# Initialize global variables
|
|
||||||
repos = []
|
|
||||||
code_stats = {}
|
|
||||||
|
|
||||||
|
|
||||||
def get_declension(num: int, one: str, two: str, five: str):
|
|
||||||
n = num % 100
|
|
||||||
if 11 <= n <= 19:
|
|
||||||
return f'{str(num)} {five}'
|
|
||||||
else:
|
|
||||||
i = n % 10
|
|
||||||
if i == 1:
|
|
||||||
return f'{str(num)} {one}'
|
|
||||||
elif i in [2, 3, 4]:
|
|
||||||
return f'{str(num)} {two}'
|
|
||||||
else:
|
|
||||||
return f'{str(num)} {five}'
|
|
||||||
|
|
||||||
|
|
||||||
def load_projects():
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
resp = requests.get("https://git.mootfrost.dev/api/v1/repos/search",
|
|
||||||
params={'limit': 64,
|
|
||||||
'sort': 'updated',
|
|
||||||
'order': 'desc'}).json()
|
|
||||||
global repos
|
|
||||||
repos.clear()
|
|
||||||
for repo in resp['data']:
|
|
||||||
repos.append(Project(repo["name"], repo["description"], repo["html_url"]))
|
|
||||||
logging.info(f'{datetime.now()}: Projects updated')
|
|
||||||
except Exception as e:
|
|
||||||
logging.error(f'{datetime.now()}: Error while updating projects: {e}')
|
|
||||||
time.sleep(7200)
|
|
||||||
|
|
||||||
|
|
||||||
def load_code_stats():
|
|
||||||
while True:
|
|
||||||
resp = requests.get('https://waka.mootfrost.dev/api/compat/wakatime/v1/users/Mootfrost/stats/last_7_days').json()
|
|
||||||
global code_stats
|
|
||||||
code_stats.clear()
|
|
||||||
|
|
||||||
for el in resp['data']['languages']:
|
|
||||||
hours = el['hours']
|
|
||||||
minutes = el['minutes']
|
|
||||||
|
|
||||||
code_stats[el['name']] = ''
|
|
||||||
if hours > 0:
|
|
||||||
code_stats[el['name']] = get_declension(hours, 'час', 'часа', 'часов') + ' '
|
|
||||||
if minutes > 0:
|
|
||||||
code_stats[el['name']] += get_declension(minutes, 'минуту', 'минуты', 'минут') + ' '
|
|
||||||
if code_stats[el['name']] == '':
|
|
||||||
code_stats.pop(el['name'])
|
|
||||||
time.sleep(7200)
|
|
||||||
|
|
||||||
|
|
||||||
@app.on_event("startup")
|
|
||||||
def start():
|
|
||||||
threading.Thread(target=load_projects).start()
|
|
||||||
threading.Thread(target=load_code_stats).start()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/api/get_repos")
|
|
||||||
def get_repos():
|
|
||||||
return repos
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/api/get_code_stats")
|
|
||||||
def get_code_stats():
|
|
||||||
return code_stats
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/api/get_age")
|
|
||||||
def get_age():
|
|
||||||
today = datetime.today()
|
|
||||||
age = today.year - config.birthdate.year - (
|
|
||||||
(today.month, today.day) < (config.birthdate.month, config.birthdate.day))
|
|
||||||
return get_declension(age, 'год', 'года', 'лет')
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/")
|
|
||||||
def main_page(request: Request):
|
|
||||||
return templates.TemplateResponse("index.html", {"request": request})
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/about")
|
|
||||||
def about_page(request: Request):
|
|
||||||
return templates.TemplateResponse("about.html", {"request": request})
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/projects")
|
|
||||||
def projects_page(request: Request):
|
|
||||||
return templates.TemplateResponse("projects.html", {"request": request})
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
host = args.host if args.host else config.HOST
|
|
||||||
port = args.port if args.port else config.PORT
|
|
||||||
|
|
||||||
uvicorn.run(app, host=host, port=port)
|
|
|
@ -1,8 +0,0 @@
|
||||||
from dataclasses import dataclass
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class Project:
|
|
||||||
name: str
|
|
||||||
description: str
|
|
||||||
link: str
|
|
|
@ -1,4 +0,0 @@
|
||||||
uvicorn
|
|
||||||
fastapi
|
|
||||||
requests
|
|
||||||
jinja2
|
|
4124
static/resources/bootstrap/css/bootstrap-grid.css
vendored
4124
static/resources/bootstrap/css/bootstrap-grid.css
vendored
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4123
static/resources/bootstrap/css/bootstrap-grid.rtl.css
vendored
4123
static/resources/bootstrap/css/bootstrap-grid.rtl.css
vendored
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
488
static/resources/bootstrap/css/bootstrap-reboot.css
vendored
488
static/resources/bootstrap/css/bootstrap-reboot.css
vendored
|
@ -1,488 +0,0 @@
|
||||||
/*!
|
|
||||||
* Bootstrap Reboot v5.2.2 (https://getbootstrap.com/)
|
|
||||||
* Copyright 2011-2022 The Bootstrap Authors
|
|
||||||
* Copyright 2011-2022 Twitter, Inc.
|
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
||||||
*/
|
|
||||||
:root {
|
|
||||||
--bs-blue: #0d6efd;
|
|
||||||
--bs-indigo: #6610f2;
|
|
||||||
--bs-purple: #6f42c1;
|
|
||||||
--bs-pink: #d63384;
|
|
||||||
--bs-red: #dc3545;
|
|
||||||
--bs-orange: #fd7e14;
|
|
||||||
--bs-yellow: #ffc107;
|
|
||||||
--bs-green: #198754;
|
|
||||||
--bs-teal: #20c997;
|
|
||||||
--bs-cyan: #0dcaf0;
|
|
||||||
--bs-black: #000;
|
|
||||||
--bs-white: #fff;
|
|
||||||
--bs-gray: #6c757d;
|
|
||||||
--bs-gray-dark: #343a40;
|
|
||||||
--bs-gray-100: #f8f9fa;
|
|
||||||
--bs-gray-200: #e9ecef;
|
|
||||||
--bs-gray-300: #dee2e6;
|
|
||||||
--bs-gray-400: #ced4da;
|
|
||||||
--bs-gray-500: #adb5bd;
|
|
||||||
--bs-gray-600: #6c757d;
|
|
||||||
--bs-gray-700: #495057;
|
|
||||||
--bs-gray-800: #343a40;
|
|
||||||
--bs-gray-900: #212529;
|
|
||||||
--bs-primary: #0d6efd;
|
|
||||||
--bs-secondary: #6c757d;
|
|
||||||
--bs-success: #198754;
|
|
||||||
--bs-info: #0dcaf0;
|
|
||||||
--bs-warning: #ffc107;
|
|
||||||
--bs-danger: #dc3545;
|
|
||||||
--bs-light: #f8f9fa;
|
|
||||||
--bs-dark: #212529;
|
|
||||||
--bs-primary-rgb: 13, 110, 253;
|
|
||||||
--bs-secondary-rgb: 108, 117, 125;
|
|
||||||
--bs-success-rgb: 25, 135, 84;
|
|
||||||
--bs-info-rgb: 13, 202, 240;
|
|
||||||
--bs-warning-rgb: 255, 193, 7;
|
|
||||||
--bs-danger-rgb: 220, 53, 69;
|
|
||||||
--bs-light-rgb: 248, 249, 250;
|
|
||||||
--bs-dark-rgb: 33, 37, 41;
|
|
||||||
--bs-white-rgb: 255, 255, 255;
|
|
||||||
--bs-black-rgb: 0, 0, 0;
|
|
||||||
--bs-body-color-rgb: 33, 37, 41;
|
|
||||||
--bs-body-bg-rgb: 255, 255, 255;
|
|
||||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
||||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
||||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
|
||||||
--bs-body-font-family: var(--bs-font-sans-serif);
|
|
||||||
--bs-body-font-size: 1rem;
|
|
||||||
--bs-body-font-weight: 400;
|
|
||||||
--bs-body-line-height: 1.5;
|
|
||||||
--bs-body-color: #212529;
|
|
||||||
--bs-body-bg: #fff;
|
|
||||||
--bs-border-width: 1px;
|
|
||||||
--bs-border-style: solid;
|
|
||||||
--bs-border-color: #dee2e6;
|
|
||||||
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
|
|
||||||
--bs-border-radius: 0.375rem;
|
|
||||||
--bs-border-radius-sm: 0.25rem;
|
|
||||||
--bs-border-radius-lg: 0.5rem;
|
|
||||||
--bs-border-radius-xl: 1rem;
|
|
||||||
--bs-border-radius-2xl: 2rem;
|
|
||||||
--bs-border-radius-pill: 50rem;
|
|
||||||
--bs-link-color: #0d6efd;
|
|
||||||
--bs-link-hover-color: #0a58ca;
|
|
||||||
--bs-code-color: #d63384;
|
|
||||||
--bs-highlight-bg: #fff3cd;
|
|
||||||
}
|
|
||||||
|
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-reduced-motion: no-preference) {
|
|
||||||
:root {
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
font-family: var(--bs-body-font-family);
|
|
||||||
font-size: var(--bs-body-font-size);
|
|
||||||
font-weight: var(--bs-body-font-weight);
|
|
||||||
line-height: var(--bs-body-line-height);
|
|
||||||
color: var(--bs-body-color);
|
|
||||||
text-align: var(--bs-body-text-align);
|
|
||||||
background-color: var(--bs-body-bg);
|
|
||||||
-webkit-text-size-adjust: 100%;
|
|
||||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
hr {
|
|
||||||
margin: 1rem 0;
|
|
||||||
color: inherit;
|
|
||||||
border: 0;
|
|
||||||
border-top: 1px solid;
|
|
||||||
opacity: 0.25;
|
|
||||||
}
|
|
||||||
|
|
||||||
h6, h5, h4, h3, h2, h1 {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
font-weight: 500;
|
|
||||||
line-height: 1.2;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-size: calc(1.375rem + 1.5vw);
|
|
||||||
}
|
|
||||||
@media (min-width: 1200px) {
|
|
||||||
h1 {
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-size: calc(1.325rem + 0.9vw);
|
|
||||||
}
|
|
||||||
@media (min-width: 1200px) {
|
|
||||||
h2 {
|
|
||||||
font-size: 2rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-size: calc(1.3rem + 0.6vw);
|
|
||||||
}
|
|
||||||
@media (min-width: 1200px) {
|
|
||||||
h3 {
|
|
||||||
font-size: 1.75rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h4 {
|
|
||||||
font-size: calc(1.275rem + 0.3vw);
|
|
||||||
}
|
|
||||||
@media (min-width: 1200px) {
|
|
||||||
h4 {
|
|
||||||
font-size: 1.5rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h5 {
|
|
||||||
font-size: 1.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h6 {
|
|
||||||
font-size: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
abbr[title] {
|
|
||||||
-webkit-text-decoration: underline dotted;
|
|
||||||
text-decoration: underline dotted;
|
|
||||||
cursor: help;
|
|
||||||
-webkit-text-decoration-skip-ink: none;
|
|
||||||
text-decoration-skip-ink: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
address {
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
font-style: normal;
|
|
||||||
line-height: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol,
|
|
||||||
ul {
|
|
||||||
padding-left: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol,
|
|
||||||
ul,
|
|
||||||
dl {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol ol,
|
|
||||||
ul ul,
|
|
||||||
ol ul,
|
|
||||||
ul ol {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dt {
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
dd {
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
blockquote {
|
|
||||||
margin: 0 0 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
b,
|
|
||||||
strong {
|
|
||||||
font-weight: bolder;
|
|
||||||
}
|
|
||||||
|
|
||||||
small {
|
|
||||||
font-size: 0.875em;
|
|
||||||
}
|
|
||||||
|
|
||||||
mark {
|
|
||||||
padding: 0.1875em;
|
|
||||||
background-color: var(--bs-highlight-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
sub,
|
|
||||||
sup {
|
|
||||||
position: relative;
|
|
||||||
font-size: 0.75em;
|
|
||||||
line-height: 0;
|
|
||||||
vertical-align: baseline;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub {
|
|
||||||
bottom: -0.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
sup {
|
|
||||||
top: -0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: var(--bs-link-color);
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
a:hover {
|
|
||||||
color: var(--bs-link-hover-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
a:not([href]):not([class]), a:not([href]):not([class]):hover {
|
|
||||||
color: inherit;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre,
|
|
||||||
code,
|
|
||||||
kbd,
|
|
||||||
samp {
|
|
||||||
font-family: var(--bs-font-monospace);
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
display: block;
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
overflow: auto;
|
|
||||||
font-size: 0.875em;
|
|
||||||
}
|
|
||||||
pre code {
|
|
||||||
font-size: inherit;
|
|
||||||
color: inherit;
|
|
||||||
word-break: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
code {
|
|
||||||
font-size: 0.875em;
|
|
||||||
color: var(--bs-code-color);
|
|
||||||
word-wrap: break-word;
|
|
||||||
}
|
|
||||||
a > code {
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
kbd {
|
|
||||||
padding: 0.1875rem 0.375rem;
|
|
||||||
font-size: 0.875em;
|
|
||||||
color: var(--bs-body-bg);
|
|
||||||
background-color: var(--bs-body-color);
|
|
||||||
border-radius: 0.25rem;
|
|
||||||
}
|
|
||||||
kbd kbd {
|
|
||||||
padding: 0;
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
figure {
|
|
||||||
margin: 0 0 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
img,
|
|
||||||
svg {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
caption-side: bottom;
|
|
||||||
border-collapse: collapse;
|
|
||||||
}
|
|
||||||
|
|
||||||
caption {
|
|
||||||
padding-top: 0.5rem;
|
|
||||||
padding-bottom: 0.5rem;
|
|
||||||
color: #6c757d;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
th {
|
|
||||||
text-align: inherit;
|
|
||||||
text-align: -webkit-match-parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
thead,
|
|
||||||
tbody,
|
|
||||||
tfoot,
|
|
||||||
tr,
|
|
||||||
td,
|
|
||||||
th {
|
|
||||||
border-color: inherit;
|
|
||||||
border-style: solid;
|
|
||||||
border-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
button {
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
button:focus:not(:focus-visible) {
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
input,
|
|
||||||
button,
|
|
||||||
select,
|
|
||||||
optgroup,
|
|
||||||
textarea {
|
|
||||||
margin: 0;
|
|
||||||
font-family: inherit;
|
|
||||||
font-size: inherit;
|
|
||||||
line-height: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
button,
|
|
||||||
select {
|
|
||||||
text-transform: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
[role=button] {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
select {
|
|
||||||
word-wrap: normal;
|
|
||||||
}
|
|
||||||
select:disabled {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
button,
|
|
||||||
[type=button],
|
|
||||||
[type=reset],
|
|
||||||
[type=submit] {
|
|
||||||
-webkit-appearance: button;
|
|
||||||
}
|
|
||||||
button:not(:disabled),
|
|
||||||
[type=button]:not(:disabled),
|
|
||||||
[type=reset]:not(:disabled),
|
|
||||||
[type=submit]:not(:disabled) {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-moz-focus-inner {
|
|
||||||
padding: 0;
|
|
||||||
border-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
resize: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset {
|
|
||||||
min-width: 0;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
legend {
|
|
||||||
float: left;
|
|
||||||
width: 100%;
|
|
||||||
padding: 0;
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
font-size: calc(1.275rem + 0.3vw);
|
|
||||||
line-height: inherit;
|
|
||||||
}
|
|
||||||
@media (min-width: 1200px) {
|
|
||||||
legend {
|
|
||||||
font-size: 1.5rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
legend + * {
|
|
||||||
clear: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-datetime-edit-fields-wrapper,
|
|
||||||
::-webkit-datetime-edit-text,
|
|
||||||
::-webkit-datetime-edit-minute,
|
|
||||||
::-webkit-datetime-edit-hour-field,
|
|
||||||
::-webkit-datetime-edit-day-field,
|
|
||||||
::-webkit-datetime-edit-month-field,
|
|
||||||
::-webkit-datetime-edit-year-field {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-inner-spin-button {
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
[type=search] {
|
|
||||||
outline-offset: -2px;
|
|
||||||
-webkit-appearance: textfield;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* rtl:raw:
|
|
||||||
[type="tel"],
|
|
||||||
[type="url"],
|
|
||||||
[type="email"],
|
|
||||||
[type="number"] {
|
|
||||||
direction: ltr;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
::-webkit-search-decoration {
|
|
||||||
-webkit-appearance: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-color-swatch-wrapper {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-file-upload-button {
|
|
||||||
font: inherit;
|
|
||||||
-webkit-appearance: button;
|
|
||||||
}
|
|
||||||
|
|
||||||
::file-selector-button {
|
|
||||||
font: inherit;
|
|
||||||
-webkit-appearance: button;
|
|
||||||
}
|
|
||||||
|
|
||||||
output {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
iframe {
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
summary {
|
|
||||||
display: list-item;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
progress {
|
|
||||||
vertical-align: baseline;
|
|
||||||
}
|
|
||||||
|
|
||||||
[hidden] {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*# sourceMappingURL=bootstrap-reboot.css.map */
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,485 +0,0 @@
|
||||||
/*!
|
|
||||||
* Bootstrap Reboot v5.2.2 (https://getbootstrap.com/)
|
|
||||||
* Copyright 2011-2022 The Bootstrap Authors
|
|
||||||
* Copyright 2011-2022 Twitter, Inc.
|
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
||||||
*/
|
|
||||||
:root {
|
|
||||||
--bs-blue: #0d6efd;
|
|
||||||
--bs-indigo: #6610f2;
|
|
||||||
--bs-purple: #6f42c1;
|
|
||||||
--bs-pink: #d63384;
|
|
||||||
--bs-red: #dc3545;
|
|
||||||
--bs-orange: #fd7e14;
|
|
||||||
--bs-yellow: #ffc107;
|
|
||||||
--bs-green: #198754;
|
|
||||||
--bs-teal: #20c997;
|
|
||||||
--bs-cyan: #0dcaf0;
|
|
||||||
--bs-black: #000;
|
|
||||||
--bs-white: #fff;
|
|
||||||
--bs-gray: #6c757d;
|
|
||||||
--bs-gray-dark: #343a40;
|
|
||||||
--bs-gray-100: #f8f9fa;
|
|
||||||
--bs-gray-200: #e9ecef;
|
|
||||||
--bs-gray-300: #dee2e6;
|
|
||||||
--bs-gray-400: #ced4da;
|
|
||||||
--bs-gray-500: #adb5bd;
|
|
||||||
--bs-gray-600: #6c757d;
|
|
||||||
--bs-gray-700: #495057;
|
|
||||||
--bs-gray-800: #343a40;
|
|
||||||
--bs-gray-900: #212529;
|
|
||||||
--bs-primary: #0d6efd;
|
|
||||||
--bs-secondary: #6c757d;
|
|
||||||
--bs-success: #198754;
|
|
||||||
--bs-info: #0dcaf0;
|
|
||||||
--bs-warning: #ffc107;
|
|
||||||
--bs-danger: #dc3545;
|
|
||||||
--bs-light: #f8f9fa;
|
|
||||||
--bs-dark: #212529;
|
|
||||||
--bs-primary-rgb: 13, 110, 253;
|
|
||||||
--bs-secondary-rgb: 108, 117, 125;
|
|
||||||
--bs-success-rgb: 25, 135, 84;
|
|
||||||
--bs-info-rgb: 13, 202, 240;
|
|
||||||
--bs-warning-rgb: 255, 193, 7;
|
|
||||||
--bs-danger-rgb: 220, 53, 69;
|
|
||||||
--bs-light-rgb: 248, 249, 250;
|
|
||||||
--bs-dark-rgb: 33, 37, 41;
|
|
||||||
--bs-white-rgb: 255, 255, 255;
|
|
||||||
--bs-black-rgb: 0, 0, 0;
|
|
||||||
--bs-body-color-rgb: 33, 37, 41;
|
|
||||||
--bs-body-bg-rgb: 255, 255, 255;
|
|
||||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
||||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
||||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
|
||||||
--bs-body-font-family: var(--bs-font-sans-serif);
|
|
||||||
--bs-body-font-size: 1rem;
|
|
||||||
--bs-body-font-weight: 400;
|
|
||||||
--bs-body-line-height: 1.5;
|
|
||||||
--bs-body-color: #212529;
|
|
||||||
--bs-body-bg: #fff;
|
|
||||||
--bs-border-width: 1px;
|
|
||||||
--bs-border-style: solid;
|
|
||||||
--bs-border-color: #dee2e6;
|
|
||||||
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
|
|
||||||
--bs-border-radius: 0.375rem;
|
|
||||||
--bs-border-radius-sm: 0.25rem;
|
|
||||||
--bs-border-radius-lg: 0.5rem;
|
|
||||||
--bs-border-radius-xl: 1rem;
|
|
||||||
--bs-border-radius-2xl: 2rem;
|
|
||||||
--bs-border-radius-pill: 50rem;
|
|
||||||
--bs-link-color: #0d6efd;
|
|
||||||
--bs-link-hover-color: #0a58ca;
|
|
||||||
--bs-code-color: #d63384;
|
|
||||||
--bs-highlight-bg: #fff3cd;
|
|
||||||
}
|
|
||||||
|
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-reduced-motion: no-preference) {
|
|
||||||
:root {
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
font-family: var(--bs-body-font-family);
|
|
||||||
font-size: var(--bs-body-font-size);
|
|
||||||
font-weight: var(--bs-body-font-weight);
|
|
||||||
line-height: var(--bs-body-line-height);
|
|
||||||
color: var(--bs-body-color);
|
|
||||||
text-align: var(--bs-body-text-align);
|
|
||||||
background-color: var(--bs-body-bg);
|
|
||||||
-webkit-text-size-adjust: 100%;
|
|
||||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
hr {
|
|
||||||
margin: 1rem 0;
|
|
||||||
color: inherit;
|
|
||||||
border: 0;
|
|
||||||
border-top: 1px solid;
|
|
||||||
opacity: 0.25;
|
|
||||||
}
|
|
||||||
|
|
||||||
h6, h5, h4, h3, h2, h1 {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
font-weight: 500;
|
|
||||||
line-height: 1.2;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-size: calc(1.375rem + 1.5vw);
|
|
||||||
}
|
|
||||||
@media (min-width: 1200px) {
|
|
||||||
h1 {
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-size: calc(1.325rem + 0.9vw);
|
|
||||||
}
|
|
||||||
@media (min-width: 1200px) {
|
|
||||||
h2 {
|
|
||||||
font-size: 2rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-size: calc(1.3rem + 0.6vw);
|
|
||||||
}
|
|
||||||
@media (min-width: 1200px) {
|
|
||||||
h3 {
|
|
||||||
font-size: 1.75rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h4 {
|
|
||||||
font-size: calc(1.275rem + 0.3vw);
|
|
||||||
}
|
|
||||||
@media (min-width: 1200px) {
|
|
||||||
h4 {
|
|
||||||
font-size: 1.5rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h5 {
|
|
||||||
font-size: 1.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h6 {
|
|
||||||
font-size: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
abbr[title] {
|
|
||||||
-webkit-text-decoration: underline dotted;
|
|
||||||
text-decoration: underline dotted;
|
|
||||||
cursor: help;
|
|
||||||
-webkit-text-decoration-skip-ink: none;
|
|
||||||
text-decoration-skip-ink: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
address {
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
font-style: normal;
|
|
||||||
line-height: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol,
|
|
||||||
ul {
|
|
||||||
padding-right: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol,
|
|
||||||
ul,
|
|
||||||
dl {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol ol,
|
|
||||||
ul ul,
|
|
||||||
ol ul,
|
|
||||||
ul ol {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dt {
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
dd {
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
blockquote {
|
|
||||||
margin: 0 0 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
b,
|
|
||||||
strong {
|
|
||||||
font-weight: bolder;
|
|
||||||
}
|
|
||||||
|
|
||||||
small {
|
|
||||||
font-size: 0.875em;
|
|
||||||
}
|
|
||||||
|
|
||||||
mark {
|
|
||||||
padding: 0.1875em;
|
|
||||||
background-color: var(--bs-highlight-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
sub,
|
|
||||||
sup {
|
|
||||||
position: relative;
|
|
||||||
font-size: 0.75em;
|
|
||||||
line-height: 0;
|
|
||||||
vertical-align: baseline;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub {
|
|
||||||
bottom: -0.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
sup {
|
|
||||||
top: -0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: var(--bs-link-color);
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
a:hover {
|
|
||||||
color: var(--bs-link-hover-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
a:not([href]):not([class]), a:not([href]):not([class]):hover {
|
|
||||||
color: inherit;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre,
|
|
||||||
code,
|
|
||||||
kbd,
|
|
||||||
samp {
|
|
||||||
font-family: var(--bs-font-monospace);
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
display: block;
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
overflow: auto;
|
|
||||||
font-size: 0.875em;
|
|
||||||
}
|
|
||||||
pre code {
|
|
||||||
font-size: inherit;
|
|
||||||
color: inherit;
|
|
||||||
word-break: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
code {
|
|
||||||
font-size: 0.875em;
|
|
||||||
color: var(--bs-code-color);
|
|
||||||
word-wrap: break-word;
|
|
||||||
}
|
|
||||||
a > code {
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
kbd {
|
|
||||||
padding: 0.1875rem 0.375rem;
|
|
||||||
font-size: 0.875em;
|
|
||||||
color: var(--bs-body-bg);
|
|
||||||
background-color: var(--bs-body-color);
|
|
||||||
border-radius: 0.25rem;
|
|
||||||
}
|
|
||||||
kbd kbd {
|
|
||||||
padding: 0;
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
figure {
|
|
||||||
margin: 0 0 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
img,
|
|
||||||
svg {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
caption-side: bottom;
|
|
||||||
border-collapse: collapse;
|
|
||||||
}
|
|
||||||
|
|
||||||
caption {
|
|
||||||
padding-top: 0.5rem;
|
|
||||||
padding-bottom: 0.5rem;
|
|
||||||
color: #6c757d;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
th {
|
|
||||||
text-align: inherit;
|
|
||||||
text-align: -webkit-match-parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
thead,
|
|
||||||
tbody,
|
|
||||||
tfoot,
|
|
||||||
tr,
|
|
||||||
td,
|
|
||||||
th {
|
|
||||||
border-color: inherit;
|
|
||||||
border-style: solid;
|
|
||||||
border-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
button {
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
button:focus:not(:focus-visible) {
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
input,
|
|
||||||
button,
|
|
||||||
select,
|
|
||||||
optgroup,
|
|
||||||
textarea {
|
|
||||||
margin: 0;
|
|
||||||
font-family: inherit;
|
|
||||||
font-size: inherit;
|
|
||||||
line-height: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
button,
|
|
||||||
select {
|
|
||||||
text-transform: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
[role=button] {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
select {
|
|
||||||
word-wrap: normal;
|
|
||||||
}
|
|
||||||
select:disabled {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
button,
|
|
||||||
[type=button],
|
|
||||||
[type=reset],
|
|
||||||
[type=submit] {
|
|
||||||
-webkit-appearance: button;
|
|
||||||
}
|
|
||||||
button:not(:disabled),
|
|
||||||
[type=button]:not(:disabled),
|
|
||||||
[type=reset]:not(:disabled),
|
|
||||||
[type=submit]:not(:disabled) {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-moz-focus-inner {
|
|
||||||
padding: 0;
|
|
||||||
border-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
resize: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset {
|
|
||||||
min-width: 0;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
legend {
|
|
||||||
float: right;
|
|
||||||
width: 100%;
|
|
||||||
padding: 0;
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
font-size: calc(1.275rem + 0.3vw);
|
|
||||||
line-height: inherit;
|
|
||||||
}
|
|
||||||
@media (min-width: 1200px) {
|
|
||||||
legend {
|
|
||||||
font-size: 1.5rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
legend + * {
|
|
||||||
clear: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-datetime-edit-fields-wrapper,
|
|
||||||
::-webkit-datetime-edit-text,
|
|
||||||
::-webkit-datetime-edit-minute,
|
|
||||||
::-webkit-datetime-edit-hour-field,
|
|
||||||
::-webkit-datetime-edit-day-field,
|
|
||||||
::-webkit-datetime-edit-month-field,
|
|
||||||
::-webkit-datetime-edit-year-field {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-inner-spin-button {
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
[type=search] {
|
|
||||||
outline-offset: -2px;
|
|
||||||
-webkit-appearance: textfield;
|
|
||||||
}
|
|
||||||
|
|
||||||
[type="tel"],
|
|
||||||
[type="url"],
|
|
||||||
[type="email"],
|
|
||||||
[type="number"] {
|
|
||||||
direction: ltr;
|
|
||||||
}
|
|
||||||
::-webkit-search-decoration {
|
|
||||||
-webkit-appearance: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-color-swatch-wrapper {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-file-upload-button {
|
|
||||||
font: inherit;
|
|
||||||
-webkit-appearance: button;
|
|
||||||
}
|
|
||||||
|
|
||||||
::file-selector-button {
|
|
||||||
font: inherit;
|
|
||||||
-webkit-appearance: button;
|
|
||||||
}
|
|
||||||
|
|
||||||
output {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
iframe {
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
summary {
|
|
||||||
display: list-item;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
progress {
|
|
||||||
vertical-align: baseline;
|
|
||||||
}
|
|
||||||
|
|
||||||
[hidden] {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4197
static/resources/bootstrap/css/bootstrap-utilities.css
vendored
4197
static/resources/bootstrap/css/bootstrap-utilities.css
vendored
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
10877
static/resources/bootstrap/css/bootstrap.css
vendored
10877
static/resources/bootstrap/css/bootstrap.css
vendored
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
10840
static/resources/bootstrap/css/bootstrap.rtl.css
vendored
10840
static/resources/bootstrap/css/bootstrap.rtl.css
vendored
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
7084
static/resources/bootstrap/js/bootstrap.bundle.js
vendored
7084
static/resources/bootstrap/js/bootstrap.bundle.js
vendored
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
5211
static/resources/bootstrap/js/bootstrap.esm.js
vendored
5211
static/resources/bootstrap/js/bootstrap.esm.js
vendored
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
5258
static/resources/bootstrap/js/bootstrap.js
vendored
5258
static/resources/bootstrap/js/bootstrap.js
vendored
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
BIN
static/resources/fonts/.DS_Store
vendored
BIN
static/resources/fonts/.DS_Store
vendored
Binary file not shown.
BIN
static/resources/images/.DS_Store
vendored
BIN
static/resources/images/.DS_Store
vendored
Binary file not shown.
BIN
static/resources/scripts/.DS_Store
vendored
BIN
static/resources/scripts/.DS_Store
vendored
Binary file not shown.
|
@ -1,127 +0,0 @@
|
||||||
/* -----------------------------------------------
|
|
||||||
/* How to use? : Check the GitHub README
|
|
||||||
/* ----------------------------------------------- */
|
|
||||||
|
|
||||||
/* To load a config file (particles.json) you need to host this demo (MAMP/WAMP/local)... */
|
|
||||||
/*
|
|
||||||
particlesJS.load('particles-js', 'particles.json', function() {
|
|
||||||
console.log('particles.js loaded - callback');
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Otherwise just put the config content (json): */
|
|
||||||
|
|
||||||
particlesJS('particles-js',
|
|
||||||
|
|
||||||
{
|
|
||||||
"particles": {
|
|
||||||
"number": {
|
|
||||||
"value": 60,
|
|
||||||
"density": {
|
|
||||||
"enable": true,
|
|
||||||
"value_area": 800
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"color": {
|
|
||||||
"value": "#fff"
|
|
||||||
},
|
|
||||||
"shape": {
|
|
||||||
"type": "circle",
|
|
||||||
"stroke": {
|
|
||||||
"width": 0,
|
|
||||||
"color": "#000000"
|
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"nb_sides": 5
|
|
||||||
},
|
|
||||||
"image": {
|
|
||||||
"src": "img/github-old.svg",
|
|
||||||
"width": 100,
|
|
||||||
"height": 100
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"opacity": {
|
|
||||||
"value": 0.5,
|
|
||||||
"random": true,
|
|
||||||
"anim": {
|
|
||||||
"enable": false,
|
|
||||||
"speed": 1,
|
|
||||||
"opacity_min": 0.1,
|
|
||||||
"sync": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"value": 4,
|
|
||||||
"random": true,
|
|
||||||
"anim": {
|
|
||||||
"enable": false,
|
|
||||||
"speed": 40,
|
|
||||||
"size_min": 0.1,
|
|
||||||
"sync": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"line_linked": {
|
|
||||||
"enable": false,
|
|
||||||
"distance": 500,
|
|
||||||
"color": "#ffffff",
|
|
||||||
"opacity": 0.4,
|
|
||||||
"width": 2
|
|
||||||
},
|
|
||||||
"move": {
|
|
||||||
"enable": true,
|
|
||||||
"speed": 1,
|
|
||||||
"direction": "none",
|
|
||||||
"random": true,
|
|
||||||
"straight": false,
|
|
||||||
"out_mode": "out",
|
|
||||||
"bounce": false,
|
|
||||||
"attract": {
|
|
||||||
"enable": false,
|
|
||||||
"rotateX": 600,
|
|
||||||
"rotateY": 1200
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"interactivity": {
|
|
||||||
"detect_on": "canvas",
|
|
||||||
"events": {
|
|
||||||
"onhover": {
|
|
||||||
"enable": true,
|
|
||||||
"mode": "bubble"
|
|
||||||
},
|
|
||||||
"onclick": {
|
|
||||||
"enable": false,
|
|
||||||
"mode": "repulse"
|
|
||||||
},
|
|
||||||
"resize": true
|
|
||||||
},
|
|
||||||
"modes": {
|
|
||||||
"grab": {
|
|
||||||
"distance": 400,
|
|
||||||
"line_linked": {
|
|
||||||
"opacity": 0.5
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"bubble": {
|
|
||||||
"distance": 275.7066481263934,
|
|
||||||
"size": 4,
|
|
||||||
"duration": 0.3,
|
|
||||||
"opacity": 0,
|
|
||||||
"speed": 3
|
|
||||||
},
|
|
||||||
"repulse": {
|
|
||||||
"distance": 200,
|
|
||||||
"duration": 0.4
|
|
||||||
},
|
|
||||||
"push": {
|
|
||||||
"particles_nb": 4
|
|
||||||
},
|
|
||||||
"remove": {
|
|
||||||
"particles_nb": 2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"retina_detect": true
|
|
||||||
}
|
|
||||||
|
|
||||||
);
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,23 +0,0 @@
|
||||||
@import url(style.css);
|
|
||||||
|
|
||||||
.wrapper {
|
|
||||||
width: 40%;
|
|
||||||
position: relative;
|
|
||||||
margin-top: 20px;
|
|
||||||
left: 50%;
|
|
||||||
transform: translateX(-50%);
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.main-title {
|
|
||||||
font-weight: 800;
|
|
||||||
font-size: 3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
margin-top: 10px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
word-wrap: break-word;
|
|
||||||
line-height: 1.9;
|
|
||||||
}
|
|
|
@ -1,129 +0,0 @@
|
||||||
@import url(style.css);
|
|
||||||
|
|
||||||
.main-title {
|
|
||||||
text-align: center;
|
|
||||||
font-size: 3em;
|
|
||||||
font-weight: 800;
|
|
||||||
color: white;
|
|
||||||
line-height: 0.9em;
|
|
||||||
letter-spacing: 0.1em;
|
|
||||||
margin: 5vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.main-title .thin {
|
|
||||||
font-weight: 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-social {
|
|
||||||
margin-left: 5px;
|
|
||||||
margin-right: 5px;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lower-buttons {
|
|
||||||
font-size: 1.3em;
|
|
||||||
margin-top: 15px;
|
|
||||||
display: flex;
|
|
||||||
text-align: center;
|
|
||||||
font-family: Comfortaa, sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lower-buttons a {
|
|
||||||
text-decoration: none;
|
|
||||||
color: lightgray;
|
|
||||||
margin-bottom: 3px;
|
|
||||||
margin-top: 3px;
|
|
||||||
transition: 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lower-buttons a:hover {
|
|
||||||
transition: 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.email {
|
|
||||||
margin-top: 10px;
|
|
||||||
display: flex;
|
|
||||||
text-align: center;
|
|
||||||
font-family: Comfortaa, sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
.email a{
|
|
||||||
text-decoration: none;
|
|
||||||
color: lightgray;
|
|
||||||
margin-bottom: 3px;
|
|
||||||
margin-top: 3px;
|
|
||||||
transition: 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.email a:hover {
|
|
||||||
color: #e6ca1c;
|
|
||||||
transition: 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lower-buttons a:hover {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lower-buttons a::before {
|
|
||||||
position: relative;
|
|
||||||
margin-right: 7px;
|
|
||||||
content: "";
|
|
||||||
display: inline-block;
|
|
||||||
width: 12px;
|
|
||||||
height: 12px;
|
|
||||||
border-radius: 50%;
|
|
||||||
background-color: white;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
transition: 0.3s;
|
|
||||||
opacity: 0.4;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lower-buttons a::after {
|
|
||||||
position: relative;
|
|
||||||
margin-left: 7px;
|
|
||||||
content: "";
|
|
||||||
display: inline-block;
|
|
||||||
top: 50%;
|
|
||||||
width: 12px;
|
|
||||||
height: 12px;
|
|
||||||
border-radius: 50%;
|
|
||||||
background-color: white;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
transition: 0.3s;
|
|
||||||
opacity: 0.4;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lower-buttons a:hover::before {
|
|
||||||
transform: translateX(-10px);
|
|
||||||
opacity: 1;
|
|
||||||
transition: 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lower-buttons a:hover::after {
|
|
||||||
transform: translateX(10px);
|
|
||||||
opacity: 1;
|
|
||||||
transition: 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.divider {
|
|
||||||
background-color: white;
|
|
||||||
width: 100%;
|
|
||||||
border-top: 3px solid #bbb;
|
|
||||||
border-radius: 8px;
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.lower-buttons a.email:hover::before {
|
|
||||||
background-color: #e6ca1c;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lower-buttons a.email:hover::after {
|
|
||||||
background-color: #e6ca1c;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,65 +0,0 @@
|
||||||
@import url(style.css);
|
|
||||||
|
|
||||||
.wrapper {
|
|
||||||
width: 40%;
|
|
||||||
position: relative;
|
|
||||||
margin-top: 20px;
|
|
||||||
left: 50%;
|
|
||||||
transform: translateX(-50%);
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wrapper {
|
|
||||||
width: 100%;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
flex-flow: row wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-card {
|
|
||||||
background: #272727;
|
|
||||||
border-radius: 5px;
|
|
||||||
margin: 7px;
|
|
||||||
padding: 5px;
|
|
||||||
width: 400px;
|
|
||||||
height: 200px;
|
|
||||||
word-wrap: break-word;
|
|
||||||
}
|
|
||||||
|
|
||||||
.divider {
|
|
||||||
background-color: white;
|
|
||||||
width: 80%;
|
|
||||||
border-top: 2px solid #bbb;
|
|
||||||
border-radius: 8px;
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-title {
|
|
||||||
margin: 0;
|
|
||||||
font-size: 1.7em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-description {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-goto {
|
|
||||||
font-family: Comfortaa, sans-serif;
|
|
||||||
width: 120px;
|
|
||||||
height: 35px;
|
|
||||||
background: #272727;
|
|
||||||
border-radius: 5px;
|
|
||||||
padding: 10px 15px;
|
|
||||||
color: white;
|
|
||||||
text-decoration: none;
|
|
||||||
box-shadow: 0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12) !important;
|
|
||||||
transition: 0.3s;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.btn-goto:hover {
|
|
||||||
background: #383838;
|
|
||||||
color: white;
|
|
||||||
transition: 0.3s;
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
@import url(/frontend/src/fonts/Raleway/stylesheet.css);
|
|
||||||
@import url(/frontend/src/fonts/Comfortaa/stylesheet.css);
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: Raleway, sans-serif;
|
|
||||||
background-color: black !important;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.overlay {
|
|
||||||
position: relative;
|
|
||||||
padding: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-back {
|
|
||||||
position: relative;
|
|
||||||
transition: 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-back svg {
|
|
||||||
margin-left: 20px;
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
path {
|
|
||||||
transition: 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
#particles-js {
|
|
||||||
background-color: transparent;
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#background {
|
|
||||||
background-color: black;
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: 0;
|
|
||||||
background-image: url("/frontend/public/background.avif");
|
|
||||||
opacity: 0.4;
|
|
||||||
background-size: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -1,96 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="ru">
|
|
||||||
|
|
||||||
<!-- Yandex.Metrika counter -->
|
|
||||||
<script type="text/javascript" >
|
|
||||||
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
|
|
||||||
m[i].l=1*new Date();
|
|
||||||
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
|
|
||||||
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
|
|
||||||
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
|
|
||||||
|
|
||||||
ym(93142819, "init", {
|
|
||||||
clickmap:true,
|
|
||||||
trackLinks:true,
|
|
||||||
accurateTrackBounce:true
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<noscript><div><img src="https://mc.yandex.ru/watch/93142819" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
|
|
||||||
<!-- /Yandex.Metrika counter -->
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Mootfrost DEV</title>
|
|
||||||
<meta name="description" content="Обо мне">
|
|
||||||
<link rel="stylesheet" type="text/css" href="/static/resources/styles/about.style.css"/>
|
|
||||||
<link href="/static/resources/bootstrap/css/bootstrap.css" rel="stylesheet">
|
|
||||||
<link rel="icon" type="image/x-icon" href="/static/resources/images/favicon.png">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body ondragstart="return false;" ondrop="return false;">
|
|
||||||
<div id="background"></div>
|
|
||||||
<div id="particles-js"><canvas class="particles-js-canvas-el" style="width: 100%; height: 100%;" width="768" height="922"></canvas></div>
|
|
||||||
|
|
||||||
<a class="btn-back" href="https://mootfrost.dev">
|
|
||||||
<svg ID="back-s" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="40px" height="40px">
|
|
||||||
<path id="pathBack" d="M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512s256-114.6 256-256zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z" fill="#ffffff" style="fill: rgb(255, 255, 255);"/>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
<div class="wrapper pe-none">
|
|
||||||
<span class="main-title">Обо мне:</span>
|
|
||||||
<p class="content">Семейкин Андрей, <span id="age"></span>, программист<br></p>
|
|
||||||
<p class="content">Живу в Москве, учусь в 1580<br></p>
|
|
||||||
<p class="content">Пишу на C#, Python, JS. Немного знаю C++ и Java<br></p>
|
|
||||||
<p class="content">Разбираюсь в Linux, Docker, Drone CI<br></p>
|
|
||||||
<p class="content">За последнюю неделю <span id="code-stats"></span></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
let back_s = document.getElementById('back-s');
|
|
||||||
back_s.onmouseenter = () => document.getElementById('pathBack').style.fill = 'lightgray';
|
|
||||||
back_s.onmouseleave = () => document.getElementById('pathBack').style.fill = '#ffffffff';
|
|
||||||
</script>
|
|
||||||
<script>
|
|
||||||
async function load_code_stats() {
|
|
||||||
let resp = await fetch('/api/get_code_stats', {
|
|
||||||
method: 'GET',
|
|
||||||
},
|
|
||||||
);
|
|
||||||
let code_stats = await resp.json()
|
|
||||||
|
|
||||||
let about = document.getElementById('code-stats')
|
|
||||||
|
|
||||||
if (Object.keys(code_stats).length === 0) {
|
|
||||||
about.innerHTML += '❌Не удалось загрузить❌'
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let lang in code_stats) {
|
|
||||||
about.innerHTML += `${code_stats[lang]}на ${lang}, `
|
|
||||||
}
|
|
||||||
about.innerHTML = about.innerHTML.slice(0, -2)
|
|
||||||
}
|
|
||||||
load_code_stats()
|
|
||||||
|
|
||||||
async function load_age() {
|
|
||||||
let resp = await fetch('/api/get_age', {
|
|
||||||
method: 'GET',
|
|
||||||
},
|
|
||||||
);
|
|
||||||
let age = await resp.json()
|
|
||||||
|
|
||||||
if (age.length === 0) {
|
|
||||||
document.getElementById('age').innerHTML = 'age∈(-47; 1287) лет'
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
let age_container = document.getElementById('age')
|
|
||||||
age_container.innerHTML = age
|
|
||||||
}
|
|
||||||
load_age()
|
|
||||||
</script>
|
|
||||||
<script src="/static/resources/scripts/particles.js"></script>
|
|
||||||
<script src="/static/resources/scripts/app.js"></script>
|
|
||||||
<script src="/static/resources/bootstrap/js/bootstrap.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,92 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="ru">
|
|
||||||
|
|
||||||
<!-- Yandex.Metrika counter -->
|
|
||||||
<script type="text/javascript" >
|
|
||||||
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
|
|
||||||
m[i].l=1*new Date();
|
|
||||||
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
|
|
||||||
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
|
|
||||||
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
|
|
||||||
|
|
||||||
ym(93142819, "init", {
|
|
||||||
clickmap:true,
|
|
||||||
trackLinks:true,
|
|
||||||
accurateTrackBounce:true
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<noscript><div><img src="https://mc.yandex.ru/watch/93142819" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
|
|
||||||
<!-- /Yandex.Metrika counter -->
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Mootfrost DEV</title>
|
|
||||||
<meta name="description" content="Mootfrost">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<link rel="stylesheet" type="text/css" href="/static/resources/styles/index.style.css"/>
|
|
||||||
<link href="/static/resources/bootstrap/css/bootstrap.css" rel="stylesheet">
|
|
||||||
<link rel="icon" type="image/x-icon" href="/static/resources/images/favicon.png">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body ondragstart="return false;" ondrop="return false;">
|
|
||||||
<div id="background"></div>
|
|
||||||
<div id="particles-js"><canvas class="particles-js-canvas-el" style="width: 100%; height: 100%;" width="768" height="922"></canvas></div>
|
|
||||||
|
|
||||||
<div class="d-flex flex-column min-vh-100 justify-content-center align-items-center overlay pe-none">
|
|
||||||
<div class="main-title text-uppercase text-wrap">
|
|
||||||
<span>mootfrost</span>
|
|
||||||
<p class="thin">Development</p>
|
|
||||||
</div>
|
|
||||||
<div class="social pe-auto">
|
|
||||||
<div class="social-icons flex-row justify-content-center align-items-center">
|
|
||||||
<a class="btn-social" id="github-s" href="https://github.com/Mootfrost777" target="_blank" aria-label="GitHub">
|
|
||||||
<svg class="github-s" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="100" viewBox="0 0 480 520" width="100">
|
|
||||||
<path id="pathGit" d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z" fill="#ffffff" style="fill: rgb(255, 255, 255);"/>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
<a class="btn-social" id="telegram-s" href="https://t.me/mootfrost" target="_blank" aria-label="Telegram">
|
|
||||||
<svg id="telegram-s" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="100px" height="100px">
|
|
||||||
<path id="pathTeleg" d="M46.137,6.552c-0.75-0.636-1.928-0.727-3.146-0.238l-0.002,0C41.708,6.828,6.728,21.832,5.304,22.445 c-0.259,0.09-2.521,0.934-2.288,2.814c0.208,1.695,2.026,2.397,2.248,2.478l8.893,3.045c0.59,1.964,2.765,9.21,3.246,10.758 c0.3,0.965,0.789,2.233,1.646,2.494c0.752,0.29,1.5,0.025,1.984-0.355l5.437-5.043l8.777,6.845l0.209,0.125 c0.596,0.264,1.167,0.396,1.712,0.396c0.421,0,0.825-0.079,1.211-0.237c1.315-0.54,1.841-1.793,1.896-1.935l6.556-34.077 C47.231,7.933,46.675,7.007,46.137,6.552z M22,32l-3,8l-3-10l23-17L22,32z" fill="#ffffff" style="fill: rgb(255, 255, 255);"/>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
<a class="btn-social" id="gitea-s" href="https://git.mootfrost.dev/Mootfrost777" target="_blank" aria-label="Gitea">
|
|
||||||
<svg class="gitea-s" height="100px" version="1.1" viewBox="0 0 640 640" width="100px" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path d="M395.9 484.2L269 423.2C256.5 417.2 251.1 402 257.2 389.4L318.2 262.5C324.2 250 339.4 244.6 352 250.7C369.2 259 379.1 263.7 379.1 263.7L379 154.5L395.7 154.4L395.8 271.5C395.8 271.5 453.2 295.7 478.9 311.6C482.6 313.9 489.1 318.4 491.8 326C493.9 332.1 493.8 339.1 490.8 345.3L429.8 472.2C423.6 484.9 408.4 490.3 395.9 484.2Z" fill="#ffffff" fill-rule="evenodd" opacity="0" stroke="none" />
|
|
||||||
<path id="pathGitea" d="M326.8 380.1C318.6 380.2 311.4 385.9 309.5 393.9C307.6 401.9 311.5 410.2 318.6 413.9C326.3 417.9 336.1 415.7 341.3 408.5C346.4 401.4 345.6 391.6 339.5 385.4L363.5 336.3C365 336.4 367.2 336.5 369.7 335.8C373.8 334.9 376.8 332.2 376.8 332.2C381 334 385.4 336 390 338.3C394.8 340.7 399.3 343.2 403.4 345.6C404.3 346.1 405.2 346.7 406.2 347.5C407.8 348.8 409.6 350.6 410.9 353C412.8 358.5 409 367.9 409 367.9C406.7 375.5 390.6 408.5 390.6 408.5C382.5 408.3 375.3 413.5 372.9 421C370.3 429.1 374 438.3 381.8 442.3C389.6 446.3 399.2 444 404.3 437C409.3 430.2 408.9 420.7 403.2 414.4C405.1 410.7 406.9 407 408.8 403.1C413.8 392.7 422.3 372.7 422.3 372.7C423.2 371 428 362.4 425 351.4C422.5 340 412.4 334.7 412.4 334.7C400.2 326.8 383.2 319.5 383.2 319.5C383.2 319.5 383.2 315.4 382.1 312.4C381 309.3 379.3 307.3 378.2 306.1C382.9 296.4 387.6 286.8 392.3 277.1C388.2 275.1 384.2 273.1 380.1 271C375.3 280.8 370.4 290.7 365.6 300.5C358.9 300.4 352.7 304 349.5 309.9C346.1 316.2 346.8 324 351.4 329.7C351.4 329.7 326.8 380.1 326.8 380.1Z M622.7 149.8C618.6 145.7 613.1 145.8 613.1 145.8C613.1 145.8 495.9 152.4 435.2 153.8C421.9 154.1 408.7 154.4 395.6 154.5L395.6 271.7C390.1 269.1 384.5 266.4 379 263.8C379 227.4 378.9 154.6 378.9 154.6C349.9 155 289.7 152.4 289.7 152.4C289.7 152.4 148.3 145.3 132.9 143.9C123.1 143.3 110.4 141.8 93.9 145.4C85.2 147.2 60.4 152.8 40.1 172.3C-4.9 212.4 6.6 276.2 8 285.8C9.7 297.5 14.9 330 39.7 358.3C85.5 414.4 184.1 413.1 184.1 413.1C184.1 413.1 196.2 442 214.7 468.6C239.7 501.7 265.4 527.5 290.4 530.6C353.4 530.6 479.3 530.5 479.3 530.5C479.3 530.5 491.3 530.6 507.6 520.2C521.6 511.7 534.1 496.8 534.1 496.8C534.1 496.8 547 483 565 451.5C570.5 441.8 575.1 432.4 579.1 423.5C579.1 423.5 634.3 306.4 634.3 192.4C633.2 157.9 624.7 151.8 622.7 149.8ZM125.6 353.9C99.7 345.4 88.7 335.2 88.7 335.2C88.7 335.2 69.6 321.8 60 295.4C43.5 251.2 58.6 224.2 58.6 224.2C58.6 224.2 67 201.7 97.1 194.2C110.9 190.5 128.1 191.1 128.1 191.1C128.1 191.1 135.2 250.5 143.8 285.3C151 314.5 168.6 363 168.6 363C168.6 363 142.5 359.9 125.6 353.9ZM425.9 461.5C425.9 461.5 419.8 476 406.3 476.9C400.5 477.3 396 475.7 396 475.7C396 475.7 395.7 475.6 390.7 473.6L277.8 418.6C277.8 418.6 266.9 412.9 265 403C262.8 394.9 267.7 384.9 267.7 384.9L322 273C322 273 326.8 263.3 334.2 260C334.8 259.7 336.5 259 338.7 258.5C346.8 256.4 356.7 261.3 356.7 261.3L467.4 315C467.4 315 480 320.7 482.7 331.2C484.6 338.6 482.2 345.2 480.9 348.4C474.6 363.8 425.9 461.5 425.9 461.5Z" fill="#ffffff" style="fill: rgb(255, 255, 255);"/>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="email flex-column flex-wrap pe-auto thin text-uppercase">
|
|
||||||
<a href="mailto:hello@mootfrost.dev">hello@mootfrost.dev</a>
|
|
||||||
</div>
|
|
||||||
<hr class="divider">
|
|
||||||
<div class="lower-buttons flex-column flex-wrap thin text-uppercase">
|
|
||||||
<a href="https://mootfrost.dev/about" class="pe-auto">Обо мне</a>
|
|
||||||
<a href="https://mootfrost.dev/projects" class="pe-auto">Проекты</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// Icons highlight
|
|
||||||
let git_s = document.getElementById('github-s');
|
|
||||||
let teleg_s = document.getElementById('telegram-s');
|
|
||||||
let gitea_s = document.getElementById('gitea-s');
|
|
||||||
git_s.onmouseenter = () => document.getElementById('pathGit').style.fill = '#c9510c';
|
|
||||||
git_s.onmouseleave = () => document.getElementById('pathGit').style.fill = '#ffffffff';
|
|
||||||
teleg_s.onmouseenter = () => document.getElementById('pathTeleg').style.fill = '#1f9bda';
|
|
||||||
teleg_s.onmouseleave = () => document.getElementById('pathTeleg').style.fill = '#ffffffff';
|
|
||||||
gitea_s.onmouseenter = () => document.getElementById('pathGitea').style.fill = '#609926';
|
|
||||||
gitea_s.onmouseleave = () => document.getElementById('pathGitea').style.fill = '#ffffffff';
|
|
||||||
</script>
|
|
||||||
<script src="/static/resources/scripts/particles.js"></script>
|
|
||||||
<script src="/static/resources/scripts/app.js"></script>
|
|
||||||
<script src="/static/resources/bootstrap/js/bootstrap.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,84 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="ru">
|
|
||||||
|
|
||||||
<!-- Yandex.Metrika counter -->
|
|
||||||
<script type="text/javascript" >
|
|
||||||
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
|
|
||||||
m[i].l=1*new Date();
|
|
||||||
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
|
|
||||||
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
|
|
||||||
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
|
|
||||||
|
|
||||||
ym(93142819, "init", {
|
|
||||||
clickmap:true,
|
|
||||||
trackLinks:true,
|
|
||||||
accurateTrackBounce:true
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<noscript><div><img src="https://mc.yandex.ru/watch/93142819" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
|
|
||||||
<!-- /Yandex.Metrika counter -->
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Mootfrost DEV</title>
|
|
||||||
<meta name="description" content="Проекты">
|
|
||||||
<link rel="stylesheet" type="text/css" href="/static/resources/styles/projects.style.css"/>
|
|
||||||
<link href="/static/resources/bootstrap/css/bootstrap.css" rel="stylesheet">
|
|
||||||
<link rel="icon" type="image/x-icon" href="/static/resources/images/favicon.png">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body ondragstart="return false;" ondrop="return false;">
|
|
||||||
<div id="background"></div>
|
|
||||||
<div id="particles-js"><canvas class="particles-js-canvas-el" style="width: 100%; height: 100%;" width="768" height="922"></canvas></div>
|
|
||||||
|
|
||||||
<a class="btn-back" href="https://mootfrost.dev">
|
|
||||||
<svg ID="back-s" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="40px" height="40px">
|
|
||||||
<path id="pathBack" d="M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512s256-114.6 256-256zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z" fill="#ffffff" style="fill: rgb(255, 255, 255);"/>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div id="projects-container" class="wrapper pe-none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<template id="project-card-template">
|
|
||||||
<div class="project-card d-flex flex-column justify-content-center align-items-center">
|
|
||||||
<h2 class="project-title" id="title">Name</h2>
|
|
||||||
<p class="project-description" id="description">Description</p>
|
|
||||||
<hr class="divider">
|
|
||||||
<a id="link" class="btn-goto pe-auto"><span class="text-uppercase">Перейти</span></a>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
let back_s = document.getElementById('back-s');
|
|
||||||
back_s.onmouseenter = () => document.getElementById('pathBack').style.fill = 'lightgray';
|
|
||||||
back_s.onmouseleave = () => document.getElementById('pathBack').style.fill = '#ffffffff';
|
|
||||||
</script>
|
|
||||||
<script>
|
|
||||||
async function load_projects()
|
|
||||||
{
|
|
||||||
let resp = await fetch('/api/get_repos', {
|
|
||||||
method: 'GET',
|
|
||||||
},
|
|
||||||
);
|
|
||||||
let projects = await resp.json()
|
|
||||||
|
|
||||||
for (let i = 0; i < projects.length; i++) {
|
|
||||||
let card = document.importNode(document.getElementById('project-card-template').content, true)
|
|
||||||
card.querySelector('#link').href = projects[i].url
|
|
||||||
card.querySelector('#title').innerText = projects[i].name
|
|
||||||
card.querySelector('#description').innerText = projects[i].description
|
|
||||||
|
|
||||||
document.getElementById('projects-container').appendChild(card)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
load_projects()
|
|
||||||
</script>
|
|
||||||
<script src="/static/resources/scripts/particles.js"></script>
|
|
||||||
<script src="/static/resources/scripts/app.js"></script>
|
|
||||||
<script src="/static/resources/bootstrap/js/bootstrap.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue