0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-15 19:12:38 +00:00

Merge branch 'master' into Fold-Buttons-in-Editor

This commit is contained in:
Trevor Buckner
2023-11-08 17:07:04 -05:00
committed by GitHub
13 changed files with 15302 additions and 15051 deletions

View File

@@ -5,12 +5,12 @@
version: 2.1 version: 2.1
orbs: orbs:
node: circleci/node@3.0.0 node: circleci/node@5.1.0
jobs: jobs:
build: build:
docker: docker:
- image: cimg/node:16.11.0 - image: cimg/node:20.8.0
- image: mongo:4.4 - image: mongo:4.4
working_directory: ~/homebrewery working_directory: ~/homebrewery
@@ -27,7 +27,7 @@ jobs:
# fallback to using the latest cache if no exact match is found # fallback to using the latest cache if no exact match is found
- v1-dependencies- - v1-dependencies-
- run: sudo npm install -g npm@8.10.0 - run: sudo npm install -g npm@10.2.0
- node/install-packages: - node/install-packages:
app-dir: ~/homebrewery app-dir: ~/homebrewery
cache-path: node_modules cache-path: node_modules
@@ -45,7 +45,7 @@ jobs:
test: test:
docker: docker:
- image: cimg/node:16.11.0 - image: cimg/node:20.8.0
working_directory: ~/homebrewery working_directory: ~/homebrewery
parallelism: 1 parallelism: 1

View File

