0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2025-12-28 11:22:39 +00:00

Merge branch 'master' into pr/3066

This commit is contained in:
Trevor Buckner
2023-12-13 16:46:35 -05:00
5 changed files with 370 additions and 459 deletions

153
package-lock.json generated
View File

@@ -10,9 +10,9 @@
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@babel/core": "^7.23.5", "@babel/core": "^7.23.6",
"@babel/plugin-transform-runtime": "^7.23.4", "@babel/plugin-transform-runtime": "^7.23.6",
"@babel/preset-env": "^7.23.5", "@babel/preset-env": "^7.23.6",
"@babel/preset-react": "^7.23.3", "@babel/preset-react": "^7.23.3",
"@googleapis/drive": "^8.4.0", "@googleapis/drive": "^8.4.0",
"body-parser": "^1.20.2", "body-parser": "^1.20.2",
@@ -30,12 +30,12 @@
"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.7", "marked-extended-tables": "^1.0.8",
"marked-gfm-heading-id": "^3.1.2", "marked-gfm-heading-id": "^3.1.2",
"marked-smartypants-lite": "^1.0.1", "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": "^8.0.2", "mongoose": "^8.0.3",
"nanoid": "3.3.4", "nanoid": "3.3.4",
"nconf": "^0.12.1", "nconf": "^0.12.1",
"react": "^18.2.0", "react": "^18.2.0",
@@ -106,20 +106,20 @@
} }
}, },
"node_modules/@babel/core": { "node_modules/@babel/core": {
"version": "7.23.5", "version": "7.23.6",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz",
"integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==",
"dependencies": { "dependencies": {
"@ampproject/remapping": "^2.2.0", "@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.23.5", "@babel/code-frame": "^7.23.5",
"@babel/generator": "^7.23.5", "@babel/generator": "^7.23.6",
"@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-compilation-targets": "^7.23.6",
"@babel/helper-module-transforms": "^7.23.3", "@babel/helper-module-transforms": "^7.23.3",
"@babel/helpers": "^7.23.5", "@babel/helpers": "^7.23.6",
"@babel/parser": "^7.23.5", "@babel/parser": "^7.23.6",
"@babel/template": "^7.22.15", "@babel/template": "^7.22.15",
"@babel/traverse": "^7.23.5", "@babel/traverse": "^7.23.6",
"@babel/types": "^7.23.5", "@babel/types": "^7.23.6",
"convert-source-map": "^2.0.0", "convert-source-map": "^2.0.0",
"debug": "^4.1.0", "debug": "^4.1.0",
"gensync": "^1.0.0-beta.2", "gensync": "^1.0.0-beta.2",
@@ -140,11 +140,11 @@
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
}, },
"node_modules/@babel/generator": { "node_modules/@babel/generator": {
"version": "7.23.5", "version": "7.23.6",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
"integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
"dependencies": { "dependencies": {
"@babel/types": "^7.23.5", "@babel/types": "^7.23.6",
"@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/gen-mapping": "^0.3.2",
"@jridgewell/trace-mapping": "^0.3.17", "@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1" "jsesc": "^2.5.1"
@@ -189,13 +189,13 @@
} }
}, },
"node_modules/@babel/helper-compilation-targets": { "node_modules/@babel/helper-compilation-targets": {
"version": "7.22.15", "version": "7.23.6",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
"integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
"dependencies": { "dependencies": {
"@babel/compat-data": "^7.22.9", "@babel/compat-data": "^7.23.5",
"@babel/helper-validator-option": "^7.22.15", "@babel/helper-validator-option": "^7.23.5",
"browserslist": "^4.21.9", "browserslist": "^4.22.2",
"lru-cache": "^5.1.1", "lru-cache": "^5.1.1",
"semver": "^6.3.1" "semver": "^6.3.1"
}, },
@@ -449,13 +449,13 @@
} }
}, },
"node_modules/@babel/helpers": { "node_modules/@babel/helpers": {
"version": "7.23.5", "version": "7.23.6",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz",
"integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==",
"dependencies": { "dependencies": {
"@babel/template": "^7.22.15", "@babel/template": "^7.22.15",
"@babel/traverse": "^7.23.5", "@babel/traverse": "^7.23.6",
"@babel/types": "^7.23.5" "@babel/types": "^7.23.6"
}, },
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
@@ -475,9 +475,9 @@
} }
}, },
"node_modules/@babel/parser": { "node_modules/@babel/parser": {
"version": "7.23.5", "version": "7.23.6",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
"integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
"bin": { "bin": {
"parser": "bin/babel-parser.js" "parser": "bin/babel-parser.js"
}, },
@@ -1031,11 +1031,12 @@
} }
}, },
"node_modules/@babel/plugin-transform-for-of": { "node_modules/@babel/plugin-transform-for-of": {
"version": "7.23.3", "version": "7.23.6",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz",
"integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==",
"dependencies": { "dependencies": {
"@babel/helper-plugin-utils": "^7.22.5" "@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
}, },
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
@@ -1455,9 +1456,9 @@
} }
}, },
"node_modules/@babel/plugin-transform-runtime": { "node_modules/@babel/plugin-transform-runtime": {
"version": "7.23.4", "version": "7.23.6",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.6.tgz",
"integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==", "integrity": "sha512-kF1Zg62aPseQ11orDhFRw+aPG/eynNQtI+TyY+m33qJa2cJ5EEvza2P2BNTIA9E5MyqFABHEyY6CPHwgdy9aNg==",
"dependencies": { "dependencies": {
"@babel/helper-module-imports": "^7.22.15", "@babel/helper-module-imports": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5",
@@ -1604,12 +1605,12 @@
} }
}, },
"node_modules/@babel/preset-env": { "node_modules/@babel/preset-env": {
"version": "7.23.5", "version": "7.23.6",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.5.tgz", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz",
"integrity": "sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==", "integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==",
"dependencies": { "dependencies": {
"@babel/compat-data": "^7.23.5", "@babel/compat-data": "^7.23.5",
"@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-compilation-targets": "^7.23.6",
"@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-validator-option": "^7.23.5", "@babel/helper-validator-option": "^7.23.5",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3",
@@ -1649,7 +1650,7 @@
"@babel/plugin-transform-dynamic-import": "^7.23.4", "@babel/plugin-transform-dynamic-import": "^7.23.4",
"@babel/plugin-transform-exponentiation-operator": "^7.23.3", "@babel/plugin-transform-exponentiation-operator": "^7.23.3",
"@babel/plugin-transform-export-namespace-from": "^7.23.4", "@babel/plugin-transform-export-namespace-from": "^7.23.4",
"@babel/plugin-transform-for-of": "^7.23.3", "@babel/plugin-transform-for-of": "^7.23.6",
"@babel/plugin-transform-function-name": "^7.23.3", "@babel/plugin-transform-function-name": "^7.23.3",
"@babel/plugin-transform-json-strings": "^7.23.4", "@babel/plugin-transform-json-strings": "^7.23.4",
"@babel/plugin-transform-literals": "^7.23.3", "@babel/plugin-transform-literals": "^7.23.3",
@@ -1758,19 +1759,19 @@
} }
}, },
"node_modules/@babel/traverse": { "node_modules/@babel/traverse": {
"version": "7.23.5", "version": "7.23.6",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz",
"integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==",
"dependencies": { "dependencies": {
"@babel/code-frame": "^7.23.5", "@babel/code-frame": "^7.23.5",
"@babel/generator": "^7.23.5", "@babel/generator": "^7.23.6",
"@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-function-name": "^7.23.0", "@babel/helper-function-name": "^7.23.0",
"@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-hoist-variables": "^7.22.5",
"@babel/helper-split-export-declaration": "^7.22.6", "@babel/helper-split-export-declaration": "^7.22.6",
"@babel/parser": "^7.23.5", "@babel/parser": "^7.23.6",
"@babel/types": "^7.23.5", "@babel/types": "^7.23.6",
"debug": "^4.1.0", "debug": "^4.3.1",
"globals": "^11.1.0" "globals": "^11.1.0"
}, },
"engines": { "engines": {
@@ -1778,9 +1779,9 @@
} }
}, },
"node_modules/@babel/types": { "node_modules/@babel/types": {
"version": "7.23.5", "version": "7.23.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
"integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
"dependencies": { "dependencies": {
"@babel/helper-string-parser": "^7.23.4", "@babel/helper-string-parser": "^7.23.4",
"@babel/helper-validator-identifier": "^7.22.20", "@babel/helper-validator-identifier": "^7.22.20",
@@ -4227,9 +4228,9 @@
} }
}, },
"node_modules/browserslist": { "node_modules/browserslist": {
"version": "4.22.1", "version": "4.22.2",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
"integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
@@ -4245,9 +4246,9 @@
} }
], ],
"dependencies": { "dependencies": {
"caniuse-lite": "^1.0.30001541", "caniuse-lite": "^1.0.30001565",
"electron-to-chromium": "^1.4.535", "electron-to-chromium": "^1.4.601",
"node-releases": "^2.0.13", "node-releases": "^2.0.14",
"update-browserslist-db": "^1.0.13" "update-browserslist-db": "^1.0.13"
}, },
"bin": { "bin": {
@@ -4408,9 +4409,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001547", "version": "1.0.30001570",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001547.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz",
"integrity": "sha512-W7CrtIModMAxobGhz8iXmDfuJiiKg1WADMO/9x7/CLNin5cpSbuBjooyoIUVB5eyCc36QuTVlkVa1iB2S5+/eA==", "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==",
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
@@ -5381,9 +5382,9 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.4.551", "version": "1.4.612",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.551.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.612.tgz",
"integrity": "sha512-/Ng/W/kFv7wdEHYzxdK7Cv0BHEGSkSB3M0Ssl8Ndr1eMiYeas/+Mv4cNaDqamqWx6nd2uQZfPz6g25z25M/sdw==" "integrity": "sha512-dM8BMtXtlH237ecSMnYdYuCkib2QHq0kpWfUnavjdYsyr/6OsAwg5ZGUfnQ9KD1Ga4QgB2sqXlB2NT8zy2GnVg=="
}, },
"node_modules/elliptic": { "node_modules/elliptic": {
"version": "6.5.4", "version": "6.5.4",
@@ -10052,11 +10053,11 @@
} }
}, },
"node_modules/marked-extended-tables": { "node_modules/marked-extended-tables": {
"version": "1.0.7", "version": "1.0.8",
"resolved": "https://registry.npmjs.org/marked-extended-tables/-/marked-extended-tables-1.0.7.tgz", "resolved": "https://registry.npmjs.org/marked-extended-tables/-/marked-extended-tables-1.0.8.tgz",
"integrity": "sha512-DwURXYCPxhIdEP6y0rI9Od3qPM6ieXK7ce6hqR0/9MpkSmBUMrrBtoH3fMp6+oEXjfmIq4YBGPi9Ios80N3Q2w==", "integrity": "sha512-GcVQP7EnfQ98o09ooqM4t4M0qfpKdKuk7/z4qZfgkLyXTXsIyFS1eeBmfC36o1NbR6aSq8ynL/LeTz3w4RS27Q==",
"peerDependencies": { "peerDependencies": {
"marked": ">=3 <10" "marked": ">=3 <12"
} }
}, },
"node_modules/marked-gfm-heading-id": { "node_modules/marked-gfm-heading-id": {
@@ -10453,9 +10454,9 @@
} }
}, },
"node_modules/mongoose": { "node_modules/mongoose": {
"version": "8.0.2", "version": "8.0.3",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.0.2.tgz", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.0.3.tgz",
"integrity": "sha512-Vsi9GzTXjdBVzheT1HZOZ2jHNzzR9Xwb5OyLz/FvDEAhlwrRnXnuqJf0QHINUOQSm7aoyvnPks0q85HJkd6yDw==", "integrity": "sha512-LJRT0yP4TW14HT4r2RkxqyvoTylMSzWpl5QOeVHTnRggCLQSpkoBdgbUtORFq/mSL2o9cLCPJz+6uzFj25qbHw==",
"dependencies": { "dependencies": {
"bson": "^6.2.0", "bson": "^6.2.0",
"kareem": "2.5.1", "kareem": "2.5.1",
@@ -10834,9 +10835,9 @@
"dev": true "dev": true
}, },
"node_modules/node-releases": { "node_modules/node-releases": {
"version": "2.0.13", "version": "2.0.14",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
"integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
}, },
"node_modules/nodemon": { "node_modules/nodemon": {
"version": "2.0.21", "version": "2.0.21",

View File

@@ -79,9 +79,9 @@
] ]
}, },
"dependencies": { "dependencies": {
"@babel/core": "^7.23.5", "@babel/core": "^7.23.6",
"@babel/plugin-transform-runtime": "^7.23.4", "@babel/plugin-transform-runtime": "^7.23.6",
"@babel/preset-env": "^7.23.5", "@babel/preset-env": "^7.23.6",
"@babel/preset-react": "^7.23.3", "@babel/preset-react": "^7.23.3",
"@googleapis/drive": "^8.4.0", "@googleapis/drive": "^8.4.0",
"body-parser": "^1.20.2", "body-parser": "^1.20.2",
@@ -99,12 +99,12 @@
"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.7", "marked-extended-tables": "^1.0.8",
"marked-gfm-heading-id": "^3.1.2", "marked-gfm-heading-id": "^3.1.2",
"marked-smartypants-lite": "^1.0.1", "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": "^8.0.2", "mongoose": "^8.0.3",
"nanoid": "3.3.4", "nanoid": "3.3.4",
"nconf": "^0.12.1", "nconf": "^0.12.1",
"react": "^18.2.0", "react": "^18.2.0",

View File

@@ -14,16 +14,13 @@
--HB_Color_Footnotes : #C9AD6A; // Gold --HB_Color_Footnotes : #C9AD6A; // Gold
} }
@page { margin : 0; }
body { counter-reset : phb-page-numbers; }
* { -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; }
ul, ol { padding-left : 1em; } ul, ol { padding-left : 1em; }
em { font-style : italic; } em { font-style : italic; }
strong { strong {
font-weight : 800; font-weight : 800;
letter-spacing : -0.02em; letter-spacing : -0.02em;
@@ -42,53 +39,31 @@ body { counter-reset : phb-page-numbers; }
-webkit-column-gap : 0.9cm; -webkit-column-gap : 0.9cm;
-moz-column-gap : 0.9cm; -moz-column-gap : 0.9cm;
} }
.columnWrapper {
column-gap : inherit;
max-height : 100%;
column-span : all;
columns : inherit;
}
.page { .page {
.useColumns(); .useColumns();
position : relative; font-family : 'BookInsanityRemake';
z-index : 15; font-size : 0.34cm;
box-sizing : border-box; background-image : @backgroundImage;
width : 215.9mm;
height : 279.4mm;
padding : 1.4cm 1.9cm 1.7cm;
overflow : hidden;
font-family : 'BookInsanityRemake';
font-size : 0.34cm;
counter-increment : phb-page-numbers;
background-color : var(--HB_Color_Background);
background-image : @backgroundImage;
text-rendering : optimizeLegibility;
} }
//***************************** // *****************************
// * BASE // * BASE
// *****************************/ // *****************************/
.page { .page {
p { p {
display : block; line-height : 1.25em;
line-height : 1.25em; & + * { margin-top : 0.325cm; } //TODO: MAKE ALL MARGINS TOP-ONLY. USE * + * STYLE SELECTORS
overflow-wrap : break-word; //TODO: MAKE ALL MARGINS TOP-ONLY. USE * + * STYLE SELECTORS
& + * { margin-top : 0.325cm; }
& + p { margin-top : 0; } & + p { margin-top : 0; }
} }
ul { ul {
padding-left : 1.4em; padding-left : 1.4em;
margin-bottom : 0.8em; margin-bottom : 0.8em;
line-height : 1.25em; line-height : 1.25em;
list-style-position : outside;
list-style-type : disc;
} }
ol { ol {
padding-left : 1.4em; padding-left : 1.4em;
margin-bottom : 0.8em; margin-bottom : 0.8em;
line-height : 1.25em; line-height : 1.25em;
list-style-position : outside;
list-style-type : decimal;
} }
//Indents after p or lists //Indents after p or lists
p + p, ul + p, ol + p { text-indent : 1em; } p + p, ul + p, ol + p { text-indent : 1em; }
@@ -97,24 +72,12 @@ body { counter-reset : phb-page-numbers; }
font-weight : bold; font-weight : bold;
letter-spacing : -0.02em; letter-spacing : -0.02em;
} }
em { font-style : italic; } // *****************************
sup {
font-size : smaller;
line-height : 0;
vertical-align : super;
}
sub {
font-size : smaller;
line-height : 0;
vertical-align : sub;
}
//*****************************
// * HEADERS // * HEADERS
// *****************************/ // *****************************/
h1,h2,h3,h4 { h1,h2,h3,h4 {
font-family : 'MrEavesRemake'; font-family : 'MrEavesRemake';
font-weight : 800; color : var(--HB_Color_HeaderText);
color : var(--HB_Color_HeaderText);
} }
h1 { h1 {
margin-bottom : 0.18cm; //Margin-bottom only because this is WIDE margin-bottom : 0.18cm; //Margin-bottom only because this is WIDE
@@ -143,8 +106,8 @@ body { counter-reset : phb-page-numbers; }
h2 { h2 {
//margin-top : 0px; //Font is misaligned. Shift up slightly //margin-top : 0px; //Font is misaligned. Shift up slightly
//margin-bottom : 0.05cm; //margin-bottom : 0.05cm;
font-size : 0.75cm; font-size : 0.75cm;
line-height : 0.988em; //Font is misaligned. Shift up slightly line-height : 0.988em; //Font is misaligned. Shift up slightly
} }
h3 { h3 {
//margin-top : -0.1cm; //Font is misaligned. Shift up slightly //margin-top : -0.1cm; //Font is misaligned. Shift up slightly
@@ -160,8 +123,8 @@ body { counter-reset : phb-page-numbers; }
h4 { h4 {
//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-size : 0.458cm; font-size : 0.458cm;
line-height : 0.971em; //Font is misaligned. Shift up slightly line-height : 0.971em; //Font is misaligned. Shift up slightly
& + * { margin-top : 0.09cm; } & + * { margin-top : 0.09cm; }
} }
* + h4 { * + h4 {
@@ -170,19 +133,17 @@ 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; line-height : 0.951em; //Font is misaligned. Shift up slightly
line-height : 0.951em; //Font is misaligned. Shift up slightly
& + * { margin-top : 0.2cm; } & + * { margin-top : 0.2cm; }
} }
//***************************** // *****************************
// * TABLE // * TABLE
// *****************************/ // *****************************/
table { table {
.useSansSerif(); .useSansSerif();
width : 100%; line-height : 16px;
line-height : 16px;
& + * { margin-top : 0.325cm; } & + * { margin-top : 0.325cm; }
thead { thead {
display : table-row-group; display : table-row-group;
@@ -198,15 +159,15 @@ body { counter-reset : phb-page-numbers; }
tr { tr {
td { td {
//padding : 0.14em 0.4em; //padding : 0.14em 0.4em;
padding : 0px 1.5px; // Both of these are temporary, just to force padding : 0px 1.5px; // Both of these are temporary, just to force
//line-height : 16px; // PDF to render at same height until Chrome 108 //line-height : 16px; // PDF to render at same height until Chrome 108
} }
&:nth-child(odd) { background-color : var(--HB_Color_Accent); } &:nth-child(odd) { background-color : var(--HB_Color_Accent); }
} }
} }
} }
//***************************** // *****************************
// * QUOTE // * QUOTE
// *****************************/ // *****************************/
.quote { .quote {
@@ -239,9 +200,7 @@ body { counter-reset : phb-page-numbers; }
} }
// *****************************
//*****************************
// * NOTE // * NOTE
// *****************************/ // *****************************/
.note { .note {
@@ -255,7 +214,7 @@ body { counter-reset : phb-page-numbers; }
border-image-outset : 9px 0px; border-image-outset : 9px 0px;
box-shadow : 1px 4px 14px #888888; box-shadow : 1px 4px 14px #888888;
.page :where(&) { .page :where(&) {
margin-top : 9px; //Prevent top border getting cut off on colbreak margin-top : 9px; //Prevent top border getting cut off on colbreak
} }
& + * { margin-top : 0.45cm; } & + * { margin-top : 0.45cm; }
h5 { font-size : 0.375cm; } h5 { font-size : 0.375cm; }
@@ -265,7 +224,7 @@ body { counter-reset : phb-page-numbers; }
} }
:last-child { margin-bottom : 0; } :last-child { margin-bottom : 0; }
} }
//************************************ // ************************************
// * DESCRIPTIVE TEXT BOX // * DESCRIPTIVE TEXT BOX
// ************************************/ // ************************************/
.descriptive { .descriptive {
@@ -289,7 +248,7 @@ body { counter-reset : phb-page-numbers; }
} }
:last-child { margin-bottom : 0; } :last-child { margin-bottom : 0; }
} }
//***************************** // *****************************
// * Images Snippets // * Images Snippets
// *****************************/ // *****************************/
@@ -318,42 +277,10 @@ body { counter-reset : phb-page-numbers; }
} }
/* Watermark */ /* Watermark */
.watermark { .watermark { color : black; }
position : absolute;
top : 0;
left : 0;
z-index : 500;
display : grid !important;
place-items : center;
justify-content : center;
width : 100%;
height : 100%;
font-size : 120px;
color : black;
text-transform : uppercase;
mix-blend-mode : overlay;
opacity : 30%;
transform : rotate(-45deg);
p { margin-bottom : none; }
}
/* Watercolor */ /* Watercolor */
[class*='watercolor'] {
position : absolute;
z-index : -2;
width : 2000px; /* dimensions need to be real big so the user can set */
height : 2000px; /* height or width and the image will maintain aspect ratio */
background-color : var(--HB_Color_WatercolorStain); /* default color */
background-size : cover;
-webkit-mask-image : var(--wc);
-webkit-mask-size : contain;
-webkit-mask-repeat : no-repeat;
mask-image : var(--wc);
mask-size : contain;
mask-repeat : no-repeat;
--wc : @watercolor1; /* default image */
}
.watercolor1 { --wc : @watercolor1; } .watercolor1 { --wc : @watercolor1; }
.watercolor2 { --wc : @watercolor2; } .watercolor2 { --wc : @watercolor2; }
.watercolor3 { --wc : @watercolor3; } .watercolor3 { --wc : @watercolor3; }
@@ -367,7 +294,7 @@ body { counter-reset : phb-page-numbers; }
.watercolor11 { --wc : @watercolor11; } .watercolor11 { --wc : @watercolor11; }
.watercolor12 { --wc : @watercolor12; } .watercolor12 { --wc : @watercolor12; }
//***************************** // *****************************
// * MONSTER STAT BLOCK // * MONSTER STAT BLOCK
// *****************************/ // *****************************/
.monster { .monster {
@@ -388,24 +315,24 @@ body { counter-reset : phb-page-numbers; }
box-shadow : 1px 4px 14px #888888; box-shadow : 1px 4px 14px #888888;
} }
position : relative; position : relative;
padding : 0px; padding : 0px;
margin-bottom : 0.325cm; margin-bottom : 0.325cm;
//Headers //Headers
h2 { h2 {
margin : 0; margin : 0;
font-size : 0.62cm; font-size : 0.62cm;
line-height : 1em; line-height : 1em;
& + p { & + p {
margin-bottom : 0; margin-bottom : 0;
font-size : 0.304cm; //Monster size and type subtext font-size : 0.304cm; //Monster size and type subtext
} }
} }
h3 { h3 {
font-family : 'ScalySansSmallCapsRemake'; font-family : 'ScalySansSmallCapsRemake';
font-size : 0.45cm; font-size : 0.45cm;
border-bottom : 1.5px solid var(--HB_Color_HeaderText); border-bottom : 1.5px solid var(--HB_Color_HeaderText);
} }
//Triangle dividers //Triangle dividers
@@ -452,10 +379,10 @@ body { counter-reset : phb-page-numbers; }
.useColumns(0.96, @fillMode: balance); .useColumns(0.96, @fillMode: balance);
} }
//***************************** // *****************************
// * FOOTER // * FOOTER
// *****************************/ // *****************************/
&:after { &::after {
position : absolute; position : absolute;
bottom : 0px; bottom : 0px;
left : 0px; left : 0px;
@@ -495,23 +422,18 @@ body { counter-reset : phb-page-numbers; }
color : var(--HB_Color_Footnotes); color : var(--HB_Color_Footnotes);
text-align : right; text-align : right;
} }
//************************************ // ************************************
// * CODE BLOCKS // * CODE BLOCKS
// ************************************/ // ************************************/
code { code {
padding : 0px 4px; padding : 0px 4px;
font-family : 'Courier New', 'Courier', monospace; font-size : 0.325cm;
font-size : 0.325;
color : #58180D; color : #58180D;
overflow-wrap : break-word;
white-space : pre-wrap;
background-color : #FAF7EA; background-color : #FAF7EA;
border-radius : 4px; border-radius : 4px;
} }
pre code { pre code {
display : inline-block;
width : 100%;
padding : 0.15cm; padding : 0.15cm;
margin-bottom : 2px; margin-bottom : 2px;
border-style : solid; border-style : solid;
@@ -525,26 +447,13 @@ body { counter-reset : phb-page-numbers; }
} }
& + * { margin-top : 0.325cm; } & + * { margin-top : 0.325cm; }
} }
//***************************** // *****************************
// * EXTRAS // * EXTRAS
// *****************************/ // *****************************/
hr { hr {
margin : 0px; margin : 0px;
visibility : hidden; visibility : hidden;
} }
.columnSplit {
visibility : hidden;
-webkit-column-break-after : always;
break-after : always;
-moz-column-break-after : always;
}
//Avoid breaking up
blockquote,table {
z-index : 15;
-webkit-column-break-inside : avoid;
page-break-inside : avoid;
break-inside : avoid;
}
//Text indent right after table //Text indent right after table
table + p { text-indent : 1em; } table + p { text-indent : 1em; }
// Nested lists // Nested lists
@@ -552,18 +461,13 @@ body { counter-reset : phb-page-numbers; }
margin-bottom : 0px; margin-bottom : 0px;
margin-left : 1.5em; margin-left : 1.5em;
} }
li {
-webkit-column-break-inside : avoid;
page-break-inside : avoid;
break-inside : avoid;
}
} }
//***************************** // *****************************
// * SPELL LIST // * SPELL LIST
// *****************************/ // *****************************/
.page .spellList { .page .spellList {
.useSansSerif(); .useSansSerif();
column-count : 2; column-count : 2;
ul + h5 { margin-top : 15px; } ul + h5 { margin-top : 15px; }
p, ul { p, ul {
font-size : 0.352cm; font-size : 0.352cm;
@@ -581,7 +485,7 @@ body { counter-reset : phb-page-numbers; }
&.wide { column-count : 4; } &.wide { column-count : 4; }
} }
//***************************** // *****************************
// * CLASS TABLE // * CLASS TABLE
// *****************************/ // *****************************/
.page .classTable { .page .classTable {
@@ -628,7 +532,7 @@ body { counter-reset : phb-page-numbers; }
} }
h5 + table { margin-top : 0.2cm; } h5 + table { margin-top : 0.2cm; }
} }
//***************************** // *****************************
// * FRONT COVER PAGE // * FRONT COVER PAGE
// *****************************/ // *****************************/
.page:has(.frontCover) { .page:has(.frontCover) {
@@ -722,7 +626,7 @@ body { counter-reset : phb-page-numbers; }
} }
} }
} }
//***************************** // *****************************
// * INSIDE COVER PAGE // * INSIDE COVER PAGE
// *****************************/ // *****************************/
.page:has(.insideCover) { .page:has(.insideCover) {
@@ -767,7 +671,7 @@ body { counter-reset : phb-page-numbers; }
} }
} }
} }
//***************************** // *****************************
// * BACK COVER // * BACK COVER
// *****************************/ // *****************************/
.page:has(.backCover) { .page:has(.backCover) {
@@ -849,10 +753,10 @@ body { counter-reset : phb-page-numbers; }
} }
} }
//***************************** // *****************************
// * PART COVER // * PART COVER
// *****************************/ // *****************************/
.page:has(.partCover) { .page:has(.partCover) {
padding-top : 0; padding-top : 0;
text-align : center; text-align : center;
columns : 1; columns : 1;
@@ -888,7 +792,7 @@ body { counter-reset : phb-page-numbers; }
} }
} }
//***************************** // *****************************
// * TABLE OF CONTENTS // * TABLE OF CONTENTS
// *****************************/ // *****************************/
.page { .page {
@@ -957,33 +861,25 @@ body { counter-reset : phb-page-numbers; }
} }
} }
//***************************** // *****************************
// * DEFINITION LISTS // * DEFINITION LISTS
// *****************************/ // *****************************/
.page { .page {
dl { dl {
padding-left : 1em;
line-height : 1.25em; line-height : 1.25em;
white-space : pre-line; & + * { margin-top : 0.17cm; }
& + * { margin-top : 0.17cm; }
} }
p + dl { margin-top : 0.17cm; } p + dl { margin-top : 0.17cm; }
dt { dt {
display : inline;
margin-right : 5px; margin-right : 5px;
margin-left : -1em; margin-left : -1em;
} }
dd {
display : inline;
margin-left : 0px;
text-indent : 0px;
}
} }
//***************************** // *****************************
// * WIDE // * WIDE
// *****************************/ // *****************************/
.page .wide { margin-bottom : 0.325cm; } .page .wide { margin-bottom : 0.325cm; }
.page h1 + * { margin-top : 0; } .page h1 + * { margin-top : 0; }
@@ -1022,7 +918,7 @@ body { counter-reset : phb-page-numbers; }
} }
} }
} }
//***************************** // *****************************
// * INDEX // * INDEX
// *****************************/ // *****************************/
.page { .page {

View File

@@ -111,6 +111,21 @@ module.exports = [
icon : 'fas fa-code', icon : 'fas fa-code',
gen : '<!-- This is a comment that will not be rendered into your brew. Hotkey (Ctrl/Cmd + /). -->' gen : '<!-- This is a comment that will not be rendered into your brew. Hotkey (Ctrl/Cmd + /). -->'
}, },
{
name : 'Homebrewery Credit',
icon : 'fas fa-dice-d20',
gen : function(){
return dedent`
{{homebreweryCredits
Made With
{{homebreweryIcon}}
The Homebrewery
[Homebrewery.Naturalcrit.com](https://homebrewery.naturalcrit.com)
}}\n\n`;
},
}
] ]
}, },
{ {

View File

@@ -7,13 +7,9 @@
--HB_Color_WatercolorStain : #000000; // Black --HB_Color_WatercolorStain : #000000; // Black
} }
@page { margin: 0; } @page { margin : 0; }
body { body { counter-reset : phb-page-numbers; }
counter-reset : phb-page-numbers; * { -webkit-print-color-adjust : exact; }
}
*{
-webkit-print-color-adjust : exact;
}
//***************************** //*****************************
// * MUSTACHE DIVS/SPANS // * MUSTACHE DIVS/SPANS
@@ -23,9 +19,7 @@ body {
break-inside : avoid; break-inside : avoid;
display : inline-block; display : inline-block;
width : 100%; width : 100%;
img { img { z-index : 0; }
z-index : 0;
}
} }
.inline-block { .inline-block {
display : inline-block; display : inline-block;
@@ -33,97 +27,81 @@ body {
} }
} }
.useColumns(@multiplier : 1, @fillMode: auto){ .useColumns(@multiplier : 1, @fillMode: auto) {
column-fill : @fillMode; column-fill : @fillMode;
column-count : 2; column-count : 2;
} }
.columnWrapper{ .columnWrapper {
column-gap : inherit;
max-height : 100%; max-height : 100%;
column-span : all; column-span : all;
columns : inherit; columns : inherit;
column-gap : inherit;
column-fill : inherit; column-fill : inherit;
} }
.page{ .page {
.useColumns(); .useColumns();
height : 279.4mm;
width : 215.9mm;
padding : 1.4cm 1.9cm 1.7cm;
counter-increment : phb-page-numbers;
background-color : var(--HB_Color_Background);
position : relative; position : relative;
z-index : 15; z-index : 15;
box-sizing : border-box; box-sizing : border-box;
width : 215.9mm;
height : 279.4mm;
padding : 1.4cm 1.9cm 1.7cm;
overflow : hidden; overflow : hidden;
counter-increment : phb-page-numbers;
background-color : var(--HB_Color_Background);
text-rendering : optimizeLegibility; text-rendering : optimizeLegibility;
contain : size; contain : size;
} }
//***************************** //*****************************
// * BASE // * BASE
// *****************************/ // *****************************/
.page{ .page {
p{ p {
overflow-wrap : break-word;
display : block; display : block;
overflow-wrap : break-word;
} }
strong{ strong { font-weight : bold; }
font-weight : bold; em { font-style : italic; }
} sup {
em{ font-size : smaller;
font-style : italic; line-height : 0;
}
sup{
vertical-align : super; vertical-align : super;
font-size : smaller;
line-height : 0;
} }
sub{ sub {
vertical-align : sub;
font-size : smaller; font-size : smaller;
line-height : 0; line-height : 0;
vertical-align : sub;
} }
ul { ul {
padding-left : 1.4em;
list-style-position : outside; //Needed for multiline list items list-style-position : outside; //Needed for multiline list items
list-style-type : disc; list-style-type : disc;
padding-left : 1.4em;
} }
ol { ol {
padding-left : 1.4em;
list-style-position : outside; list-style-position : outside;
list-style-type : decimal; list-style-type : decimal;
padding-left : 1.4em;
}
img{
z-index : -1;
} }
img { z-index : -1; }
//***************************** //*****************************
// * HEADERS // * HEADERS
// *****************************/ // *****************************/
h1,h2,h3,h4,h5,h6{ h1,h2,h3,h4,h5,h6 {
font-weight : bold; font-weight : bold;
line-height : 1.2em; line-height : 1.2em;
} }
h1{ h1 { font-size : 2em; }
font-size : 2em; h2 { font-size : 1.5em; }
} h3 { font-size : 1.17em; }
h2{ h4 { font-size : 1em; }
font-size : 1.5em; h5 { font-size : 0.83em; }
}
h3{
font-size : 1.17em;
}
h4{
font-size : 1em;
}
h5{
font-size : 0.83em;
}
//***************************** //*****************************
// * TABLE // * TABLE
// *****************************/ // *****************************/
table{ table {
width : 100%; width : 100%;
thead{ thead {
display : table-row-group; display : table-row-group;
font-weight : bold; font-weight : bold;
} }
@@ -135,42 +113,40 @@ body {
//************************************ //************************************
// * CODE BLOCKS // * CODE BLOCKS
// ************************************/ // ************************************/
code{ code {
font-family : "Courier New", Courier, monospace; font-family : 'Courier New', "Courier", monospace;
white-space : pre-wrap;
overflow-wrap : break-word; overflow-wrap : break-word;
white-space : pre-wrap;
} }
pre code{ pre code {
width : 100%;
display : inline-block; display : inline-block;
width : 100%;
} }
//***************************** //*****************************
// * EXTRAS // * EXTRAS
// *****************************/ // *****************************/
.columnSplit { .columnSplit {
margin-top : 0;
visibility : hidden; visibility : hidden;
-webkit-column-break-after : always; -webkit-column-break-after : always;
break-after : always; break-after : always;
-moz-column-break-after : always; -moz-column-break-after : always;
margin-top : 0; & + * { margin-top : 0; }
& + * {
margin-top : 0;
}
} }
//Avoid breaking up //Avoid breaking up
blockquote,table{ blockquote,table {
z-index : 15; z-index : 15;
-webkit-column-break-inside : avoid; -webkit-column-break-inside : avoid;
page-break-inside : avoid; page-break-inside : avoid;
break-inside : avoid; break-inside : avoid;
} }
// Nested lists // Nested lists
ul ul,ol ol,ul ol,ol ul{ ul ul,ol ol,ul ol,ol ul {
margin-bottom : 0px; margin-bottom : 0px;
margin-left : 1.5em; margin-left : 1.5em;
} }
li{ li {
-webkit-column-break-inside : avoid; -webkit-column-break-inside : avoid;
page-break-inside : avoid; page-break-inside : avoid;
break-inside : avoid; break-inside : avoid;
@@ -178,69 +154,66 @@ body {
/* Watermark */ /* Watermark */
.watermark { .watermark {
display : grid !important;
place-items : center;
justify-content : center;
position : absolute; position : absolute;
margin : 0;
top : 0; top : 0;
left : 0; left : 0;
z-index : 500;
display : grid !important;
place-items : center;
justify-content : center;
width : 100%; width : 100%;
height : 100%; height : 100%;
margin : 0;
font-size : 120px; font-size : 120px;
text-transform : uppercase; text-transform : uppercase;
mix-blend-mode : overlay; mix-blend-mode : overlay;
opacity : 30%; opacity : 30%;
transform : rotate(-45deg); transform : rotate(-45deg);
z-index : 500; p { margin-bottom : none; }
p {
margin-bottom : none;
}
} }
/* Watercolor */ /* Watercolor */
[class*="watercolor"] { [class*='watercolor'] {
position : absolute; position : absolute;
z-index : -2;
width : 2000px; /* dimensions need to be real big so the user can set */ width : 2000px; /* dimensions need to be real big so the user can set */
height : 2000px; /* height or width and the image will maintain aspect ratio */ height : 2000px; /* height or width and the image will maintain aspect ratio */
background-color : var(--HB_Color_WatercolorStain); /* default color */
background-size : cover;
-webkit-mask-image : var(--wc); -webkit-mask-image : var(--wc);
-webkit-mask-size : contain; -webkit-mask-size : contain;
-webkit-mask-repeat : no-repeat; -webkit-mask-repeat : no-repeat;
mask-image : var(--wc); mask-image : var(--wc);
mask-size : contain; mask-size : contain;
mask-repeat : no-repeat; mask-repeat : no-repeat;
background-size : cover; --wc : @watercolor1; /* default image */
background-color : var(--HB_Color_WatercolorStain); /*default color*/
--wc : @watercolor1; /*default image*/
z-index : -2;
} }
.watercolor1 { --wc : @watercolor1; } .watercolor1 { --wc : @watercolor1; }
.watercolor2 { --wc : @watercolor2; } .watercolor2 { --wc : @watercolor2; }
.watercolor3 { --wc : @watercolor3; } .watercolor3 { --wc : @watercolor3; }
.watercolor4 { --wc : @watercolor4; } .watercolor4 { --wc : @watercolor4; }
.watercolor5 { --wc : @watercolor5; } .watercolor5 { --wc : @watercolor5; }
.watercolor6 { --wc : @watercolor6; } .watercolor6 { --wc : @watercolor6; }
.watercolor7 { --wc : @watercolor7; } .watercolor7 { --wc : @watercolor7; }
.watercolor8 { --wc : @watercolor8; } .watercolor8 { --wc : @watercolor8; }
.watercolor9 { --wc : @watercolor9; } .watercolor9 { --wc : @watercolor9; }
.watercolor10 { --wc : @watercolor10; } .watercolor10 { --wc : @watercolor10; }
.watercolor11 { --wc : @watercolor11; } .watercolor11 { --wc : @watercolor11; }
.watercolor12 { --wc : @watercolor12; } .watercolor12 { --wc : @watercolor12; }
/* Image Masks */ /* Image Masks */
[class*="imageMask"] { [class*='imageMask'] {
position : absolute; position : absolute;
height : 200%;
width : 200%;
left : 50%;
bottom : 50%; bottom : 50%;
--rotation : 0; left : 50%;
--revealer : none; z-index : -1;
--checkerboard : none; width : 200%;
--scaleX : 1; height : 200%;
--scaleY : 1; background-image : var(--checkerboard);
background-size : 20px;
transform : translateY(50%) translateX(-50%) rotate(calc(1deg * var(--rotation))) scaleX(var(--scaleX)) scaleY(var(--scaleY));
-webkit-mask-image : var(--wc), var(--revealer); -webkit-mask-image : var(--wc), var(--revealer);
-webkit-mask-repeat : repeat-x; -webkit-mask-repeat : repeat-x;
-webkit-mask-size : 50%; //Scale only X to fit page width, leave height at aspect ratio, designed to hang off the edge -webkit-mask-size : 50%; //Scale only X to fit page width, leave height at aspect ratio, designed to hang off the edge
@@ -249,61 +222,63 @@ body {
mask-repeat : repeat-x; mask-repeat : repeat-x;
mask-size : 50%; mask-size : 50%;
mask-position : 50% calc(50% - var(--offset)); mask-position : 50% calc(50% - var(--offset));
background-image : var(--checkerboard); --rotation : 0;
background-size : 20px; --revealer : none;
z-index : -1; --checkerboard : none;
transform : translateY(50%) translateX(-50%) rotate(calc(1deg * var(--rotation))) scaleX(var(--scaleX)) scaleY(var(--scaleY)); --scaleX : 1;
--scaleY : 1;
& > p:has(img) { & > p:has(img) {
position : absolute; position : absolute;
width : 50%;
height : 50%;
bottom : 50%; bottom : 50%;
left : 50%; left : 50%;
width : 50%;
height : 50%;
transform : translateX(-50%) translateY(50%) rotate(calc(-1deg * var(--rotation))) scaleX(calc(1 / var(--scaleX))) scaleY(calc(1 / var(--scaleY))); transform : translateX(-50%) translateY(50%) rotate(calc(-1deg * var(--rotation))) scaleX(calc(1 / var(--scaleX))) scaleY(calc(1 / var(--scaleY)));
} }
& img { & img {
position : absolute; position : absolute;
display : block;
bottom : 0; bottom : 0;
display : block;
} }
&.bottom { &.bottom {
--rotation : 0; --rotation : 0;
& img {bottom: 0;} & img {bottom : 0;}
} }
&.top { &.top {
--rotation : 180; --rotation : 180;
& img {top: 0;} & img {top : 0;}
} }
&.left { &.left {
--rotation : 90; --rotation : 90;
& img {left: 0;} & img {left : 0;}
} }
&.right { &.right {
--rotation : -90; --rotation : -90;
& img {right: 0;} & img {right : 0;}
} }
&.revealImage { &.revealImage {
--revealer : linear-gradient(0deg, rgba(0,0,0,.2) 0%, rgba(0,0,0,0.2)); --revealer : linear-gradient(0deg, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0.2));
--checkerboard : url(/assets/waterColorMasks/missingImage.png); //shows any masked regions not filled by image --checkerboard : url("/assets/waterColorMasks/missingImage.png"); //shows any masked regions not filled by image
} }
} }
.imageMaskEdge { .imageMaskEdge {
&1 { --wc : url(/assets/waterColorMasks/edge/0001.webp); } &1 { --wc : url("/assets/waterColorMasks/edge/0001.webp"); }
&2 { --wc : url(/assets/waterColorMasks/edge/0002.webp); } &2 { --wc : url("/assets/waterColorMasks/edge/0002.webp"); }
&3 { --wc : url(/assets/waterColorMasks/edge/0003.webp); } &3 { --wc : url("/assets/waterColorMasks/edge/0003.webp"); }
&4 { --wc : url(/assets/waterColorMasks/edge/0004.webp); } &4 { --wc : url("/assets/waterColorMasks/edge/0004.webp"); }
&5 { --wc : url(/assets/waterColorMasks/edge/0005.webp); } &5 { --wc : url("/assets/waterColorMasks/edge/0005.webp"); }
&6 { --wc : url(/assets/waterColorMasks/edge/0006.webp); } &6 { --wc : url("/assets/waterColorMasks/edge/0006.webp"); }
&7 { --wc : url(/assets/waterColorMasks/edge/0007.webp); } &7 { --wc : url("/assets/waterColorMasks/edge/0007.webp"); }
&8 { --wc : url(/assets/waterColorMasks/edge/0008.webp); } &8 { --wc : url("/assets/waterColorMasks/edge/0008.webp"); }
} }
[class*="imageMaskCenter"] { [class*='imageMaskCenter'] {
bottom : calc(var(--offsetY));
left : calc(var(--offsetX));
width : 100%; width : 100%;
height : 100%; height : 100%;
left : calc(var(--offsetX)); transform : rotate(calc(1deg * var(--rotation))) scaleX(var(--scaleX)) scaleY(var(--scaleY));
bottom : calc(var(--offsetY));
-webkit-mask-image : var(--wc), var(--revealer); -webkit-mask-image : var(--wc), var(--revealer);
-webkit-mask-repeat : no-repeat; -webkit-mask-repeat : no-repeat;
-webkit-mask-size : 100% 100%; //Scale both dimensions to fit page size -webkit-mask-size : 100% 100%; //Scale both dimensions to fit page size
@@ -312,48 +287,48 @@ body {
mask-repeat : no-repeat; mask-repeat : no-repeat;
mask-size : 100% 100%; //Scale both dimensions to fit page size mask-size : 100% 100%; //Scale both dimensions to fit page size
mask-position : 50% 50%; mask-position : 50% 50%;
transform : rotate(calc(1deg * var(--rotation))) scaleX(var(--scaleX)) scaleY(var(--scaleY));
& > p:has(img) { & > p:has(img) {
position : absolute; position : absolute;
width : 100%;
height : 100%;
bottom : 0; bottom : 0;
left : 0; left : 0;
width : 100%;
height : 100%;
transform : unset; transform : unset;
transform : scaleX(calc(1 / var(--scaleX))) scaleY(calc(1 / var(--scaleY))) transform : scaleX(calc(1 / var(--scaleX))) scaleY(calc(1 / var(--scaleY)))
rotate(calc(-1deg * var(--rotation))) rotate(calc(-1deg * var(--rotation)))
translateX(calc(-1 * var(--offsetX))) translateX(calc(-1 * var(--offsetX)))
translateY(calc(1 * var(--offsetY))); translateY(calc(1 * var(--offsetY)));
} }
} }
.imageMaskCenter { .imageMaskCenter {
&1 { --wc : url(/assets/waterColorMasks/center/0001.webp); } &1 { --wc : url("/assets/waterColorMasks/center/0001.webp"); }
&2 { --wc : url(/assets/waterColorMasks/center/0002.webp); } &2 { --wc : url("/assets/waterColorMasks/center/0002.webp"); }
&3 { --wc : url(/assets/waterColorMasks/center/0003.webp); } &3 { --wc : url("/assets/waterColorMasks/center/0003.webp"); }
&4 { --wc : url(/assets/waterColorMasks/center/0004.webp); } &4 { --wc : url("/assets/waterColorMasks/center/0004.webp"); }
&5 { --wc : url(/assets/waterColorMasks/center/0005.webp); } &5 { --wc : url("/assets/waterColorMasks/center/0005.webp"); }
&6 { --wc : url(/assets/waterColorMasks/center/0006.webp); } &6 { --wc : url("/assets/waterColorMasks/center/0006.webp"); }
&7 { --wc : url(/assets/waterColorMasks/center/0007.webp); } &7 { --wc : url("/assets/waterColorMasks/center/0007.webp"); }
&8 { --wc : url(/assets/waterColorMasks/center/0008.webp); } &8 { --wc : url("/assets/waterColorMasks/center/0008.webp"); }
&9 { --wc : url(/assets/waterColorMasks/center/0009.webp); } &9 { --wc : url("/assets/waterColorMasks/center/0009.webp"); }
&10 { --wc : url(/assets/waterColorMasks/center/0010.webp); } &10 { --wc : url("/assets/waterColorMasks/center/0010.webp"); }
&11 { --wc : url(/assets/waterColorMasks/center/0011.webp); } &11 { --wc : url("/assets/waterColorMasks/center/0011.webp"); }
&12 { --wc : url(/assets/waterColorMasks/center/0012.webp); } &12 { --wc : url("/assets/waterColorMasks/center/0012.webp"); }
&13 { --wc : url(/assets/waterColorMasks/center/0013.webp); } &13 { --wc : url("/assets/waterColorMasks/center/0013.webp"); }
&14 { --wc : url(/assets/waterColorMasks/center/0014.webp); } &14 { --wc : url("/assets/waterColorMasks/center/0014.webp"); }
&15 { --wc : url(/assets/waterColorMasks/center/0015.webp); } &15 { --wc : url("/assets/waterColorMasks/center/0015.webp"); }
&16 { --wc : url(/assets/waterColorMasks/center/0016.webp); } &16 { --wc : url("/assets/waterColorMasks/center/0016.webp"); }
&special { --wc : url(/assets/waterColorMasks/center/special.webp); } &special { --wc : url("/assets/waterColorMasks/center/special.webp"); }
} }
[class*="imageMaskCorner"] { [class*='imageMaskCorner'] {
height : 200%;
width : 200%;
left : calc(-50% + var(--offsetX));
bottom : calc(-50% + var(--offsetY)); bottom : calc(-50% + var(--offsetY));
left : calc(-50% + var(--offsetX));
width : 200%;
height : 200%;
transform : rotate(calc(1deg * var(--rotation))) scaleX(var(--scaleX)) scaleY(var(--scaleY));
-webkit-mask-image : var(--wc), var(--revealer); -webkit-mask-image : var(--wc), var(--revealer);
-webkit-mask-repeat : no-repeat; -webkit-mask-repeat : no-repeat;
-webkit-mask-size : 100% 100%; //Scale both dimensions to fit page size -webkit-mask-size : 100% 100%; //Scale both dimensions to fit page size
@@ -362,56 +337,55 @@ body {
mask-repeat : no-repeat; mask-repeat : no-repeat;
mask-size : 100% 100%; //Scale both dimensions to fit page size mask-size : 100% 100%; //Scale both dimensions to fit page size
mask-position : 50% 50%; mask-position : 50% 50%;
transform : rotate(calc(1deg * var(--rotation))) scaleX(var(--scaleX)) scaleY(var(--scaleY));
& > p:has(img) { & > p:has(img) {
bottom : 25%;
left : 25%;
width : 50%; width : 50%;
height : 50%; //Complex transform below to handle mix of % and cm offsets height : 50%; //Complex transform below to handle mix of % and cm offsets
left : 25%;
bottom : 25%;
transform : scaleX(calc(1 / var(--scaleX))) scaleY(calc(1 / var(--scaleY))) transform : scaleX(calc(1 / var(--scaleX))) scaleY(calc(1 / var(--scaleY)))
rotate(calc(-1deg * var(--rotation))) rotate(calc(-1deg * var(--rotation)))
translateX(calc(-1 * var(--offsetX))) translateX(calc(-1 * var(--offsetX)))
translateY(calc(1 * var(--offsetY))); translateY(calc(1 * var(--offsetY)));
} }
} }
.imageMaskCorner { .imageMaskCorner {
&1 { --wc : url(/assets/waterColorMasks/corner/0001.webp); } &1 { --wc : url("/assets/waterColorMasks/corner/0001.webp"); }
&2 { --wc : url(/assets/waterColorMasks/corner/0002.webp); } &2 { --wc : url("/assets/waterColorMasks/corner/0002.webp"); }
&3 { --wc : url(/assets/waterColorMasks/corner/0003.webp); } &3 { --wc : url("/assets/waterColorMasks/corner/0003.webp"); }
&4 { --wc : url(/assets/waterColorMasks/corner/0004.webp); } &4 { --wc : url("/assets/waterColorMasks/corner/0004.webp"); }
&5 { --wc : url(/assets/waterColorMasks/corner/0005.webp); } &5 { --wc : url("/assets/waterColorMasks/corner/0005.webp"); }
&6 { --wc : url(/assets/waterColorMasks/corner/0006.webp); } &6 { --wc : url("/assets/waterColorMasks/corner/0006.webp"); }
&7 { --wc : url(/assets/waterColorMasks/corner/0007.webp); } &7 { --wc : url("/assets/waterColorMasks/corner/0007.webp"); }
&8 { --wc : url(/assets/waterColorMasks/corner/0008.webp); } &8 { --wc : url("/assets/waterColorMasks/corner/0008.webp"); }
&9 { --wc : url(/assets/waterColorMasks/corner/0009.webp); } &9 { --wc : url("/assets/waterColorMasks/corner/0009.webp"); }
&10 { --wc : url(/assets/waterColorMasks/corner/0010.webp); } &10 { --wc : url("/assets/waterColorMasks/corner/0010.webp"); }
&11 { --wc : url(/assets/waterColorMasks/corner/0011.webp); } &11 { --wc : url("/assets/waterColorMasks/corner/0011.webp"); }
&12 { --wc : url(/assets/waterColorMasks/corner/0012.webp); } &12 { --wc : url("/assets/waterColorMasks/corner/0012.webp"); }
&13 { --wc : url(/assets/waterColorMasks/corner/0013.webp); } &13 { --wc : url("/assets/waterColorMasks/corner/0013.webp"); }
&14 { --wc : url(/assets/waterColorMasks/corner/0014.webp); } &14 { --wc : url("/assets/waterColorMasks/corner/0014.webp"); }
&15 { --wc : url(/assets/waterColorMasks/corner/0015.webp); } &15 { --wc : url("/assets/waterColorMasks/corner/0015.webp"); }
&16 { --wc : url(/assets/waterColorMasks/corner/0016.webp); } &16 { --wc : url("/assets/waterColorMasks/corner/0016.webp"); }
&17 { --wc : url(/assets/waterColorMasks/corner/0017.webp); } &17 { --wc : url("/assets/waterColorMasks/corner/0017.webp"); }
&18 { --wc : url(/assets/waterColorMasks/corner/0018.webp); } &18 { --wc : url("/assets/waterColorMasks/corner/0018.webp"); }
&19 { --wc : url(/assets/waterColorMasks/corner/0019.webp); } &19 { --wc : url("/assets/waterColorMasks/corner/0019.webp"); }
&20 { --wc : url(/assets/waterColorMasks/corner/0020.webp); } &20 { --wc : url("/assets/waterColorMasks/corner/0020.webp"); }
&21 { --wc : url(/assets/waterColorMasks/corner/0021.webp); } &21 { --wc : url("/assets/waterColorMasks/corner/0021.webp"); }
&22 { --wc : url(/assets/waterColorMasks/corner/0022.webp); } &22 { --wc : url("/assets/waterColorMasks/corner/0022.webp"); }
&23 { --wc : url(/assets/waterColorMasks/corner/0023.webp); } &23 { --wc : url("/assets/waterColorMasks/corner/0023.webp"); }
&24 { --wc : url(/assets/waterColorMasks/corner/0024.webp); } &24 { --wc : url("/assets/waterColorMasks/corner/0024.webp"); }
&25 { --wc : url(/assets/waterColorMasks/corner/0025.webp); } &25 { --wc : url("/assets/waterColorMasks/corner/0025.webp"); }
&26 { --wc : url(/assets/waterColorMasks/corner/0026.webp); } &26 { --wc : url("/assets/waterColorMasks/corner/0026.webp"); }
&27 { --wc : url(/assets/waterColorMasks/corner/0027.webp); } &27 { --wc : url("/assets/waterColorMasks/corner/0027.webp"); }
&28 { --wc : url(/assets/waterColorMasks/corner/0028.webp); } &28 { --wc : url("/assets/waterColorMasks/corner/0028.webp"); }
&29 { --wc : url(/assets/waterColorMasks/corner/0029.webp); } &29 { --wc : url("/assets/waterColorMasks/corner/0029.webp"); }
&30 { --wc : url(/assets/waterColorMasks/corner/0030.webp); } &30 { --wc : url("/assets/waterColorMasks/corner/0030.webp"); }
&31 { --wc : url(/assets/waterColorMasks/corner/0031.webp); } &31 { --wc : url("/assets/waterColorMasks/corner/0031.webp"); }
&32 { --wc : url(/assets/waterColorMasks/corner/0032.webp); } &32 { --wc : url("/assets/waterColorMasks/corner/0032.webp"); }
&33 { --wc : url(/assets/waterColorMasks/corner/0033.webp); } &33 { --wc : url("/assets/waterColorMasks/corner/0033.webp"); }
&34 { --wc : url(/assets/waterColorMasks/corner/0034.webp); } &34 { --wc : url("/assets/waterColorMasks/corner/0034.webp"); }
&35 { --wc : url(/assets/waterColorMasks/corner/0035.webp); } &35 { --wc : url("/assets/waterColorMasks/corner/0035.webp"); }
&36 { --wc : url(/assets/waterColorMasks/corner/0036.webp); } &36 { --wc : url("/assets/waterColorMasks/corner/0036.webp"); }
&37 { --wc : url(/assets/waterColorMasks/corner/0037.webp); } &37 { --wc : url("/assets/waterColorMasks/corner/0037.webp"); }
} }
} }
@@ -423,16 +397,16 @@ body {
padding-left : 1em; padding-left : 1em;
white-space : pre-line; white-space : pre-line;
} }
dt { dt {
display : inline; display : inline;
margin-right : 0.5ch; margin-right : 0.5ch;
margin-left : -1em; margin-left : -1em;
} }
dd { dd {
display : inline; display : inline;
margin-left : 0; margin-left : 0;
text-indent : 0; text-indent : 0;
} }
} }
//***************************** //*****************************
@@ -442,9 +416,7 @@ body {
.blank { .blank {
height : 1em; height : 1em;
margin-top : 0; margin-top : 0;
& + * { & + * { margin-top : 0; }
margin-top : 0;
}
} }
} }
@@ -452,12 +424,39 @@ body {
// * WIDE // * WIDE
// *****************************/ // *****************************/
.page { .page {
.wide{ .wide {
column-span : all; column-span : all;
display : block; display : block;
margin-bottom : 1em; margin-bottom : 1em;
&+* { & + * { margin-top : 0; }
margin-top : 0;
}
} }
} }
//*****************************
//* CREDITS
//*****************************/
.page .homebreweryCredits {
p {
font-family : 'NodestoCapsWide';
font-size : 0.4cm;
line-height : 1em;
text-align : center;
text-indent : 0;
letter-spacing : 0.08em;
}
a {
color : inherit;
text-decoration : none;
&:hover { text-decoration : underline; }
}
.homebreweryIcon {
display : block;
height : 1.5cm;
margin : 0 auto;
background-color : black;
-webkit-mask : url("/assets/naturalCritLogoWhite.svg") center / contain no-repeat;
mask : url("/assets/naturalCritLogoWhite.svg") center / contain no-repeat;
}
.homebreweryIcon.red { background-color : red; }
.homebreweryIcon.gold { background-image : linear-gradient(to top left, brown 22.5%, gold 40%, white 60%, gold 67.5%, brown 82.5%); }
}