0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-07 07:42:39 +00:00

Merge branch 'master' into pr/2711

This commit is contained in:
Trevor Buckner
2023-04-28 16:56:49 -04:00
16 changed files with 16545 additions and 16353 deletions

View File

@@ -10,11 +10,11 @@ WORKDIR /usr/src/app
# This improves caching so we don't have to download the dependencies every time the code changes # This improves caching so we don't have to download the dependencies every time the code changes
COPY package.json ./ COPY package.json ./
# --ignore-scripts tells yarn not to run postbuild. We run it explicitly later # --ignore-scripts tells yarn not to run postbuild. We run it explicitly later
RUN yarn install --ignore-scripts RUN npm install --ignore-scripts
# Bundle app source and build application # Bundle app source and build application
COPY . . COPY . .
RUN yarn build RUN npm run build
EXPOSE 8000 EXPOSE 8000
CMD [ "yarn", "start" ] CMD [ "npm", "start" ]

View File

@@ -1,277 +1,278 @@
@import 'naturalcrit/styles/colors.less'; @import "naturalcrit/styles/colors.less";
@navbarHeight : 28px; @navbarHeight : 28px;
@keyframes pinkColoring { @keyframes pinkColoring {
//from {color: white;} 0% {color : pink;}
//to {color: red;} 50% {color : pink;}
0% {color: pink;} 75% {color : red;}
50% {color: pink;} 100% {color : pink;}
75% {color: red;}
100% {color: pink;}
} }
.homebrew nav{ .homebrew nav {
.homebrewLogo{ .homebrewLogo {
.animate(color); .animate(color);
font-family : CodeBold; font-family : CodeBold;
font-size : 12px; font-size : 12px;
color : white; color : white;
div{ div {
margin-top : 2px; margin-top : 2px;
margin-bottom : -2px; margin-bottom : -2px;
} }
&:hover{ &:hover {
color : @blue; color : @blue;
} }
} }
.editTitle.navItem{ .editTitle.navItem {
padding : 2px 12px; padding : 2px 12px;
input{ input {
font-family : "Open Sans", sans-serif;
font-size : 12px;
font-weight : 800;
width : 250px; width : 250px;
margin : 0; margin : 0;
padding : 2px; padding : 2px;
background-color : transparent;
font-family : 'Open Sans', sans-serif;
font-size : 12px;
font-weight : 800;
color : white;
text-align : center; text-align : center;
color : white;
border : 1px solid @blue; border : 1px solid @blue;
outline : none; outline : none;
background-color : transparent;
} }
.charCount{ .charCount {
display : inline-block; display : inline-block;
vertical-align : bottom;
margin-left : 8px; margin-left : 8px;
color : #666;
text-align : right; text-align : right;
&.max{ vertical-align : bottom;
color : #666;
&.max {
color : @red; color : @red;
} }
} }
} }
.brewTitle.navItem{ .brewTitle.navItem {
height: 100%; font-size : 12px;
font-size : 12px; font-weight : 800;
font-weight : 800; height : 100%;
color : white; text-align : center;
text-align : center; text-transform : initial;
text-transform : initial; color : white;
flex-grow : 1; background-color : transparent;
background-color: transparent; flex-grow : 1;
} }
.save-menu { .save-menu {
.dropdown { .dropdown {
z-index: 1000; z-index : 1000;
} }
.navItem i.fa-power-off { .navItem i.fa-power-off {
color : red; color : red;
&.active { &.active {
color : rgb(0, 182, 52); color : rgb(0, 182, 52);
filter : drop-shadow(0 0 2px rgba(0, 182, 52, 0.765)) filter : drop-shadow(0 0 2px rgba(0, 182, 52, 0.765));
} }
} }
} }
.patreon.navItem{ .patreon.navItem {
border-left : 1px solid #666;
border-right : 1px solid #666; border-right : 1px solid #666;
border-left : 1px solid #666;
&:hover i { &:hover i {
color: red; color : red;
} }
i{ i {
.animate(color); .animate(color);
animation-name: pinkColoring; animation-name : pinkColoring;
animation-duration: 2s; animation-duration : 2s;
color: pink; color : pink;
} }
} }
.recent.navItem { .recent.navItem {
position : relative; position : relative;
.dropdown{ .dropdown {
position : absolute; position : absolute;
top : 28px; z-index : 10000;
left : 0px; top : 28px;
z-index : 10000; left : 0;
width : 100%; overflow : hidden auto;
overflow : hidden auto; width : 100%;
max-height : ~"calc(100vh - 28px)"; max-height : ~"calc(100vh - 28px)";
scrollbar-color : #666 #333; scrollbar-color : #666 #333;
scrollbar-width : thin; scrollbar-width : thin;
h4{ h4 {
font-size : 0.8em;
display : block; display : block;
box-sizing : border-box; box-sizing : border-box;
padding : 5px 0px; padding : 5px 0;
background-color : #333;
font-size : 0.8em;
color : #bbb;
text-align : center; text-align : center;
color : #BBB;
border-top : 1px solid #888; border-top : 1px solid #888;
&:nth-of-type(1){ background-color: darken(@teal, 20%); } background-color : #333;
&:nth-of-type(2){ background-color: darken(@purple, 30%); } &:nth-of-type(1) {
background-color : darken(@teal, 20%);
}
&:nth-of-type(2) {
background-color : darken(@purple, 30%);
}
} }
.item{ .item {
#backgroundColorsHover; #backgroundColorsHover;
.animate(background-color); .animate(background-color);
position : relative; position : relative;
display : block; display : block;
overflow : clip;
box-sizing : border-box; box-sizing : border-box;
padding : 8px 5px 13px; padding : 8px 5px 13px;
background-color : #333;
color : white;
text-decoration : none; text-decoration : none;
color : white;
border-top : 1px solid #888; border-top : 1px solid #888;
overflow : clip; background-color : #333;
.clear{ .clear {
display : none;
position : absolute; position : absolute;
top : 50%; top : 50%;
transform : translateY(-50%); right : 0;
right : 0px; display : none;
width : 20px; width : 20px;
height : 100%; height : 100%;
background-color : #333; transform : translateY(-50%);
opacity : 70%; opacity : 70%;
border-radius : 3px; border-radius : 3px;
background-color : #333;
&:hover { &:hover {
opacity : 100%; opacity : 100%;
} }
i { i {
text-align : center;
font-size : 10px; font-size : 10px;
width : 100%;
height : 100%;
margin : 0; margin : 0;
height :100%; text-align : center;
width :100%;
} }
} }
&:hover{ &:hover {
background-color : @blue; background-color : @blue;
.clear {
.clear{
display : grid; display : grid;
place-content : center; place-content : center;
} }
} }
.title{ .title {
display : inline-block; display : inline-block;
overflow : hidden; overflow : hidden;
width : 100%; width : 100%;
text-overflow : ellipsis;
white-space : nowrap; white-space : nowrap;
text-overflow : ellipsis;
} }
.time{ .time {
font-size : 0.7em;
position : absolute; position : absolute;
right : 2px; right : 2px;
bottom : 2px; bottom : 2px;
font-size : 0.7em;
color : #888; color : #888;
} }
} }
} }
} }
.metadata.navItem { .metadata.navItem {
position : relative; position : relative;
padding: 0; display : flex;
align-items: center; align-items : center;
display : flex; height : 100%;
flex-grow: 1; padding : 0;
height: 100%; flex-grow : 1;
i{ i {
margin-right: 10px; margin-right : 10px;
} }
.window{ .window {
position : absolute; position : absolute;
z-index : -1;
bottom : 0; bottom : 0;
width : 440px;
left : 50%; left : 50%;
display : flex;
justify-content : flex-start;
width : 440px;
max-height : ~"calc(100vh - 28px)"; max-height : ~"calc(100vh - 28px)";
background-color : #333; margin : 0 auto;
padding : 0 10px 5px;
transition : transform 0.4s, opacity 0.4s;
border : 3px solid #444; border : 3px solid #444;
border-top : unset; border-top : unset;
border-radius : 0 0 5px 5px; border-radius : 0 0 5px 5px;
background-color : #333;
box-shadow : inset 0 7px 9px -7px #111; box-shadow : inset 0 7px 9px -7px #111;
display : flex;
flex-flow : row wrap; flex-flow : row wrap;
justify-content : flex-start;
align-content : baseline; align-content : baseline;
padding : 0px 10px 5px; &.active {
margin : 0 auto; transform : translateX(-50%) translateY(100%);
z-index : -1; opacity : 1;
transition : transform 0.4s, opacity 0.4s;
&.active{
transform: translateX(-50%) translateY(100%);
opacity: 1;
} }
&.inactive{ &.inactive {
transform: translateX(-50%) translateY(0%); transform : translateX(-50%) translateY(0%);
opacity: 0; opacity : 0;
} }
.row{ .row {
display : flex; display : flex;
flex-flow : row wrap;
width : 100%; width : 100%;
h4{ flex-flow : row wrap;
display : block; h4 {
box-sizing : border-box; display : block;
padding : 5px 0px; box-sizing : border-box;
color : #bbb; min-width : 76px;
text-align : center; padding : 5px 0;
flex-basis : 20%; text-align : center;
flex-grow : 1; color : #BBB;
min-width : 76px; flex-basis : 20%;
flex-grow : 1;
} }
p{ p {
font-family : 'Open Sans', sans-serif; font-family : "Open Sans", sans-serif;
font-size : 10px; font-size : 10px;
font-weight : normal; font-weight : normal;
text-transform : initial; padding : 5px 0;
padding : 5px 0; text-transform : initial;
flex-basis : 80%; flex-basis : 80%;
flex-grow : 1; flex-grow : 1;
.tag{ .tag {
border : 2px solid grey;
padding : 2px;
margin : 2px 2px;
display : inline-block; display : inline-block;
margin : 2px 2px;
padding : 2px;
border : 2px solid grey;
border-radius : 5px; border-radius : 5px;
background-color : #444; background-color : #444;
} }
a.userPageLink{ a.userPageLink {
text-decoration: none; text-decoration : none;
color: white; color : white;
&:hover{ &:hover {
text-decoration: underline; text-decoration : underline;
} }
} }
} }
&:nth-of-type(even){ &:nth-of-type(even) {
background-color: #555; background-color : #555;
} }
} }
} }
} }
.warning.navItem{ .warning.navItem {
position : relative; position : relative;
background-color : @orange;
color : white; color : white;
&:hover>.dropdown{ background-color : @orange;
&:hover > .dropdown {
visibility : visible; visibility : visible;
} }
.dropdown{ .dropdown {
position : absolute; position : absolute;
display : block;
top : 28px;
left : 0px;
visibility : hidden;
z-index : 10000; z-index : 10000;
top : 28px;
left : 0;
display : block;
visibility : hidden;
box-sizing : border-box; box-sizing : border-box;
width : 100%; width : 100%;
padding : 13px 5px; padding : 13px 5px;
background-color : #333;
text-align : center; text-align : center;
background-color : #333;
} }
} }
.account.navItem{ .account.navItem {
min-width: 100px; min-width : 100px;
} }
.account.username.navItem{ .account.username.navItem {
text-transform: none; text-transform : none;
} }
} }

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 704.00001 512"
version="1.1"
id="svg22127"
sodipodi:docname="book-part-cover.svg"
width="704"
height="512"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
inkscape:export-filename="InsideCover3.png"
inkscape:export-xdpi="300"
inkscape:export-ydpi="300"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs22131" />
<sodipodi:namedview
id="namedview22129"
pagecolor="#ffffff"
bordercolor="#111111"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="0.6685671"
inkscape:cx="299.8951"
inkscape:cy="80.021886"
inkscape:window-width="1920"
inkscape:window-height="991"
inkscape:window-x="-9"
inkscape:window-y="-9"
inkscape:window-maximized="1"
inkscape:current-layer="svg22127" />
<!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. -->
<path
id="path2161-6"
style="color:#000000;fill:#000000;stroke-width:1;-inkscape-stroke:none;paint-order:stroke fill markers"
d="M 208,0 C 147.0078,0 94.429433,14.25071 60.367188,26.66992 23.520854,39.96036 0,76.16076 0,112.95896 v 317.8321 c 0,59.8499 56.949847,92.6546 107.47266,76.6035 l -0.1543,0.049 c 26.46715,-8.335 74.84649,-18.3965 100.68164,-18.3965 17.25807,0 61.31688,10.6183 85.14453,18.8438 l 0.0508,0.018 0.0527,0.018 c 19.82627,6.5858 40.84117,4.9222 58.99804,-3.0762 18.04267,7.8799 38.84257,9.6126 58.33594,3.1328 l 0.13672,-0.045 0.13672,-0.047 c 23.88445,-8.0588 67.88646,-18.8437 85.14453,-18.8437 25.83515,0 74.22549,10.0266 100.68164,18.3964 l 0.1543,0.049 0.15625,0.049 C 647.13371,523.05316 704,490.64216 704,430.79226 v -317.8321 c 0,-36.8274 -23.49583,-72.8235 -60.00977,-86.25583 l -0.16015,-0.0606 -0.16211,-0.0566 C 609.79193,14.33005 557.11269,0.0012 496,0.0012 434.5671,0.0012 387.12553,14.01354 352,34.94261 316.87446,14.01344 269.4331,0.0012 208,0.0012 Z m 0,32.00977 c 58.3999,0 103.40004,18.89469 123,33.63279 3.3,2.4564 5,6.4246 5,10.3926 v 356.5508 c 0,10.7702 -11.70041,18.2326 -22.40039,14.6426 -26.59996,-8.9751 -71.69966,-22.2012 -105.59961,-22.2012 -38.49993,0 -88.40045,11.4317 -119.900391,21.3516 C 76.799621,449.96896 64,442.03166 64,430.78906 V 80.94726 C 64,69.51586 70.799631,58.93546 82.099609,54.87306 110.29956,44.57516 157.50009,32.00977 208,32.00977 Z m 288,0 c 50.49991,0 97.70044,12.56619 125.90039,22.76949 C 633.20037,58.93616 640,69.51586 640,80.94726 v 349.8418 c 0,11.2426 -12.79963,19.0854 -24.09961,15.5899 -31.49995,-9.9199 -81.40046,-21.3516 -119.90039,-21.3516 -33.89995,0 -78.99966,13.2261 -105.59961,22.2012 C 379.60041,450.81856 368,443.35616 368,432.58596 V 76.03516 c 0,-3.968 1.60001,-7.9362 5,-10.3926 19.59997,-14.7381 64.6001,-33.63279 123,-33.63279 z M 335.52734,45.75386 c -0.1289,0.093 -0.23137,0.2032 -0.35937,0.2969 -0.198,0.1477 -0.428,0.2796 -0.625,0.4278 z m 33.67969,0.5372 0.24805,0.1875 c -0.0427,-0.033 -0.0937,-0.061 -0.13672,-0.094 -0.0393,-0.03 -0.0713,-0.064 -0.11133,-0.094 z" />
<path
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:64;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 417.64553,213.53304 c 88.71546,-18.9285 95.50522,-18.6158 172.79707,0.054"
id="path2371-8"
sodipodi:nodetypes="cc" />
<path
id="path2315"
style="stroke-width:67.6532;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
inkscape:transform-center-x="-3.4164388e-06"
inkscape:transform-center-y="-8.443352"
d="m 505.27489,52.89544 25.98603,52.6535 58.10652,8.4434 -42.04628,40.985 9.92578,57.8717 -51.97205,-27.3234 -51.97204,27.3234 9.92578,-57.8717 -42.04627,-40.985 58.10651,-8.4434 z" />
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -43,6 +43,9 @@
.book-inside-cover { .book-inside-cover {
content: url('../icons/book-inside-cover.svg'); content: url('../icons/book-inside-cover.svg');
} }
.book-part-cover {
content: url('../icons/book-part-cover.svg');
}
.davek { .davek {
content: url('../icons/Davek.svg'); content: url('../icons/Davek.svg');
} }