@@ -80,6 +80,56 @@ pre {
## changelog ## changelog
For a full record of development, visit our [Github Page](https://github.com/naturalcrit/homebrewery). For a full record of development, visit our [Github Page](https://github.com/naturalcrit/homebrewery).
### Friday 13/10/2023 - v3.10.0
{{taskList
##### G-Ambatte
* [x] Fix user preferred save location being ignored
Fixes issue [#2993](https://github.com/naturalcrit/homebrewery/issues/2993)
* [x] Fix crash to white screen when starting new brews while not signed in
Fixes issue [#2999](https://github.com/naturalcrit/homebrewery/issues/2999)
* [x] Fix FreeBSD install script
Fixes issue [#3005](https://github.com/naturalcrit/homebrewery/issues/3005)
* [x] Fix *"This brew has been changed on another device"* triggering when manually saving during auto-save
Fixes issue [#2641](https://github.com/naturalcrit/homebrewery/issues/2641)
* [x] Fix Firefox different column-flow behavior
Fixes issue [#2982](https://github.com/naturalcrit/homebrewery/issues/2982)
* [x] Fix brew titles being mis-sorted on user page
Fixes issue [#2775](https://github.com/naturalcrit/homebrewery/issues/2775)
* [x] Text Editor themes now available via new drop-down
Fixes issue [#362](https://github.com/naturalcrit/homebrewery/issues/362)
##### 5e-Cleric
* [x] New {{openSans **PHB → {{fas,fa-quote-right}} QUOTE** }} snippet for V3!
Fixes issue [#2920](https://github.com/naturalcrit/homebrewery/issues/2920)
* [x] Several updates and fixes to FAQ and Welcome page
Fixes issue [#2729](https://github.com/naturalcrit/homebrewery/issues/2729),
[#2787](https://github.com/naturalcrit/homebrewery/issues/2787)
##### Gazook89
* [x] Add syntax highlighting for Definition Lists <code>:\:</code>
}}
### Thursday 17/08/2023 - v3.9.2 ### Thursday 17/08/2023 - v3.9.2
{{taskList {{taskList
@@ -124,9 +174,10 @@ Fixes issue [#2920](https://github.com/naturalcrit/homebrewery/issues/2920)
##### Gazook89 ##### Gazook89
* [x] Adjustments to improve mobile viewing * [x] Adjustments to improve mobile viewing
}} }}
### Wednesday 28/06/2023 - v3.9.1 ### Wednesday 28/06/2023 - v3.9.1
{{taskList {{taskList
@@ -171,6 +222,8 @@ Fixes issue [#2790](https://github.com/naturalcrit/homebrewery/issues/2790)
Fixes issue [#2784](https://github.com/naturalcrit/homebrewery/issues/2784) Fixes issue [#2784](https://github.com/naturalcrit/homebrewery/issues/2784)
}} }}
\page
### Wednesday 12/04/2023 - v3.8.0 ### Wednesday 12/04/2023 - v3.8.0
{{taskList {{taskList
@@ -232,8 +285,6 @@ Fixes issues [#2731](https://github.com/naturalcrit/homebrewery/issues/2731)
}} }}
\page
### Monday 13/03/2023 - v3.7.2 ### Monday 13/03/2023 - v3.7.2
{{taskList {{taskList
@@ -314,7 +365,11 @@ Fixes issues [#2603](https://github.com/naturalcrit/homebrewery/issues/2603)
* [x] Add message to refresh the browser if the user is missing an update to the Homebrewery * [x] Add message to refresh the browser if the user is missing an update to the Homebrewery
Fixes issues [#2583](https://github.com/naturalcrit/homebrewery/issues/2583) Fixes issues [#2583](https://github.com/naturalcrit/homebrewery/issues/2583)
}}
\page
{{taskList
##### G-Ambatte ##### G-Ambatte
* [x] Auto-compile Themes CSS on development server * [x] Auto-compile Themes CSS on development server
@@ -324,7 +379,6 @@ Fixes issues [#2583](https://github.com/naturalcrit/homebrewery/issues/2583)
* [x] Fix cloned brews inheriting the parent view count * [x] Fix cloned brews inheriting the parent view count
}} }}
\page
### Friday 23/12/2022 - v3.5.0 ### Friday 23/12/2022 - v3.5.0
{{taskList {{taskList

View File

@@ -149,6 +149,17 @@ const Editor = createClass({
codeMirror.addLineClass(lineNumber, 'text', 'columnSplit'); codeMirror.addLineClass(lineNumber, 'text', 'columnSplit');
} }
// definition lists
if(line.includes('::')){
const regex = /^([^\n]*?)::([^\n]*)(?:\n|$)/ym;
let match;
while ((match = regex.exec(line)) != null){
codeMirror.markText({ line: lineNumber, ch: line.indexOf(match[0]) }, { line: lineNumber, ch: line.indexOf(match[0]) + match[0].length }, { className: 'define' });
codeMirror.markText({ line: lineNumber, ch: line.indexOf(match[1]) }, { line: lineNumber, ch: line.indexOf(match[1]) + match[1].length }, { className: 'term' });
codeMirror.markText({ line: lineNumber, ch: line.indexOf(match[2]) }, { line: lineNumber, ch: line.indexOf(match[2]) + match[2].length }, { className: 'definition' });
}
}
// Highlight injectors {style} // Highlight injectors {style}
if(line.includes('{') && line.includes('}')){ if(line.includes('{') && line.includes('}')){
const regex = /(?:^|[^{\n])({(?=((?::(?:"[\w,\-()#%. ]*"|[\w\-()#%.]*)|[^"':{}\s]*)*))\2})/gm; const regex = /(?:^|[^{\n])({(?=((?::(?:"[\w,\-()#%. ]*"|[\w\-()#%.]*)|[^"':{}\s]*)*))\2})/gm;

View File

@@ -7,59 +7,67 @@
height : 100%; height : 100%;
.pageLine { .pageLine {
background : #33333328; background : #33333328;
border-top : #339 solid 1px; border-top : #333399 solid 1px;
} }
.editor-page-count { .editor-page-count {
color : grey;
float : right; float : right;
color : grey;
} }
.columnSplit { .columnSplit {
font-style : italic; font-style : italic;
color : grey; color : grey;
background-color : fade(#299, 15%); background-color : fade(#229999, 15%);
border-bottom : #299 solid 1px; border-bottom : #229999 solid 1px;
}
.define {
&:not(.term):not(.definition) {
font-weight : bold;
color : #949494;
background : #E5E5E5;
border-radius : 3px;
}
&.term { color : rgb(96, 117, 143); }
&.definition { color : rgb(97, 57, 178); }
} }
.block:not(.cm-comment) { .block:not(.cm-comment) {
color : purple;
font-weight : bold; font-weight : bold;
color : purple;
//font-style: italic; //font-style: italic;
} }
.inline-block:not(.cm-comment) { .inline-block:not(.cm-comment) {
color : red;
font-weight : bold; font-weight : bold;
color : red;
//font-style: italic; //font-style: italic;
} }
.injection:not(.cm-comment) { .injection:not(.cm-comment) {
color : green;
font-weight : bold; font-weight : bold;
color : green;
} }
} }
.brewJump { .brewJump {
position : absolute; position : absolute;
background-color : @teal; right : 20px;
cursor : pointer; bottom : 20px;
width : 30px; z-index : 1000000;
height : 30px;
display : flex; display : flex;
align-items : center; align-items : center;
bottom : 20px;
right : 20px;
z-index : 1000000;
justify-content : center; justify-content : center;
.tooltipLeft("Jump to brew page"); width : 30px;
height : 30px;
cursor : pointer;
background-color : @teal;
.tooltipLeft('Jump to brew page');
} }
.editorToolbar { .editorToolbar {
position : absolute; position : absolute;
top : 5px; top : 5px;
left : 50%; left : 50%;
color: black;
font-size: 13px;
z-index : 9; z-index : 9;
span { font-size : 13px;
padding: 2px 5px; color : black;
} span { padding : 2px 5px; }
} }
} }

View File

@@ -75,7 +75,9 @@ const errorIndex = (props)=>{
**Brew Title:** ${props.brew.brewTitle || 'Unable to show title'} **Brew Title:** ${props.brew.brewTitle || 'Unable to show title'}
**Current Authors:** ${props.brew.authors?.map((author)=>{return `${author}`;}).join(', ') || 'Unable to list authors'}`, **Current Authors:** ${props.brew.authors?.map((author)=>{return `${author}`;}).join(', ') || 'Unable to list authors'}
[Click here to be redirected to the brew's share page.](/share/${props.brew.shareId})`,
// User is not signed in; must be a user on the Authors List // User is not signed in; must be a user on the Authors List
'04' : dedent` '04' : dedent`

618
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,10 @@
{ {
"name": "homebrewery", "name": "homebrewery",
"description": "Create authentic looking D&D homebrews using only markdown", "description": "Create authentic looking D&D homebrews using only markdown",
"version": "3.9.2", "version": "3.10.0",
"engines": { "engines": {
"npm": "^10.1.x", "npm": "^10.2.x",
"node": ">=20.7.x" "node": "^20.8.x"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@@ -79,11 +79,11 @@
] ]
}, },
"dependencies": { "dependencies": {
"@babel/core": "^7.22.20", "@babel/core": "^7.23.2",
"@babel/plugin-transform-runtime": "^7.22.15", "@babel/plugin-transform-runtime": "^7.23.2",
"@babel/preset-env": "^7.22.20", "@babel/preset-env": "^7.23.2",
"@babel/preset-react": "^7.22.15", "@babel/preset-react": "^7.22.15",
"@googleapis/drive": "^8.3.1", "@googleapis/drive": "^8.4.0",
"body-parser": "^1.20.2", "body-parser": "^1.20.2",
"classnames": "^2.3.2", "classnames": "^2.3.2",
"codemirror": "^5.65.6", "codemirror": "^5.65.6",
@@ -99,30 +99,30 @@
"less": "^3.13.1", "less": "^3.13.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"marked": "5.1.1", "marked": "5.1.1",
"marked-extended-tables": "^1.0.6", "marked-extended-tables": "^1.0.7",
"marked-gfm-heading-id": "^3.1.0", "marked-gfm-heading-id": "^3.1.0",
"marked-smartypants-lite": "^1.0.0", "marked-smartypants-lite": "^1.0.1",
"markedLegacy": "npm:marked@^0.3.19", "markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.29.4", "moment": "^2.29.4",
"mongoose": "^7.5.2", "mongoose": "^7.6.4",
"nanoid": "3.3.4", "nanoid": "3.3.4",
"nconf": "^0.12.0", "nconf": "^0.12.1",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-frame-component": "^4.1.3", "react-frame-component": "^4.1.3",
"react-router-dom": "6.16.0", "react-router-dom": "6.17.0",
"sanitize-filename": "1.6.3", "sanitize-filename": "1.6.3",
"superagent": "^8.1.2", "superagent": "^8.1.2",
"vitreum": "git+https://git@github.com/calculuschild/vitreum.git" "vitreum": "git+https://git@github.com/calculuschild/vitreum.git"
}, },
"devDependencies": { "devDependencies": {
"eslint": "^8.50.0", "eslint": "^8.53.0",
"eslint-plugin-jest": "^27.4.0", "eslint-plugin-jest": "^27.6.0",
"eslint-plugin-react": "^7.33.2", "eslint-plugin-react": "^7.33.2",
"jest": "^29.7.0", "jest": "^29.7.0",
"jest-expect-message": "^1.1.3", "jest-expect-message": "^1.1.3",
"postcss-less": "^6.0.0", "postcss-less": "^6.0.0",
"stylelint": "^15.10.3", "stylelint": "^15.11.0",
"stylelint-config-recess-order": "^4.3.0", "stylelint-config-recess-order": "^4.3.0",
"stylelint-config-recommended": "^13.0.0", "stylelint-config-recommended": "^13.0.0",
"stylelint-stylistic": "^0.4.3", "stylelint-stylistic": "^0.4.3",

View File

@@ -101,7 +101,10 @@ fs.emptyDirSync('./build');
//v==---------------------------MOVE CM EDITOR THEMES -----------------------------==v// //v==---------------------------MOVE CM EDITOR THEMES -----------------------------==v//
editorThemeFiles = fs.readdirSync('./node_modules/codemirror/theme'); const editorThemesBuildDir = './build/homebrew/cm-themes';
await fs.copy('./node_modules/codemirror/theme', editorThemesBuildDir);
await fs.copy('./themes/codeMirror/customThemes', editorThemesBuildDir);
editorThemeFiles = fs.readdirSync(editorThemesBuildDir);
const editorThemeFile = './themes/codeMirror/editorThemes.json'; const editorThemeFile = './themes/codeMirror/editorThemes.json';
if(fs.existsSync(editorThemeFile)) fs.rmSync(editorThemeFile); if(fs.existsSync(editorThemeFile)) fs.rmSync(editorThemeFile);
@@ -114,7 +117,7 @@ fs.emptyDirSync('./build');
stream.write('\n]\n'); stream.write('\n]\n');
stream.end(); stream.end();
await fs.copy('./node_modules/codemirror/theme', './build/homebrew/cm-themes');
await fs.copy('./themes/codeMirror', './build/homebrew/codeMirror'); await fs.copy('./themes/codeMirror', './build/homebrew/codeMirror');
//v==----------------------------- BUNDLE PACKAGES --------------------------------==v// //v==----------------------------- BUNDLE PACKAGES --------------------------------==v//
@@ -151,8 +154,6 @@ fs.emptyDirSync('./build');
// build(bundles); // build(bundles);
// //
})().catch(console.error);
//In development, set up LiveReload (refreshes browser), and Nodemon (restarts server) //In development, set up LiveReload (refreshes browser), and Nodemon (restarts server)
if(isDev){ if(isDev){
livereload('./build'); // Install the Chrome extension LiveReload to automatically refresh the browser livereload('./build'); // Install the Chrome extension LiveReload to automatically refresh the browser
@@ -162,3 +163,5 @@ if(isDev){
//watch : ['./server', './themes'], // Watch additional folders if needed //watch : ['./server', './themes'], // Watch additional folders if needed
}); });
} }
})().catch(console.error);

View File

@@ -327,6 +327,8 @@ app.get('/share/:id', asyncHandler(getBrew('share')), asyncHandler(async (req, r
type : 'article' type : 'article'
}; };
// increase visitor view count, do not include visits by author(s)
if(!brew.authors.includes(req.account?.username)){
if(req.params.id.length > 12 && !brew._id) { if(req.params.id.length > 12 && !brew._id) {
const googleId = brew.googleId; const googleId = brew.googleId;
const shareId = brew.shareId; const shareId = brew.shareId;
@@ -335,6 +337,7 @@ app.get('/share/:id', asyncHandler(getBrew('share')), asyncHandler(async (req, r
} else { } else {
await HomebrewModel.increaseView({ shareId: brew.shareId }); await HomebrewModel.increaseView({ shareId: brew.shareId });
} }
};
sanitizeBrew(req.brew, 'share'); sanitizeBrew(req.brew, 'share');
splitTextStyleAndMetadata(req.brew); splitTextStyleAndMetadata(req.brew);
return next(); return next();

View File

@@ -79,7 +79,7 @@ const api = {
if(accessType === 'edit' && (authorsExist && !(isAuthor || isInvited))) { if(accessType === 'edit' && (authorsExist && !(isAuthor || isInvited))) {
const accessError = { name: 'Access Error', status: 401 }; const accessError = { name: 'Access Error', status: 401 };
if(req.account){ if(req.account){
throw { ...accessError, message: 'User is not an Author', HBErrorCode: '03', authors: stub.authors, brewTitle: stub.title }; throw { ...accessError, message: 'User is not an Author', HBErrorCode: '03', authors: stub.authors, brewTitle: stub.title, shareId: stub.shareId };
} }
throw { ...accessError, message: 'User is not logged in', HBErrorCode: '04', authors: stub.authors, brewTitle: stub.title }; throw { ...accessError, message: 'User is not logged in', HBErrorCode: '04', authors: stub.authors, brewTitle: stub.title };
} }

View File

@@ -18,7 +18,7 @@
body { counter-reset : phb-page-numbers; } body { counter-reset : phb-page-numbers; }
* { -webkit-print-color-adjust : exact; } * { -webkit-print-color-adjust : exact; }
.useSansSerif() { .useSansSerif() {
font-family : "ScalySansRemake"; font-family : 'ScalySansRemake';
font-size : 0.318cm; font-size : 0.318cm;
line-height : 1.2em; line-height : 1.2em;
p,dl,ul,ol { line-height : 1.2em; } p,dl,ul,ol { line-height : 1.2em; }
@@ -57,7 +57,7 @@ body { counter-reset : phb-page-numbers; }
height : 279.4mm; height : 279.4mm;
padding : 1.4cm 1.9cm 1.7cm; padding : 1.4cm 1.9cm 1.7cm;
overflow : hidden; overflow : hidden;
font-family : "BookInsanityRemake"; font-family : 'BookInsanityRemake';
font-size : 0.34cm; font-size : 0.34cm;
counter-increment : phb-page-numbers; counter-increment : phb-page-numbers;
background-color : var(--HB_Color_Background); background-color : var(--HB_Color_Background);
@@ -114,7 +114,7 @@ body { counter-reset : phb-page-numbers; }
// * HEADERS // * HEADERS
// *****************************/ // *****************************/
h1,h2,h3,h4 { h1,h2,h3,h4 {
font-family : "MrEavesRemake"; font-family : 'MrEavesRemake';
font-weight : 800; font-weight : 800;
color : var(--HB_Color_HeaderText); color : var(--HB_Color_HeaderText);
} }
@@ -132,7 +132,7 @@ body { counter-reset : phb-page-numbers; }
margin-top : -0.3cm; margin-top : -0.3cm;
margin-bottom : -20px; margin-bottom : -20px;
margin-left : -40px; margin-left : -40px;
font-family : "SolberaImitationRemake"; font-family : 'SolberaImitationRemake';
font-size : 3.5cm; font-size : 3.5cm;
line-height : 1em; line-height : 1em;
color : rgba(0, 0, 0, 0); color : rgba(0, 0, 0, 0);
@@ -172,7 +172,7 @@ body { counter-reset : phb-page-numbers; }
h5 { h5 {
//margin-top : -0.02cm; //Font is misaligned. Shift up slightly //margin-top : -0.02cm; //Font is misaligned. Shift up slightly
//margin-bottom : 0.02cm; //margin-bottom : 0.02cm;
font-family : "ScalySansSmallCapsRemake"; font-family : 'ScalySansSmallCapsRemake';
font-size : 0.423cm; font-size : 0.423cm;
font-weight : 900; font-weight : 900;
line-height : 0.951em; //Font is misaligned. Shift up slightly line-height : 0.951em; //Font is misaligned. Shift up slightly
@@ -299,7 +299,7 @@ body { counter-reset : phb-page-numbers; }
.artist { .artist {
position : absolute; position : absolute;
width : auto; width : auto;
font-family : "WalterTurncoat"; font-family : 'WalterTurncoat';
font-size : 0.27cm; font-size : 0.27cm;
color : var(--HB_Color_CaptionText); color : var(--HB_Color_CaptionText);
text-align : center; text-align : center;
@@ -309,7 +309,7 @@ body { counter-reset : phb-page-numbers; }
text-indent : unset; text-indent : unset;
} }
h5 { h5 {
font-family : "WalterTurncoat"; font-family : 'WalterTurncoat';
font-size : 1.3em; font-size : 1.3em;
} }
a { a {
@@ -405,12 +405,9 @@ body { counter-reset : phb-page-numbers; }
} }
} }
h3 { h3 {
// margin-top : 0.05cm; //Font is misaligned. Shift up slightly font-family : 'ScalySansSmallCapsRemake';
padding-bottom : 0.05cm; font-size : 0.45cm;
font-family : "ScalySansRemake"; border-bottom : 1.5px solid var(--HB_Color_HeaderText);
font-weight : 800;
font-variant : small-caps;
border-bottom : 2px solid var(--HB_Color_HeaderText);
} }
//Triangle dividers //Triangle dividers
@@ -503,7 +500,7 @@ body { counter-reset : phb-page-numbers; }
// ************************************/ // ************************************/
code { code {
padding : 0px 4px; padding : 0px 4px;
font-family : 'Courier New', "Courier", monospace; font-family : 'Courier New', 'Courier', monospace;
font-size : 0.325; font-size : 0.325;
color : #58180D; color : #58180D;
overflow-wrap : break-word; overflow-wrap : break-word;
@@ -641,7 +638,7 @@ body { counter-reset : phb-page-numbers; }
h1 { h1 {
margin-top : 1.2cm; margin-top : 1.2cm;
margin-bottom : 0; margin-bottom : 0;
font-family : "NodestoCapsCondensed"; font-family : 'NodestoCapsCondensed';
font-size : 2.245cm; font-size : 2.245cm;
font-weight : normal; font-weight : normal;
line-height : 0.85em; line-height : 0.85em;
@@ -654,7 +651,7 @@ body { counter-reset : phb-page-numbers; }
drop-shadow(0 0 0 black) drop-shadow(0 0 0 black); drop-shadow(0 0 0 black) drop-shadow(0 0 0 black);
} }
h2 { h2 {
font-family : "NodestoCapsCondensed"; font-family : 'NodestoCapsCondensed';
font-size : 0.85cm; font-size : 0.85cm;
font-weight : normal; font-weight : normal;
color : white; color : white;
@@ -687,7 +684,7 @@ body { counter-reset : phb-page-numbers; }
height : 1.7cm; height : 1.7cm;
padding-top : 0.1cm; padding-top : 0.1cm;
padding-left : 1cm; padding-left : 1cm;
font-family : "NodestoCapsCondensed"; font-family : 'NodestoCapsCondensed';
font-size : 1cm; font-size : 1cm;
font-weight : normal; font-weight : normal;
color : white; color : white;
@@ -704,7 +701,7 @@ body { counter-reset : phb-page-numbers; }
width : 70%; width : 70%;
margin-right : auto; margin-right : auto;
margin-left : auto; margin-left : auto;
font-family : "Overpass"; font-family : 'Overpass';
font-size : 0.496cm; font-size : 0.496cm;
color : white; color : white;
text-align : center; text-align : center;
@@ -735,14 +732,14 @@ body { counter-reset : phb-page-numbers; }
h1 { h1 {
margin-top : 1.2cm; margin-top : 1.2cm;
margin-bottom : 0; margin-bottom : 0;
font-family : "NodestoCapsCondensed"; font-family : 'NodestoCapsCondensed';
font-size : 2.1cm; font-size : 2.1cm;
font-weight : normal; font-weight : normal;
line-height : 0.85em; line-height : 0.85em;
text-transform : uppercase; text-transform : uppercase;
} }
h2 { h2 {
font-family : "NodestoCapsCondensed"; font-family : 'NodestoCapsCondensed';
font-size : 0.85cm; font-size : 0.85cm;
font-weight : normal; font-weight : normal;
letter-spacing : 0.5cm; letter-spacing : 0.5cm;
@@ -791,7 +788,7 @@ body { counter-reset : phb-page-numbers; }
.blank { height : 1.4em; } .blank { height : 1.4em; }
h1 { h1 {
margin-bottom : 0.3cm; margin-bottom : 0.3cm;
font-family : "NodestoCapsCondensed"; font-family : 'NodestoCapsCondensed';
font-size : 1.35cm; font-size : 1.35cm;
line-height : 0.95em; line-height : 0.95em;
color : #ED1C24; color : #ED1C24;
@@ -817,7 +814,7 @@ body { counter-reset : phb-page-numbers; }
border : none; border : none;
} }
p { p {
font-family : "Overpass"; font-family : 'Overpass';
font-size : 0.332cm; font-size : 0.332cm;
line-height : 1.5em; line-height : 1.5em;
} }
@@ -841,7 +838,7 @@ body { counter-reset : phb-page-numbers; }
p { p {
position : relative; position : relative;
width : 100%; width : 100%;
font-family : "NodestoCapsWide"; font-family : 'NodestoCapsWide';
font-size : 0.4cm; font-size : 0.4cm;
line-height : 1em; line-height : 1em;
color : #FFFFFF; color : #FFFFFF;
@@ -874,7 +871,7 @@ body { counter-reset : phb-page-numbers; }
h1 { h1 {
position : relative; position : relative;
margin-top : 0.4cm; margin-top : 0.4cm;
font-family : "NodestoCapsCondensed"; font-family : 'NodestoCapsCondensed';
font-size : 2.3cm; font-size : 2.3cm;
text-align : center; text-align : center;
text-transform : uppercase; text-transform : uppercase;
@@ -885,7 +882,7 @@ body { counter-reset : phb-page-numbers; }
margin-top : -0.7em; margin-top : -0.7em;
margin-right : auto; margin-right : auto;
margin-left : auto; margin-left : auto;
font-family : "Overpass"; font-family : 'Overpass';
font-size : 0.45cm; font-size : 0.45cm;
line-height : 1.1em; line-height : 1.1em;
} }
@@ -968,9 +965,8 @@ body { counter-reset : phb-page-numbers; }
padding-left : 1em; padding-left : 1em;
line-height : 1.25em; line-height : 1.25em;
white-space : pre-line; white-space : pre-line;
& + * { margin-top : 0.28cm; } & + * { margin-top : 0.17cm; }
} }
dl + * { margin-top : 0.17cm; }
p + dl { margin-top : 0.17cm; } p + dl { margin-top : 0.17cm; }
dt { dt {
display : inline; display : inline;
@@ -1009,7 +1005,7 @@ body { counter-reset : phb-page-numbers; }
outline : 1px solid #000000; outline : 1px solid #000000;
} }
th { th {
font-family : "BookInsanityRemake"; font-family : 'BookInsanityRemake';
font-size : 0.45cm; font-size : 0.45cm;
} }
td { font-size : 0.7cm; } td { font-size : 0.7cm; }

View File

@@ -0,0 +1,129 @@
/* Main BG color and normal text color */
.CodeMirror {
background: #293134;
color: #91A6AA;
}
/* Brew BG */
.brewRenderer {
background-color: #293134;
}
/* Blinking cursor */
.CodeMirror-cursor {
border-left: 1px solid #e0e2e4;
}
/* HB DARK NAV START*/
/* Bars at the top */
.snippetBar {
background-color: #2F393C;
color: white;
}
nav {
background-color: #293134;
}
nav .navItem {
background-color: #293134;
}
/* Fix for Homebrewery custom Snippet icons */
.snippetBar .fac {
filter: invert(1);
}
.snippetBar .snippetGroup .dropdown {
background-color: #2F393C;
}
/* HB DARK NAV END */
/* Line number stuff */
.CodeMirror-gutter-elt {
color: #81969A;
}
.CodeMirror-linenumber {
background-color: #293134;
}
.CodeMirror-gutter {
background-color: #293134;
}
/* column splits */
.editor .codeEditor .columnSplit {
font-style: italic;
color: inherit;
background-color:#1f5763;
border-bottom: #299 solid 1px;
}
/* Colors for headings and such */
/* ###Headings */
.cm-s-default .cm-header {
color: #c51b1b;
-webkit-text-stroke-width: 0.1px;
-webkit-text-stroke-color: #000;
}
/* bold points */
.cm-header, .cm-strong {
font-weight: bold;
color: #309dd2;
}
/* Link headings */
.cm-s-default .cm-link {
color: #dd6300;
}
/* links */
.cm-s-default .cm-string {
color: #aa8261;
}
/*@import*/
.cm-s-default .cm-def {
color:#2986cc;
}
/* Bullets and such */
.cm-s-default .cm-variable-2 {
color: #3cbf30;
}
/* blocks */
.editor .codeEditor .block:not(.cm-comment) {
color: #e3e3e3;
}
/* inline blocks */
.editor .codeEditor .inline-block {
color: #e3e3e3;
}
/* Tags (divs) */
.cm-s-default .cm-tag {
color: #e3ff00;
}
.cm-s-default .cm-attribute {
color: #e3ff00;
}
.cm-s-default .cm-atom {
color:#000;
}
.cm-s-default .cm-qualifier{
color:#ee1919;
}
.cm-s-default .cm-comment{
color:#bbc700;
}
.cm-s-default .cm-keyword {
color:#c302df;
background-color:#b1b1b1;
}
.cm-s-default .cm-property.cm-error {
color:#c50202;
}
.CodeMirror-foldmarker {
color:#f0ff00;
}
/* New page */
.editor .codeEditor .pageLine {
background: #000;
color:#000;
border-bottom: 1px solid #fff;
}
.cm-s-default .cm-builtin {
color:#fff;
}

View File

@@ -15,6 +15,7 @@
"cobalt", "cobalt",
"colorforth", "colorforth",
"darcula", "darcula",
"darkbrewery-v301",
"dracula", "dracula",
"duotone-dark", "duotone-dark",
"duotone-light", "duotone-light",