×
{this.props.language.modals.title}
-
-
this.changeEnabled('marketplace')}> {this.props.language.modals.marketplace}
-
this.changeEnabled('addons')}> {this.props.language.modals.addons}
-
this.changeEnabled('settings')}> {this.props.language.modals.settings}
+
-
- {this.state.tab}
);
}
diff --git a/src/components/modals/settings/Section.jsx b/src/components/modals/settings/Section.jsx
deleted file mode 100644
index 574f949c..00000000
--- a/src/components/modals/settings/Section.jsx
+++ /dev/null
@@ -1,56 +0,0 @@
-import React from 'react';
-
-import Slider from './Slider';
-
-import ExpandMore from '@material-ui/icons/ExpandMore';
-
-export default class Section extends React.PureComponent {
- constructor(...args) {
- super(...args);
- this.state = {
- display: 'none',
- transform: 'rotate(0)'
- };
- }
-
- toggleSection() {
- const display = (this.state.display === 'none') ? 'block' : 'none';
-
- this.setState({
- display: display,
- transform: (this.state.transform === 'rotate(0)') ? 'rotate(-180deg)' : 'rotate(0)'
- });
-
- if (this.props.onToggle) {
- this.props.onToggle(display);
- }
- }
-
- render() {
- let extraHTML, expandMore;
-
- if (this.props.children) {
- extraHTML = (
-
-
{this.props.children}
-
- );
-
- expandMore = (
-
this.toggleSection()} />
- );
- }
-
- return (
-
-
this.toggleSection()}>{this.props.title}
- {expandMore}
- {(this.props.slider !== false) ? : null}
- {extraHTML}
-
- );
- }
-}
\ No newline at end of file
diff --git a/src/components/modals/settings/sections/About.jsx b/src/components/modals/settings/sections/About.jsx
new file mode 100644
index 00000000..eb4aac39
--- /dev/null
+++ b/src/components/modals/settings/sections/About.jsx
@@ -0,0 +1,41 @@
+import React from 'react';
+
+import Tooltip from '@material-ui/core/Tooltip';
+
+export default class About extends React.PureComponent {
+ constructor(...args) {
+ super(...args);
+ this.state = {
+ contributors: []
+ }
+ }
+
+ async getContributors() {
+ const data = await (await fetch('https://api.github.com/repos/mue/mue/contributors')).json();
+
+ this.setState({
+ contributors: data // TODO: REMOVE BOTS AND MAKE IT ACTUALLY WORK
+ });
+ }
+
+ componentDidMount() {
+ this.getContributors();
+ }
+
+ render() {
+ return (
+
+
About
+
+
Copyright 2018-2021 Mue Tab (BSD-3 License)
+
Version 5.0.0
+
Contributors
+ {this.state.contributors.map((item) =>
+
+
+
+ )}
+
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/components/modals/settings/sections/Appearance.jsx b/src/components/modals/settings/sections/Appearance.jsx
new file mode 100644
index 00000000..d63f975c
--- /dev/null
+++ b/src/components/modals/settings/sections/Appearance.jsx
@@ -0,0 +1,26 @@
+import React from 'react';
+import Checkbox from '../Checkbox';
+
+export default function AppearanceSettings (props) {
+ return (
+
+
Appearance
+
+
+
+
+
Accessibility
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/modals/settings/sections/BackgroundSettings.jsx b/src/components/modals/settings/sections/Background.jsx
similarity index 97%
rename from src/components/modals/settings/sections/BackgroundSettings.jsx
rename to src/components/modals/settings/sections/Background.jsx
index 2b598a85..7e840bd2 100644
--- a/src/components/modals/settings/sections/BackgroundSettings.jsx
+++ b/src/components/modals/settings/sections/Background.jsx
@@ -2,7 +2,6 @@ import React from 'react';
import Checkbox from '../Checkbox';
import Dropdown from '../Dropdown';
-import Section from '../Section';
import FileUpload from '../FileUpload';
import { ColorPicker } from 'react-color-gradient-picker';
@@ -227,8 +226,8 @@ export default class BackgroundSettings extends React.PureComponent {
}
return (
-
-
+
+
Background
@@ -266,8 +265,7 @@ export default class BackgroundSettings extends React.PureComponent {
{this.state.shown && colourSettings}
-
-
+
);
}
}
\ No newline at end of file
diff --git a/src/components/modals/settings/sections/GreetingSettings.jsx b/src/components/modals/settings/sections/Greeting.jsx
similarity index 92%
rename from src/components/modals/settings/sections/GreetingSettings.jsx
rename to src/components/modals/settings/sections/Greeting.jsx
index 04bc31d5..4b014537 100644
--- a/src/components/modals/settings/sections/GreetingSettings.jsx
+++ b/src/components/modals/settings/sections/Greeting.jsx
@@ -1,6 +1,5 @@
import React from 'react';
-import Section from '../Section';
import Checkbox from '../Checkbox';
import DatePicker from 'react-date-picker';
@@ -41,7 +40,8 @@ export default class GreetingSettings extends React.PureComponent {
render() {
return (
-
+
+
Greeting
@@ -53,7 +53,7 @@ export default class GreetingSettings extends React.PureComponent {
{this.props.language.greeting.birthday_date}
this.changeDate(data)} value={this.state.birthday}/>
-
+
);
}
}
\ No newline at end of file
diff --git a/src/components/modals/settings/sections/LanguageSettings.jsx b/src/components/modals/settings/sections/Language.jsx
similarity index 94%
rename from src/components/modals/settings/sections/LanguageSettings.jsx
rename to src/components/modals/settings/sections/Language.jsx
index ddb44e0d..15c25120 100644
--- a/src/components/modals/settings/sections/LanguageSettings.jsx
+++ b/src/components/modals/settings/sections/Language.jsx
@@ -5,7 +5,8 @@ const languages = require('../../../../modules/languages.json');
export default function LanguageSettings (props) {
return (
-
+
+
Language
{props.language.language}
+ Quote
+
+
+
+ localStorage.setItem('quotelanguage', document.getElementById('quotelanguage').value)}>
+ English
+ Français
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/modals/settings/sections/SearchSettings.jsx b/src/components/modals/settings/sections/Search.jsx
similarity index 95%
rename from src/components/modals/settings/sections/SearchSettings.jsx
rename to src/components/modals/settings/sections/Search.jsx
index 29a539bc..a8f418a2 100644
--- a/src/components/modals/settings/sections/SearchSettings.jsx
+++ b/src/components/modals/settings/sections/Search.jsx
@@ -2,7 +2,6 @@ import React from 'react';
import { toast } from 'react-toastify';
-import Section from '../Section';
import Dropdown from '../Dropdown';
import Checkbox from '../Checkbox';
@@ -57,7 +56,8 @@ export default class SearchSettings extends React.PureComponent {
render() {
return (
-
+
);
}
}
\ No newline at end of file
diff --git a/src/components/modals/settings/sections/Time.jsx b/src/components/modals/settings/sections/Time.jsx
new file mode 100644
index 00000000..e108416e
--- /dev/null
+++ b/src/components/modals/settings/sections/Time.jsx
@@ -0,0 +1,25 @@
+import React from 'react';
+
+import Checkbox from '../Checkbox';
+import Dropdown from '../Dropdown';
+
+export default function TimeSettings (props) {
+ return (
+
+
Time
+
+
+
+
+
+
+ Date
+
+ localStorage.setItem('dateFormat', document.getElementById('dateformat').value)}>
+ DMY
+ MDY
+ YMD
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/modals/tabs-backend/Tab.jsx b/src/components/modals/tabs-backend/Tab.jsx
new file mode 100644
index 00000000..a5a8316d
--- /dev/null
+++ b/src/components/modals/tabs-backend/Tab.jsx
@@ -0,0 +1,81 @@
+import React from 'react';
+
+// navbar
+import Settings from '@material-ui/icons/Settings';
+import Addons from '@material-ui/icons/Widgets';
+import Marketplace from '@material-ui/icons/ShoppingBasket';
+
+// settings
+import Time from '@material-ui/icons/AccessAlarm';
+import Greeting from '@material-ui/icons/EmojiPeople';
+import Quote from '@material-ui/icons/FormatQuote';
+import Background from '@material-ui/icons/Photo';
+import Search from '@material-ui/icons/Search';
+import About from '@material-ui/icons/Info';
+import Plugins from '@material-ui/icons/Widgets';
+import Added from '@material-ui/icons/AddCircle';
+import Appearance from '@material-ui/icons/FormatPaint';
+import Language from '@material-ui/icons/Translate';
+import Changelog from '@material-ui/icons/NewReleasesRounded';
+
+export default class Tab extends React.PureComponent {
+ onClick = () => {
+ this.props.onClick(this.props.label);
+ };
+
+ render() {
+ let className = 'tab-list-item';
+ if (this.props.currentTab === this.props.label) {
+ className += ' tab-list-active';
+ }
+
+ if (this.props.navbar === true) {
+ className = 'navbar-item';
+ if (this.props.currentTab === this.props.label) {
+ className += ' navbar-item-active';
+ }
+ }
+
+ let icon;
+ let divider;
+
+ switch (this.props.label) {
+ // Navbar
+ case 'Settings': icon = ; break;
+ case 'My Add-ons': icon = ; break;
+ case 'Marketplace': icon = ; break;
+ // Settings
+ case 'Time': icon = ; break;
+ case 'Greeting': icon = ; break;
+ case 'Quote': icon =
; break;
+ case 'Background': icon = ; break;
+ case 'Search': icon = ; break;
+ case 'Appearance': icon = ; break;
+ case 'Language':
+ icon = ;
+ divider =
;
+ break;
+ case 'Change Log': icon = ; break;
+ case 'About': icon = ; break;
+ // Store
+ case 'Themes': icon = ; break;
+ case 'Photo Packs': icon = ; break;
+ case 'Quotes Packs': icon =
; break;
+ case 'Plugins':
+ icon =
+ divider =
;
+ break;
+ case 'Added': icon = ; break;
+ default: break;
+ }
+
+ return (
+
+
+ {icon} {this.props.label}
+
+ {divider}
+
+ )
+ }
+}
\ No newline at end of file
diff --git a/src/components/modals/tabs-backend/Tabs.jsx b/src/components/modals/tabs-backend/Tabs.jsx
new file mode 100644
index 00000000..bbca6c87
--- /dev/null
+++ b/src/components/modals/tabs-backend/Tabs.jsx
@@ -0,0 +1,53 @@
+import React from 'react';
+import Tab from './Tab';
+
+export default class Tabs extends React.PureComponent {
+ constructor(props) {
+ super(props);
+
+ this.state = {
+ currentTab: this.props.children[0].props.label
+ };
+ }
+
+ onClick = (tab) => {
+ this.setState({ currentTab: tab });
+ };
+
+ render() {
+ let className = 'sidebar';
+ let tabClass = 'tab-content';
+ let optionsText = (Options );
+
+ if (this.props.navbar) {
+ className = 'modalNavbar';
+ tabClass = '';
+ optionsText = '';
+ }
+
+ return (
+
+
+ {optionsText}
+ {this.props.children.map((tab) => {
+ return (
+
+ );
+ })}
+
+
+ {this.props.children.map((child) => {
+ if (child.props.label !== this.state.currentTab) return undefined;
+ return child.props.children;
+ })}
+
+
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/components/modals/tabs/Settings.jsx b/src/components/modals/tabs/Settings.jsx
index b1670aa4..c86bb840 100644
--- a/src/components/modals/tabs/Settings.jsx
+++ b/src/components/modals/tabs/Settings.jsx
@@ -1,112 +1,50 @@
import React from 'react';
-import SettingsFunctions from '../../../modules/helpers/settings';
-import Checkbox from '../settings/Checkbox';
-import Dropdown from '../settings/Dropdown';
-import Section from '../settings/Section';
-import FileUpload from '../settings/FileUpload';
+import About from '../settings/sections/About';
+import Language from '../settings/sections/Language';
+import Search from '../settings/sections/Search';
+import Greeting from '../settings/sections/Greeting';
+import Time from '../settings/sections/Time';
+import Quote from '../settings/sections/Quote';
+import Appearance from '../settings/sections/Appearance';
+import Background from '../settings/sections/Background';
-import { toast } from 'react-toastify';
-
-import BackgroundSettings from '../settings/sections/BackgroundSettings';
-import SearchSettings from '../settings/sections/SearchSettings';
-import LanguageSettings from '../settings/sections/LanguageSettings';
-import GreetingSettings from '../settings/sections/GreetingSettings';
+import SettingsTabs from '../tabs-backend/Tabs';
export default class Settings extends React.PureComponent {
- resetItem() {
- document.getElementById('customcss').value = '';
- toast(this.props.toastLanguage.reset);
- }
-
- componentDidMount() {
- // Settings
- document.getElementById('language').value = localStorage.getItem('language');
- document.getElementById('customcss').value = localStorage.getItem('customcss');
-
- if (document.getElementById('modal').classList.contains('dark')) { // Dark theme support for dropdowns
- const choices = document.getElementsByClassName('choices');
- for (let i = 0; i < choices.length; i++) {
- choices[i].style.backgroundColor = '#2f3542';
- }
- }
- }
-
- settingsImport(e) {
- const content = JSON.parse(e.target.result);
-
- for (const key of Object.keys(content)) {
- localStorage.setItem(key, content[key]);
- }
-
- toast(this.props.toastLanguage.imported);
- }
-
- componentWillUnmount() {
- localStorage.setItem('customcss', document.getElementById('customcss').value);
- }
-
render() {
return (
-
-
-
-
-
-
-
-
-
- localStorage.setItem('quotelanguage', document.getElementById('quotelanguage').value)}>
- English
- Français
-
-
-
-
-
- localStorage.setItem('dateFormat', document.getElementById('dateformat').value)}>
- DMY
- MDY
- YMD
-
-
- localStorage.setItem('shortFormat', document.getElementById('shortformat').value)}>
- {this.props.language.date.short_separator.default}
- {this.props.language.date.short_separator.dash}
- {this.props.language.date.short_separator.gaps}
-
-
-
-
-
-
-
-
-
-
-
-
window.location.reload()}>{this.props.language.apply}
-
SettingsFunctions.setDefaultSettings('reset')}>{this.props.language.reset}
-
SettingsFunctions.exportSettings()}>{this.props.language.export}
-
document.getElementById('file-input').click()}>{this.props.language.import}
-
this.settingsImport(e)} />
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
);
}
}
diff --git a/src/scss/index.scss b/src/scss/index.scss
index f66476f3..4af012ad 100644
--- a/src/scss/index.scss
+++ b/src/scss/index.scss
@@ -1,7 +1,6 @@
@import 'variables';
@import 'mixins';
-@import 'modules/modal';
@import 'modules/settings';
@import 'modules/toast';
@import 'modules/marketplace';
@@ -9,6 +8,10 @@
@import 'modules/dropdown';
@import 'modules/welcome';
+@import 'modules/modals/main';
+@import 'modules/modals/feedback';
+@import 'modules/modals/update';
+
body {
background: #2f3640;
margin: 0;
diff --git a/src/scss/modules/_modal.scss b/src/scss/modules/_modal.scss
deleted file mode 100644
index 20ea18dc..00000000
--- a/src/scss/modules/_modal.scss
+++ /dev/null
@@ -1,270 +0,0 @@
-.Modal {
- background-color: map-get($modal, 'background');
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);
- padding: 25px;
- transition: 0.6s;
- transition-timing-function: ease-in;
- border-radius: map-get($modal, 'border-radius');
- -webkit-user-select: none;
- scrollbar-color: #34495e #bdc3c7;
-
- &:focus {
- outline: 0;
- }
-}
-
-.modalLink {
- color: #5352ed;
- cursor: pointer;
-
- &:hover {
- opacity: 0.8;
- }
-}
-
-.closeModal {
- position: absolute;
- top: 1rem;
- right: 2rem;
- font-size: 4em;
- cursor: pointer;
-
- &:hover {
- color: grey;
- }
-}
-
-.dark {
- background-color: #2f3542 !important;
- color: white !important;
-}
-
-.zoom-in {
- @include animation('zoom-in');
-}
-
-@include keyframes(zoom-in) {
- 0% {
- transform: scale(0);
- }
-
- 50% {
- transform: scale(1.05, 1.05);
- }
-
- 100% {
- transform: scale(1, 1);
- }
-}
-
-.Overlay {
- position: fixed;
- z-index: 100;
- top: 0;
- left: 0;
- right: 0;
- display: flex;
- align-items: baseline;
- justify-content: center;
- margin-top: 20px;
-}
-
-.modal-animation {
- -webkit-animation: zoom-in 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
- animation: zoom-in 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
-}
-
-.ReactModal__Content {
- min-height: calc(100vh - 30vh);
- max-height: calc(100vh - 10vh);
- box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.25);
- overflow-y: auto;
- position: relative;
-}
-
-@media only screen and (max-height: 700px) {
- .ReactModal__Content {
- min-height: 500px;
- max-height: calc(100vh - 30vh);
- }
-}
-
-@media only screen and (min-height: 700px) {
- .ReactModal__Content {
- min-height: 600px;
- }
-}
-
-.content {
- margin-top: -20px;
- width: 900px;
-
- h1 {
- font-size: 35px;
- }
-
- p {
- font-size: 16px;
- }
-
- .columns {
- font-size: 15px;
-
- li {
- padding-left: 10px;
- }
- }
-}
-
-.zoom-out {
- @include animation('zoom-out 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94) both');
-}
-
-@include keyframes(zoom-out) {
- 0% {
- transform: scale(1, 1);
- }
-
- 50% {
- transform: scale(1.05, 1.05);
- }
-
- 100% {
- transform: scale(0);
- }
-}
-
-.tab,
-button.tablinks {
- margin-top: -10px;
- font-size: 24px;
- background: none;
- border: none;
- outline: none;
- color: map-get($modal, 'text');
-}
-
-.tablinks {
- cursor: pointer;
- border-radius: 12px;
- padding: 10px 30px 10px 30px;
-
- &:hover {
- background: rgba(189, 195, 199, .075);
- }
-
- &:after {
- content: '';
- display: block;
- margin: 0 auto;
- width: 50%;
- padding-top: 10px;
- border-bottom: 3px solid map-get($modal, 'tab-underline');
- }
-
- svg {
- top: 0.125em;
- position: relative;
- }
-}
-
-.active:after {
- border-bottom: 3px solid map-get($modal, 'tab-underline-active') !important;
-}
-
-.dark {
- .tab,
- button.tablinks {
- color: white;
- }
-
- .active:after {
- border-image-slice: 1;
- border-image-source: map-get($theme-colours, 'gradient');
- border-bottom: 3px solid;
- }
-}
-
-.tab {
- margin-left: -3px;
-}
-
-::-webkit-scrollbar {
- width: 13px;
- background: #bdc3c7;
- border-top-right-radius: map-get($modal, 'border-radius');
- border-bottom-right-radius: map-get($modal, 'border-radius');
-}
-
-::-webkit-scrollbar-thumb {
- background: #34495e;
- border-top-right-radius: map-get($modal, 'border-radius');
- border-bottom-right-radius: map-get($modal, 'border-radius');
-}
-
-.updateContent {
- width: 400px;
- padding: 5px;
-
- .closeModal {
- margin-top: 10px;
- font-size: 45px;
- }
-
- img {
- width: 100%;
- height: auto;
- }
-}
-
-#feedbackmodal {
- position: absolute;
- margin: auto;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- width: 400px;
- height: 100px;
-}
-
-.feedback {
- width: 400px;
- padding: 5px;
-
- h1, .closeModal {
- font-size: 2.5em;
- }
-
- span {
- font-size: 6em;
- }
-
- button {
- width: 100%;
- border-radius: 48px;
- outline: none;
- border: none;
- padding: 15px 20px;
- font-size: 1.5em;
- background: linear-gradient(90deg, #ffb032 0%, #dd3b67 100%);
- color: #ffffff;
- text-transform: uppercase;
- cursor: pointer;
- }
-
- input[type=text] {
- width: 100%;
- font-size: 1em;
- }
-
- input[type=range] {
- margin-left: 20px;
- margin-right: 20px;
- vertical-align: middle;
- }
-
- label.values {
- font-weight: 700;
- }
-}
\ No newline at end of file
diff --git a/src/scss/modules/modals/_feedback.scss b/src/scss/modules/modals/_feedback.scss
new file mode 100644
index 00000000..b261fb0b
--- /dev/null
+++ b/src/scss/modules/modals/_feedback.scss
@@ -0,0 +1,52 @@
+#feedbackmodal {
+ position: absolute;
+ margin: auto;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ width: 400px;
+ height: 100px;
+}
+
+.feedback {
+ width: 400px;
+ padding: 5px;
+
+ h1,
+ .closeModal {
+ font-size: 2.5em;
+ }
+
+ span {
+ font-size: 6em;
+ }
+
+ button {
+ width: 100%;
+ border-radius: 48px;
+ outline: none;
+ border: none;
+ padding: 15px 20px;
+ font-size: 1.5em;
+ background: linear-gradient(90deg, #ffb032 0%, #dd3b67 100%);
+ color: #ffffff;
+ text-transform: uppercase;
+ cursor: pointer;
+ }
+
+ input[type=text] {
+ width: 100%;
+ font-size: 1em;
+ }
+
+ input[type=range] {
+ margin-left: 20px;
+ margin-right: 20px;
+ vertical-align: middle;
+ }
+
+ label.values {
+ font-weight: 700;
+ }
+}
\ No newline at end of file
diff --git a/src/scss/modules/modals/_main.scss b/src/scss/modules/modals/_main.scss
new file mode 100644
index 00000000..3ff5b608
--- /dev/null
+++ b/src/scss/modules/modals/_main.scss
@@ -0,0 +1,352 @@
+.Modal {
+ color: map-get($modal, "text");
+ background-color: map-get($modal, "background");
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);
+ border: none;
+ opacity: 1;
+ z-index: -2;
+ padding: 25px;
+ cursor: hand;
+ transition: 0.6s;
+ transition-timing-function: ease-in;
+ border-radius: map-get($modal, "border-radius");
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+ scrollbar-width: thin;
+ scrollbar-color: #34495e #bdc3c7;
+ position: relative;
+
+ &:focus {
+ outline: 0;
+ }
+}
+
+
+.modalLink {
+ color: #5352ed;
+ cursor: pointer;
+ padding-left: 10px;
+
+ &:hover {
+ opacity: 0.8;
+ }
+}
+
+.closeModal {
+ position: absolute;
+ top: 1rem;
+ right: 2rem;
+ font-size: 4em;
+ cursor: pointer;
+
+ &:hover {
+ color: grey;
+ }
+}
+
+.dark {
+ background-color: #2f3542 !important;
+ color: white !important;
+}
+
+.ReactModal__Html--open,
+.ReactModal__Body--open {
+ overflow: hidden;
+}
+
+.Overlay {
+ position: fixed;
+ z-index: 100;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ width: 100vw;
+ height: 100vh;
+ display: flex;
+ align-items: baseline;
+ justify-content: center;
+}
+
+.ReactModal__Content {
+ min-height: calc(100vh - 30vh);
+ max-height: calc(100vh - 10vh);
+ box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.25);
+ overflow-y: auto;
+ position: relative;
+}
+
+@media only screen and (max-height: 700px) {
+ .ReactModal__Content {
+ min-height: 500px;
+ max-height: calc(100vh - 30vh);
+ }
+}
+
+@media only screen and (min-height: 700px) {
+ .ReactModal__Content {
+ min-height: 600px;
+ }
+}
+
+.content {
+ margin-top: -20px;
+ width: 900px;
+
+ h1 {
+ font-size: 35px;
+ }
+
+ p {
+ font-size: 16px;
+ }
+
+ .columns {
+ font-size: 15px;
+
+ li {
+ padding-left: 10px;
+ }
+ }
+}
+
+.ReactModal__Overlay {
+ opacity: 0;
+ transform: scale(0);
+ transition: all 300ms cubic-bezier(.47, 1.64, .41, .8);
+}
+
+.ReactModal__Overlay--after-open {
+ opacity: 1;
+ transform: scale(1);
+}
+
+.ReactModal__Overlay--before-close {
+ opacity: 0;
+ transform: scale(0);
+}
+
+ul.sidebar {
+ position: absolute;
+ top: 0;
+ left: 0;
+ margin: 0;
+ padding-left: 0;
+ height: 100%;
+ background: #f0f0f0;
+ position: absolute;
+ overflow-y: show;
+ left: 0;
+ border-radius: 12px 0 0 12px;
+ text-align: left;
+ font-size: 24px;
+
+ h1 {
+ text-align: center;
+ }
+
+ svg,
+ li {
+ font-size: 30px;
+ }
+
+ svg {
+ vertical-align: middle;
+ font-size: 32px;
+ padding: 5px;
+ }
+
+ hr {
+ height: 3px;
+ background: rgba(196, 196, 196, 0.74);
+ width: 75%;
+ outline: none;
+ border: none;
+ }
+}
+
+li {
+ list-style: none;
+ font-size: 24px;
+ padding: 5px 30px 5px 30px;
+ cursor: pointer;
+ margin-top: 2px;
+}
+
+#modal {
+ position: absolute;
+ margin: auto;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ width: 60%;
+ height: 80%;
+}
+
+.tab-list-active {
+ background: rgba(219, 219, 219, 0.72);
+}
+
+@media only screen and (max-width: 1200px) {
+ li.tab-list-item {
+ span {
+ display: none;
+ }
+ }
+}
+
+@media only screen and (max-width: 1200px) {
+ ul.sidebar {
+ h1 {
+ display: none;
+ }
+ }
+}
+
+.tab-list-item {
+ &:hover {
+ background: rgba(219, 219, 219, 0.8);
+ }
+}
+
+ul.sectionSelector {
+ margin: 0;
+ width: 60%;
+ padding-left: 30%;
+ padding-top: 20px;
+
+ .option {
+ display: inline;
+ padding: 15px;
+ font-size: 28px;
+ }
+}
+
+@media only screen and (max-width: 1200px) {
+ ul.sectionSelector {
+ span {
+ display: none;
+ padding: 5px !important;
+ }
+ }
+}
+
+.tab-content {
+ position: absolute;
+ left: 30%;
+ width: 60%;
+
+ h3 {
+ text-transform: uppercase;
+ }
+}
+
+@media only screen and (min-width: 1300px) {
+ .tab-content {
+ position: absolute;
+ left: 30%;
+ }
+}
+
+.navbar-item {
+ font-size: 22px;
+ font-weight: 500;
+ display: inline-flex;
+}
+
+.modalNavbar {
+ position: absolute;
+ left: 20rem;
+ top: 1rem;
+ justify-content: center;
+
+ svg {
+ margin-right: 0.5rem;
+ padding: 3px;
+ }
+}
+
+@media only screen and (max-width: 1200px) {
+ .modalNavbar {
+ left: 6rem;
+ }
+}
+
+.navbar-item {
+ span,
+ svg {
+ font-size: 1.1em !important;
+ }
+
+ &:hover {
+ background: none;
+ }
+}
+
+@media only screen and (max-width: 1200px) {
+ li.navbar-item {
+ span {
+ display: none;
+ }
+ }
+}
+
+.tabIndicator {
+ width: 40px;
+ height: 3px;
+ background: #000;
+}
+
+@media only screen and (max-width: 1200px) {
+ .tabContent {
+ left: 20px;
+ }
+}
+
+@media only screen and (min-width: 1200px) {
+ ul.sidebar {
+ width: 310px;
+ align-items: center;
+ }
+}
+
+.navbar-item-active {
+ background: map-get($theme-colours, "gradient");
+ -webkit-background-clip: text;
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+
+ svg {
+ color: orange;
+ }
+
+ &:hover {
+ opacity: .8;
+ background: map-get($theme-colours, "gradient");
+ -webkit-background-clip: text;
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+ }
+}
+
+::-webkit-scrollbar {
+ width: 13px;
+ background: #bdc3c7;
+ border-top-right-radius: map-get($modal, 'border-radius');
+ border-bottom-right-radius: map-get($modal, 'border-radius');
+}
+
+::-webkit-scrollbar-thumb {
+ background: #34495e;
+ border-top-right-radius: map-get($modal, 'border-radius');
+ border-bottom-right-radius: map-get($modal, 'border-radius');
+}
+
+.abouticon {
+ width: 96px;
+ height: auto;
+ border-radius: 50%;
+ padding-right: 5px;
+}
\ No newline at end of file
diff --git a/src/scss/modules/modals/_update.scss b/src/scss/modules/modals/_update.scss
new file mode 100644
index 00000000..43d599ae
--- /dev/null
+++ b/src/scss/modules/modals/_update.scss
@@ -0,0 +1,14 @@
+.updateContent {
+ width: 400px;
+ padding: 5px;
+
+ .closeModal {
+ margin-top: 10px;
+ font-size: 45px;
+ }
+
+ img {
+ width: 100%;
+ height: auto;
+ }
+}
\ No newline at end of file