168
package-lock.json generated
View File

@@ -33,10 +33,10 @@
"marked-extended-tables": "^1.0.5", "marked-extended-tables": "^1.0.5",
"markedLegacy": "npm:marked@^0.3.19", "markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.29.4", "moment": "^2.29.4",
"mongoose": "^7.0.3", "mongoose": "^7.1.0",
"nanoid": "3.3.4", "nanoid": "3.3.4",
"nconf": "^0.12.0", "nconf": "^0.12.0",
"npm": "^9.6.4", "npm": "^9.6.5",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"react-frame-component": "^4.1.3", "react-frame-component": "^4.1.3",
@@ -46,7 +46,7 @@
"vitreum": "git+https://git@github.com/calculuschild/vitreum.git" "vitreum": "git+https://git@github.com/calculuschild/vitreum.git"
}, },
"devDependencies": { "devDependencies": {
"eslint": "^8.38.0", "eslint": "^8.39.0",
"eslint-plugin-jest": "^27.2.1", "eslint-plugin-jest": "^27.2.1",
"eslint-plugin-react": "^7.32.2", "eslint-plugin-react": "^7.32.2",
"jest": "^29.5.0", "jest": "^29.5.0",
@@ -1793,9 +1793,9 @@
} }
}, },
"node_modules/@eslint/js": { "node_modules/@eslint/js": {
"version": "8.38.0", "version": "8.39.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz",
"integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -4031,9 +4031,9 @@
} }
}, },
"node_modules/bson": { "node_modules/bson": {
"version": "5.1.0", "version": "5.2.0",
"resolved": "https://registry.npmjs.org/bson/-/bson-5.1.0.tgz", "resolved": "https://registry.npmjs.org/bson/-/bson-5.2.0.tgz",
"integrity": "sha512-FEecNHkhYRBe7X9KDkdG12xNuz5VHGeH6mCE0B5sBmYtiR/Ux/9vUH/v4NUoBCDr6NuEhvahjoLiiRogptVW0A==", "integrity": "sha512-HevkSpDbpUfsrHWmWiAsNavANKYIErV2ePXllp1bwq5CDreAaFVj6RVlZpJnxK4WWDCJ/5jMUpaY6G526q3Hjg==",
"engines": { "engines": {
"node": ">=14.20.1" "node": ">=14.20.1"
} }
@@ -5075,15 +5075,15 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "8.38.0", "version": "8.39.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz",
"integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.4.0", "@eslint-community/regexpp": "^4.4.0",
"@eslint/eslintrc": "^2.0.2", "@eslint/eslintrc": "^2.0.2",
"@eslint/js": "8.38.0", "@eslint/js": "8.39.0",
"@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/config-array": "^0.11.8",
"@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8", "@nodelib/fs.walk": "^1.2.8",
@@ -5093,7 +5093,7 @@
"debug": "^4.3.2", "debug": "^4.3.2",
"doctrine": "^3.0.0", "doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0", "escape-string-regexp": "^4.0.0",
"eslint-scope": "^7.1.1", "eslint-scope": "^7.2.0",
"eslint-visitor-keys": "^3.4.0", "eslint-visitor-keys": "^3.4.0",
"espree": "^9.5.1", "espree": "^9.5.1",
"esquery": "^1.4.2", "esquery": "^1.4.2",
@@ -5214,9 +5214,9 @@
} }
}, },
"node_modules/eslint-scope": { "node_modules/eslint-scope": {
"version": "7.1.1", "version": "7.2.0",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
"integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"esrecurse": "^4.3.0", "esrecurse": "^4.3.0",
@@ -5224,6 +5224,9 @@
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
} }
}, },
"node_modules/eslint-visitor-keys": { "node_modules/eslint-visitor-keys": {
@@ -9488,11 +9491,11 @@
} }
}, },
"node_modules/mongodb": { "node_modules/mongodb": {
"version": "5.1.0", "version": "5.3.0",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.3.0.tgz",
"integrity": "sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==", "integrity": "sha512-Wy/sbahguL8c3TXQWXmuBabiLD+iVmz+tOgQf+FwkCjhUIorqbAxRbbz00g4ZoN4sXIPwpAlTANMaGRjGGTikQ==",
"dependencies": { "dependencies": {
"bson": "^5.0.1", "bson": "^5.2.0",
"mongodb-connection-string-url": "^2.6.0", "mongodb-connection-string-url": "^2.6.0",
"socks": "^2.7.1" "socks": "^2.7.1"
}, },
@@ -9504,7 +9507,7 @@
}, },
"peerDependencies": { "peerDependencies": {
"@aws-sdk/credential-providers": "^3.201.0", "@aws-sdk/credential-providers": "^3.201.0",
"mongodb-client-encryption": "^2.3.0", "mongodb-client-encryption": ">=2.3.0 <3",
"snappy": "^7.2.2" "snappy": "^7.2.2"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
@@ -9529,13 +9532,13 @@
} }
}, },
"node_modules/mongoose": { "node_modules/mongoose": {
"version": "7.0.3", "version": "7.1.0",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.0.3.tgz", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.1.0.tgz",
"integrity": "sha512-3n8vc1/mssuxKa6vfghSocp3MeiCFYzhX36Ok+PsDNNYzHC9tw3rNkAMLemIwZ2jgXqkZ7CfKOxkzjp/d/SWfg==", "integrity": "sha512-shoo9z/7o96Ojx69wpJn65+EC+Mt3q1SWTducW+F2Y4ieCXo0lZwpCZedgC841MIvJ7V8o6gmzoN1NfcnOTOuw==",
"dependencies": { "dependencies": {
"bson": "^5.0.1", "bson": "^5.2.0",
"kareem": "2.5.1", "kareem": "2.5.1",
"mongodb": "5.1.0", "mongodb": "5.3.0",
"mpath": "0.9.0", "mpath": "0.9.0",
"mquery": "5.0.0", "mquery": "5.0.0",
"ms": "2.1.3", "ms": "2.1.3",
@@ -9886,9 +9889,9 @@
} }
}, },
"node_modules/npm": { "node_modules/npm": {
"version": "9.6.4", "version": "9.6.5",
"resolved": "https://registry.npmjs.org/npm/-/npm-9.6.4.tgz", "resolved": "https://registry.npmjs.org/npm/-/npm-9.6.5.tgz",
"integrity": "sha512-8/Mct0X/w77PmgIpSlXfNIOlrZBfT+8966zLCxOhwi1qZ2Ueyy99uWPSDW6bt2OKw1NzrvHJBSgkzAvn1iWuhw==", "integrity": "sha512-0SYs9lz1ND7V3+Lz6EbsnUdZ4OxjQOHbaIKdWd8OgsbZ2hCC2ZeiXMEaBEPEVBaILW+huFA0pJ1YME+52iZI5g==",
"bundleDependencies": [ "bundleDependencies": [
"@isaacs/string-locale-compare", "@isaacs/string-locale-compare",
"@npmcli/arborist", "@npmcli/arborist",
@@ -9959,8 +9962,8 @@
], ],
"dependencies": { "dependencies": {
"@isaacs/string-locale-compare": "^1.1.0", "@isaacs/string-locale-compare": "^1.1.0",
"@npmcli/arborist": "^6.2.7", "@npmcli/arborist": "^6.2.8",
"@npmcli/config": "^6.1.5", "@npmcli/config": "^6.1.6",
"@npmcli/map-workspaces": "^3.0.3", "@npmcli/map-workspaces": "^3.0.3",
"@npmcli/package-json": "^3.0.0", "@npmcli/package-json": "^3.0.0",
"@npmcli/run-script": "^6.0.0", "@npmcli/run-script": "^6.0.0",
@@ -9977,34 +9980,34 @@
"glob": "^9.3.2", "glob": "^9.3.2",
"graceful-fs": "^4.2.11", "graceful-fs": "^4.2.11",
"hosted-git-info": "^6.1.1", "hosted-git-info": "^6.1.1",
"ini": "^3.0.1", "ini": "^4.1.0",
"init-package-json": "^5.0.0", "init-package-json": "^5.0.0",
"is-cidr": "^4.0.2", "is-cidr": "^4.0.2",
"json-parse-even-better-errors": "^3.0.0", "json-parse-even-better-errors": "^3.0.0",
"libnpmaccess": "^7.0.2", "libnpmaccess": "^7.0.2",
"libnpmdiff": "^5.0.15", "libnpmdiff": "^5.0.16",
"libnpmexec": "^5.0.15", "libnpmexec": "^5.0.16",
"libnpmfund": "^4.0.15", "libnpmfund": "^4.0.16",
"libnpmhook": "^9.0.3", "libnpmhook": "^9.0.3",
"libnpmorg": "^5.0.3", "libnpmorg": "^5.0.3",
"libnpmpack": "^5.0.15", "libnpmpack": "^5.0.16",
"libnpmpublish": "^7.1.3", "libnpmpublish": "^7.1.3",
"libnpmsearch": "^6.0.2", "libnpmsearch": "^6.0.2",
"libnpmteam": "^5.0.3", "libnpmteam": "^5.0.3",
"libnpmversion": "^4.0.2", "libnpmversion": "^4.0.2",
"make-fetch-happen": "^11.0.3", "make-fetch-happen": "^11.1.0",
"minimatch": "^7.4.3", "minimatch": "^7.4.6",
"minipass": "^4.2.5", "minipass": "^4.2.8",
"minipass-pipeline": "^1.2.4", "minipass-pipeline": "^1.2.4",
"ms": "^2.1.2", "ms": "^2.1.2",
"node-gyp": "^9.3.1", "node-gyp": "^9.3.1",
"nopt": "^7.1.0", "nopt": "^7.1.0",
"npm-audit-report": "^4.0.0", "npm-audit-report": "^4.0.0",
"npm-install-checks": "^6.1.0", "npm-install-checks": "^6.1.1",
"npm-package-arg": "^10.1.0", "npm-package-arg": "^10.1.0",
"npm-pick-manifest": "^8.0.1", "npm-pick-manifest": "^8.0.1",
"npm-profile": "^7.0.1", "npm-profile": "^7.0.1",
"npm-registry-fetch": "^14.0.3", "npm-registry-fetch": "^14.0.4",
"npm-user-validate": "^2.0.0", "npm-user-validate": "^2.0.0",
"npmlog": "^7.0.1", "npmlog": "^7.0.1",
"p-map": "^4.0.0", "p-map": "^4.0.0",
@@ -10012,11 +10015,11 @@
"parse-conflict-json": "^3.0.1", "parse-conflict-json": "^3.0.1",
"proc-log": "^3.0.0", "proc-log": "^3.0.0",
"qrcode-terminal": "^0.12.0", "qrcode-terminal": "^0.12.0",
"read": "^2.0.0", "read": "^2.1.0",
"read-package-json": "^6.0.1", "read-package-json": "^6.0.1",
"read-package-json-fast": "^3.0.2", "read-package-json-fast": "^3.0.2",
"semver": "^7.3.8", "semver": "^7.5.0",
"ssri": "^10.0.2", "ssri": "^10.0.3",
"tar": "^6.1.13", "tar": "^6.1.13",
"text-table": "~0.2.0", "text-table": "~0.2.0",
"tiny-relative-date": "^1.3.0", "tiny-relative-date": "^1.3.0",
@@ -10065,7 +10068,7 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/npm/node_modules/@npmcli/arborist": { "node_modules/npm/node_modules/@npmcli/arborist": {
"version": "6.2.7", "version": "6.2.8",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@@ -10101,7 +10104,7 @@
"semver": "^7.3.7", "semver": "^7.3.7",
"ssri": "^10.0.1", "ssri": "^10.0.1",
"treeverse": "^3.0.0", "treeverse": "^3.0.0",
"walk-up-path": "^1.0.0" "walk-up-path": "^3.0.1"
}, },
"bin": { "bin": {
"arborist": "bin/index.js" "arborist": "bin/index.js"
@@ -10111,17 +10114,17 @@
} }
}, },
"node_modules/npm/node_modules/@npmcli/config": { "node_modules/npm/node_modules/@npmcli/config": {
"version": "6.1.5", "version": "6.1.6",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@npmcli/map-workspaces": "^3.0.2", "@npmcli/map-workspaces": "^3.0.2",
"ini": "^3.0.0", "ini": "^4.1.0",
"nopt": "^7.0.0", "nopt": "^7.0.0",
"proc-log": "^3.0.0", "proc-log": "^3.0.0",
"read-package-json-fast": "^3.0.2", "read-package-json-fast": "^3.0.2",
"semver": "^7.3.5", "semver": "^7.3.5",
"walk-up-path": "^1.0.0" "walk-up-path": "^3.0.1"
}, },
"engines": { "engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0" "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
@@ -10197,7 +10200,7 @@
} }
}, },
"node_modules/npm/node_modules/@npmcli/metavuln-calculator": { "node_modules/npm/node_modules/@npmcli/metavuln-calculator": {
"version": "5.0.0", "version": "5.0.1",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@@ -10302,12 +10305,21 @@
"node": ">= 10" "node": ">= 10"
} }
}, },
"node_modules/npm/node_modules/@tufjs/canonical-json": {
"version": "1.0.0",
"inBundle": true,
"license": "MIT",
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/@tufjs/models": { "node_modules/npm/node_modules/@tufjs/models": {
"version": "1.0.1", "version": "1.0.3",
"inBundle": true, "inBundle": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"minimatch": "^7.4.2" "@tufjs/canonical-json": "1.0.0",
"minimatch": "^7.4.6"
}, },
"engines": { "engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0" "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
@@ -10996,11 +11008,11 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/npm/node_modules/ini": { "node_modules/npm/node_modules/ini": {
"version": "3.0.1", "version": "4.1.0",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"engines": { "engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0" "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
} }
}, },
"node_modules/npm/node_modules/init-package-json": { "node_modules/npm/node_modules/init-package-json": {
@@ -11120,11 +11132,11 @@
} }
}, },
"node_modules/npm/node_modules/libnpmdiff": { "node_modules/npm/node_modules/libnpmdiff": {
"version": "5.0.15", "version": "5.0.16",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@npmcli/arborist": "^6.2.7", "@npmcli/arborist": "^6.2.8",
"@npmcli/disparity-colors": "^3.0.0", "@npmcli/disparity-colors": "^3.0.0",
"@npmcli/installed-package-contents": "^2.0.2", "@npmcli/installed-package-contents": "^2.0.2",
"binary-extensions": "^2.2.0", "binary-extensions": "^2.2.0",
@@ -11139,11 +11151,11 @@
} }
}, },
"node_modules/npm/node_modules/libnpmexec": { "node_modules/npm/node_modules/libnpmexec": {
"version": "5.0.15", "version": "5.0.16",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@npmcli/arborist": "^6.2.7", "@npmcli/arborist": "^6.2.8",
"@npmcli/run-script": "^6.0.0", "@npmcli/run-script": "^6.0.0",
"chalk": "^4.1.0", "chalk": "^4.1.0",
"ci-info": "^3.7.1", "ci-info": "^3.7.1",
@@ -11154,18 +11166,18 @@
"read": "^2.0.0", "read": "^2.0.0",
"read-package-json-fast": "^3.0.2", "read-package-json-fast": "^3.0.2",
"semver": "^7.3.7", "semver": "^7.3.7",
"walk-up-path": "^1.0.0" "walk-up-path": "^3.0.1"
}, },
"engines": { "engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0" "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
} }
}, },
"node_modules/npm/node_modules/libnpmfund": { "node_modules/npm/node_modules/libnpmfund": {
"version": "4.0.15", "version": "4.0.16",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@npmcli/arborist": "^6.2.7" "@npmcli/arborist": "^6.2.8"
}, },
"engines": { "engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0" "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
@@ -11196,11 +11208,11 @@
} }
}, },
"node_modules/npm/node_modules/libnpmpack": { "node_modules/npm/node_modules/libnpmpack": {
"version": "5.0.15", "version": "5.0.16",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@npmcli/arborist": "^6.2.7", "@npmcli/arborist": "^6.2.8",
"@npmcli/run-script": "^6.0.0", "@npmcli/run-script": "^6.0.0",
"npm-package-arg": "^10.1.0", "npm-package-arg": "^10.1.0",
"pacote": "^15.0.8" "pacote": "^15.0.8"
@@ -11274,7 +11286,7 @@
} }
}, },
"node_modules/npm/node_modules/make-fetch-happen": { "node_modules/npm/node_modules/make-fetch-happen": {
"version": "11.0.3", "version": "11.1.0",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@@ -11299,7 +11311,7 @@
} }
}, },
"node_modules/npm/node_modules/minimatch": { "node_modules/npm/node_modules/minimatch": {
"version": "7.4.3", "version": "7.4.6",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@@ -11313,7 +11325,7 @@
} }
}, },
"node_modules/npm/node_modules/minipass": { "node_modules/npm/node_modules/minipass": {
"version": "4.2.5", "version": "4.2.8",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"engines": { "engines": {
@@ -11343,7 +11355,7 @@
} }
}, },
"node_modules/npm/node_modules/minipass-fetch": { "node_modules/npm/node_modules/minipass-fetch": {
"version": "3.0.1", "version": "3.0.2",
"inBundle": true, "inBundle": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@@ -11876,7 +11888,7 @@
} }
}, },
"node_modules/npm/node_modules/npm-install-checks": { "node_modules/npm/node_modules/npm-install-checks": {
"version": "6.1.0", "version": "6.1.1",
"inBundle": true, "inBundle": true,
"license": "BSD-2-Clause", "license": "BSD-2-Clause",
"dependencies": { "dependencies": {
@@ -11946,7 +11958,7 @@
} }
}, },
"node_modules/npm/node_modules/npm-registry-fetch": { "node_modules/npm/node_modules/npm-registry-fetch": {
"version": "14.0.3", "version": "14.0.4",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@@ -12153,7 +12165,7 @@
} }
}, },
"node_modules/npm/node_modules/read": { "node_modules/npm/node_modules/read": {
"version": "2.0.0", "version": "2.1.0",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@@ -12284,7 +12296,7 @@
"optional": true "optional": true
}, },
"node_modules/npm/node_modules/semver": { "node_modules/npm/node_modules/semver": {
"version": "7.3.8", "version": "7.5.0",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@@ -12319,13 +12331,13 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/npm/node_modules/sigstore": { "node_modules/npm/node_modules/sigstore": {
"version": "1.2.0", "version": "1.3.0",
"inBundle": true, "inBundle": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@sigstore/protobuf-specs": "^0.1.0", "@sigstore/protobuf-specs": "^0.1.0",
"make-fetch-happen": "^11.0.1", "make-fetch-happen": "^11.0.1",
"tuf-js": "^1.0.0" "tuf-js": "^1.1.3"
}, },
"bin": { "bin": {
"sigstore": "bin/sigstore.js" "sigstore": "bin/sigstore.js"
@@ -12398,7 +12410,7 @@
"license": "CC0-1.0" "license": "CC0-1.0"
}, },
"node_modules/npm/node_modules/ssri": { "node_modules/npm/node_modules/ssri": {
"version": "10.0.2", "version": "10.0.3",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@@ -12508,11 +12520,11 @@
} }
}, },
"node_modules/npm/node_modules/tuf-js": { "node_modules/npm/node_modules/tuf-js": {
"version": "1.1.2", "version": "1.1.4",
"inBundle": true, "inBundle": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@tufjs/models": "1.0.1", "@tufjs/models": "1.0.3",
"make-fetch-happen": "^11.0.1" "make-fetch-happen": "^11.0.1"
}, },
"engines": { "engines": {
@@ -12567,7 +12579,7 @@
} }
}, },
"node_modules/npm/node_modules/walk-up-path": { "node_modules/npm/node_modules/walk-up-path": {
"version": "1.0.0", "version": "3.0.1",
"inBundle": true, "inBundle": true,
"license": "ISC" "license": "ISC"
}, },

