-
Settings
+
Settings
handleStyleChange({target: {value: "Yotsuba"}}
)}>Home
diff --git a/src/components/CaptchaModal.jsx b/src/components/CaptchaModal.jsx
index 98dd1c48..7d288a71 100644
--- a/src/components/CaptchaModal.jsx
+++ b/src/components/CaptchaModal.jsx
@@ -4,7 +4,6 @@ import Modal from 'react-modal';
import styled from 'styled-components';
const StyledModal = styled(Modal)`
-
.modal-content {
width: 400px;
height: 300px;
@@ -51,6 +50,29 @@ const StyledModal = styled(Modal)`
border: 1px solid #777;
outline: none;
}
+
+ ${({ selectedStyle }) => {
+ switch (selectedStyle) {
+ case 'Yotsuba':
+ return ``;
+
+ case 'Yotsuba B':
+ return ``;
+
+ case 'Futaba':
+ return ``;
+
+ case 'Burichan':
+ return ``;
+
+ case 'Tomorrow':
+ return ``;
+
+ case 'Photon':
+ return ``;
+
+ }
+ }}
`;
const customOverlayStyles = {
diff --git a/src/components/SettingsModal.jsx b/src/components/SettingsModal.jsx
new file mode 100644
index 00000000..db3c0bf1
--- /dev/null
+++ b/src/components/SettingsModal.jsx
@@ -0,0 +1,193 @@
+import React from "react";
+import { Link, useLocation, useNavigate } from "react-router-dom";
+import Modal from "react-modal";
+import styled from "styled-components";
+import useBoardStore from "../useBoardStore";
+
+const StyledModal = styled(Modal)`
+ .modal-content {
+ width: 400px;
+ height: 800px;
+ display: flex;
+ align-self: center;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ background-color: rgba(0, 0, 0, 0.85);
+ padding: 0;
+ z-index: 9999;
+ border: 1px solid #aaa;
+ }
+
+ .panel {
+ top: 60px;
+ width: 330px;
+ left: 50%;
+ margin-left: -178px;
+ position: absolute;
+ padding: 2px 5px 5px;
+ font-size: 14px;
+ box-shadow: 0 0 5px rgba(0, 0, 0, .25);
+ }
+
+ .panel-header {
+ font-size: 16px;
+ font-weight: 700;
+ margin-bottom: 5px;
+ margin-top: 5px;
+ padding-bottom: 5px;
+ text-align: center;
+ line-height: 14px;
+ }
+
+ .icon {
+ right: 5px;
+ width: 18px;
+ height: 18px;
+ display: block;
+ background-size: 100%;
+ cursor: pointer;
+ position: absolute;
+ top: 5px;
+ }
+
+ h4 {
+ font-size: 14px;
+ padding: 0;
+ margin: 10px 0 5px;
+ }
+
+ ${({ selectedStyle }) => {
+ switch (selectedStyle) {
+ case 'Yotsuba':
+ return `.panel {
+ background-color: #f0e0d6;
+ }
+
+ .panel-header {
+ border-bottom: 1px solid #d9bfb7;
+ }
+
+ .icon {
+ background-image: url(/assets/buttons/cross_red.png);
+ }`;
+
+ case 'Yotsuba-B':
+ return `.panel {
+ background-color: #d6daf0;
+ }
+
+ .panel-header {
+ border-bottom: 1px solid #b7c5d9;
+ }
+
+ .icon {
+ background-image: url(/assets/buttons/cross_blue.png);
+ }`;
+
+ case 'Futaba':
+ return `.panel {
+ background-color: #f0e0d6;
+ }
+
+ .panel-header {
+ border-bottom: 1px solid rgba(0,0,0,.2);
+ }
+
+ .icon {
+ background-image: url(/assets/buttons/cross_red.png);
+ }`;
+
+ case 'Burichan':
+ return `.panel {
+ background-color: #d6daf0;
+ }
+
+ .panel-header {
+ border-bottom: 1px solid rgba(0,0,0,.2);
+ }
+
+ .icon {
+ background-image: url(/assets/buttons/cross_blue.png);
+ }`;
+
+ case 'Tomorrow':
+ return `.panel {
+ background-color: #282a2e;
+ }
+
+ .panel-header {
+ border-bottom: 1px solid #111;
+ }
+
+ .icon {
+ background-image: url(/assets/buttons/cross_dark.png);
+ }`;
+
+ case 'Photon':
+ return `.panel {
+ background-color: #ddd;
+ }
+
+ .panel-header {
+ border-bottom: 1px solid rgba(0, 0, 0, 0.20);
+ }
+
+ .icon {
+ background-image: url(/assets/buttons/cross_photon.png);
+ }`;
+
+ }
+ }}
+`;
+
+const customOverlayStyles = {
+ overlay: {
+ backgroundColor: 'rgba(0,0,0,.25)'
+ }
+};
+
+const SettingsModal = ({ isOpen, closeModal }) => {
+ const selectedStyle = useBoardStore(state => state.selectedStyle);
+ const navigate = useNavigate();
+ const location = useLocation();
+
+ const handleCloseModal = () => {
+ closeModal();
+
+ if (location.pathname === "/settings") {
+ navigate(-1, { replace: true });
+ } else {
+ navigate("/settings", { state: { from: location } });
+ }
+ };
+
+ return (
+
+
+
+ Settings
+
+
+
+
+
Plebbit Options
+
Coming soon...
+
+
+ );
+}
+
+Modal.setAppElement("#root");
+
+export default SettingsModal;
\ No newline at end of file