This commit is contained in:
Jonathan Barrow 2022-10-01 11:23:06 -04:00
commit a8610f85df
No known key found for this signature in database
GPG Key ID: E86E9FE9049C741F
23 changed files with 783 additions and 116 deletions

View File

@ -15,4 +15,4 @@ Join our Discord:
<a href="https://discord.gg/DThgbba" target="_blank">
<img src="https://discordapp.com/api/guilds/408718485913468928/widget.png?style=banner3">
</a>
</a>

View File

@ -11,6 +11,15 @@
"accountWidget": {
"settings": "Settings",
"logout": "Logout"
},
"dropdown": {
"captions": {
"credits": "Meet the team",
"about": "About the project",
"faq": "Frequently asked questions",
"blog": "Our latest updates, condensed",
"progress": "Check the project progress and goals"
}
}
},
"hero": {

24
package-lock.json generated
View File

@ -3078,9 +3078,9 @@
}
},
"node_modules/mongoose": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.4.0.tgz",
"integrity": "sha512-eBDrueap1Zx3qFrcYylTiqTFlL5iTEaYAxoDF1MSRdipwAzChQRMJve+vxHtxPhI2q5tmf9RYHfZwXfTUHPd3g==",
"version": "6.4.6",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.4.6.tgz",
"integrity": "sha512-ZAfNCWgXhwev6k/+rMzjHIJ/+wLkundQU/i+aUTqmCgGoYqc+B5e4EC4Y3E1XaLzNXiWID1/vocSM6zs5IAGvA==",
"dependencies": {
"bson": "^4.6.2",
"kareem": "2.4.1",
@ -4354,9 +4354,9 @@
}
},
"node_modules/undici": {
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.8.0.tgz",
"integrity": "sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q==",
"version": "5.10.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz",
"integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==",
"engines": {
"node": ">=12.18"
}
@ -6938,9 +6938,9 @@
}
},
"mongoose": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.4.0.tgz",
"integrity": "sha512-eBDrueap1Zx3qFrcYylTiqTFlL5iTEaYAxoDF1MSRdipwAzChQRMJve+vxHtxPhI2q5tmf9RYHfZwXfTUHPd3g==",
"version": "6.4.6",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.4.6.tgz",
"integrity": "sha512-ZAfNCWgXhwev6k/+rMzjHIJ/+wLkundQU/i+aUTqmCgGoYqc+B5e4EC4Y3E1XaLzNXiWID1/vocSM6zs5IAGvA==",
"requires": {
"bson": "^4.6.2",
"kareem": "2.4.1",
@ -7928,9 +7928,9 @@
}
},
"undici": {
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.8.0.tgz",
"integrity": "sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q=="
"version": "5.10.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz",
"integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g=="
},
"universalify": {
"version": "2.0.0",

View File

@ -12,9 +12,11 @@
/* Account settings sidebar */
.account-sidebar .user {
text-align: center;
margin: 55px auto;
width: fit-content;
display: flex;
flex-flow: column;
align-items: center;
}
.account-sidebar .user .miiname {
font-size: 1.2rem;
@ -341,4 +343,4 @@ footer {
.setting-card .setting-list {
grid-template-columns: auto;
}
}
}

View File

@ -23,10 +23,16 @@ button#openSidebar {
}
.docs-wrapper header {
position: relative;
box-sizing: border-box;
margin: 20px;
margin-left: 0;
}
.docs-wrapper header::before {
content: none;
background: none;
pointer-events: none;
}
.docs-wrapper header a.logo-link {
display: none;
}
@ -278,6 +284,7 @@ button#openSidebar {
.docs-wrapper header {
margin-left: 20px;
width: 100%;
left: 0;
}
.docs-wrapper {
@ -321,12 +328,34 @@ button#openSidebar {
}
}
@media screen and (max-width: 900px) {
.docs-wrapper header button.dropdown-button#mobile-button {
display: none;
}
.docs-wrapper header .logo-link svg text {
display: block;
}
.docs-wrapper header .logo-link svg {
width: 120px;
}
}
@media screen and (max-width: 820px) {
.docs-wrapper .content .quick-links-grid,
.platform-grid {
grid-template-columns: 1fr;
grid-auto-rows: 1fr;
}
.docs-wrapper header a.logo-link {
margin-right: 6px;
}
}
@media screen and (max-width: 576px) {
.docs-wrapper header div.dropdown {
left: calc(-39.876px - 6px - 30px - 40px);
}
}
@media screen and (max-width: 492px) {

View File

@ -4,7 +4,9 @@
--bg-shade-0: #131733;
--bg-shade-1: #1B1F3B;
--bg-shade-2: #23274A;
--bg-shade-2-5: #2D3258;
--bg-shade-3: #373C65;
--bg-shade-3-5: #404673;
--bg-shade-4: #494F81;
--accent-shade-0: #673DB6;
@ -65,7 +67,7 @@ body, .main-body {
.wrapper {
width: 95%;
max-width: 1590px;
margin: 0 auto;
margin: 48px auto 0;
}
h1.dot:not([data-title-suffix]):after, h2.dot:not([data-title-suffix]):after {
@ -636,8 +638,8 @@ section.update-signup div.circle {
/* the next 4 lines make it so the circle is always the same aspect ratio and covers enough of the screen */
width: 2591px;
height: 1454px;
min-width: 135vw;
min-height: 76vw; /* yes, this is supposed to be in vw */
min-width: 145vw;
min-height: 13vw; /* yes, this is supposed to be in vw */
border-radius: 100%;
position: absolute;
top: 0;
@ -864,8 +866,8 @@ section.update-signup div.circle {
padding: 8px 27px;
}
.button.secondary.icon-btn {
width: 41px;
height: 41px;
width: 41px !important;
height: 41px !important;
}
.button.icon-btn svg {
min-width: 30px;
@ -1009,4 +1011,4 @@ section.update-signup div.circle {
.purple-circle {
display: none;
}
}
}

View File

@ -127,8 +127,8 @@ footer .bandwidth-raccoon-wrapper .text-bubble:after {
z-index: 1;
border-style: solid;
border-color: var(--bg-shade-3) transparent;
border-width: 10px 10px 0;
bottom: -10px;
border-width: 12px 12px 0;
bottom: -9px;
right: 60px;
margin-left: -10px;
}

View File

@ -1,7 +1,53 @@
header {
position: fixed;
top: 0;
left: 2.5%;
display: flex;
align-items: center;
width: 95%;
margin-top: 35px;
z-index: 60;
transition: box-shadow 180ms, background 180ms;
}
header * {
z-index: 1;
}
header::before {
content: "";
position: absolute;
top: -35px;
left: -10vw;
width: 120vw;
height: calc(100% + 35px + 35px);
background: rgba(27, 31, 59, 0.98);
transition: background 180ms;
}
header.transparent,
header.transparent::before {
background: rgba(27, 31, 59, 0);
}
header.dropdown-active {
background: rgba(27, 31, 59, 0.98);
box-shadow: 0 0 0 600vw rgba(27, 31, 59, 0.8);
}
header .dropdown-arrow {
opacity: 0;
position: absolute;
width: 0;
border-style: solid;
border-color: var(--bg-shade-3) transparent;
border-width: 0 14px 14px;
bottom: -26px;
margin-left: -10px;
margin-bottom: -10px;
transition: left 180ms, margin-bottom 180ms, opacity 180ms;
pointer-events: none;
}
header.dropdown-active .dropdown-arrow {
opacity: 1;
display: block;
margin-bottom: 0;
}
header a {
text-decoration: none;
@ -10,23 +56,225 @@ header .logo-link,
header .logo-link svg {
display: block;
}
header nav a:first-child {
header div.left-section {
display: flex;
flex-flow: row nowrap;
}
header nav {
position: relative;
display: flex;
flex-flow: row nowrap;
align-items: center;
margin-left: 40px;
}
header nav a {
header button.dropdown-button#mobile-button {
display: none;
background: none;
padding: 0;
margin-right: 12px;
transition: transform 200ms;
}
header button.dropdown-button#mobile-button.active {
transform: rotate(90deg);
}
header div.dropdown-button-wrapper {
position: relative;
display: flex;
flex-flow: row nowrap;
}
/* these are safezones where the dropdown will not close */
header div.dropdown-button-wrapper::before {
content: "";
position: absolute;
top: -16px;
bottom: 100%;
left: 0;
right: -12px;
}
header div.dropdown-button-wrapper::after {
content: "";
position: absolute;
top: 100%;
bottom: -32px;
left: 0;
right: -12px;
}
header nav button {
background: none;
color: var(--text-shade-1);
margin: 0 17px;
text-decoration: none;
padding: 0;
}
header nav a:hover {
header nav button:hover,
header nav button.active {
background: none;
color: var(--text-shade-3);
transition: color 50ms ease-in-out;
}
header nav a.donate button {
display: grid;
grid-auto-flow: column;
align-items: center;
gap: 4px;
font-weight: bold;
background: #332b61;
color: var(--accent-shade-3);
padding: 2px 12px;
border-radius: 24px;
}
header nav a.donate button svg {
height: 1rem;
width: 1rem;
}
header nav a.donate button:hover {
background: var(--accent-shade-0);
color: #fff;
}
header nav a.donate button.dropdown-button::after {
content: "";
display: inline-block;
align-items: center;
width: 16px;
height: 8px;
bottom: 0;
margin-left: 0.3rem;
background: no-repeat center url("/assets/images/down-arrow.svg");
filter: brightness(0) invert(78%) sepia(2%) saturate(5488%) hue-rotate(197deg)
brightness(88%) contrast(93%);
transition: transform 100ms;
}
header nav button.dropdown-button.active::after {
transform: scaleY(-1);
filter: none;
}
header div.dropdown {
position: absolute;
top: 100%;
margin-top: 24px;
left: 0;
display: block;
background: var(--bg-shade-3);
border-radius: 8px;
width: 420px;
height: 0;
overflow-y: hidden;
transition: height 180ms;
}
header div.dropdown * {
box-sizing: border-box;
}
header div.dropdown-content {
position: absolute;
top: 0;
width: 100%;
opacity: 0;
pointer-events: none;
transition: opacity 180ms;
}
header div.dropdown-content.show {
opacity: 1;
pointer-events: auto;
}
header div.dropdown .top {
padding: 32px 18px;
}
header div.dropdown .top a {
position: relative;
display: grid;
grid-auto-flow: column;
gap: 16px;
justify-content: start;
align-items: center;
color: var(--text-shade-1);
padding: 16px;
border-radius: 8px;
}
header div.dropdown .top a .icon {
background: var(--bg-shade-2);
color: var(--accent-shade-3);
height: 56px;
width: 56px;
border-radius: 8px;
}
header div.dropdown .top a:hover .icon {
background: #151b44;
color: var(--accent-shade-1);
}
header div.dropdown .top a .icon svg {
width: 32px;
height: 32px;
margin: 12px;
}
header div.dropdown .top a .title {
margin: 0;
font-weight: bold;
color: var(--text-shade-3);
}
header div.dropdown .top a .caption {
margin: 0;
}
header div.dropdown .top a:hover {
background: var(--bg-shade-2-5);
}
header div.dropdown .top a:hover::after {
content: "";
position: absolute;
top: 0;
right: 24px;
width: 24px;
height: 100%;
background: no-repeat center url("/assets/images/arrow-right.svg");
/* garbage to make it look the same color */
filter: brightness(0) invert(60%) sepia(70%) saturate(453%) hue-rotate(208deg)
brightness(113%) contrast(97%);
}
header div.dropdown .top a:hover .title {
color: var(--accent-shade-3);
}
header div.dropdown .bottom {
display: grid;
grid-auto-flow: column;
justify-content: center;
gap: 24px;
background: var(--bg-shade-3-5);
padding: 22px;
width: 100%;
box-sizing: border-box;
}
header div.dropdown .bottom a {
width: 48px;
height: 48px;
background: var(--bg-shade-3);
color: var(--text-shade-3);
border-radius: 100%;
display: flex;
justify-content: center;
align-items: center;
}
header div.dropdown .bottom a:hover {
background: var(--bg-shade-2);
}
header div.dropdown .bottom a svg {
width: 24px;
height: auto;
}
header div.dropdown .top a.show-on-mobile {
display: none;
}
header .right-section {
display: grid;
grid-auto-flow: column;
grid-gap: 24px;
gap: 24px;
margin-left: auto;
z-index: 2;
color: var(--text-shade-1);
@ -46,12 +294,14 @@ header .locale-dropdown-toggle.active {
}
header .user-widget-wrapper {
height: 24px;
height: auto;
}
header .user-widget-wrapper a.login-link {
color: var(--text-shade-1);
text-decoration: none;
display: block;
height: 32px;
transition: color 150ms;
}
header .user-widget-wrapper a.login-link:hover {
@ -128,16 +378,83 @@ header .user-widget .button.logout {
}
@media screen and (max-width: 900px) {
header nav a:not(.keep-on-mobile) {
display: none;
header {
position: relative;
justify-content: flex-end;
width: 90%;
left: 5%;
}
header .logo-link {
margin-right: 20px;
header .hide-on-mobile {
display: none !important;
}
header button.dropdown-button#mobile-button {
display: block;
}
header .left-section {
margin-right: auto;
}
header .right-section {
margin-left: 24px;
}
header nav a.donate button {
margin: 0;
}
header div.dropdown {
left: unset;
right: -104px;
width: 90vw;
}
header div.dropdown .top {
display: grid;
grid-template-columns: 1fr 1fr;
}
}
@media screen and (max-width: 480px) {
@media screen and (max-width: 600px) {
header div.dropdown .top {
grid-template-columns: 1fr;
}
header div.dropdown .top {
padding: 16px 9px;
}
}
@media screen and (max-width: 500px) {
header nav a.donate button span {
display: none;
}
header nav a.donate button {
padding: 6px;
}
}
@media screen and (max-width: 420px) {
header nav a.donate button {
display: none;
}
header .right-section {
margin-left: 0;
}
header div.dropdown {
right: -80px;
}
header div.dropdown .top a {
padding: 8px;
}
header div.dropdown .top a .icon {
height: 40px;
width: 40px;
}
header div.dropdown .top a .icon svg {
width: 24px;
height: 24px;
margin: 8px;
}
}
@media screen and (max-width: 330px) {
header .logo-link svg text {
display: none;
}
@ -147,9 +464,6 @@ header .user-widget .button.logout {
}
header .logo-link {
margin-right: 10px;
}
header nav a {
margin: 0 10px;
margin-right: 6px;
}
}

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>

After

Width:  |  Height:  |  Size: 306 B

View File

@ -1,5 +1,118 @@
/* eslint-disable no-undef, no-unused-vars */
const header = document.querySelector('header');
const dropdownButtonWrapper = document.querySelector('.dropdown-button-wrapper');
const dropdown = document.querySelector('header div.dropdown');
const allDropdownButtons = document.querySelectorAll('button.dropdown-button');
const desktopDropdownBtns = document.querySelectorAll('header .dropdown-button-wrapper button.dropdown-button');
const mobileDropdownBtn = document.querySelector('.dropdown-button#mobile-button');
let dropdownContent;
function isDropdownOpen() {
return header.classList.contains('dropdown-active');
}
function closeDropdown() {
dropdown.style.height = '0';
header.classList.remove('dropdown-active');
// deselect all buttons
allDropdownButtons.forEach((button) => {
button.classList.remove('active');
});
}
window.addEventListener('resize', () => {
if (isDropdownOpen() && dropdownContent) {
// set the dropdown height to the height of the content
dropdown.style.height = `${dropdownContent.offsetHeight}px`;
}
});
function navbarDropdownHandler(buttonID) {
const allDropdownContents = dropdown.querySelectorAll('div.dropdown-content');
dropdownContent = document.querySelector(`.dropdown-content#${buttonID}-dropdown-content`);
const dropdownButton = document.querySelector(`button.dropdown-button#${buttonID}-button`);
const dropdownArrow = document.querySelector('.dropdown-arrow#navbar-dropdown-arrow');
// if on mobile, reclicking the button should close the dropdown
if (buttonID === 'mobile' && dropdownButton.classList.contains('active')) {
closeDropdown();
return;
}
// hide all contents
allDropdownContents.forEach((content) => {
content.classList.remove('show');
});
// deselect all buttons
allDropdownButtons.forEach((button) => {
button.classList.remove('active');
});
// show the content of the clicked button
dropdownContent.classList.add('show');
// select the clicked button
dropdownButton.classList.add('active');
// set the dropdown height to the height of the content
dropdown.style.height = `${dropdownContent.offsetHeight}px`;
// move the arrow to the selected button
dropdownArrow.style.left = `${dropdownButton.offsetLeft + dropdownButton.offsetWidth / 2 - 5}px`;
// dim the rest of the page
header.classList.add('dropdown-active');
}
const dropdownAnchors = document.querySelectorAll('.dropdown-content a');
dropdownAnchors.forEach((a) => {
a.addEventListener('click', () => {
closeDropdown();
});
});
// make the header background transparent if near the top of the page
function makeHeaderBackgroundTransparent() {
if(window.pageYOffset < 100) {
header.classList.add('transparent');
} else {
header.classList.remove('transparent');
}
}
makeHeaderBackgroundTransparent();
window.addEventListener('scroll', () => {
makeHeaderBackgroundTransparent();
});
desktopDropdownBtns.forEach((btn) => {
[ 'click', 'mouseover' ].forEach((event) => {
btn.addEventListener(event, () => {
const id = btn.id.replace('-button', '');
navbarDropdownHandler(id);
});
});
});
mobileDropdownBtn.addEventListener('click', () => {
const id = 'mobile';
navbarDropdownHandler(id, true);
});
/* if on desktop: we check if the element the mouse moves to is part of the ignored element (keep the dropdown open) or not (close the dropdown)
* if on mobile: do nothing
*/
function dropdownOnMouseLeave(e, ignoredElement) {
if (window.innerWidth > 900) {
const targetElement = e.relatedTarget || e.toElement;
if (targetElement !== ignoredElement && !ignoredElement.contains(targetElement)) {
closeDropdown();
}
}
}
dropdownButtonWrapper.addEventListener('mouseleave', (e) => {
dropdownOnMouseLeave(e, dropdown);
});
dropdown.addEventListener('mouseleave', (e) => {
dropdownOnMouseLeave(e, dropdownButtonWrapper);
});
// Account widget handler
const userWidgetToggle = document.querySelector('.user-widget-toggle') ;
const userWidget = document.querySelector('.user-widget');

View File

@ -1,4 +1,12 @@
// This file gets automatically bundled with browserify when running the start script. This also means that after any update you're gonna need to restart the server to see any changes.
/**
* Compilation note:
* This file gets automatically bundled with browserify when running the start script.
* This also means that after any update you're gonna need to restart the server to see any changes.
*
* browserify is needed for the use of require() in the browser
*/
const Mii = require('mii-js');
const newMiiData = 'AwAAQOlVognnx0GC2qjhdwOzuI0n2QAAAGBzAHQAZQB2AGUAAAAAAAAAAAAAAEBAAAAhAQJoRBgmNEYUgRIXaA0AACkAUkhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAANeC';
// Prevent the user from reloading or leaving the page
window.onbeforeunload = function (e) {
@ -32,33 +40,56 @@ window.addEventListener('resize', () => {
setCanvasScale();
});
// MII RENDERER
let mii; // global mii object
const Mii = require('mii-js');
// this initalizes a mii for editing
// returns if mii data was parsed successfully
function initializeMiiData(encodedUserMiiData) {
console.group('Initalizing Mii data');
console.log('encoded mii data:', encodedUserMiiData);
// We initialize the Mii object
try {
console.log('Attempting to parse mii data');
mii = new Mii(Buffer.from(encodedUserMiiData, 'base64'));
} catch (err) {
console.error('failed to decode mii data', err);
console.groupEnd();
return false;
}
// We set the img sources for the unedited miis in the save animation
console.log('grabbing rendered miis for later use');
const miiStudioNeutralUrl = mii.studioUrl({
width: 512,
bgColor: '13173300',
});
const miiStudioSorrowUrl = mii.studioUrl({
width: 512,
bgColor: '13173300',
expression: 'sorrow',
});
document.querySelector('.mii-comparison img.old-mii').src = miiStudioNeutralUrl;
document.querySelector('.mii-comparison.confirmed img.old-mii').src = miiStudioSorrowUrl;
console.log('initialization complete');
console.groupEnd();
return true;
}
// The Mii data is stored in a script tag in the HTML, so we can just grab it and then remove the element
const encodedUserMiiData = document.querySelector(
'script#encodedUserMiiData'
).textContent;
document.querySelector('script#encodedUserMiiData').remove();
console.log('encodedMiiData', encodedUserMiiData);
// We initialize the Mii object
const mii = new Mii(Buffer.from(encodedUserMiiData, 'base64'));
// We set the img sources for the unedited miis in the save animation
const miiStudioNeutralUrl = mii.studioUrl({
width: 512,
bgColor: '13173300',
});
const miiStudioSorrowUrl = mii.studioUrl({
width: 512,
bgColor: '13173300',
expression: 'sorrow',
});
document.querySelector('.mii-comparison img.old-mii').src = miiStudioNeutralUrl;
document.querySelector('.mii-comparison.confirmed img.old-mii').src =
miiStudioSorrowUrl;
// is valid mii data
const validMiiData = initializeMiiData(encodedUserMiiData);
if (!validMiiData) {
const shouldContinue = window.confirm('Found corrupted mii data, want to continue with a new Mii?');
if (!shouldContinue)
window.location.assign('/account');
initializeMiiData(newMiiData);
}
// we keeep the images here so we can cache them when we need to change the build/height
const miiFaceImg = new Image();
@ -444,8 +475,8 @@ document
const miiData = mii.encode().toString('base64');
const tokenType = document.cookie.split('; ').find(row => row.startsWith('token_type=')).split('=')[1];
const accessToken = document.cookie.split('; ').find(row => row.startsWith('access_token=')).split('=')[1];
fetch('http://api.pretendo.cc/v1/user', {
fetch('https://api.pretendo.cc/v1/user', {
method: 'POST',
headers: {
'Accept': 'application/json',

View File

@ -1,8 +1,8 @@
<link rel="stylesheet" href="/assets/css/account.css" />
<div class="wrapper">
{{> header}}
{{> header}}
<div class="wrapper">
<div class="account-wrapper">
<div class="account-sidebar">

View File

@ -1,8 +1,8 @@
<link rel="stylesheet" href="/assets/css/login.css" />
<div class="wrapper">
{{> header}}
{{> header}}
<div class="wrapper">
<div class="account-form-wrapper">
<form action="/account/login" method="post" class="account">

View File

@ -1,9 +1,9 @@
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
<link rel="stylesheet" href="/assets/css/login.css" />
<div class="wrapper">
{{> header}}
{{> header}}
<div class="wrapper">
<div class="account-form-wrapper">
<form action="/account/register" method="post" class="account register">

View File

@ -62,7 +62,7 @@
</div>
</div>
<p class="price">
<span>{{this.price}}</span> / {{ locale.upgrade.month }}
<span>{{this.price}}</span> / {{ ../locale.upgrade.month }}
</p>
</label>
{{/each}}

View File

@ -3,9 +3,9 @@
<!-- The same font Big N uses. Licence legally obtained through Adobe Fonts. -->
<link rel="stylesheet" href="https://use.typekit.net/gok5tsu.css" />
<div class="wrapper">
{{> header}}
{{> header}}
<div class="wrapper">
<div class="announcement-hero new-font">
<p><span class="pretendo">Pretendo Network</span> is now</p>

View File

@ -1,8 +1,8 @@
<link rel="stylesheet" href="/assets/css/blog.css" />
<div class="wrapper blog">
{{> header}}
{{> header}}
<div class="wrapper blog">
<div class="progress-hero">
<div class="hero-meta reduced-margin">

View File

@ -1,8 +1,8 @@
<link rel="stylesheet" href="/assets/css/blogpost.css" />
<div class="wrapper blog">
{{> header}}
{{> header}}
<div class="wrapper blog">
<div class="card-wrap">
<div class="purple-card blog-card">

View File

@ -1,8 +1,7 @@
{{> header}}
<div class="wrapper">
{{> header}}
<section class="hero">
<div class="hero-meta">
<h3 class="subtitle">{{ locale.hero.subtitle }}</h3>

View File

@ -1,8 +1,8 @@
<link rel="stylesheet" href="/assets/css/localization.css" />
<div class="wrapper">
{{> header}}
{{> header}}
<div class="wrapper">
<div class="localization-wrapper">
<div class="localization-widget">

View File

@ -17,11 +17,10 @@
<div class="section">
<h5>{{ locale.docs.sidebar.juxt_err }}</h5>
<a href="/docs/en_US/errors/JXT-598-0009">JXT-598-0009</a>
<a href="/docs/en_US/errors/JXT-598-0010">JXT-598-0010</a>
<a href="/docs/en_US/errors/JXT-598-0011">JXT-598-0011</a>
<a href="/docs/en_US/errors/JXT-598-0015">JXT-598-0015</a>
<a href="/docs/en_US/errors/JXT-598-0020">JXT-598-0020</a>
<a href="/docs/errors/JXT-598-0009">JXT-598-0009</a>
<a href="/docs/errors/JXT-598-0010">JXT-598-0010</a>
<a href="/docs/errors/JXT-598-0011">JXT-598-0011</a>
<a href="/docs/errors/JXT-598-0020">JXT-598-0020</a>
</div>
</div>

View File

@ -1,39 +1,207 @@
<link rel="stylesheet" href="/assets/css/partials/header.css" ></link>
<header>
<a href="/" class="logo-link">
<svg xmlns="http://www.w3.org/2000/svg" width="120" height="39.876">
<g id="logo_type" data-name="logo type" transform="translate(-553 -467)">
<g id="logo" transform="translate(553 467)">
<rect id="XMLID_158_" width="39.876" height="39.876" fill="#9d6ff3" opacity="0" />
<g id="XMLID_6_" transform="translate(8.222 1.418)">
<path id="XMLID_15_"
d="M69.149,28.312c-1.051.553-.129,2.139.922,1.585a12.365,12.365,0,0,1,8.794-.571,10.829,10.829,0,0,1,6.342,4.166c.645,1,2.231.074,1.585-.922C83.308,27.169,74.7,25.436,69.149,28.312Z"
transform="translate(-64.246 -23.389)" fill="#9d6ff3" />
<path id="XMLID_14_"
d="M82.64,14.608A15.565,15.565,0,0,0,73.5,8.45a17.535,17.535,0,0,0-12.647.9c-1.051.553-.129,2.139.922,1.585,3.411-1.788,7.6-1.714,11.209-.719,3.1.848,6.268,2.544,8.038,5.309C81.681,16.543,83.267,15.622,82.64,14.608Z"
transform="translate(-57.476 -7.693)" fill="#9d6ff3" />
<path id="XMLID_9_"
d="M55.68,47.8a10.719,10.719,0,0,0-6.71,2.3H45.983A1.336,1.336,0,0,0,44.6,51.376V75.84a1.431,1.431,0,0,0,1.383,1.383h3.023a1.367,1.367,0,0,0,1.309-1.383V68.392A10.993,10.993,0,1,0,55.68,47.8Zm0,17.182a6.213,6.213,0,1,1,6.213-6.213A6.216,6.216,0,0,1,55.68,64.982Z"
transform="translate(-44.6 -40.406)" fill="#9d6ff3" />
<header class="transparent">
<div class="left-section">
<button class="dropdown-button" id="mobile-button">
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M224 128a8 8 0 0 1-8 8H40a8 8 0 0 1 0-16h176a8 8 0 0 1 8 8ZM40 72h176a8 8 0 0 0 0-16H40a8 8 0 0 0 0 16Zm176 112H40a8 8 0 0 0 0 16h176a8 8 0 0 0 0-16Z"/></svg>
</button>
<a href="/" class="logo-link">
<svg xmlns="http://www.w3.org/2000/svg" width="120" height="39.876">
<g id="logo_type" data-name="logo type" transform="translate(-553 -467)">
<g id="logo" transform="translate(553 467)">
<rect id="XMLID_158_" width="39.876" height="39.876" fill="#9d6ff3" opacity="0" />
<g id="XMLID_6_" transform="translate(8.222 1.418)">
<path id="XMLID_15_"
d="M69.149,28.312c-1.051.553-.129,2.139.922,1.585a12.365,12.365,0,0,1,8.794-.571,10.829,10.829,0,0,1,6.342,4.166c.645,1,2.231.074,1.585-.922C83.308,27.169,74.7,25.436,69.149,28.312Z"
transform="translate(-64.246 -23.389)" fill="#9d6ff3" />
<path id="XMLID_14_"
d="M82.64,14.608A15.565,15.565,0,0,0,73.5,8.45a17.535,17.535,0,0,0-12.647.9c-1.051.553-.129,2.139.922,1.585,3.411-1.788,7.6-1.714,11.209-.719,3.1.848,6.268,2.544,8.038,5.309C81.681,16.543,83.267,15.622,82.64,14.608Z"
transform="translate(-57.476 -7.693)" fill="#9d6ff3" />
<path id="XMLID_9_"
d="M55.68,47.8a10.719,10.719,0,0,0-6.71,2.3H45.983A1.336,1.336,0,0,0,44.6,51.376V75.84a1.431,1.431,0,0,0,1.383,1.383h3.023a1.367,1.367,0,0,0,1.309-1.383V68.392A10.993,10.993,0,1,0,55.68,47.8Zm0,17.182a6.213,6.213,0,1,1,6.213-6.213A6.216,6.216,0,0,1,55.68,64.982Z"
transform="translate(-44.6 -40.406)" fill="#9d6ff3" />
</g>
</g>
<text id="Pretendo" transform="translate(593 492)" fill="#fff" font-size="17"
font-family="Poppins-Bold, Poppins" font-weight="700">
<tspan x="0" y="0">Pretendo</tspan>
</text>
</g>
<text id="Pretendo" transform="translate(593 492)" fill="#fff" font-size="17"
font-family="Poppins-Bold, Poppins" font-weight="700">
<tspan x="0" y="0">Pretendo</tspan>
</text>
</g>
</svg>
</a>
</svg>
</a>
</div>
<nav>
<a href="/#about">{{ locale.nav.about }}</a>
<a href="/#faq">{{ locale.nav.faq }}</a>
<a href="/#credits">{{ locale.nav.credits }}</a>
<a href="/docs" class="keep-on-mobile">{{ locale.nav.docs }}</a>
<a href="/progress" class="keep-on-mobile">{{ locale.nav.progress }}</a>
<a href="/blog">{{ locale.nav.blog }}</a>
<a href="/account/upgrade" class="keep-on-mobile">{{ locale.nav.donate }}</a>
<div class="dropdown-button-wrapper hide-on-mobile">
<button class="dropdown-button" id="about-button">{{ locale.nav.about }}</button>
<button class="dropdown-button" id="documentation-button">{{ locale.nav.docs }}</button>
</div>
<a href="/progress" class="hide-on-mobile">
<button>{{ locale.nav.progress }}</button>
</a>
<a href="/account/upgrade" class="donate">
<button>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-heart"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path></svg>
<span>{{ locale.nav.donate }}</span>
</button>
</a>
<div class="dropdown-arrow hide-on-mobile" id="navbar-dropdown-arrow"></div>
<div class="dropdown" id="navbar-dropdown">
<div class="dropdown-content" id="about-dropdown-content">
<div class="top">
<a href="/#credits">
<div class="icon">
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M166.5 192.8a7.8 7.8 0 0 1 .6 8.3a8.1 8.1 0 0 1-7.1 4.3H16a8.1 8.1 0 0 1-7.1-4.3a7.8 7.8 0 0 1 .6-8.3a95.5 95.5 0 0 1 45.3-34.9a60 60 0 1 1 66.4 0a95.5 95.5 0 0 1 45.3 34.9Zm81.6 0a96.3 96.3 0 0 0-45.4-34.9A59.9 59.9 0 0 0 169.5 48a64 64 0 0 0-16.3 2.2a8.2 8.2 0 0 0-5.4 5.2a8 8 0 0 0 1.2 7.3a75.8 75.8 0 0 1 3.8 84.9a8.1 8.1 0 0 0 2.1 10.6q4.5 3.5 8.7 7.2l.5.5a112.6 112.6 0 0 1 25.5 34.9a7.9 7.9 0 0 0 7.2 4.6h44.7a8.1 8.1 0 0 0 7.1-4.3a8 8 0 0 0-.5-8.3Z"/></svg>
</div>
<div>
<p class="title">{{ locale.nav.credits }}</p>
<p class="caption">{{ locale.nav.dropdown.captions.credits }}</p>
</div>
</a>
<a href="/#about">
<div class="icon">
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M128 24a104 104 0 1 0 104 104A104.1 104.1 0 0 0 128 24Zm-2 48a12 12 0 1 1-12 12a12 12 0 0 1 12-12Zm10 112h-8a8 8 0 0 1-8-8v-48a8 8 0 0 1 0-16h8a8 8 0 0 1 8 8v48a8 8 0 0 1 0 16Z"/></svg>
</div>
<div>
<p class="title">{{ locale.nav.about }}</p>
<p class="caption">{{ locale.nav.dropdown.captions.about }}</p>
</div>
</a>
<a href="/#faq">
<div class="icon">
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M128 24a104 104 0 1 0 104 104A104.1 104.1 0 0 0 128 24Zm0 168a12 12 0 1 1 12-12a12 12 0 0 1-12 12Zm8-48.9v.9a8 8 0 0 1-16 0v-8a8 8 0 0 1 8-8a20 20 0 1 0-20-20a8 8 0 0 1-16 0a36 36 0 1 1 44 35.1Z"/></svg>
</div>
<div>
<p class="title">{{ locale.nav.faq }}</p>
<p class="caption">{{ locale.nav.dropdown.captions.faq }}</p>
</div>
</a>
<a href="/blog">
<div class="icon">
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M216 48H56a16 16 0 0 0-16 16v120a8 8 0 0 1-16 0V88a8 8 0 0 0-16 0v96a24 24 0 0 0 24 24h176a24.1 24.1 0 0 0 24-24V64a16 16 0 0 0-16-16Zm-40 104H96a8 8 0 0 1 0-16h80a8 8 0 0 1 0 16Zm0-32H96a8 8 0 0 1 0-16h80a8 8 0 0 1 0 16Z"/></svg>
</div>
<div>
<p class="title">{{ locale.nav.blog }}</p>
<p class="caption">{{ locale.nav.dropdown.captions.blog }}</p>
</div>
</a>
</div>
<div class="bottom">
<a href="https://invite.gg/pretendo" target="_blank" aria-label="A link to our Discord server">
<svg width="71" height="55" viewBox="0 0 71 55" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0)"><path d="M60.1045 4.8978C55.5792 2.8214 50.7265 1.2916 45.6527 0.41542C45.5603 0.39851 45.468 0.440769 45.4204 0.525289C44.7963 1.6353 44.105 3.0834 43.6209 4.2216C38.1637 3.4046 32.7345 3.4046 27.3892 4.2216C26.905 3.0581 26.1886 1.6353 25.5617 0.525289C25.5141 0.443589 25.4218 0.40133 25.3294 0.41542C20.2584 1.2888 15.4057 2.8186 10.8776 4.8978C10.8384 4.9147 10.8048 4.9429 10.7825 4.9795C1.57795 18.7309 -0.943561 32.1443 0.293408 45.3914C0.299005 45.4562 0.335386 45.5182 0.385761 45.5576C6.45866 50.0174 12.3413 52.7249 18.1147 54.5195C18.2071 54.5477 18.305 54.5139 18.3638 54.4378C19.7295 52.5728 20.9469 50.6063 21.9907 48.5383C22.0523 48.4172 21.9935 48.2735 21.8676 48.2256C19.9366 47.4931 18.0979 46.6 16.3292 45.5858C16.1893 45.5041 16.1781 45.304 16.3068 45.2082C16.679 44.9293 17.0513 44.6391 17.4067 44.3461C17.471 44.2926 17.5606 44.2813 17.6362 44.3151C29.2558 49.6202 41.8354 49.6202 53.3179 44.3151C53.3935 44.2785 53.4831 44.2898 53.5502 44.3433C53.9057 44.6363 54.2779 44.9293 54.6529 45.2082C54.7816 45.304 54.7732 45.5041 54.6333 45.5858C52.8646 46.6197 51.0259 47.4931 49.0921 48.2228C48.9662 48.2707 48.9102 48.4172 48.9718 48.5383C50.038 50.6034 51.2554 52.5699 52.5959 54.435C52.6519 54.5139 52.7526 54.5477 52.845 54.5195C58.6464 52.7249 64.529 50.0174 70.6019 45.5576C70.6551 45.5182 70.6887 45.459 70.6943 45.3942C72.1747 30.0791 68.2147 16.7757 60.1968 4.9823C60.1772 4.9429 60.1437 4.9147 60.1045 4.8978ZM23.7259 37.3253C20.2276 37.3253 17.3451 34.1136 17.3451 30.1693C17.3451 26.225 20.1717 23.0133 23.7259 23.0133C27.308 23.0133 30.1626 26.2532 30.1066 30.1693C30.1066 34.1136 27.28 37.3253 23.7259 37.3253ZM47.3178 37.3253C43.8196 37.3253 40.9371 34.1136 40.9371 30.1693C40.9371 26.225 43.7636 23.0133 47.3178 23.0133C50.9 23.0133 53.7545 26.2532 53.6986 30.1693C53.6986 34.1136 50.9 37.3253 47.3178 37.3253Z" fill="#ffffff"></path></g><defs><clipPath id="clip0"><rect width="71" height="55" fill="white"></rect></clipPath></defs></svg>
</a>
<a href="https://twitter.com/PretendoNetwork" target="_blank" aria-label="A link to our Twitter account">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path fill="currentColor" d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"></path></svg>
</a>
<a href="https://github.com/PretendoNetwork" target="_blank" aria-label="A link to our GitHub organization">
<svg data-prefix="fab" data-icon="github" class="svg-inline--fa fa-github fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg>
</a>
</div>
</div>
<div class="dropdown-content" id="documentation-dropdown-content">
<div class="top">
<a href="/docs">
<div class="icon">
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M74.3 85.7a8.1 8.1 0 0 1 11.4-11.4l34.3 34.4V24a8 8 0 0 1 16 0v84.7l34.3-34.4a8.1 8.1 0 0 1 11.4 11.4l-48 48a8.2 8.2 0 0 1-11.4 0ZM240 136v64a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-64a16 16 0 0 1 16-16h52.4a3.6 3.6 0 0 1 2.8 1.2L111 145a24.1 24.1 0 0 0 34 0l23.8-23.8a3.6 3.6 0 0 1 2.8-1.2H224a16 16 0 0 1 16 16Zm-40 32a12 12 0 1 0-12 12a12 12 0 0 0 12-12Z"/></svg>
</div>
<div>
<p class="title">{{ locale.docs.quickLinks.links.[0].header }}</p>
<p class="caption">{{ locale.docs.quickLinks.links.[0].caption }}</p>
</div>
</a>
<a href="/#faq">
<div class="icon">
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M236.7 188L148.8 36a24 24 0 0 0-41.6 0L19.3 188A23.9 23.9 0 0 0 40 224h176a23.9 23.9 0 0 0 20.7-36ZM120 104a8 8 0 0 1 16 0v40a8 8 0 0 1-16 0Zm8 88a12 12 0 1 1 12-12a12 12 0 0 1-12 12Z"/></svg> </div>
<div>
<p class="title">{{ locale.docs.quickLinks.links.[1].header }}</p>
<p class="caption">{{ locale.docs.quickLinks.links.[1].caption }}</p>
</div>
</a>
</div>
</div>
<!-- repeating this is less than ideal, but a rewrite is already planned; this is more of a hotfix than anything -->
<div class="dropdown-content" id="mobile-dropdown-content">
<div class="top">
<a href="/#credits">
<div class="icon">
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M166.5 192.8a7.8 7.8 0 0 1 .6 8.3a8.1 8.1 0 0 1-7.1 4.3H16a8.1 8.1 0 0 1-7.1-4.3a7.8 7.8 0 0 1 .6-8.3a95.5 95.5 0 0 1 45.3-34.9a60 60 0 1 1 66.4 0a95.5 95.5 0 0 1 45.3 34.9Zm81.6 0a96.3 96.3 0 0 0-45.4-34.9A59.9 59.9 0 0 0 169.5 48a64 64 0 0 0-16.3 2.2a8.2 8.2 0 0 0-5.4 5.2a8 8 0 0 0 1.2 7.3a75.8 75.8 0 0 1 3.8 84.9a8.1 8.1 0 0 0 2.1 10.6q4.5 3.5 8.7 7.2l.5.5a112.6 112.6 0 0 1 25.5 34.9a7.9 7.9 0 0 0 7.2 4.6h44.7a8.1 8.1 0 0 0 7.1-4.3a8 8 0 0 0-.5-8.3Z"/></svg>
</div>
<div>
<p class="title">{{ locale.nav.credits }}</p>
<p class="caption">{{ locale.nav.dropdown.captions.credits }}</p>
</div>
</a>
<a href="/#about">
<div class="icon">
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M128 24a104 104 0 1 0 104 104A104.1 104.1 0 0 0 128 24Zm-2 48a12 12 0 1 1-12 12a12 12 0 0 1 12-12Zm10 112h-8a8 8 0 0 1-8-8v-48a8 8 0 0 1 0-16h8a8 8 0 0 1 8 8v48a8 8 0 0 1 0 16Z"/></svg>
</div>
<div>
<p class="title">{{ locale.nav.about }}</p>
<p class="caption">{{ locale.nav.dropdown.captions.about }}</p>
</div>
</a>
<a href="/#faq">
<div class="icon">
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M128 24a104 104 0 1 0 104 104A104.1 104.1 0 0 0 128 24Zm0 168a12 12 0 1 1 12-12a12 12 0 0 1-12 12Zm8-48.9v.9a8 8 0 0 1-16 0v-8a8 8 0 0 1 8-8a20 20 0 1 0-20-20a8 8 0 0 1-16 0a36 36 0 1 1 44 35.1Z"/></svg>
</div>
<div>
<p class="title">{{ locale.nav.faq }}</p>
<p class="caption">{{ locale.nav.dropdown.captions.faq }}</p>
</div>
</a>
<a href="/blog">
<div class="icon">
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M216 48H56a16 16 0 0 0-16 16v120a8 8 0 0 1-16 0V88a8 8 0 0 0-16 0v96a24 24 0 0 0 24 24h176a24.1 24.1 0 0 0 24-24V64a16 16 0 0 0-16-16Zm-40 104H96a8 8 0 0 1 0-16h80a8 8 0 0 1 0 16Zm0-32H96a8 8 0 0 1 0-16h80a8 8 0 0 1 0 16Z"/></svg>
</div>
<div>
<p class="title">{{ locale.nav.blog }}</p>
<p class="caption">{{ locale.nav.dropdown.captions.blog }}</p>
</div>
</a>
<a href="/progress">
<div class="icon">
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M96 8a8 8 0 0 1 8-8h48a8 8 0 0 1 0 16h-48a8 8 0 0 1-8-8Zm128 120a96 96 0 1 1-96-96a96.2 96.2 0 0 1 96 96Zm-50.7-45.3a8.1 8.1 0 0 0-11.4 0l-39.6 39.6a8.1 8.1 0 0 0 0 11.4a8.2 8.2 0 0 0 11.4 0l39.6-39.6a8.1 8.1 0 0 0 0-11.4Z"/></svg>
</div>
<div>
<p class="title">{{ locale.nav.progress }}</p>
<p class="caption">{{ locale.nav.dropdown.captions.blog }}</p>
</div>
</a>
<a href="/docs">
<div class="icon">
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M74.3 85.7a8.1 8.1 0 0 1 11.4-11.4l34.3 34.4V24a8 8 0 0 1 16 0v84.7l34.3-34.4a8.1 8.1 0 0 1 11.4 11.4l-48 48a8.2 8.2 0 0 1-11.4 0ZM240 136v64a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-64a16 16 0 0 1 16-16h52.4a3.6 3.6 0 0 1 2.8 1.2L111 145a24.1 24.1 0 0 0 34 0l23.8-23.8a3.6 3.6 0 0 1 2.8-1.2H224a16 16 0 0 1 16 16Zm-40 32a12 12 0 1 0-12 12a12 12 0 0 0 12-12Z"/></svg>
</div>
<div>
<p class="title">{{ locale.docs.quickLinks.links.[0].header }}</p>
<p class="caption">{{ locale.docs.quickLinks.links.[0].caption }}</p>
</div>
</a>
<a href="/#faq">
<div class="icon">
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M236.7 188L148.8 36a24 24 0 0 0-41.6 0L19.3 188A23.9 23.9 0 0 0 40 224h176a23.9 23.9 0 0 0 20.7-36ZM120 104a8 8 0 0 1 16 0v40a8 8 0 0 1-16 0Zm8 88a12 12 0 1 1 12-12a12 12 0 0 1-12 12Z"/></svg> </div>
<div>
<p class="title">{{ locale.docs.quickLinks.links.[1].header }}</p>
<p class="caption">{{ locale.docs.quickLinks.links.[1].caption }}</p>
</div>
</a>
</div>
<div class="bottom">
<a href="https://invite.gg/pretendo" target="_blank" aria-label="A link to our Discord server">
<svg width="71" height="55" viewBox="0 0 71 55" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0)"><path d="M60.1045 4.8978C55.5792 2.8214 50.7265 1.2916 45.6527 0.41542C45.5603 0.39851 45.468 0.440769 45.4204 0.525289C44.7963 1.6353 44.105 3.0834 43.6209 4.2216C38.1637 3.4046 32.7345 3.4046 27.3892 4.2216C26.905 3.0581 26.1886 1.6353 25.5617 0.525289C25.5141 0.443589 25.4218 0.40133 25.3294 0.41542C20.2584 1.2888 15.4057 2.8186 10.8776 4.8978C10.8384 4.9147 10.8048 4.9429 10.7825 4.9795C1.57795 18.7309 -0.943561 32.1443 0.293408 45.3914C0.299005 45.4562 0.335386 45.5182 0.385761 45.5576C6.45866 50.0174 12.3413 52.7249 18.1147 54.5195C18.2071 54.5477 18.305 54.5139 18.3638 54.4378C19.7295 52.5728 20.9469 50.6063 21.9907 48.5383C22.0523 48.4172 21.9935 48.2735 21.8676 48.2256C19.9366 47.4931 18.0979 46.6 16.3292 45.5858C16.1893 45.5041 16.1781 45.304 16.3068 45.2082C16.679 44.9293 17.0513 44.6391 17.4067 44.3461C17.471 44.2926 17.5606 44.2813 17.6362 44.3151C29.2558 49.6202 41.8354 49.6202 53.3179 44.3151C53.3935 44.2785 53.4831 44.2898 53.5502 44.3433C53.9057 44.6363 54.2779 44.9293 54.6529 45.2082C54.7816 45.304 54.7732 45.5041 54.6333 45.5858C52.8646 46.6197 51.0259 47.4931 49.0921 48.2228C48.9662 48.2707 48.9102 48.4172 48.9718 48.5383C50.038 50.6034 51.2554 52.5699 52.5959 54.435C52.6519 54.5139 52.7526 54.5477 52.845 54.5195C58.6464 52.7249 64.529 50.0174 70.6019 45.5576C70.6551 45.5182 70.6887 45.459 70.6943 45.3942C72.1747 30.0791 68.2147 16.7757 60.1968 4.9823C60.1772 4.9429 60.1437 4.9147 60.1045 4.8978ZM23.7259 37.3253C20.2276 37.3253 17.3451 34.1136 17.3451 30.1693C17.3451 26.225 20.1717 23.0133 23.7259 23.0133C27.308 23.0133 30.1626 26.2532 30.1066 30.1693C30.1066 34.1136 27.28 37.3253 23.7259 37.3253ZM47.3178 37.3253C43.8196 37.3253 40.9371 34.1136 40.9371 30.1693C40.9371 26.225 43.7636 23.0133 47.3178 23.0133C50.9 23.0133 53.7545 26.2532 53.6986 30.1693C53.6986 34.1136 50.9 37.3253 47.3178 37.3253Z" fill="#ffffff"></path></g><defs><clipPath id="clip0"><rect width="71" height="55" fill="white"></rect></clipPath></defs></svg>
</a>
<a href="https://twitter.com/PretendoNetwork" target="_blank" aria-label="A link to our Twitter account">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path fill="currentColor" d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"></path></svg>
</a>
<a href="https://github.com/PretendoNetwork" target="_blank" aria-label="A link to our GitHub organization">
<svg data-prefix="fab" data-icon="github" class="svg-inline--fa fa-github fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg>
</a>
</div>
</div>
</div>
</nav>
<div class="right-section">
@ -170,7 +338,7 @@
{{else}}
<div class="user-widget-wrapper">
<a class="login-link" href="/account/login">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-user"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>
<svg width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M232 128a104 104 0 1 0-174.2 76.7l1.3 1.2a104 104 0 0 0 137.8 0l1.3-1.2A103.7 103.7 0 0 0 232 128Zm-192 0a88 88 0 1 1 153.8 58.4a79.2 79.2 0 0 0-36.1-28.7a48 48 0 1 0-59.4 0a79.2 79.2 0 0 0-36.1 28.7A87.6 87.6 0 0 1 40 128Zm56-8a32 32 0 1 1 32 32a32.1 32.1 0 0 1-32-32Zm-21.9 77.5a64 64 0 0 1 107.8 0a87.8 87.8 0 0 1-107.8 0Z"/></svg>
</a>
</div>
{{/if}}

View File

@ -1,8 +1,8 @@
<link rel="stylesheet" href="/assets/css/progress.css">
<div class="wrapper">
{{> header}}
{{> header}}
<div class="wrapper">
<div class="progress-hero">
<div class="hero-meta reduced-margin">