View File

@@ -99,10 +99,10 @@
"marked-extended-tables": "^1.0.5", "marked-extended-tables": "^1.0.5",
"markedLegacy": "npm:marked@^0.3.19", "markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.29.4", "moment": "^2.29.4",
"mongoose": "^7.0.3", "mongoose": "^7.1.0",
"nanoid": "3.3.4", "nanoid": "3.3.4",
"nconf": "^0.12.0", "nconf": "^0.12.0",
"npm": "^9.6.4", "npm": "^9.6.5",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"react-frame-component": "^4.1.3", "react-frame-component": "^4.1.3",
@@ -112,7 +112,7 @@
"vitreum": "git+https://git@github.com/calculuschild/vitreum.git" "vitreum": "git+https://git@github.com/calculuschild/vitreum.git"
}, },
"devDependencies": { "devDependencies": {
"eslint": "^8.38.0", "eslint": "^8.39.0",
"eslint-plugin-react": "^7.32.2", "eslint-plugin-react": "^7.32.2",
"eslint-plugin-jest": "^27.2.1", "eslint-plugin-jest": "^27.2.1",
"jest": "^29.5.0", "jest": "^29.5.0",

View File

@@ -1,3 +1,5 @@
@import (less) './themes/assets/assets.less';
:root { :root {
//Colors //Colors
--HB_Color_Accent : #EBCEC3; // Salmon --HB_Color_Accent : #EBCEC3; // Salmon
@@ -17,3 +19,10 @@
bottom : 40px; bottom : 40px;
} }
} }
.page:has(.partCover) {
.partCover {
background-image: @partCoverHeaderDMG;
}
}

