0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-06 14:22:52 +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
@@ -119,14 +169,15 @@ Fixes issue [#2943](https://github.com/naturalcrit/homebrewery/issues/2943)
* [x] Exclude cover pages from Table of Content generation (editing on mobile is still not recommended) * [x] Exclude cover pages from Table of Content generation (editing on mobile is still not recommended)
Fixes issue [#2920](https://github.com/naturalcrit/homebrewery/issues/2920) 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
@@ -1408,4 +1462,4 @@ Massive changelog incoming:
* Added `phb.standalone.css` plus a build system for creating it * Added `phb.standalone.css` plus a build system for creating it
* Added page numbers and footer text * Added page numbers and footer text
* Page accent now flips each page * Page accent now flips each page

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

@@ -1,65 +1,73 @@
@import 'themes/codeMirror/customEditorStyles.less'; @import 'themes/codeMirror/customEditorStyles.less';
.editor{ .editor {
position : relative; position : relative;
width : 100%; width : 100%;
.codeEditor{ .codeEditor {
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;
} }
.block:not(.cm-comment){ .define {
color : purple; &: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) {
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) {
font-weight : bold;
color : green; color : green;
font-weight : bold;
} }
} }
.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; justify-content : center;
bottom : 20px; width : 30px;
right : 20px; height : 30px;
z-index : 1000000; cursor : pointer;
justify-content : center; background-color : @teal;
.tooltipLeft("Jump to brew page"); .tooltipLeft('Jump to brew page');
} }
.editorToolbar{ .editorToolbar {
position: absolute; position : absolute;
top: 5px; top : 5px;
left: 50%; left : 50%;
color: black; z-index : 9;
font-size: 13px; font-size : 13px;
z-index: 9; color : black;
span { span { padding : 2px 5px; }
padding: 2px 5px;
}
} }
} }

View File

@@ -22,18 +22,18 @@ const errorIndex = (props)=>{
## We can't find this brew in Google Drive! ## We can't find this brew in Google Drive!
This file was saved on Google Drive, but this link doesn't work anymore. This file was saved on Google Drive, but this link doesn't work anymore.
${ props.brew.authors?.length > 0 ${props.brew.authors?.length > 0
? `Note that this brew belongs to the Homebrewery account **${ props.brew.authors[0] }**, ? `Note that this brew belongs to the Homebrewery account **${props.brew.authors[0]}**,
${ props.brew.account ${props.brew.account
? `which is ? `which is
${props.brew.authors[0] == props.brew.account ${props.brew.authors[0] == props.brew.account
? `your account.` ? `your account.`
: `not your account (you are currently signed in as **${props.brew.account}**).` : `not your account (you are currently signed in as **${props.brew.account}**).`
}` }`
: 'and you are not currently signed in to any account.' : 'and you are not currently signed in to any account.'
}` }`
: '' : ''
} }
The Homebrewery cannot delete files from Google Drive on its own, so there The Homebrewery cannot delete files from Google Drive on its own, so there
are three most likely possibilities: are three most likely possibilities:
: :
@@ -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`

29894
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,14 +154,14 @@ fs.emptyDirSync('./build');
// build(bundles); // build(bundles);
// //
})().catch(console.error); //In development, set up LiveReload (refreshes browser), and Nodemon (restarts server)
if(isDev){
livereload('./build'); // Install the Chrome extension LiveReload to automatically refresh the browser
watchFile('./server.js', { // Restart server when change detected to this file or any nested directory from here
ignore : ['./build', './client', './themes'], // Ignore folders that are not running server code / avoids unneeded restarts
ext : 'js json' // Extensions to watch (only .js/.json by default)
//watch : ['./server', './themes'], // Watch additional folders if needed
});
}
//In development, set up LiveReload (refreshes browser), and Nodemon (restarts server) })().catch(console.error);
if(isDev){
livereload('./build'); // Install the Chrome extension LiveReload to automatically refresh the browser
watchFile('./server.js', { // Restart server when change detected to this file or any nested directory from here
ignore : ['./build', './client', './themes'], // Ignore folders that are not running server code / avoids unneeded restarts
ext : 'js json' // Extensions to watch (only .js/.json by default)
//watch : ['./server', './themes'], // Watch additional folders if needed
});
}

View File

@@ -327,14 +327,17 @@ app.get('/share/:id', asyncHandler(getBrew('share')), asyncHandler(async (req, r
type : 'article' type : 'article'
}; };
if(req.params.id.length > 12 && !brew._id) { // increase visitor view count, do not include visits by author(s)
const googleId = brew.googleId; if(!brew.authors.includes(req.account?.username)){
const shareId = brew.shareId; if(req.params.id.length > 12 && !brew._id) {
await GoogleActions.increaseView(googleId, shareId, 'share', brew) const googleId = brew.googleId;
.catch((err)=>{next(err);}); const shareId = brew.shareId;
} else { await GoogleActions.increaseView(googleId, shareId, 'share', brew)
await HomebrewModel.increaseView({ shareId: brew.shareId }); .catch((err)=>{next(err);});
} } else {
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",