Merge branch 'dev' into senpai
This commit is contained in:
commit
914b0a6ab6
@ -19,16 +19,26 @@ const ProjectModal: NextPage<ModalInput> = ({ project, visible, setVisible }) =>
|
|||||||
const projectNotFoundHtml = `<div class="${"error"}">Sorry! There is no data for this project. Please check back later to see if that changed!</div>`;
|
const projectNotFoundHtml = `<div class="${"error"}">Sorry! There is no data for this project. Please check back later to see if that changed!</div>`;
|
||||||
const projectServerErrorHtml = `<div class="${"error"}">Sorry! A server error happend when the project data was fetched!</div>`;
|
const projectServerErrorHtml = `<div class="${"error"}">Sorry! A server error happend when the project data was fetched!</div>`;
|
||||||
|
|
||||||
|
const generateFooter = (project: string, lastUpdate: string) => `<hr>
|
||||||
|
<div id="footer">
|
||||||
|
<div id="footer-text">
|
||||||
|
Last updated: ${lastUpdate} | <a href="https://git.c0ntroller.de/c0ntroller/frontpage-projects/src/branch/senpai/${project}.adoc">Document source</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (project && project !== "") {
|
if (project && project !== "") {
|
||||||
// TODO
|
// TODO
|
||||||
// set Spinner
|
// set Spinner
|
||||||
|
setProjectData("Loading...");
|
||||||
fetch(`/api/projects/${project}`).then((res) => {
|
fetch(`/api/projects/${project}`).then((res) => {
|
||||||
if (res.status === 404) setProjectData(projectNotFoundHtml);
|
if (res.status === 404) setProjectData(projectNotFoundHtml);
|
||||||
if (res.status !== 200) setProjectData(projectServerErrorHtml);
|
if (res.status !== 200) setProjectData(projectServerErrorHtml);
|
||||||
res.text().then(data => {
|
res.text().then(data => {
|
||||||
try {
|
try {
|
||||||
setProjectData(ad.convert(data).toString());
|
const adDoc = ad.load(data, {attributes: {showtitle: true}});
|
||||||
|
setProjectData(adDoc.convert(adDoc).toString() + generateFooter(project, adDoc.getAttribute("docdatetime")));
|
||||||
} catch {
|
} catch {
|
||||||
setProjectData(projectServerErrorHtml);
|
setProjectData(projectServerErrorHtml);
|
||||||
}
|
}
|
||||||
@ -54,7 +64,7 @@ const ProjectModal: NextPage<ModalInput> = ({ project, visible, setVisible }) =>
|
|||||||
if (!visible) return <></>;
|
if (!visible) return <></>;
|
||||||
|
|
||||||
return <div className={styles.modal} onKeyDown={onEscClose}>
|
return <div className={styles.modal} onKeyDown={onEscClose}>
|
||||||
<div ref={containerRef} className={styles.modalContainer}>
|
<div ref={containerRef} className={`${styles.modalContainer} asciidoc`}>
|
||||||
</div>
|
</div>
|
||||||
</div>;
|
</div>;
|
||||||
};
|
};
|
||||||
|
@ -29,7 +29,7 @@ const REPLInput: NextPage<REPLInputParams> = ({historyCallback, historyClear, in
|
|||||||
const [cmdHistory, setCmdHistory] = useState<string[]>([]);
|
const [cmdHistory, setCmdHistory] = useState<string[]>([]);
|
||||||
const [usrInputTmp, setUsrInputTmp] = useState<string>("");
|
const [usrInputTmp, setUsrInputTmp] = useState<string>("");
|
||||||
const [cmdIf, setCmdIf] = useState<CommandInterface>(new CommandInterface(modalManipulation, []));
|
const [cmdIf, setCmdIf] = useState<CommandInterface>(new CommandInterface(modalManipulation, []));
|
||||||
const { data: projects, error: projectsError } = useSWR("/api/projects", fetchProjects);
|
const { data: projects, error: projectsError } = useSWR("/api/projects?swr=1", fetchProjects);
|
||||||
|
|
||||||
const setInput = (inputRef: HTMLInputElement, input: string) => {
|
const setInput = (inputRef: HTMLInputElement, input: string) => {
|
||||||
const nativeSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value")?.set;
|
const nativeSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value")?.set;
|
||||||
|
4554
package-lock.json
generated
4554
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -9,7 +9,8 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"asciidoctor": "^2.2.5",
|
"asciidoctor": "^2.2.5",
|
||||||
"next": "12.0.7",
|
"next": "12.0.10",
|
||||||
|
"node-fetch": "^3.2.0",
|
||||||
"phosphor-react": "^1.3.1",
|
"phosphor-react": "^1.3.1",
|
||||||
"react": "17.0.2",
|
"react": "17.0.2",
|
||||||
"react-dom": "17.0.2",
|
"react-dom": "17.0.2",
|
||||||
@ -20,6 +21,7 @@
|
|||||||
"@types/react": "17.0.37",
|
"@types/react": "17.0.37",
|
||||||
"eslint": "7.32.0",
|
"eslint": "7.32.0",
|
||||||
"eslint-config-next": "12.0.4",
|
"eslint-config-next": "12.0.4",
|
||||||
|
"sass": "^1.49.7",
|
||||||
"typescript": "4.5.2"
|
"typescript": "4.5.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
79
pages/404.tsx
Normal file
79
pages/404.tsx
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
import type { NextPage } from "next";
|
||||||
|
import Link from "next/link";
|
||||||
|
import styles from "../styles/Errorpage.module.css";
|
||||||
|
|
||||||
|
const svg = `
|
||||||
|
<svg viewBox="30 -20 450 280" x="0" y="0">
|
||||||
|
<!-- Box -->
|
||||||
|
<polygon points="100,70 170,0 370,50 370,180" style="fill:#b58747;" />
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="shadow_grad1" x1="50%" y1="0%" x2="0%" y2="50%">
|
||||||
|
<stop offset="0%" style="stop-color:#876029;stop-opacity:1" />
|
||||||
|
<stop offset="100%" style="stop-color:#000000;stop-opacity:1" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="shadow_grad2" x1="0%" y1="0%" x2="50%" y2="100%">
|
||||||
|
<stop offset="0%" style="stop-color:#876029;stop-opacity:1" />
|
||||||
|
<stop offset="100%" style="stop-color:#000000;stop-opacity:1" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<polygon points="100,70 170,0 330,100 300,120" style="fill:#876029;fill:url(#shadow_grad1)" />
|
||||||
|
<polygon points="100,70 170,0 170,130 100,200, 100,70" style="fill:#876029;fill:url(#shadow_grad2)"/>
|
||||||
|
<line x1="170" y1="0" x2="370" y2="50" style="stroke:#694f2c;stroke-width:5;stroke-linecap:round;"/>
|
||||||
|
<line x1="170" y1="0" x2="170" y2="130" style="stroke:#694f2c;stroke-width:5;stroke-linecap:round;"/>
|
||||||
|
<!-- Katzenschweif -->
|
||||||
|
<path id="${styles.schweif}" d="M 280,120 C 250 100, 310 70, 320 20" style="fill:transparent;stroke:black;stroke-width:10;stroke-linecap:round" />
|
||||||
|
<!-- Box-linien -->
|
||||||
|
<polygon points="100,70 300,120 370,50 370,180 300,250 100,200" style="fill:#d19b4f;" />
|
||||||
|
<g style="stroke:#694f2c;stroke-width:5;stroke-linecap:round;">
|
||||||
|
<line x1="100" y1="70" x2="100" y2="200" />
|
||||||
|
<line x1="100" y1="200" x2="300" y2="250" />
|
||||||
|
<line x1="300" y1="250" x2="300" y2="120" />
|
||||||
|
<line x1="100" y1="70" x2="300" y2="120" />
|
||||||
|
<line x1="300" y1="120" x2="370" y2="50" />
|
||||||
|
<line x1="300" y1="250" x2="370" y2="180" />
|
||||||
|
<line x1="370" y1="50" x2="370" y2="180" />
|
||||||
|
</g>
|
||||||
|
<!-- Lappen-rechts -->
|
||||||
|
<polygon points="300,120 350,150 420,80 370,50" style="fill:#b58747;" />
|
||||||
|
<g style="stroke:#694f2c;stroke-width:5;stroke-linecap:round;">
|
||||||
|
<line x1="300" y1="120" x2="370" y2="50" />
|
||||||
|
<line x1="300" y1="120" x2="350" y2="150" />
|
||||||
|
<line x1="350" y1="150" x2="420" y2="80" />
|
||||||
|
<line x1="370" y1="50" x2="420" y2="80" />
|
||||||
|
</g>
|
||||||
|
<!-- Lappen-links -->
|
||||||
|
<polygon points="100,70 50,100 120,30 170,0" style="fill:#b58747;" />
|
||||||
|
<g style="stroke:#694f2c;stroke-width:5;stroke-linecap:round;">
|
||||||
|
<line x1="100" y1="70" x2="170" y2="0" />
|
||||||
|
<line x1="100" y1="70" x2="50" y2="100" />
|
||||||
|
<line x1="50" y1="100" x2="120" y2="30" />
|
||||||
|
<line x1="170" y1="0" x2="120" y2="30" />
|
||||||
|
</g>
|
||||||
|
<!-- Text -->
|
||||||
|
<text x="120" y="120" style="font-size:4em;font-weight:bold;fill:#000000;transform:rotateX(40deg) rotateY(21deg);">404</text>
|
||||||
|
<!-- Killeraugen -->
|
||||||
|
<ellipse cx="275" cy="150" rx="32" ry="20" style="fill:#291e0f;transform:rotateZ(12deg)" />
|
||||||
|
<ellipse cx="266" cy="153" rx="7" ry="5" style="fill:#4a6b2a;transform:rotateZ(12deg)" />
|
||||||
|
<ellipse cx="266" cy="153" rx="2" ry="5" style="fill:#000000;transform:rotateZ(12deg)" />
|
||||||
|
<ellipse cx="285" cy="153" rx="7" ry="5" style="fill:#4a6b2a;transform:rotateZ(12deg)" />
|
||||||
|
<ellipse cx="285" cy="153" rx="2" ry="5" style="fill:#000000;transform:rotateZ(12deg)" />
|
||||||
|
<rect id="${styles.blinzeln}" width="40" height="22" x="255" y="139" style="fill:#291e0f;transform:rotateZ(12deg);" />
|
||||||
|
</svg>
|
||||||
|
`;
|
||||||
|
|
||||||
|
const Custom404: NextPage = () => {
|
||||||
|
return <div className={styles.container}>
|
||||||
|
<div id={styles.wrapper}>
|
||||||
|
<div id={styles.box} dangerouslySetInnerHTML={{__html: svg}}>
|
||||||
|
</div>
|
||||||
|
<div id={styles.errorText}>
|
||||||
|
The site you requested could not be found.<br/>
|
||||||
|
<Link href="/"><a>> Back to the main page <</a></Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Custom404;
|
79
pages/500.tsx
Normal file
79
pages/500.tsx
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
import type { NextPage } from "next";
|
||||||
|
import Link from "next/link";
|
||||||
|
import styles from "../styles/Errorpage.module.css";
|
||||||
|
|
||||||
|
const svg = `
|
||||||
|
<svg viewBox="30 -20 450 280" x="0" y="0">
|
||||||
|
<!-- Box -->
|
||||||
|
<polygon points="100,70 170,0 370,50 370,180" style="fill:#b58747;" />
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="shadow_grad1" x1="50%" y1="0%" x2="0%" y2="50%">
|
||||||
|
<stop offset="0%" style="stop-color:#876029;stop-opacity:1" />
|
||||||
|
<stop offset="100%" style="stop-color:#000000;stop-opacity:1" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="shadow_grad2" x1="0%" y1="0%" x2="50%" y2="100%">
|
||||||
|
<stop offset="0%" style="stop-color:#876029;stop-opacity:1" />
|
||||||
|
<stop offset="100%" style="stop-color:#000000;stop-opacity:1" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<polygon points="100,70 170,0 330,100 300,120" style="fill:#876029;fill:url(#shadow_grad1)" />
|
||||||
|
<polygon points="100,70 170,0 170,130 100,200, 100,70" style="fill:#876029;fill:url(#shadow_grad2)"/>
|
||||||
|
<line x1="170" y1="0" x2="370" y2="50" style="stroke:#694f2c;stroke-width:5;stroke-linecap:round;"/>
|
||||||
|
<line x1="170" y1="0" x2="170" y2="130" style="stroke:#694f2c;stroke-width:5;stroke-linecap:round;"/>
|
||||||
|
<!-- Katzenschweif -->
|
||||||
|
<path id="${styles.schweif}" d="M 280,120 C 250 100, 310 70, 320 20" style="fill:transparent;stroke:black;stroke-width:10;stroke-linecap:round" />
|
||||||
|
<!-- Box-linien -->
|
||||||
|
<polygon points="100,70 300,120 370,50 370,180 300,250 100,200" style="fill:#d19b4f;" />
|
||||||
|
<g style="stroke:#694f2c;stroke-width:5;stroke-linecap:round;">
|
||||||
|
<line x1="100" y1="70" x2="100" y2="200" />
|
||||||
|
<line x1="100" y1="200" x2="300" y2="250" />
|
||||||
|
<line x1="300" y1="250" x2="300" y2="120" />
|
||||||
|
<line x1="100" y1="70" x2="300" y2="120" />
|
||||||
|
<line x1="300" y1="120" x2="370" y2="50" />
|
||||||
|
<line x1="300" y1="250" x2="370" y2="180" />
|
||||||
|
<line x1="370" y1="50" x2="370" y2="180" />
|
||||||
|
</g>
|
||||||
|
<!-- Lappen-rechts -->
|
||||||
|
<polygon points="300,120 350,150 420,80 370,50" style="fill:#b58747;" />
|
||||||
|
<g style="stroke:#694f2c;stroke-width:5;stroke-linecap:round;">
|
||||||
|
<line x1="300" y1="120" x2="370" y2="50" />
|
||||||
|
<line x1="300" y1="120" x2="350" y2="150" />
|
||||||
|
<line x1="350" y1="150" x2="420" y2="80" />
|
||||||
|
<line x1="370" y1="50" x2="420" y2="80" />
|
||||||
|
</g>
|
||||||
|
<!-- Lappen-links -->
|
||||||
|
<polygon points="100,70 50,100 120,30 170,0" style="fill:#b58747;" />
|
||||||
|
<g style="stroke:#694f2c;stroke-width:5;stroke-linecap:round;">
|
||||||
|
<line x1="100" y1="70" x2="170" y2="0" />
|
||||||
|
<line x1="100" y1="70" x2="50" y2="100" />
|
||||||
|
<line x1="50" y1="100" x2="120" y2="30" />
|
||||||
|
<line x1="170" y1="0" x2="120" y2="30" />
|
||||||
|
</g>
|
||||||
|
<!-- Text -->
|
||||||
|
<text x="120" y="120" style="font-size:4em;font-weight:bold;fill:#000000;transform:rotateX(40deg) rotateY(21deg);">500</text>
|
||||||
|
<!-- Killeraugen -->
|
||||||
|
<ellipse cx="275" cy="150" rx="32" ry="20" style="fill:#291e0f;transform:rotateZ(12deg)" />
|
||||||
|
<ellipse cx="266" cy="153" rx="7" ry="5" style="fill:#4a6b2a;transform:rotateZ(12deg)" />
|
||||||
|
<ellipse cx="266" cy="153" rx="2" ry="5" style="fill:#000000;transform:rotateZ(12deg)" />
|
||||||
|
<ellipse cx="285" cy="153" rx="7" ry="5" style="fill:#4a6b2a;transform:rotateZ(12deg)" />
|
||||||
|
<ellipse cx="285" cy="153" rx="2" ry="5" style="fill:#000000;transform:rotateZ(12deg)" />
|
||||||
|
<rect id="${styles.blinzeln}" width="40" height="22" x="255" y="139" style="fill:#291e0f;transform:rotateZ(12deg);" />
|
||||||
|
</svg>
|
||||||
|
`;
|
||||||
|
|
||||||
|
const Custom404: NextPage = () => {
|
||||||
|
return <div className={styles.container}>
|
||||||
|
<div id={styles.wrapper}>
|
||||||
|
<div id={styles.box} dangerouslySetInnerHTML={{__html: svg}}>
|
||||||
|
</div>
|
||||||
|
<div id={styles.errorText}>
|
||||||
|
The site you requested could not be found.<br/>
|
||||||
|
<Link href="/"><a>> Back to the main page <</a></Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Custom404;
|
@ -1,6 +1,7 @@
|
|||||||
import type { AppProps } from "next/app";
|
import type { AppProps } from "next/app";
|
||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import "../styles/globals.css";
|
import "../styles/globals.css";
|
||||||
|
import "../styles/customAsciidoc.scss";
|
||||||
|
|
||||||
function MyApp({ Component, pageProps }: AppProps) {
|
function MyApp({ Component, pageProps }: AppProps) {
|
||||||
return <>
|
return <>
|
||||||
|
@ -18,7 +18,7 @@ export default function handler(req: NextApiRequest, res: NextApiResponse<string
|
|||||||
try {
|
try {
|
||||||
const path = resolve("./public", "projects", "list.json");
|
const path = resolve("./public", "projects", "list.json");
|
||||||
const data = readFileSync(path).toString();
|
const data = readFileSync(path).toString();
|
||||||
console.debug("[API/projects]\tRequest for project list");
|
if (!req.query.swr) console.debug("[API/projects]\tRequest for project list");
|
||||||
res.status(200).send(data);
|
res.status(200).send(data);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(`[API/projects]\tError in request for project list! Code: ${(err as IFileError).code}`);
|
console.error(`[API/projects]\tError in request for project list! Code: ${(err as IFileError).code}`);
|
||||||
|
61
styles/Errorpage.module.css
Normal file
61
styles/Errorpage.module.css
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
.container {
|
||||||
|
background: #222222;
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
#errorText {
|
||||||
|
margin-top:2vh;
|
||||||
|
color: #fff;
|
||||||
|
text-align:center;
|
||||||
|
font-family:Arial, Helvetica, sans-serif;
|
||||||
|
font-size:150%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#wrapper a:link, #wrapper a:visited, #wrapper a:hover, #wrapper a:active {
|
||||||
|
color:#fff;
|
||||||
|
font-weight:bold;
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#wrapper {
|
||||||
|
margin: auto;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
#box {
|
||||||
|
max-width: 800px;
|
||||||
|
margin:auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes schweif {
|
||||||
|
0% {d: path("M 280,120 C 250 100, 310 70, 320 20");}
|
||||||
|
12.5% {d: path("M 280,120 C 260 100, 280 70, 310 20");}
|
||||||
|
25% {d: path("M 280,120 C 280 100, 260 70, 290 20");}
|
||||||
|
37.5% {d: path("M 280,120 C 280 100, 240 70, 270 20");}
|
||||||
|
50% {d: path("M 280,120 C 280 100, 240 70, 230 20");}
|
||||||
|
62.5% {d: path("M 280,120 C 270 100, 260 70, 250 20");}
|
||||||
|
75% {d: path("M 280,120 C 270 100, 280 70, 270 20");}
|
||||||
|
87.5% {d: path("M 280,120 C 250 100, 310 70, 290 20");}
|
||||||
|
100% {d: path("M 280,120 C 250 100, 310 70, 320 20");}
|
||||||
|
}
|
||||||
|
|
||||||
|
#schweif {
|
||||||
|
animation-name: schweif;
|
||||||
|
animation-duration: 2s;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
#box svg:hover > #schweif {
|
||||||
|
animation-duration:1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
#blinzeln {
|
||||||
|
fill-opacity:1;
|
||||||
|
transition: fill-opacity 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
#box svg:hover > #blinzeln {
|
||||||
|
fill-opacity:0;
|
||||||
|
}
|
@ -10,10 +10,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.modalContainer {
|
.modalContainer {
|
||||||
background: #333;
|
background: #272b30;
|
||||||
color: #ccc;
|
color: #ccc;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
|
overflow-y: auto;
|
||||||
}
|
}
|
442
styles/asciidocBootSlate.css
Normal file
442
styles/asciidocBootSlate.css
Normal file
@ -0,0 +1,442 @@
|
|||||||
|
/* MIT License
|
||||||
|
|
||||||
|
Copyright (c) [year] [fullname]
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE. */
|
||||||
|
|
||||||
|
|
||||||
|
/* Source: https://raw.githubusercontent.com/darshandsoni/asciidoctor-skins/c98a8ab9b27571e5b63d75912a3c753cc72ed8e4/css/boot-slate.css */
|
||||||
|
|
||||||
|
|
||||||
|
/* Based on Slate from Bootswatch (https://bootswatch.com/slate/) */
|
||||||
|
|
||||||
|
|
||||||
|
/* document body (contains all content) */
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.42857143;
|
||||||
|
color: #c8c8c8;
|
||||||
|
background-color: #272b30;
|
||||||
|
margin-left: 10%;
|
||||||
|
margin-right: 10%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* document header (contains title etc) */
|
||||||
|
|
||||||
|
#header {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#header>h1 {
|
||||||
|
border-bottom: 1px solid #ddddd8;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* headings */
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 1.1;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3 {
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 4em;
|
||||||
|
/* font-size: 36px; */
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h5 {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* plain paragraph text */
|
||||||
|
|
||||||
|
.paragraph {
|
||||||
|
/* font-family: sans-serif; */
|
||||||
|
margin: 0 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
/* font-family: sans-serif; */
|
||||||
|
margin: 0 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* blockquote text */
|
||||||
|
|
||||||
|
.quoteblock {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
padding: 10px 20px;
|
||||||
|
margin: 0 0 20px;
|
||||||
|
font-size: 17.5px;
|
||||||
|
border-left: 5px solid #7a8288;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote p:last-child,
|
||||||
|
blockquote ul:last-child,
|
||||||
|
blockquote ol:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.blockquote-reverse,
|
||||||
|
blockquote.pull-right {
|
||||||
|
padding-right: 15px;
|
||||||
|
padding-left: 0;
|
||||||
|
border-right: 5px solid #7a8288;
|
||||||
|
border-left: 0;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.blockquote-reverse footer:before,
|
||||||
|
blockquote.pull-right footer:before,
|
||||||
|
.blockquote-reverse small:before,
|
||||||
|
blockquote.pull-right small:before,
|
||||||
|
.blockquote-reverse .small:before,
|
||||||
|
blockquote.pull-right .small:before {
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
|
||||||
|
.blockquote-reverse footer:after,
|
||||||
|
blockquote.pull-right footer:after,
|
||||||
|
.blockquote-reverse small:after,
|
||||||
|
blockquote.pull-right small:after,
|
||||||
|
.blockquote-reverse .small:after,
|
||||||
|
blockquote.pull-right .small:after {
|
||||||
|
content: '\00A0 \2014';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* blockquote attribution text */
|
||||||
|
|
||||||
|
.attribution,
|
||||||
|
.cite,
|
||||||
|
blockquote footer,
|
||||||
|
blockquote small,
|
||||||
|
blockquote .small {
|
||||||
|
display: block;
|
||||||
|
line-height: 1.42857143;
|
||||||
|
color: #7a8288;
|
||||||
|
}
|
||||||
|
|
||||||
|
.attribution:before,
|
||||||
|
blockquote footer:before,
|
||||||
|
blockquote small:before,
|
||||||
|
blockquote .small:before {
|
||||||
|
content: '\2014 \00A0';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* unordered list */
|
||||||
|
|
||||||
|
ul,
|
||||||
|
ol {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul ul,
|
||||||
|
ol ul,
|
||||||
|
ul ol,
|
||||||
|
ol ol {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* links */
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #ffffff;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover,
|
||||||
|
a:focus {
|
||||||
|
color: #ffffff;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:focus {
|
||||||
|
outline: 5px auto -webkit-focus-ring-color;
|
||||||
|
outline-offset: -2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* horizontal rules */
|
||||||
|
|
||||||
|
hr {
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
border: 0;
|
||||||
|
border-top: 1px solid #1c1e22;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* table */
|
||||||
|
|
||||||
|
table {
|
||||||
|
background-color: transparent;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
margin-bottom: 21px;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
table col[class*="col-"] {
|
||||||
|
position: static;
|
||||||
|
float: none;
|
||||||
|
display: table-column;
|
||||||
|
}
|
||||||
|
|
||||||
|
table td[class*="col-"],
|
||||||
|
table th[class*="col-"] {
|
||||||
|
position: static;
|
||||||
|
float: none;
|
||||||
|
display: table-cell;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* table caption */
|
||||||
|
|
||||||
|
caption {
|
||||||
|
padding-top: 8px;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
color: #7a8288;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* table header row */
|
||||||
|
|
||||||
|
thead {
|
||||||
|
border-bottom: 2px solid #1c1e22;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* table header cell */
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
padding-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* table footer */
|
||||||
|
|
||||||
|
tfoot {
|
||||||
|
color: #807F81;
|
||||||
|
border-top: 1px solid #1c1e22;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* table cell */
|
||||||
|
|
||||||
|
td {
|
||||||
|
border-top: 1px solid #1c1e22;
|
||||||
|
}
|
||||||
|
|
||||||
|
td p {
|
||||||
|
margin: auto;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* table body */
|
||||||
|
|
||||||
|
tbody>tr:nth-of-type(odd) {
|
||||||
|
background-color: #353a41;
|
||||||
|
}
|
||||||
|
|
||||||
|
tbody>tr:hover {
|
||||||
|
background-color: #49515a;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* inline code */
|
||||||
|
|
||||||
|
code,
|
||||||
|
kbd,
|
||||||
|
pre,
|
||||||
|
samp {
|
||||||
|
font-family: monospace, monospace;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
padding: 2px 4px;
|
||||||
|
font-size: 90%;
|
||||||
|
color: #3a3f44;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
kbd {
|
||||||
|
padding: 2px 4px;
|
||||||
|
font-size: 90%;
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #333333;
|
||||||
|
border-radius: 3px;
|
||||||
|
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
kbd kbd {
|
||||||
|
padding: 0;
|
||||||
|
font-size: 100%;
|
||||||
|
font-weight: bold;
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
display: block;
|
||||||
|
padding: 9.5px;
|
||||||
|
margin: 0 0 10px;
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 1.42857143;
|
||||||
|
word-break: break-all;
|
||||||
|
word-wrap: break-word;
|
||||||
|
color: #3a3f44;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
border: 1px solid #cccccc;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre code {
|
||||||
|
padding: 0;
|
||||||
|
font-size: inherit;
|
||||||
|
color: inherit;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
background-color: transparent;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* image */
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* footer section */
|
||||||
|
|
||||||
|
#footer {
|
||||||
|
margin-top: 22px;
|
||||||
|
padding: 14px 16px;
|
||||||
|
background-color: #3a3f44;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* responsiveness fixes */
|
||||||
|
|
||||||
|
video {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* table of Contents sidebar */
|
||||||
|
|
||||||
|
#toctitle {
|
||||||
|
color: #272b30;
|
||||||
|
}
|
||||||
|
|
||||||
|
#toc ul {
|
||||||
|
display: inline;
|
||||||
|
list-style-type: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
#toc li {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#toc a {
|
||||||
|
background-color: #3a3f44;
|
||||||
|
float: left;
|
||||||
|
text-align: center;
|
||||||
|
padding: 14px 16px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#toc li a:hover {
|
||||||
|
background-color: #272b2e;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#toc:after {
|
||||||
|
content: " ";
|
||||||
|
visibility: hidden;
|
||||||
|
display: block;
|
||||||
|
height: 0;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media all and (max-width: 600px) {
|
||||||
|
table {
|
||||||
|
width: 55vw!important;
|
||||||
|
font-size: 3vw;
|
||||||
|
}
|
||||||
|
}
|
25
styles/customAsciidoc.scss
Normal file
25
styles/customAsciidoc.scss
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
.asciidoc {
|
||||||
|
/*@import "../node_modules/@asciidoctor/core/dist/css/asciidoctor.css";*/
|
||||||
|
@import "./asciidocBootSlate";
|
||||||
|
h1 {
|
||||||
|
color: var(--repl-color-link, #2ac02a);
|
||||||
|
font-size: 3em;
|
||||||
|
}
|
||||||
|
h2,
|
||||||
|
h3 {
|
||||||
|
font-weight: bold;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
color: var(--repl-color, #188a18);
|
||||||
|
}
|
||||||
|
font-family: sans-serif;
|
||||||
|
#preamble {
|
||||||
|
font-style: italic;
|
||||||
|
font-size: 120%;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user