View File

@@ -182,6 +182,12 @@ module.exports = [
gen : CoverPageGen.inside, gen : CoverPageGen.inside,
experimental : true experimental : true
}, },
{
name : 'Part Cover Page',
icon : 'fac book-part-cover',
gen : CoverPageGen.part,
experimental : true
},
{ {
name : 'Back Cover Page', name : 'Back Cover Page',
icon : 'fac book-back-cover', icon : 'fac book-back-cover',

View File

@@ -100,11 +100,25 @@ module.exports = {
___ ___
{{imageMaskCenter${_.random(1, 16)},--offsetX:0%,--offsetY:0%,--rotation:0 {{imageMaskCenter${_.random(1, 16)},--offsetX:0%,--offsetY:0%,--rotation:0
![](https://i.imgur.com/IsfUnFR.jpg){height:100%} ![background image](https://i.imgur.com/IsfUnFR.jpg){position:absolute,bottom:0,left:0,height:100%}
}} }}
{{logo ![](/assets/naturalCritLogo.svg)}} {{logo ![](/assets/naturalCritLogo.svg)}}
\page`;
},
part : function() {
return dedent`
{{partCover}}
# PART X
## ${_.sample(subtitles)}
{{imageMaskEdge${_.random(1, 8)},--offset:10cm,--rotation:180
![Background image](https://i.imgur.com/9TU96xY.jpg){position:absolute,bottom:0,left:0,height:100%}
}}
\page`; \page`;
} }
}; };

View File

@@ -0,0 +1,50 @@
const _ = require('lodash');
var titles = [
'Introduction to the World of DnD',
'Creating Your Character',
'The Rules of the Game',
'Combat and Combat Strategies',
'Magic and Spellcasting',
'Adventuring and Exploration',
'Dungeon Delving',
'Campaign Building and World Building',
'DM Techniques and Tips',
'Appendix: Reference Material',
'Monsters and Creatures',
'Equipment and Treasure',
'Non-Player Characters (NPCs)',
'Experience and Leveling',
'Races and Classes',
'Skills and Abilities',
'Alignment and Moral Choices',
'Player-vs-Player Conflict',
'Game Mastering 101',
'Running a Successful Campaign',
'Worldbuilding and Lore',
'Designing Encounters and Adventures',
'Managing Players and their Expectations',
'Factions and Political Intrigue',
'Adventure Hooks and Plot Ideas',
'Building a Campaign Setting',
'Handling Rules Disputes',
'Running Large-Scale Battles',
'Designing Unique Magic Systems',
'Developing and Using NPCs',
'Crafting Memorable Quests',
'Improvising When Things Don\'t Go as Planned',
'Managing Session Flow and Pacing',
'Building a World That Feels Alive'
];
module.exports = ()=>{
return `{{partCover}}
# PART X
## ${_.sample(titles)}
{{imageMaskEdge5,--offset:10cm,--rotation:180
![Background](https://i.imgur.com/9TU96xY.jpg){height:100%}
}}
\\page`;
};

View File

@@ -897,6 +897,45 @@ h5 + table{
} }
} }
//*****************************
// * PART COVER
// *****************************/
.page:has(.partCover) {
columns : 1;
text-align : center;
padding-top: 0;
.partCover {
background-image: @partCoverHeaderPHB;
background-repeat: no-repeat;
position: absolute;
background-size: 100%;
top: 0;
left: 0;
height: 6cm;
width: 100%;
}
h1 {
position: relative;
text-align: center;
text-transform: uppercase;
font-size: 2.3cm;
font-family: NodestoCapsCondensed;
margin-top: .4cm;
}
h2 {
font-family: Overpass;
font-size: 0.45cm;
position: relative;
margin-top: -0.7em;
line-height: 1.1em;
margin-left : auto;
margin-right : auto;
}
}
//***************************** //*****************************
// * TABLE OF CONTENTS // * TABLE OF CONTENTS
// *****************************/ // *****************************/

