huge changes
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 32fbb9a..ef74742 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,3 +1,31 @@
{
- "git.ignoreLimitWarning": true
+ "git.ignoreLimitWarning": true,
+ "cSpell.ignoreWords": [
+ "Captchas",
+ "Carrington",
+ "Cavendon",
+ "Customise",
+ "RSMV",
+ "Statethis",
+ "Texttools",
+ "Unbans",
+ "Unmutes",
+ "apos",
+ "autolayout",
+ "clcks",
+ "clicksforms",
+ "colour",
+ "customisation",
+ "getprefix",
+ "hcaptcha",
+ "noopener",
+ "noreferrer",
+ "parpart",
+ "pypi",
+ "setlanguage",
+ "slowmode",
+ "softban",
+ "unban",
+ "viewas"
+ ]
}
\ No newline at end of file
diff --git a/Components/Card.js b/Components/Card.js
index 0673883..00a2df4 100644
--- a/Components/Card.js
+++ b/Components/Card.js
@@ -1,27 +1,25 @@
import { Component } from "react";
import Styles from '../styles/Components/card.module.css';
import react from 'react'
+import { withRouter } from "next/router";
class Card extends Component {
constructor(props) {
super(props);
- this.state = {
- clicked: false,
- }
}
render() {
return (
- <div className={Styles.card + " " + (this.state.clicked ? Styles.clicked : "")} style={{
+ <div className={Styles.card} style={{
margin: "0"
- }} onClick={() => { this.setState({clicked: !this.state.clicked}) }}>
- <div className={Styles.backgroundGradient + " " + (this.state.clicked ? Styles.clicked : "")} style={{
+ }} onClick={this.props.url ? () => { this.props.router.push(this.props.url)} : null}>
+ <div className={Styles.backgroundGradient} style={{
backgroundImage: `linear-gradient(69.44deg, #${this.props.gradient[0]} 0%, #${this.props.gradient[1]} 100%)`
}} />
- <img alt="" className={Styles.backgroundImage} src={`https://assets.clicksminuteper.net/web/waves/card/${this.props.wave}.svg`} draggable={false} />
- <div className={Styles.panel}>
+ <img alt="" className={Styles.backgroundImage} src={`https://assets.clicks.codes/web/waves/card/${this.props.wave}.svg`} draggable={false} />
+ <div className={Styles.panel} onClick={() => { this.props.url ? () => { this.props.router.push(this.props.url)} : null}}>
<div className={Styles.titleContainer}>
- <img alt="Project icon" className={Styles.image + " " + (this.state.clicked ? Styles.clicked : "")} src={"https://assets.clicksminuteper.net/" + (this.props.icon ? this.props.icon : this.props.wave) + ".svg"} />
+ <img alt="Project icon" className={Styles.image} src={"https://assets.clicks.codes/" + (this.props.icon ? this.props.icon : this.props.wave) + ".svg"} />
<h1 className={Styles.title}>{this.props.title}</h1>
</div>
<p className={Styles.subtext}>{this.props.subtext}</p>
@@ -41,8 +39,8 @@
</div>
</div>
</div>
- )
- }
+ );
+ }
}
class CardRow extends Component {
@@ -50,7 +48,6 @@
super(props);
}
-
render() {
return (
<div className={Styles.container}>
@@ -64,4 +61,6 @@
}
}
-export { Card, CardRow };
\ No newline at end of file
+Card = withRouter(Card);
+
+export { Card, CardRow };
diff --git a/Components/Header.js b/Components/Header.js
index 1ec054b..7e96ba6 100644
--- a/Components/Header.js
+++ b/Components/Header.js
@@ -1,64 +1,123 @@
-import { Component, useRef } from "react";
+import React, { useRef } from "react";
import Styles from '../styles/Components/header.module.css';
import Head from 'next/head';
+import { useColorMode } from "theme-ui";
+import { useReward } from "react-rewards";
+import ScrollContainer from 'react-indiana-drag-scroll'
-class Header extends Component {
- constructor(props) {
- super(props);
- this.keys = []
+function Header(props) {
+ const [ clickTotal, setClickTotal ] = React.useState(0);
+
+ const { reward: reward, isAnimating: isAnimating } = useReward('headerConfetti', 'confetti', {
+ elementSize: 10,
+ elementCount: 150,
+ startVelocity: 35,
+ lifetime: 300,
+ decay: 0.95,
+ spread: 170,
+ position: "absolute",
+ colors: ["#F27878", "#E5AB71", "#E5DC71", "#A1CC65", "#68D49E", "#71AFE5", "#6576CC", "#8D58B2", "#BF5E9F"]
+ });
+ const { reward: disappointment, isAnimating: isDisappointmentAnimating } = useReward('disappointmentConfetti', 'confetti', {
+ elementSize: 25,
+ elementCount: 1,
+ startVelocity: 25,
+ lifetime: 350,
+ decay: 0.95,
+ spread: 0,
+ position: "absolute",
+ colors: ["#E5AB71"]
+ });
+
+ function confetti() {
+ if (!isAnimating && !isDisappointmentAnimating && props.index) {
+ setClickTotal(clickTotal + 1);
+ if (clickTotal > 0 && Math.floor(Math.random() * 3) == 0) {
+ disappointment();
+ } else {
+ reward();
+ }
+ }
}
- render() {
- return (
- <div className={Styles.header} style={{
- margin: "0",
- minHeight: this.props.fullscreen ? "100vh" : "calc(100vh - (2 * max(2em, 4vw)) - 1em)",
- }} id={this.props.id ? this.props.id : null}>
- <div className={Styles.backgroundGradient} style={{
- backgroundImage: `linear-gradient(69.44deg, #${this.props.gradient[0]} 0%, #${this.props.gradient[1]} 100%)`,
- }} />
- <Head>
- <title>{this.props.nameOverwrite ? this.props.nameOverwrite : this.props.name} - Clicks Minute Per</title>
- <meta name="title" content={this.props.name} />
- <meta name="og:title" content={this.props.name} />
- <meta name="description" content={this.props.subtext} />
- <meta name="og:description" content={this.props.subtext} />
- <meta name="theme-color" content={"#" + this.props.gradient[1]} />
- <meta name="og:theme-color" content={"#" + this.props.gradient[1]} />
- <meta name="author" content="Clicks Minute Per" />
- <meta name="og:author" content="Clicks Minute Per" />
- </Head>
- <img draggable={false} alt="" className={Styles.backgroundImage} src={`https://assets.clicksminuteper.net/${this.props.wave}.svg`} />
- <div className={Styles.panel}>
- <div className={Styles.titleContainer}>
- <h1 className={Styles.title}>{this.props.name}</h1>
- </div>
- <p className={Styles.subtext + " " + (this.props.buttons.length ? Styles.subtextExtra : null)}>{this.props.subtext}</p>
- <div className={Styles.buttonLayout}>
+ return (
+ <div className={Styles.header} style={{
+ margin: "0",
+ minHeight: props.fullscreen ? "calc(100vh - 42px)" : "calc(100vh - (4 * max(2em, 4vw)) - 1em)",
+ }} id={props.id ? props.id : null}>
+ <div className={Styles.backgroundGradient} style={{
+ backgroundImage: `linear-gradient(69.44deg, #${props.gradient[0]} 0%, #${props.gradient[1]} 100%)`,
+ }} />
+ <Head>
+ <title>{props.name}</title>
+
+ <meta name="apple-mobile-web-app-capable" content="yes" />
+ <meta name="mobile-web-app-capable" content="yes" />
+ <meta name="viewport" content="width=device-width, minimal-ui" />
+
+ <meta name="title" content={props.name} />
+ <meta name="og:title" content={props.name} />
+ <meta name="description" content={props.embedDescription ? props.embedDescription : props.subtext} />
+ <meta name="og:description" content={props.embedDescription ? props.embedDescription : props.subtext} />
+ <meta name="author" content="Clicks" />
+ <meta name="og:author" content="Clicks" />
+ <meta name="image" content={props.embedImage} />
+ <meta name="og:image" content={props.embedImage} />
+
+ <meta name="theme-color" content={"#000000"} />
+ <meta name="og-color" content={"#" + props.gradient[1]} />
+ <meta name="msapplication-TileColor" content={"#000000"} />
+ </Head>
+ <img draggable={false} alt="" className={Styles.backgroundImage} src={`https://assets.clicks.codes/${props.wave}.svg`} />
+ <div className={Styles.panel}>
+ <div className={Styles.titleContainer}>
+ <div onClick={confetti}>
{
- this.props.buttons ? this.props.buttons.map((button, index) => {
- return <a
- key={index}
- className={Styles.button}
- style={{ backgroundColor: `#${button.color}`, color: `#${button.buttonText}` }}
- href={button.link}
- onClick={() => { if (button.id) { this.props.callback(this.props.that, button.id) } }}
- target={button.target ? "_blank" : null}
- rel="noreferrer">
- {button.text}
- </a>
- }) : null
+ props.customImage?
+ <img height="64px" width="64px" alt={props.name} className={Styles.headerImage} style={{borderRadius: props.roundImage ? "100vw" : "0"}} src={props.customImage} />
+ : <></>
}
</div>
+ <h1 className={Styles.title}>{props.name}</h1>
</div>
- <span className={Styles.arrowSpan + " " + (this.props.hideArrow ? Styles.arrowHidden : null)} draggable={false}>
- <a href="#start" draggable={false}><img alt="Down arrow" src="https://assets.clicksminuteper.net/web/icons/arrow.svg" className={Styles.arrow} draggable={false} style={{
- height: "49px", width: "87px"
- }}/></a>
- </span>
+ <p className={Styles.subtext + " " + (props.buttons.length ? Styles.subtextExtra : null)}>{props.subtext}</p>
+ <a href="#skipNav" id="skipNav" style={{display: "none"}} />
+ { props.buttons.length ?
+ <div className={Styles.buttonOverflow}>
+ <img className={Styles.indicator + " " + Styles.leftArrow} draggable={false} alt="" src={`https://assets.clicks.codes/web/icons/arrow.svg`}/>
+ <ScrollContainer
+ vertical={false}
+ horizontal={true}
+ hideScrollbars={true}
+ nativeMobileScroll={true}
+ style={{borderRadius: "10px", height: "fit-content"}}
+ >
+ <div className={Styles.buttonLayout}>
+ {
+ props.buttons ? props.buttons.map((button, index) => {
+ return <a
+ key={index}
+ className={Styles.button}
+ style={{ backgroundColor: `#${button.color}`, color: `#${button.buttonText}` }}
+ href={button.link}
+ onClick={() => { if (button.id) { props.callback(button.id) } }}
+ target={button.target ? "_blank" : null}
+ draggable={false}
+ rel="noreferrer">
+ {button.text}
+ </a>
+ }) : null
+ }
+ </div>
+ </ScrollContainer>
+ <img className={Styles.indicator + " " + Styles.rightArrow} draggable={false} alt="" src={`https://assets.clicks.codes/web/icons/arrow.svg`}/>
+ </div> : <></>
+ }
</div>
- )
- }
+ <div id="headerConfetti" />
+ <div id="disappointmentConfetti" />
+ </div>
+ )
}
export default Header;
\ No newline at end of file
diff --git a/Components/NavBar.js b/Components/NavBar.js
index 89ef25a..89c8fab 100644
--- a/Components/NavBar.js
+++ b/Components/NavBar.js
@@ -2,69 +2,35 @@
import Styles from '../styles/Components/navbar.module.css';
import ThemeChangeButton from './ThemeChangeButton';
+class Divider extends Component {
+ render() {
+ return (
+ <>
+ <div className={Styles.divider}></div>
+ </>
+ )
+ }
+}
class NavBar extends Component {
constructor(props) {
super(props);
- this.state = {
- isOpen: false,
- }
- this.isTouchDevice = false
- this.hoverSensor = React.createRef();
}
- componentDidMount() {
- let hasTouchScreen = false;
- if ("maxTouchPoints" in navigator) {
- hasTouchScreen = navigator.maxTouchPoints > 0;
- } else if ("msMaxTouchPoints" in navigator) {
- hasTouchScreen = navigator.msMaxTouchPoints > 0;
- } else {
- const mQ = window.matchMedia && matchMedia("(pointer:coarse)");
- if (mQ && mQ.media === "(pointer:coarse)") {
- hasTouchScreen = !!mQ.matches;
- } else if ("orientation" in window) {
- hasTouchScreen = true;
- } else {
- var UA = navigator.userAgent;
- hasTouchScreen = /\b(BlackBerry|webOS|iPhone|IEMobile)\b/i.test(UA) || /\b(Android|Windows Phone|iPad|iPod)\b/i.test(UA);
- }
- }
- if (hasTouchScreen) {
- this.isTouchDevice = true
- } else {
- this.isTouchDevice = false
- }
- }
-
- onClick() {
- if ( this.isTouchDevice ) {
- return this.toggleVertical(this)
- }
- }
-
- toggleVertical(prevState, force=null) {
- this.setState(prevState => ({
- isOpen: (force === null) ? !prevState.isOpen : force
- }));
- }
-
render() {
return (
<>
- <div ref={this.hoverSensor} className={this.isTouchDevice ? (Styles.container + " " + (this.state.isOpen ? Styles.containerOpen : null)) : Styles.containerDesktop + " " + Styles.container}>
- <div className={Styles.group}>
- <img alt="CMP" className={Styles.headerIcon} src="https://assets.clicksminuteper.net/company/logo/circle.svg" onClick={() => {this.onClick()}}/>
- <a href="/#"><img alt="Home" className={Styles.icon} src="https://assets.clicksminuteper.net/web/icons/home.svg"/></a>
- <a href="/gps#"><img alt="GPS" className={Styles.icon} src="https://assets.clicksminuteper.net/bots/gps/circle.svg"/></a>
- <a href="/rsm#"><img alt="RSM" className={Styles.icon} src="https://assets.clicksminuteper.net/bots/rsm/circle.svg"/></a>
- <a href="/clicksforms#"><img alt="ClicksForms" className={Styles.icon} src="https://assets.clicksminuteper.net/bots/clicksforms/circle.svg"/></a>
- {/* <a href="/castaway#"><img className={Styles.icon} src="/Icons/CA.svg"/></a> */}
- {/* <a href="https://clcks.dev"><img className={Styles.icon} src="/Icons/CL.svg"/></a> */}
- </div>
- <div className={Styles.group}>
- <ThemeChangeButton/>
- </div>
+ <div className={Styles.container}>
+ <a href="#skipNav" className={Styles.skipNav}>Skip navigation</a>
+ <a className={Styles.icon} href="/"><img alt="Clicks" className={Styles.icon} src="https://assets.clicks.codes/web/logos/clicks.svg" /></a>
+ <Divider />
+ <a className={Styles.icon} href="/rsm"><img alt="RSM" className={Styles.icon} src="https://assets.clicks.codes/bots/rsm/circle.svg" /></a>
+ {/* <a className={Styles.icon} href="/nucleus#"><img alt="Nucleus" className={Styles.icon} src="https://assets.clicks.codes/bots/nucleus/circle.svg" /></a> */}
+ <a className={Styles.icon} href="/clicksforms"><img alt="ClicksForms" className={Styles.icon} src="https://assets.clicks.codes/bots/clicksforms/circle.svg" /></a>
+ <a className={Styles.icon} href="/gps"><img alt="GPS" className={Styles.icon} src="https://assets.clicks.codes/bots/gps/circle.svg" /></a>
+ <a className={Styles.icon} href="/hooky"><img alt="Hooky" className={Styles.icon} src="https://assets.clicks.codes/bots/hooky/circle.svg" /></a>
+ <Divider />
+ <ThemeChangeButton/>
</div>
</>
)
diff --git a/Components/Panels.js b/Components/Panels.js
index e2e89d9..1ee500f 100644
--- a/Components/Panels.js
+++ b/Components/Panels.js
@@ -16,7 +16,7 @@
}
render() {
- return <div className={Styles.panel} style={this.getStyle()} id={this.props.id}>
+ return <div className={Styles.panel} style={this.getStyle()} id={this.props.id} tabIndex={0}>
{
react.Children.toArray(this.props.children).map((child, index) => {
return child;
@@ -95,9 +95,15 @@
}
class Divider extends Component {
+ constructor(props) {
+ super(props);
+ }
+
render() {
- // return <div className={Styles.divider} style={{ backgroundColor: this.props.bound == this.props.name ? "red" : "var(--theme-ui-colors-hint)"}}></div>
- return <div className={Styles.divider} style={{ backgroundColor: "var(--theme-ui-colors-hint)"}}></div>
+ let highlighted = this.props.toHighlight === this.props.name;
+ return <div className={Styles.divider} style={{
+ backgroundColor: (highlighted && this.props.highlightColour) ? ("#" + this.props.highlightColour) : "var(--theme-ui-colors-hint)"
+ }}>{this.props.forceHighlight}</div>
}
}
diff --git a/Components/Texttools.js b/Components/Texttools.js
index b8f6771..2233e9c 100644
--- a/Components/Texttools.js
+++ b/Components/Texttools.js
@@ -44,28 +44,15 @@
this.setState({isPopoverOpen: true})
setTimeout(() => {
this.setState({isPopoverOpen: false})
- }, 1000)
+ }, 2000)
}
render() {
- if ( this.props.clickable === false) {
- return <pre
- className={Styles.code}
- style={{color: `#${this.props.colour}`, boxShadow: `0px -3px 10px 2px #424242`}}
- >{this.props.children}</pre>
- } else {
- return <Popover
- isOpen={this.state.isPopoverOpen}
- positions={['top', 'bottom', 'left', 'right']} // preferred positions by priority
- content={<Code colour={this.props.colour} clickable={false}>Copied!</Code>}
- >
- <pre
- className={Styles.code}
- style={{color: `#${this.props.colour}`}}
- onClick={() => this.clicked()}
- >{this.props.children}</pre>
- </Popover>
- }
+ return <pre
+ className={Styles.code}
+ style={{color: `#${this.props.colour}`}}
+ onClick={this.props.clickable ? () => this.clicked() : () => this.clicked()}
+ >{this.state.isPopoverOpen ? "Copied!" : this.props.children}</pre>
}
}
diff --git a/Components/ThemeChangeButton.js b/Components/ThemeChangeButton.js
index 0a2151b..616c14a 100644
--- a/Components/ThemeChangeButton.js
+++ b/Components/ThemeChangeButton.js
@@ -13,16 +13,16 @@
});
return (
- <header>
+ <>
<a className={Styles.icon + " " + Styles.ThemeChangeButton} onClick={(e) => {
e.preventDefault();
setColorMode(colorMode === 'light' ? 'dark' : 'light');
- }}>
- {
- !render ? null : (colorMode == 'light' ? <img alt="Light" src="https://assets.clicksminuteper.net/web/icons/light.svg" /> : <img alt="Dark" src="https://assets.clicksminuteper.net/web/icons/dark.svg" />)
- }
+ }} href="#">
+ <img className={Styles.icon} alt="Theme" src={"https://assets.clicks.codes/web/icons/" + (
+ colorMode == 'light' ? "light-white" : "dark"
+ ) + ".svg"} />
</a>
- </header>
+ </>
)
}
diff --git a/package.json b/package.json
index fb0032f..c59f7bb 100644
--- a/package.json
+++ b/package.json
@@ -4,12 +4,13 @@
"private": true,
"scripts": {
"dev": "next dev",
- "build": "next build",
+ "build": "ANALYZE=true NODE_OPTIONS=--openssl-legacy-provider NODE_ENV=production next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"@emotion/is-prop-valid": "^1.1.1",
+ "@next/bundle-analyzer": "^12.1.6",
"@svgr/webpack": "^5.5.0",
"axios": "^0.21.1",
"js-cookie": "^3.0.1",
@@ -17,17 +18,22 @@
"mongodb": "^4.1.1",
"next": "11.1.2",
"next-redux-wrapper": "^7.0.4",
- "react": "^17.0.2",
- "react-dom": "^17.0.2",
+ "react": "^18.1.0",
+ "react-dom": "^18.1.0",
+ "react-draggable": "^4.4.5",
"react-fade-in": "^2.0.1",
"react-fast-marquee": "^1.3.1",
"react-hcaptcha": "^0.1.1",
"react-in-viewport": "^1.0.0-alpha.20",
+ "react-indiana-drag-scroll": "^2.1.0",
"react-redux": "^7.2.4",
+ "react-rewards": "^2.0.3",
"react-tiny-popover": "^7.0.1",
+ "react-use-draggable-scroll": "^0.4.2",
"redux": "^4.1.1",
"redux-thunk": "^2.3.0",
- "theme-ui": "^0.12.0"
+ "theme-ui": "^0.12.0",
+ "use-draggable-scroll": "^0.1.0"
},
"devDependencies": {
"eslint": "7.32.0",
diff --git a/pages/403.js b/pages/403.js
index 51da470..c6b966c 100644
--- a/pages/403.js
+++ b/pages/403.js
@@ -16,7 +16,6 @@
gradient={["F27878", "D96B6B"]}
wave="web/waves/header/rsm"
buttons={[{color: "F27878", buttonText: "ffffff", text: "Go Home", link: "/#"}]}
- hideArrow={true}
fullscreen={true}
/>
</>
diff --git a/pages/404.js b/pages/404.js
index fc521ec..103c513 100644
--- a/pages/404.js
+++ b/pages/404.js
@@ -18,10 +18,9 @@
buttons={[
{color: "F27878", buttonText: "ffffff", text: "Go Home", link: "/#"},
{color: "F27878", buttonText: "ffffff", text: "Send Error",
- link: `mailto:staff@clicksminuteper.net?subject=Website%20Error%20Report&body=I%20got%20a%20404%20on%20the%20page%20%5BPlease%20Copy%20Website%20Link%20Here%5D`,
+ link: `mailto:staff@clicks.codes?subject=Website%20Error%20Report&body=I%20got%20a%20404%20on%20the%20page%20%5BPlease%20Copy%20Website%20Link%20Here%5D`,
target: true
}]}
- hideArrow={true}
fullscreen={true}
/>
</>
diff --git a/pages/418.js b/pages/418.js
index dd3b042..9fdf0cd 100644
--- a/pages/418.js
+++ b/pages/418.js
@@ -16,7 +16,6 @@
gradient={["F27878", "D96B6B"]}
wave="web/waves/header/rsm"
buttons={[{color: "F27878", buttonText: "ffffff", text: "Go Home", link: "/#"}]}
- hideArrow={true}
fullscreen={true}
/>
</>
diff --git a/pages/500.js b/pages/500.js
index a39f019..3f74c40 100644
--- a/pages/500.js
+++ b/pages/500.js
@@ -18,10 +18,9 @@
buttons={[
{color: "F27878", buttonText: "ffffff", text: "Go Home", link: "/#"},
{color: "F27878", buttonText: "ffffff", text: "Send Error",
- link: `mailto:staff@clicksminuteper.net?subject=Website%20Error%20Report&body=I%20got%20a%20500%20on%20the%20page%20%5BPlease%20Copy%20Website%20Link%20Here%5D`,
+ link: `mailto:staff@clicks.codes?subject=Website%20Error%20Report&body=I%20got%20a%20500%20on%20the%20page%20%5BPlease%20Copy%20Website%20Link%20Here%5D`,
target: true
}]}
- hideArrow={true}
fullscreen={true}
/>
</>
diff --git a/pages/_app.js b/pages/_app.js
index f019489..2ed76e6 100644
--- a/pages/_app.js
+++ b/pages/_app.js
@@ -1,6 +1,7 @@
import '../styles/globals.css';
import NavBar from '../Components/NavBar';
import { ThemeProvider } from 'theme-ui';
+import Styles from '../styles/globals.module.css';
const theme = {
config: {
@@ -42,8 +43,9 @@
function App({ Component, pageProps }) {
return <>
<ThemeProvider theme={theme}>
- <Component {...pageProps} />
<NavBar />
+ <Component {...pageProps} />
+ <div className={Styles.container} />
</ThemeProvider>
</>
}
diff --git a/pages/api/rsmv/validate.js b/pages/api/rsmv/validate.js
index 0133405..d73c467 100644
--- a/pages/api/rsmv/validate.js
+++ b/pages/api/rsmv/validate.js
@@ -1,30 +1,22 @@
-import { MongoClient } from 'mongodb';
+import Axios from 'axios';
-
-const url = 'mongodb://rsm:LJMy*orVFAATQ5PaX7EKXq74&HCDFaLE@192.168.101.2:27017/rsm';
-const db = 'rsm';
-const collection = 'rsmv-tokens'
-
-const Validate = (req, res) => {
- return new Promise((resolve, reject) => {
- MongoClient.connect(url, async function(err, client) {
- let db_response = await client.db(db).collection(collection).findOne({code: req.body.code});
-
- if (!db_response) return resolve(res.status(404).end());
- if (db_response.timestamp + (1800) >= Date.now()) return resolve(res.status(410));
-
- let props = {
- user: db_response.user,
- role: db_response.role,
- role_name: db_response.role_name,
- guild: db_response.guild,
- guild_name: db_response.guild_name,
- guild_icon_url: db_response.guild_icon_url,
- guild_size: db_response.guild_size
- }
- return resolve(res.status(200).send(props));
- })
- })
+const Validate = async (req, res) => {
+ try {
+ var out = await Axios.get(`http://192.168.102.7:10000/verify/${req.body.code}`)
+ out = out.data
+ let props = {
+ user: out.user,
+ role: out.role,
+ role_name: out.role_name,
+ guild: out.guild,
+ guild_name: out.guild_name,
+ guild_icon_url: out.guild_icon_url,
+ guild_size: out.guild_size
+ }
+ return res.status(200).send(props)
+ } catch (err) {
+ return res.status(400).end()
+ }
}
export default Validate;
\ No newline at end of file
diff --git a/pages/castaway.js b/pages/castaway.js
index c82fbd0..9ad8ca8 100644
--- a/pages/castaway.js
+++ b/pages/castaway.js
@@ -12,7 +12,6 @@
buttons={[
{color: "78ECF2", buttonText: "000000", link: "#timeline", text: "Timeline"}
]}
- hideArrow={true}
/>
<AutoLayout>
<Panel halfSize={false} id="timeline">
diff --git a/pages/clicksforms.js b/pages/clicksforms.js
index 35f55fb..e4d96dc 100644
--- a/pages/clicksforms.js
+++ b/pages/clicksforms.js
@@ -13,16 +13,17 @@
};
}
- highlightSection(that, section) {
- console.log(section);
- that.setState({toHighlight: section});
+ highlightSection(section) {
+ this.setState({toHighlight: section});
}
render() {
return (
<>
<Header
- name="ClicksForms"
+ name={"Clicks​Forms"}
+ customImage={"https://assets.clicks.codes/web/logos/clicksforms.svg"}
+ embedImage="https://assets.clicks.codes/bots/clicksforms/normal.png"
subtext="Custom forms on Discord"
gradient={["71AFE5", "6576CC"]}
wave="web/waves/header/clicksforms"
@@ -32,14 +33,12 @@
{id: "privacy", color: "6576CC", buttonText: "FFFFFF", link: "#privacy", text: "Privacy"},
{id: "invite", color: "775EBF", buttonText: "FFFFFF", link: "#invite", text: "Invite"}
]}
- hideArrow={true}
- that={this}
- callback={this.highlightSection}
+ callback={() => this.highlightSection()}
/>
<AutoLayout>
<Panel halfSize={true} id="commands">
<Title>Commands</Title>
- <Divider bound={this.state.toHighlight} name="commands"/>
+ <Divider toHighlight={this.state.toHighlight} highlightColour="6576CC" name="commands"/>
<Text>Standard commands to use ClicksForms</Text>
<List colour="6576CC">
<ListItem><Code colour="6576CC">/accept</Code> Completes a form you are asked to fill in.</ListItem>
@@ -51,34 +50,35 @@
<ListItem><Code colour="6576CC">/manage</Code> Lets you manage your servers forms.</ListItem>
</List>
</Panel>
- <Panel halfSize={true} id="services">
+ <Panel halfSize={true} id="services" style={this.state.toHighlight == "services" ? {border: "solid 10px red"} : {}}>
<Title>Services</Title>
- <Divider bound={this.state.toHighlight} name="services"/>
+ <Divider toHighlight={this.state.toHighlight} highlightColour="6576CC" name="services"/>
<Text>ClicksForms supports services such as <a href="https://docs.google.com/forms">Google Forms</a> through our Add-on.</Text>
<Text>Our API is public. You can view it <Link href="/clicksforms/docs">here</Link>.</Text>
</Panel>
<Panel halfSize={true} id="privacy">
<Title>Privacy</Title>
- <Divider bound={this.state.toHighlight} name="privacy"/>
+ <Divider toHighlight={this.state.toHighlight} highlightColour="6576CC" name="privacy"/>
<Text>You should always know what we know and store about you, so <a href="https://clicksminuteper.github.io/policies/clicksforms">here</a> is the complete list.</Text>
<Text>We also have a list of terms for using ClicksForms, it can be viewed <a href="https://clicksminuteper.github.io/policies/clicksformstos">here</a>.</Text>
</Panel>
<Panel halfSize={true} id="invite">
<Title>Invite</Title>
- <Divider bound={this.state.toHighlight} name="invite"/>
+ <Divider toHighlight={this.state.toHighlight} highlightColour="6576CC" name="invite"/>
<CardRow><Card
wave="clicksforms"
icon="bots/clicksforms/circle"
buttonText={"FFFFFF"} gradient={["71AFE5", "6576CC"]}
- title="Invite"
+ title="ClicksForms"
subtext="Invite ClicksForms to your server"
buttons={[
{color: "775EBF", link: "https://discord.com/api/oauth2/authorize?client_id=805392054678192169&permissions=2416307200&scope=bot%20applications.commands", text: "Invite"}
]}
+ url="https://discord.com/api/oauth2/authorize?client_id=805392054678192169&permissions=2416307200&scope=bot%20applications.commands"
/></CardRow>
</Panel>
</AutoLayout>
</>
)
}
-}
\ No newline at end of file
+}
diff --git a/pages/clicksforms/docs.js b/pages/clicksforms/docs.js
index cc2d584..46f3ee7 100644
--- a/pages/clicksforms/docs.js
+++ b/pages/clicksforms/docs.js
@@ -18,7 +18,6 @@
// {color: "6576CC", buttonText: "FFFFFF", link: "#structures", text: "Structures"},
// {color: "775EBF", buttonText: "FFFFFF", link: "#invite", text: "Invite"}
// ]}
-// hideArrow={true}
// />
// <AutoLayout>
// <Panel halfSize={false} id="timeline">
diff --git a/pages/clicksforms/error/deleted.js b/pages/clicksforms/error/deleted.js
index 82fcc14..0d7a49b 100644
--- a/pages/clicksforms/error/deleted.js
+++ b/pages/clicksforms/error/deleted.js
@@ -14,7 +14,6 @@
gradient={["F27878", "D96B6B"]}
wave="web/waves/header/rsm"
buttons={[]}
- hideArrow={true}
fullscreen={true}
/>
)
diff --git a/pages/clicksforms/error/nocode.js b/pages/clicksforms/error/nocode.js
index 1f91d93..dfb7b6e 100644
--- a/pages/clicksforms/error/nocode.js
+++ b/pages/clicksforms/error/nocode.js
@@ -14,7 +14,6 @@
gradient={["F27878", "D96B6B"]}
wave="web/waves/header/rsm"
buttons={[]}
- hideArrow={true}
fullscreen={true}
/>
)
diff --git a/pages/clicksforms/error/unknown.js b/pages/clicksforms/error/unknown.js
index 4cb9bea..e3ab125 100644
--- a/pages/clicksforms/error/unknown.js
+++ b/pages/clicksforms/error/unknown.js
@@ -14,7 +14,6 @@
gradient={["F27878", "D96B6B"]}
wave="web/waves/header/rsm"
buttons={[]}
- hideArrow={true}
fullscreen={true}
/>
)
diff --git a/pages/clicksforms/form.js b/pages/clicksforms/form.js
index 47b2275..c950e73 100644
--- a/pages/clicksforms/form.js
+++ b/pages/clicksforms/form.js
@@ -9,7 +9,6 @@
}
render() {
- console.log(this.props)
return (
<>
<Header
@@ -19,7 +18,6 @@
wave="web/waves/header/clicksforms"
buttons={[]}
/>
- <div id="start" />
<div className={Styles.form}>
<div className={Styles.header}>
Once completing this.props, your response will be recorded
@@ -51,7 +49,6 @@
}
export async function getServerSideProps(ctx) {
- console.log("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
if(!ctx.query.code) {
return {
redirect: {
@@ -60,11 +57,10 @@
}
}
}
- const code = fetch(`https://cf.bots.clicksminuteper.net/code/${ctx.query.code}/token/BkjTUmNPk8S1aPVIYBt8rAUGQF692C8BEscJS9jGDwEtDJcy78uCVsHgRI1dspseGFoatakhWPHTAmYH42zhPpOjoaN1N9eLU7hB`, {
+ const code = fetch(`https://cf.bots.clicks.codes/code/${ctx.query.code}/token/BkjTUmNPk8S1aPVIYBt8rAUGQF692C8BEscJS9jGDwEtDJcy78uCVsHgRI1dspseGFoatakhWPHTAmYH42zhPpOjoaN1N9eLU7hB`, {
method: "GET",
mode: "cors"
})
- console.log(code)
if ( (await code).status == 404 ) {
return {
redirect: {
@@ -81,8 +77,6 @@
}
}
- console.log(code.data)
-
return {
props: {
data: code.data
diff --git a/pages/cpm.js b/pages/cpm.js
index e3cf768..97bffee 100644
--- a/pages/cpm.js
+++ b/pages/cpm.js
@@ -1,3 +1,5 @@
+/* This file has been kept as part of the easter egg. No domain will redirect to it. The page will not be updated in the future. */
+
import { Card, CardRow } from '../Components/Card';
import Header from '../Components/Header';
import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../Components/Panels';
@@ -12,7 +14,6 @@
wave="web/waves/header/cmp"
buttons={[]}
/>
- <p id="start" />
<AutoLayout>
<Panel halfSize={false}>
<Title>Projects</Title>
diff --git a/pages/gps.js b/pages/gps.js
index 971c419..8b2e194 100644
--- a/pages/gps.js
+++ b/pages/gps.js
@@ -16,7 +16,6 @@
{color: "71AFE5", buttonText: "FFFFFF", link: "#commands", text: "Commands"},
{color: "6576CC", buttonText: "FFFFFF", link: "#invite", text: "Invite"}
]}
- hideArrow={true}
/>
<AutoLayout>
<Panel halfSize={false} id="features">
@@ -88,11 +87,12 @@
wave="gps"
icon="bots/gps/circle"
buttonText={"FFFFFF"} gradient={["78ECF2", "71AFE5"]}
- title="Invite"
+ title="GPS"
subtext="Invite GPS to your server"
buttons={[
{color: "6576CC", link: "https://discordapp.com/oauth2/authorize?client_id=679361555732627476&scope=bot&permissions=130048", text: "Invite"}
]}
+ url="https://discordapp.com/oauth2/authorize?client_id=679361555732627476&scope=bot&permissions=130048"
/>
</CardRow>
</Panel>
diff --git a/pages/hooky.js b/pages/hooky.js
index f8fe17f..b204daf 100644
--- a/pages/hooky.js
+++ b/pages/hooky.js
@@ -13,7 +13,6 @@
buttons={[
{color: "EDC575", buttonText: "000000", link: "#invite", text: "Invite"}
]}
- hideArrow={true}
/>
<AutoLayout>
<Panel halfSize={false} id="invite">
@@ -24,11 +23,12 @@
wave="hooky"
icon="bots/hooky/circle"
buttonText={"000000"} gradient={["424242", "8D8D8D"]}
- title="Invite"
+ title="Hooky"
subtext="Invite Hooky to your server"
buttons={[
{color: "EDC575", link: "https://discord.com/oauth2/authorize?client_id=752188923505279037&scope=bot&permissions=536882176", text: "Invite"}
]}
+ url="https://discord.com/oauth2/authorize?client_id=752188923505279037&scope=bot&permissions=536882176"
/>
</CardRow>
</Panel>
diff --git a/pages/index.js b/pages/index.js
index a72d401..f801b79 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -6,13 +6,15 @@
return (
<>
<Header
- name="Clicks Minute Per"
- subtext="Custom Made Programs"
+ name="Clicks"
+ subtext="// TODO: Fix this massive security issue"
+ customImage="https://assets.clicks.codes/web/logos/clicks.svg"
+ embedImage="https://assets.clicks.codes/web/logos/clicks.png"
gradient={["6576CC", "4B5899"]}
wave="web/waves/header/cmp"
buttons={[]}
+ index={true}
/>
- <p id="start" />
<AutoLayout>
<Panel halfSize={false}>
<Title>Projects</Title>
@@ -23,46 +25,50 @@
icon="bots/gps/circle"
buttons={[
{color: "6576CC", link: "https://discordapp.com/oauth2/authorize?client_id=679361555732627476&scope=bot&permissions=130048", text: "Invite"},
+ {color: "6576CC", link: "/gps", text: "About"}
]}
buttonText={"FFFFFF"} gradient={["78ECF2", "71AFE5"]}
+ url="/gps"
/>
<Card
wave="rsm" title="RSM" subtext="Moderation Redefined"
icon="bots/rsm/circle"
buttons={[
{color: "424242", link: "https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands",text:"Invite"},
+ {color: "424242", link: "/rsm", text:"About"}
]}
buttonText={"FFFFFF"} gradient={["F27878", "D96B6B"]}
+ url="/rsm"
/>
<Card
wave="clicksforms" title="ClicksForms" subtext="Create custom forms for Discord"
icon="bots/clicksforms/circle"
buttons={[
+ {color: "775EBF", link: "https://clicksminuteper.github.io/docs/clicksforms", text:"API", newTab: true},
{color: "775EBF", link: "https://discord.com/api/oauth2/authorize?client_id=805392054678192169&permissions=2416307200&scope=bot%20applications.commands",text:"Invite"},
+ {color: "775EBF", link: "/clicksforms", text: "About"}
]}
buttonText={"FFFFFF"} gradient={["71AFE5", "6576CC"]}
+ url="/clicksforms"
/>
<Card
wave="castaway" title="Castaway" subtext="Stranded on Discord"
icon="bots/castaway/circle"
buttons={[
+ {color: "F2D478", link: "/castaway", text: "About"}
]}
buttonText={"000000"} gradient={["71AFE5", "78ECF2"]}
+ url="/castaway"
/>
<Card
wave="hooky" title="Hooky" subtext="Webhook protection for Discord"
icon="bots/hooky/circle"
buttons={[
{color: "EDC575", link: "https://discord.com/oauth2/authorize?client_id=752188923505279037&scope=bot&permissions=536882176", text: "Invite"},
+ {color: "EDC575", link: "/hooky", text: "About"}
]}
buttonText={"000000"} gradient={["424242", "8D8D8D"]}
- />
- <Card
- wave="clcks" title="Clcks" subtext="Clicks Minute Per web apps"
- icon="web/icons/clcks"
- buttons={[
- ]}
- buttonText={"000000"} gradient={["C4C4C4", "8D8D8D"]}
+ url="/hooky"
/>
</CardRow>
</Panel>
@@ -78,6 +84,7 @@
{color: "424242", link: "https://github.com/clicksminuteper", text: "Visit"}
]}
buttonText={"FFFFFF"} gradient={["FFFFFF", "C4C4C4"]}
+ url="https://github.com/clicksminuteper"
/>
<Card
wave="pypi" title="PyPi" subtext="View our modules for python"
@@ -86,6 +93,7 @@
{color: "FFC91E", link: "https://pypi.org/user/ClicksMinutePer/", text: "Visit"}
]}
buttonText={"000000"} gradient={["2F6490", "3775A8"]}
+ url="https://pypi.org/user/ClicksMinutePer/"
/>
</CardRow>
</Panel>
@@ -94,14 +102,15 @@
<Divider />
<Text>Talk to us and ask us anything!</Text>
<CardRow>
- <Card
- wave="discord" title="Discord" subtext="Join our Discord server to talk with the community"
- icon="web/icons/discord"
- buttons={[
- {color: "404EED", link: "https://discord.gg/bPaNnxe", text: "Join"}
- ]}
- buttonText={"FFFFFF"} gradient={["404EED", "404EED"]}
- />
+ <Card
+ wave="discord" title="Discord" subtext="Join our Discord server to talk with the community"
+ icon="web/icons/discord"
+ buttons={[
+ {color: "404EED", link: "https://discord.gg/bPaNnxe", text: "Join"}
+ ]}
+ buttonText={"FFFFFF"} gradient={["404EED", "404EED"]}
+ url="https://discord.gg/bPaNnxe"
+ />
</CardRow>
</Panel>
</AutoLayout>
diff --git a/pages/rsm.js b/pages/rsm.js
index 8f63c30..b1e9233 100644
--- a/pages/rsm.js
+++ b/pages/rsm.js
@@ -28,7 +28,6 @@
{color: "424242", buttonText: "FFFFFF", link: "#privacy", text: "Privacy"},
{color: "F27878", buttonText: "FFFFFF", link: "#invite", text: "Invite"}
]}
- hideArrow={true}
/>
<AutoLayout>
<Panel halfSize={true} id="commands">
@@ -100,11 +99,12 @@
wave="rsm"
icon="bots/rsm/circle"
buttonText={"FFFFFF"} gradient={["F27878", "D96B6B"]}
- title="Invite"
+ title="RSM"
subtext="Invite RSM to your server"
buttons={[
{color: "424242", link: "https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands", text: "Invite"}
]}
+ url="https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands"
/>
</CardRow>
</Panel>
diff --git a/pages/rsmv/failure.js b/pages/rsmv/failure.js
index 1248893..f3b0feb 100644
--- a/pages/rsmv/failure.js
+++ b/pages/rsmv/failure.js
@@ -10,11 +10,10 @@
return (
<Header
name="Verification failed"
- subtext={<p>Please try again, and if the error persists please contact us at <a href="mailto:verification@clicksminuteper.net" target="_blank" rel="noopener noreferrer">verification@clicksminuteper.net</a></p>}
+ subtext={<p>Please try again, and if the error persists please contact us at <a href="mailto:verification@clicks.codes" target="_blank" rel="noopener noreferrer">verification@clicks.codes</a></p>}
gradient={["F27878", "D96B6B"]}
wave="web/waves/header/rsm"
buttons={[]}
- hideArrow={true}
fullscreen={true}
/>
)
diff --git a/pages/rsmv/index.js b/pages/rsmv/index.js
index 12f4dea..175a271 100644
--- a/pages/rsmv/index.js
+++ b/pages/rsmv/index.js
@@ -57,7 +57,6 @@
gid:cls.props.gID,
code:cls.props.code
});
- console.log(code.status)
if (code.status === 200 ) return Router.push('/rsmv/success','/rsmv')
else return Router.push('/rsmv/failure','/rsmv')
}
@@ -65,20 +64,13 @@
render() {
return <>
<Header
- name={
- <>
- <img alt="Server icon" style={{borderRadius: "50%", height: "64px", width: "auto"}} src={this.props.guild_icon_url} />
- <br />
- {this.props.guild_name}
- </>
- }
- nameOverwrite="Verify"
+ name="Verify"
+ customImage={this.props.guild_icon_url}
subtext={`${this.props.memberCount} members`}
gradient={["F27878", "D96B6B"]}
wave="web/waves/header/rsm"
buttons={[]}
/>
- <p id="start" />
<AutoLayout>
<Panel>
<Text>Complete the check below to join {this.props.guild_name}</Text>
diff --git a/pages/rsmv/rsmvtesting.js b/pages/rsmv/rsmvtesting.js
index 4a271fa..8587221 100644
--- a/pages/rsmv/rsmvtesting.js
+++ b/pages/rsmv/rsmvtesting.js
@@ -47,7 +47,6 @@
gid:cls.props.gID,
code:cls.props.code
});
- console.log(code.status)
if (code.status === 200 ) return Router.push('/rsmv/success','/rsmv')
else return Router.push('/rsmv/failure','/rsmv')
}
@@ -68,7 +67,6 @@
wave="web/waves/header/rsm"
buttons={[]}
/>
- <p id="start" />
<AutoLayout>
<Panel>
<Text>Complete the check below to join ERROR</Text>
diff --git a/pages/rsmv/success.js b/pages/rsmv/success.js
index 484c0bf..3cf1e4f 100644
--- a/pages/rsmv/success.js
+++ b/pages/rsmv/success.js
@@ -14,7 +14,6 @@
gradient={["65CC76", "60B258"]}
wave="web/waves/header/rsm"
buttons={[]}
- hideArrow={true}
fullscreen={true}
/>
)
diff --git a/pages/support.js b/pages/support.js
index b89df34..1c35a68 100644
--- a/pages/support.js
+++ b/pages/support.js
@@ -16,7 +16,7 @@
<Panel halfSize={true}>
<Title>Email</Title>
<Divider />
- <Text>Send us an email at <a href="mailto:support@clicksminuteper.net">support@clicksminuteper.net</a> and we will get back to you as quick as possible.</Text>
+ <Text>Send us an email at <a href="mailto:support@clicks.codes">support@clicks.codes</a> and we will get back to you as quick as possible.</Text>
</Panel>
<Panel halfSize={true}>
<Title>Discord</Title>
diff --git a/pages/supporters.js b/pages/supporters.js
index d456f35..d07482e 100644
--- a/pages/supporters.js
+++ b/pages/supporters.js
@@ -88,7 +88,6 @@
gradient={["71AFE5", "6576CC"]}
wave="web/waves/header/clicksforms"
buttons={[]}
- hideArrow={true}
/>
<AutoLayout>
<Panel halfSize={false}>
diff --git a/styles/Components/card.module.css b/styles/Components/card.module.css
index 775be5c..5b269fa 100644
--- a/styles/Components/card.module.css
+++ b/styles/Components/card.module.css
@@ -33,11 +33,9 @@
margin: 100px;
transition: filter 0.3s ease-in-out;
transition: transform 0.15s ease-in-out;
-
- transition: all 10s ease-in-out;
}
.card:hover {
- transform: scale(1.025);
+ transform: translateY(-5px);
cursor: pointer;
}
@@ -121,9 +119,6 @@
}
@media (max-width: 500px) {
- .card {
- height: 254px;
- }
}
diff --git a/styles/Components/header.module.css b/styles/Components/header.module.css
index d37417d..e37ea1c 100644
--- a/styles/Components/header.module.css
+++ b/styles/Components/header.module.css
@@ -1,11 +1,13 @@
.backgroundImage {
position: absolute;
- bottom: -10px;
- width: calc(100% + 6px);
- border-radius: 0 0 16.5px 16.5px;
+ bottom: 0;
+ /* bottom: 50vh;
+ transform: translateY(50%); */
+ width: 100%;
filter: var(--theme-ui-colors-cardFilter);
transition: filter 0.3s ease-in-out;
}
+
.backgroundGradient {
position: absolute;
bottom: 0;
@@ -53,6 +55,7 @@
color: var(--theme-ui-colors-text);
transition: color 0.3s ease-in-out;
word-break: break-word;
+ font-variant-ligatures: none;
}
.subtext {
@@ -70,52 +73,33 @@
margin-bottom: 40px;
}
-@keyframes arrow-slide {
- 0% {
- -webkit-transform: translateY(0);
- transform: translateY(0);
- }
- 50% {
- -webkit-transform: translateY(-1em);
- transform: translateY(-1em);
- }
- 100% {
- -webkit-transform: translateY(0);
- transform: translateY(0);
- }
-}
-.arrow {
- -webkit-animation: arrow-slide 2s ease-in-out infinite both;
- animation: arrow-slide 2s ease-in-out infinite both;
-}
-
-.arrowSpan {
- position: absolute;
- bottom: min(10vh, 1em);
- width: 100%;
- text-align: center;
-}
-
-.arrowHidden {
- display: none;
-}
-
.buttonLayout {
display: flex;
flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ flex-wrap: nowrap;
+ height: fit-content;
+}
+.buttonOverflow {
+ display: flex;
+ flex-direction: row;
justify-content: flex-end;
align-items: center;
- flex-wrap: wrap;
- padding: 0px;
+ overflow-x: hidden;
+ flex-wrap: nowrap;
position: absolute;
bottom: 5px;
right: 5px;
+ width: calc(100% - 10px);
+ height: auto;
+ border-radius: 10px;
}
.button {
display: flex;
flex-direction: row;
- align-items: flex-start;
+ align-items: flex-end;
justify-content: right;
position: static;
flex: none;
@@ -126,3 +110,35 @@
padding: 5px 10px;
border-radius: 8px;
}
+
+.titleContainer {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ flex-wrap: wrap;
+ padding: 0px;
+}
+
+.headerImage {
+ width: auto;
+ height: 64px;
+ object-fit: cover;
+ object-position: center;
+ transition: filter 0.3s ease-in-out;
+ margin-bottom: 20px;
+}
+
+.indicator {
+ height: auto;
+ width: 24px;
+ margin-inline: 5px;
+ padding: 0;
+}
+
+.leftArrow {
+ transform: rotate(90deg);
+}
+.rightArrow {
+ transform: rotate(270deg);
+}
\ No newline at end of file
diff --git a/styles/Components/navbar.module.css b/styles/Components/navbar.module.css
index 88aa580..ecbf786 100644
--- a/styles/Components/navbar.module.css
+++ b/styles/Components/navbar.module.css
@@ -1,134 +1,45 @@
-.container {
- display: flex;
- flex-direction: column;
- justify-content: top;
- align-items: center;
+.icon {
+ height: 32px;
+ margin: 0;
+ padding: 0;
+ width: 32px;
+}
+.container {
position: fixed;
top: 0;
- left: 0;
+ display: flex;
+ justify-content: left;
+ align-items: center;
+ flex-direction: row;
+ gap: 10px;
+
+ height: 42px;
+ padding: 5px;
+ padding-left: 25px;
+
+ z-index: 69;
+}
+
+.divider {
+ height: 100%;
+ width: 3px;
+ border-radius: 100vh;
+ background-color: #424242;
+}
+
+.skipNav {
+ width: 0%;
overflow: hidden;
- margin: 20px;
-
- width: 64px;
- max-height: 64px;
- padding-bottom: -1px;
- height: auto;
-
- border-radius: 32px;
- transition: 0.5s ease-in-out;
-}
-.group {
- display: flex;
- flex-direction: column;
- justify-content: top;
- align-items: center;
-
- background-color: var(--theme-ui-colors-cardBackground);
- transition: background-color 0.3s ease-in-out;
- backdrop-filter: blur(2px);
- border-radius: 32px;
-
- width: 64px;
- margin-bottom: 20px;
- padding-top: 7px;
+ color: white;
+ max-lines: 1;
+ text-overflow: clip;
+ -webkit-line-clamp: 1;
+ height: 20px;
+ transition: width 0.3s ease-in-out;
}
-.headerIcon {
- height: 64px;
- width: 64px;
- margin-bottom: 20px;
- margin-right: 0;
- margin-top: -7px;
- border-radius: 50vw;
-
- cursor: pointer;
-}
-
-.icon {
- height: 50px;
- width: 50px;
- border-radius: 50vw;
- margin-bottom: 5px;
- cursor: pointer;
- display: block;
-}
-
-.ThemeChangeButton {
- display: flex;
- justify-content: center;
- align-items: center;
-}
-
-.containerOpen {
- max-height: 460px;
-}
-
-.containerDesktop {
- animation-name: containerCloseOnStart;
- animation-duration: 0.5s;
- animation-direction: forwards;
- animation-timing-function: ease-in-out;
-}
-
-@keyframes containerCloseOnStart {
- from { max-height: 460px; }
- to { max-height: 64px ; }
-}
-
-.containerDesktop:hover {
- max-height: 460px;
- animation-name: none;
-}
-
-@media screen and (min-width: 450px) {
- .container {
- flex-direction: row;
- justify-content: left;
-
- margin: 20px;
-
- height: 64px;
- max-width: 64px;
- width: auto;
- border-radius: 32px;
-
- border-radius: 32px;
- transition: 0.5s ease-in-out;
- }
- .group {
- flex-direction: row;
- justify-content: left;
-
- height: 64px;
- width: auto;
- padding-right: 7px;
- margin-bottom: 0;
- padding-top: 7px;
- margin-right: 20px;
- padding-left: 3px;
- }
- .headerIcon {
- height: 64px;
- width: 64px;
- margin-top: 12px;
- margin-left: -3px;
- }
- .containerOpen {
- max-width: 460px;
- max-height: 64px;
- }
- .containerDesktop:hover {
- max-width: 460px;
- max-height: 64px;
- }
- .icon {
- height: 50px;
- width: 50px;
- margin-left: 5px;
- }
- @keyframes containerCloseOnStart {
- from { max-width: 460px; }
- to { max-width: 64px ; }
- }
-}
+.skipNav:focus {
+ width: 100%;
+ overflow: auto;
+}
\ No newline at end of file
diff --git a/styles/Components/panels.module.css b/styles/Components/panels.module.css
index 2229866..35096b2 100644
--- a/styles/Components/panels.module.css
+++ b/styles/Components/panels.module.css
@@ -12,8 +12,6 @@
background-color: var(--theme-ui-colors-panelColor);
border-radius: 20px;
- transition: background-color 0.3s ease-in-out;
-
}
.doublePanel {
@@ -51,7 +49,7 @@
.title {
width: 100%;
- font-size: max(2em, 3.25vw);
+ font-size: min(max(2em, 3.25vw), 4em);
margin: 0;
color: var(--theme-ui-colors-text);
transition: color 0.3s ease-in-out;
diff --git a/styles/Components/texttools.module.css b/styles/Components/texttools.module.css
index b07fd6d..76857b9 100644
--- a/styles/Components/texttools.module.css
+++ b/styles/Components/texttools.module.css
@@ -3,7 +3,7 @@
width: 15px !important;
position: relative;
border-radius: 5px;
- border: solid 4px #000;
+ border: solid 3px #000;
}
.list {
diff --git a/styles/globals.css b/styles/globals.css
index 1b39e04..4fac2dc 100644
--- a/styles/globals.css
+++ b/styles/globals.css
@@ -9,10 +9,35 @@
}
html {
- background-color: var(--theme-ui-colors-background);
+ /* background-color: var(--theme-ui-colors-background); */
transition: background-color 0.3s ease-in-out;
+ background-color: #000000 !important;
+ transition: 0.3s ease-in-out border-radius;
+ border-radius: 0px;
+}
+body {
+ background-color: var(--theme-ui-colors-background);
+ overflow: hidden;
+ overflow-y: auto;
+ transition: 0.3s ease-in-out border-radius;
+ padding-bottom: 0;
+ border-radius: 25px;
}
+body {
+ height: 100%;
+ overflow: hidden;
+}
+html {
+ position: absolute;
+ top: 42px;
+ height: calc(100vh -42px + 1px);
+ overflow-y: auto;
+ scrollbar-width: none;
+}
+html::-webkit-scrollbar {
+ display: none;
+}
a {
text-decoration: none;
diff --git a/yarn.lock b/yarn.lock
index ec57c75..ae38cb2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1174,6 +1174,13 @@
resolved "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz"
integrity sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA==
+"@next/bundle-analyzer@^12.1.6":
+ version "12.1.6"
+ resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-12.1.6.tgz#5f4efcdb8c91d70c8be6013b0aacdb4d89ba1312"
+ integrity sha512-WLydwytAeHoC/neXsiIgK+a6Me12PuSpwopnsZgX5JFNwXQ9MlwPeMGS3aTZkYsv8QmSm0Ns9Yh9FkgLKYaUuQ==
+ dependencies:
+ webpack-bundle-analyzer "4.3.0"
+
"@next/env@11.1.2":
version "11.1.2"
resolved "https://registry.npmjs.org/@next/env/-/env-11.1.2.tgz"
@@ -1261,6 +1268,11 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
+"@polka/url@^1.0.0-next.20":
+ version "1.0.0-next.21"
+ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1"
+ integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==
+
"@rushstack/eslint-patch@^1.0.6":
version "1.0.6"
resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.0.6.tgz"
@@ -1665,11 +1677,21 @@
resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+acorn-walk@^8.0.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
+ integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
+
acorn@^7.4.0:
version "7.4.1"
resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+acorn@^8.0.4:
+ version "8.7.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30"
+ integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==
+
ajv@^6.10.0, ajv@^6.12.4:
version "6.12.6"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
@@ -2099,7 +2121,7 @@
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-chalk@^4.0.0:
+chalk@^4.0.0, chalk@^4.1.0:
version "4.1.2"
resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@@ -2135,6 +2157,16 @@
resolved "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz"
integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==
+classnames@^2.2.6:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e"
+ integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==
+
+clsx@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
+ integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
+
coa@^2.0.2:
version "2.0.2"
resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz"
@@ -2173,6 +2205,11 @@
resolved "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz"
integrity sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==
+commander@^6.2.0:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
+ integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
+
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz"
@@ -2374,6 +2411,11 @@
resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz"
integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==
+debounce@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5"
+ integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
+
debug@2, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
@@ -2503,6 +2545,16 @@
dom-serializer "0"
domelementtype "1"
+duplexer@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
+easy-bem@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/easy-bem/-/easy-bem-1.1.1.tgz#1bfcc10425498090bcfddc0f9c000aba91399e03"
+ integrity sha512-GJRqdiy2h+EXy6a8E6R+ubmqUM08BK0FWNq41k24fup6045biQ8NXxoXimiwegMQvFFV3t1emADdGNL1TlS61A==
+
electron-to-chromium@^1.3.723, electron-to-chromium@^1.4.17:
version "1.4.68"
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.68.tgz"
@@ -3059,6 +3111,13 @@
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz"
integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
+gzip-size@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
+ integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==
+ dependencies:
+ duplexer "^0.1.2"
+
has-bigints@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz"
@@ -3573,6 +3632,11 @@
resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz"
integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
+lodash@^4.17.20:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
@@ -3692,6 +3756,11 @@
optionalDependencies:
saslprep "^1.0.3"
+mrmime@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.0.tgz#14d387f0585a5233d291baba339b063752a2398b"
+ integrity sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==
+
ms@2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
@@ -3940,6 +4009,11 @@
dependencies:
wrappy "1"
+opener@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
+ integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
+
optionator@^0.9.1:
version "0.9.1"
resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz"
@@ -4187,6 +4261,15 @@
object-assign "^4.1.1"
react-is "^16.8.1"
+prop-types@^15.8.1:
+ version "15.8.1"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
+ integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.13.1"
+
public-encrypt@^4.0.0:
version "4.0.3"
resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz"
@@ -4271,14 +4354,21 @@
iconv-lite "0.4.24"
unpipe "1.0.0"
-react-dom@^17.0.2:
- version "17.0.2"
- resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz"
- integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
+react-dom@^18.1.0:
+ version "18.1.0"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.1.0.tgz#7f6dd84b706408adde05e1df575b3a024d7e8a2f"
+ integrity sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==
dependencies:
loose-envify "^1.1.0"
- object-assign "^4.1.1"
- scheduler "^0.20.2"
+ scheduler "^0.22.0"
+
+react-draggable@^4.4.5:
+ version "4.4.5"
+ resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.5.tgz#9e37fe7ce1a4cf843030f521a0a4cc41886d7e7c"
+ integrity sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==
+ dependencies:
+ clsx "^1.1.1"
+ prop-types "^15.8.1"
react-fade-in@^2.0.1:
version "2.0.1"
@@ -4302,6 +4392,15 @@
dependencies:
hoist-non-react-statics "^3.0.0"
+react-indiana-drag-scroll@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/react-indiana-drag-scroll/-/react-indiana-drag-scroll-2.1.0.tgz#37654eae8caced01cdecc8bce55f0382871a021d"
+ integrity sha512-Tj94Dv9PkmoKqc9nxK/dzwhtE8pP7NTxmeHqkD8KN0zad1NNE+/JsvRcK4EdqE6CdA2nMESzqPMvv1AzRXdBew==
+ dependencies:
+ classnames "^2.2.6"
+ debounce "^1.2.0"
+ easy-bem "^1.1.1"
+
react-is@17.0.2:
version "17.0.2"
resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz"
@@ -4329,18 +4428,27 @@
resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz"
integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==
+react-rewards@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/react-rewards/-/react-rewards-2.0.3.tgz#685aee98654ab4f060e297849f39cf0a16cec042"
+ integrity sha512-qww5Jtk2HmCjR9wc7+0c2iP8oCQzENZn8pnoJGi0S6o+6dAD25+ZoagLSWdoBLGVwxfP5kFBjv3VZ6L8fPk6lg==
+
react-tiny-popover@^7.0.1:
version "7.0.1"
resolved "https://registry.npmjs.org/react-tiny-popover/-/react-tiny-popover-7.0.1.tgz"
integrity sha512-uV+nTZXkCtfPFQtoKwbfX8waaU7+b8LEOoyOUjtmRxqnH3KLX1FkPm7RU+RC8eXxtOe4rC1cuhOIbQFcc71vQQ==
-react@^17.0.2:
- version "17.0.2"
- resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz"
- integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
+react-use-draggable-scroll@^0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/react-use-draggable-scroll/-/react-use-draggable-scroll-0.4.2.tgz#f91bf8248a37814f2e07ab931463f6faa7a2878f"
+ integrity sha512-PRI49fQ/e3SFDe1LQuOYBIbxEvESryigXbeiPhroaISzGEuznA5QqN4dveunHzlEPEdgr5/RPRxN7d583SU3DA==
+
+react@^18.1.0:
+ version "18.1.0"
+ resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890"
+ integrity sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==
dependencies:
loose-envify "^1.1.0"
- object-assign "^4.1.1"
read-pkg-up@^3.0.0:
version "3.0.0"
@@ -4541,13 +4649,12 @@
resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
-scheduler@^0.20.2:
- version "0.20.2"
- resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz"
- integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
+scheduler@^0.22.0:
+ version "0.22.0"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.22.0.tgz#83a5d63594edf074add9a7198b1bae76c3db01b8"
+ integrity sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==
dependencies:
loose-envify "^1.1.0"
- object-assign "^4.1.1"
"semver@2 || 3 || 4 || 5":
version "5.7.1"
@@ -4615,6 +4722,15 @@
get-intrinsic "^1.0.2"
object-inspect "^1.9.0"
+sirv@^1.0.7:
+ version "1.0.19"
+ resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49"
+ integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==
+ dependencies:
+ "@polka/url" "^1.0.0-next.20"
+ mrmime "^1.0.0"
+ totalist "^1.0.0"
+
slash@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz"
@@ -4976,6 +5092,11 @@
resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz"
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
+totalist@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df"
+ integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==
+
tr46@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz"
@@ -5102,6 +5223,11 @@
punycode "1.3.2"
querystring "0.2.0"
+use-draggable-scroll@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/use-draggable-scroll/-/use-draggable-scroll-0.1.0.tgz#ca7967eeec9d6a53f965b84f9c295c214aa43ed7"
+ integrity sha512-mX6nT3cUqOTtA+8QUH9HfdKtzI6Oquj9QIB0wALWZYmWogNQ746MaUcmqKOKCIlt2UH6egxhSKNPiSlfEqmKhA==
+
use-subscription@1.5.1:
version "1.5.1"
resolved "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz"
@@ -5186,6 +5312,21 @@
resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz"
integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
+webpack-bundle-analyzer@4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.3.0.tgz#2f3c0ca9041d5ee47fa418693cf56b4a518b578b"
+ integrity sha512-J3TPm54bPARx6QG8z4cKBszahnUglcv70+N+8gUqv2I5KOFHJbzBiLx+pAp606so0X004fxM7hqRu10MLjJifA==
+ dependencies:
+ acorn "^8.0.4"
+ acorn-walk "^8.0.0"
+ chalk "^4.1.0"
+ commander "^6.2.0"
+ gzip-size "^6.0.0"
+ lodash "^4.17.20"
+ opener "^1.5.2"
+ sirv "^1.0.7"
+ ws "^7.3.1"
+
whatwg-url@^7.0.0:
version "7.1.0"
resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz"
@@ -5243,6 +5384,11 @@
resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+ws@^7.3.1:
+ version "7.5.7"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
+ integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
+
xtend@^4.0.0, xtend@^4.0.2:
version "4.0.2"
resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"