View File

@@ -23,6 +23,9 @@ body {
break-inside : avoid; break-inside : avoid;
display : inline-block; display : inline-block;
width : 100%; width : 100%;
img {
z-index : 0;
}
} }
.inline-block { .inline-block {
display : inline-block; display : inline-block;
@@ -251,7 +254,6 @@ body {
background-size : 20px; background-size : 20px;
z-index : -1; z-index : -1;
transform : translateY(50%) translateX(-50%) rotate(calc(1deg * var(--rotation))) scaleX(var(--scaleX)) scaleY(var(--scaleY)); transform : translateY(50%) translateX(-50%) rotate(calc(1deg * var(--rotation))) scaleX(var(--scaleX)) scaleY(var(--scaleY));
transition : transform 2s;
& > p:has(img) { & > p:has(img) {
position : absolute; position : absolute;
width : 50%; width : 50%;
@@ -259,7 +261,6 @@ body {
bottom : 50%; bottom : 50%;
left : 50%; left : 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)));
transition : transform 2s;
} }
& img { & img {
position : absolute; position : absolute;

View File

@@ -13,6 +13,8 @@
@naturalCritLogo : url('/assets/naturalCritLogo.svg'); @naturalCritLogo : url('/assets/naturalCritLogo.svg');
@coverPageBanner : url('/assets/coverPageBanner.svg'); @coverPageBanner : url('/assets/coverPageBanner.svg');
@horizontalRule : url('/assets/horizontalRule.svg'); @horizontalRule : url('/assets/horizontalRule.svg');
@partCoverHeaderPHB : url('/assets/partCoverHeaderPHB.png');
@partCoverHeaderDMG : url('/assets/partCoverHeaderDMG.svg');
@insideCoverMask : url('/assets/insideCoverMask.png'); @insideCoverMask : url('/assets/insideCoverMask.png');
@backCover : url('/assets/backCover.png'); @backCover : url('/assets/backCover.png');
@scriptBorder : url('/assets/scriptBorder.png'); @scriptBorder : url('/assets/scriptBorder.png');

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 611.99 154.72"><defs><style>.cls-1{fill:#f4f0f1;}.cls-2{fill:#d0d4d0;stroke:#888;stroke-linecap:round;stroke-miterlimit:35;stroke-width:0.5px;}</style></defs><title>Asset 2</title><g id="Layer_2" data-name="Layer 2"><g id="svg"><polygon id="background" class="cls-1" points="221.58 0 221.58 86.65 305.82 136.18 389.8 86.91 389.8 0 221.58 0"/><path id="right_triangle_compound_path" data-name="right triangle compound path" class="cls-2" d="M526.31.25c0,14.18-.08,26.67-.12,40.85,0,4.47-2.72,11-11.77,11-3.25.16-13.9-1.11-23.74-6.57L410.79.25h-2.53L527.82,69.38V.25Zm-.06,66.27L498.44,50.67c1,.39,14.21,4,19.29,2.81a13.9,13.9,0,0,0,8.52-6Z"/><path id="main_shape" data-name="main shape" class="cls-2" d="M598.88,123.48l-.13-65.27a81.69,81.69,0,0,1-24,20.31,79.73,79.73,0,0,1-26.8,9L544.82,86a78.57,78.57,0,0,0,42.52-18.09c15.33-13,22.12-30.25,24.4-37.06v-7a80.45,80.45,0,0,1-15.39,31.7c.63-1,16.49-26.4-2.42-55.2h-2.37c3.37,5,12.23,19.65,9.21,37.64-4,24-27.74,43.84-58.54,46.25L471.67,43.29a3.24,3.24,0,0,0-1.37-3,3.2,3.2,0,0,0-3.55,0L447.21,29a7,7,0,0,0-2.25-2.7,7,7,0,0,0-4.73-1.19l-16.59-9.57C414.47,10.29,404,4.25,397.06.25h-3.32L436.1,25.46s-36.92.06-40.94.11c-2.79-1.71-2.7,3.24,0,1.62h41.71l-46.4.37L390.3.26h-1.57L388.79,86l-41.1,24.5c-6.35,3.73-24.5,13.91-42.86,14.1s-36.47-11.3-44-15.49C248,101.8,235.15,93.85,222.33,86.52L222.46.25h-2V28l-46.09-.37h41.7c2.71,1.62,2.79-3.33,0-1.62-4-.05-40.93-.11-40.93-.11L218.32.25H215c-7,4-18.25,10.52-27.42,15.8L171,25.62a7,7,0,0,0-4.73,1.19,7,7,0,0,0-2.25,2.7L144.46,40.72a3.19,3.19,0,0,0-3.54.05,3.24,3.24,0,0,0-1.37,3L69,84.62c-30.8-2.41-54.53-22.3-58.54-46.25-3-18,5.84-32.62,9.2-37.64H17.29c-18.91,28.8-3,54.19-2.42,55.2C2.75,41,.27,26.28.27,26.28l0,7.08a78.31,78.31,0,0,0,23.63,35A78.57,78.57,0,0,0,66.4,86.43L63.22,88a79.66,79.66,0,0,1-26.8-9,81.76,81.76,0,0,1-24-20.31L12.34,124C12.46,141,.25,147.51.25,147.51v1.72a27.5,27.5,0,0,0,8.43-8A29,29,0,0,0,13,131.51v10.41L.25,152v2.1L26,133.61v-22l20.48-12c62.61,1.71,93.58-40,99.08-46.72,21.86-20.39,70.66-22.25,74.93-22.37V87.7l85.25,49.11,85.12-49.4-.33-57.36s52.35,1.05,75.23,22.38c5.49,6.67,36.47,48.43,99.08,46.72l20.48,12v22l26.47,21.07v-2.1l-13.55-10.66V131a29,29,0,0,0,4.35,9.72,32.12,32.12,0,0,0,9.2,8.6v-1.72A27.69,27.69,0,0,1,598.88,123.48ZM139.64,46.06c-.25.47-8.48,15.47-26.11,27.94-17.91,12.67-40,10.81-40,10.81ZM24.06,110.34l.1,22.47-7.09,6.1V93.77a99.79,99.79,0,0,0,12.3,3.52,99.74,99.74,0,0,0,13.8,2ZM48.19,97A102.43,102.43,0,0,1,30,95.38a103,103,0,0,1-15-3.87l-.09,48.35L13.76,141q.22-39,.47-77.9A83.48,83.48,0,0,0,36.08,80.34a82.84,82.84,0,0,0,25.15,8.85Zm30.54-3a121.63,121.63,0,0,1-26.57,3l12-7.14a96,96,0,0,0,15.51.29A97,97,0,0,0,102.19,86,122.56,122.56,0,0,1,78.73,94ZM140,55.86C135.3,61.42,126.49,71.79,114.11,79,96,89.52,77.09,89.38,66.63,88.34l2.65-1.62A77.74,77.74,0,0,0,112,77.14c17.82-9.9,26.42-24.69,29.83-30.8.2,0,2.07.45,3.05-.86a3.75,3.75,0,0,0,.64-2.86l6.71-3.76A128.27,128.27,0,0,1,140,55.86ZM164.8,39.57a119.38,119.38,0,0,0-15.51,8.29l7-11.33,11-6.29,36.42-.38C190.52,32.15,179.34,33.15,164.8,39.57Zm140.83,95.27-23.08-13.27c3.87,1.5,15.25,4.45,22.63,4.45s18.72-2.93,23.34-4.45Zm232.1-50.51s-22.14,1.87-40-10.81c-17.63-12.47-25.85-27.47-26.1-27.94ZM446.43,39.1c-14.55-6.43-25.73-7.43-38.88-9.72l36.41.38,11,6.29,7,11.33A118,118,0,0,0,446.43,39.1ZM471.2,55.38a128.27,128.27,0,0,1-12.2-17l6.71,3.76a3.73,3.73,0,0,0,.65,2.86c1,1.31,2.84.85,3.05.86,3.4,6.11,12,20.9,29.83,30.8A77.73,77.73,0,0,0,542,86.24l2.64,1.62c-10.47,1-29.4,1.18-47.48-9.34C484.73,71.32,475.92,60.94,471.2,55.38Zm61.29,38.1A123,123,0,0,1,509,85.54a96.54,96.54,0,0,0,22.51,4.13,96,96,0,0,0,15.51-.29l12,7.14A121.63,121.63,0,0,1,532.49,93.48Zm61.67,45-7.1-6.1.09-22.47-19.1-11a99.66,99.66,0,0,0,13.81-2,100.3,100.3,0,0,0,12.3-3.52Zm2.17.95L596.23,91a102.68,102.68,0,0,1-15,3.87A102.43,102.43,0,0,1,563,96.52l-13-7.81a82.61,82.61,0,0,0,25.16-8.85A83.14,83.14,0,0,0,597,62.62q.22,39,.47,77.9Z"/><path id="left_triangle_compound_path" data-name="left triangle compound path" class="cls-2" d="M83.4.73V69.86L203.77.25h-2.53l-80.7,45.8c-9.84,5.46-20.49,6.73-23.74,6.57-9,0-11.77-6.57-11.77-11C85,27.4,85,14.91,84.91.73ZM85,48a13.87,13.87,0,0,0,8.51,6c5.08,1.18,18.26-2.42,19.29-2.81L85,67Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.