attempt at speeding up images
This commit is contained in:
parent
f3774f11f4
commit
f1a61dd8bc
37 changed files with 3351 additions and 3848 deletions
39
.eleventy.js
39
.eleventy.js
|
|
@ -1,3 +1,10 @@
|
|||
const UpgradeHelper = require('@11ty/eleventy-upgrade-help');
|
||||
|
||||
//const pluginImages = require("./eleventy.config.images.js");
|
||||
|
||||
const { eleventyImagePlugin } = require('@11ty/eleventy-img');
|
||||
const eleventyWebcPlugin = require('@11ty/eleventy-plugin-webc');
|
||||
|
||||
const htmlmin = require('html-minifier');
|
||||
const dateFns = require('date-fns');
|
||||
//const lazyImagesPlugin = require('eleventy-plugin-lazyimages');
|
||||
|
|
@ -8,13 +15,42 @@ const translations = require('./src/_data/i18n');
|
|||
const markdownIt = require('markdown-it');
|
||||
const markdownItVideo = require('markdown-it-video');
|
||||
|
||||
// https://github.com/saneef/eleventy-plugin-img2picture
|
||||
//const img2picture = require("eleventy-plugin-img2picture");
|
||||
|
||||
module.exports = function (eleventyConfig) {
|
||||
// WebC
|
||||
eleventyConfig.addPlugin(eleventyWebcPlugin, {
|
||||
components: [
|
||||
// …
|
||||
// Add as a global WebC component
|
||||
'npm:@11ty/eleventy-img/*.webc',
|
||||
],
|
||||
});
|
||||
|
||||
// Image plugin
|
||||
eleventyConfig.addPlugin(eleventyImagePlugin, {
|
||||
// Set global default options
|
||||
formats: ['webp', 'jpeg'],
|
||||
urlPath: '/img/',
|
||||
|
||||
// Notably `outputDir` is resolved automatically
|
||||
// to the project output directory
|
||||
|
||||
defaultAttributes: {
|
||||
loading: 'lazy',
|
||||
decoding: 'async',
|
||||
},
|
||||
});
|
||||
|
||||
let markdownLibrary = markdownIt().use(markdownItVideo);
|
||||
|
||||
eleventyConfig.setLibrary('md', markdownLibrary);
|
||||
|
||||
// PLUGINS **************************************************************
|
||||
|
||||
//eleventyConfig.addPlugin(pluginImages);
|
||||
|
||||
eleventyConfig.addPlugin(syntaxHighlight);
|
||||
|
||||
// does not work with background images
|
||||
|
|
@ -36,6 +72,9 @@ module.exports = function (eleventyConfig) {
|
|||
},
|
||||
});
|
||||
|
||||
// If you have other `addPlugin` calls, it’s important that UpgradeHelper is added last.
|
||||
eleventyConfig.addPlugin(UpgradeHelper);
|
||||
|
||||
eleventyConfig.setEjsOptions({
|
||||
rmWhitespace: true,
|
||||
context: {
|
||||
|
|
|
|||
34
eleventy.config.images.js
Normal file
34
eleventy.config.images.js
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
const path = require('path');
|
||||
const eleventyImage = require('@11ty/eleventy-img');
|
||||
|
||||
module.exports = (eleventyConfig) => {
|
||||
function relativeToInputPath(inputPath, relativeFilePath) {
|
||||
const split = inputPath.split('/');
|
||||
split.pop();
|
||||
|
||||
return path.resolve(split.join(path.sep), relativeFilePath);
|
||||
}
|
||||
|
||||
// Eleventy Image shortcode
|
||||
// https://www.11ty.dev/docs/plugins/image/
|
||||
eleventyConfig.addAsyncShortcode('image', async function imageShortcode(src, alt, widths, sizes) {
|
||||
// Full list of formats here: https://www.11ty.dev/docs/plugins/image/#output-formats
|
||||
// Warning: Avif can be resource-intensive so take care!
|
||||
const formats = ['avif', 'webp', 'auto'];
|
||||
const file = relativeToInputPath(this.page.inputPath, src);
|
||||
const metadata = await eleventyImage(file, {
|
||||
widths: widths || ['auto'],
|
||||
formats,
|
||||
outputDir: path.join(eleventyConfig.dir.output, 'img'), // Advanced usage note: `eleventyConfig.dir` works here because we’re using addPlugin.
|
||||
});
|
||||
|
||||
// TODO loading=eager and fetchpriority=high
|
||||
const imageAttributes = {
|
||||
alt,
|
||||
sizes,
|
||||
loading: 'lazy',
|
||||
decoding: 'async',
|
||||
};
|
||||
return eleventyImage.generateHTML(metadata, imageAttributes);
|
||||
});
|
||||
};
|
||||
5776
package-lock.json
generated
5776
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -21,8 +21,9 @@
|
|||
},
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"@11ty/eleventy": "^0.12.1",
|
||||
"@11ty/eleventy": "^2.0.1",
|
||||
"@11ty/eleventy-plugin-syntaxhighlight": "^3.1.1",
|
||||
"@11ty/eleventy-plugin-webc": "^0.11.0",
|
||||
"autoprefixer": "^10.2.6",
|
||||
"copy-webpack-plugin": "^9.0.0",
|
||||
"cross-env": "^7.0.3",
|
||||
|
|
@ -68,6 +69,8 @@
|
|||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@11ty/eleventy-img": "^3.1.0",
|
||||
"@11ty/eleventy-upgrade-help": "^2.0.5",
|
||||
"@glidejs/glide": "^3.4.1",
|
||||
"blueimp-md5": "^2.19.0",
|
||||
"eleventy-plugin-i18n": "^0.1.3",
|
||||
|
|
|
|||
43
src/_includes/blurb.ejs.bak
Normal file
43
src/_includes/blurb.ejs.bak
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
<article class="blurb__wrapper">
|
||||
<section>
|
||||
<p>
|
||||
<em>Complete</em> and <em>easy-to-use</em> virtual guide for learning, understanding, and visualizing the complexities of human anatomy in 3D.
|
||||
Includes information and images for each anatomical system and part, multiple options to interact with the <em>3D anatomy</em> models (hiding, fading, etc), and much more.
|
||||
</p>
|
||||
<p class="hide-on-mobile">
|
||||
The <%= site.site_name %> app can be downloaded and tested for free, which contains the skeleton and ligaments, other anatomical systems can be purchased separately.
|
||||
The anatomy app is available on <em>most platforms</em> (android, iOS, windows and mac) and can be used on your phone, tablet or desktop pc.
|
||||
</p>
|
||||
</section>
|
||||
<section>
|
||||
<div class="before-and-after">
|
||||
<div class='img background-img'></div>
|
||||
<div class='img foreground-img'></div>
|
||||
<input type="range" min="1" max="100" value="59" class="slider" name='slider' id="before-and-after__slider">
|
||||
<div class='slider-button'></div>
|
||||
</div>
|
||||
</section>
|
||||
</article>
|
||||
|
||||
<script>
|
||||
document.querySelector('#before-and-after__slider').addEventListener('input', (e) => {
|
||||
const sliderPos = e.target.value;
|
||||
// Update the width of the foreground image
|
||||
document.querySelector('.foreground-img').style.width = `${sliderPos}%`;
|
||||
// Update the position of the slider button
|
||||
document.querySelector('.slider-button').style.left = `calc(${sliderPos}% - 18px)`;
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.before-and-after .background-img {
|
||||
background-image: url('./assets/images/slider-1.png');
|
||||
background-position-x: -1px;
|
||||
}
|
||||
|
||||
.before-and-after .foreground-img {
|
||||
background-image: url('./assets/images/slider-2.png');
|
||||
background-position-x: -1px;
|
||||
width: 59%;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
<span class="alert form-alert alert--failure" id="otherError">Something went wrong. Try us on <a href="https://twitter.com/graphicvizion" target="_blank" style="font-weight: 600; color: #eee; text-decoration: underline;">Twitter</a> instead.</span>
|
||||
<span class="alert form-alert alert--success" id="success">Thanks! We'll contact you shortly.</span>
|
||||
</div>
|
||||
<eleventy-image src="./assets/images/contact.png" alt="photo of my tabby cat"></eleventy-image>
|
||||
<img class="hide-on-mobile" src="./assets/images/contact.png" alt="contact visual anatomy 3d developers" title="contact visual anatomy 3d developers">
|
||||
</section>
|
||||
</article>
|
||||
|
|
|
|||
26
src/_includes/contact.ejs.bak
Normal file
26
src/_includes/contact.ejs.bak
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<article class="contact__wrapper">
|
||||
<header>
|
||||
<h1 id="contact">Contact Us</h1>
|
||||
</header>
|
||||
<section>
|
||||
<div class="form">
|
||||
<input type="text" placeholder="your email address goes here" id="fromEmail">
|
||||
<span class="alert form-alert" id="emailError">your email address isn't valid</span>
|
||||
<textarea placeholder="your message goes here" id="message">
|
||||
</textarea>
|
||||
<button class="btn btn--contact" type="submit" id="contactSubmit">send <svg
|
||||
xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-send" width="32" height="32"
|
||||
viewBox="0 0 24 24" stroke-width="2" stroke="#ffffff" fill="none" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<line x1="10" y1="14" x2="21" y2="3" />
|
||||
<path d="M21 3l-6.5 18a0.55 .55 0 0 1 -1 0l-3.5 -7l-7 -3.5a0.55 .55 0 0 1 0 -1l18 -6.5" />
|
||||
</svg>
|
||||
</button>
|
||||
<span class="alert form-alert alert--failure" id="otherError">Something went wrong. Try us on <a href="https://twitter.com/graphicvizion" target="_blank" style="font-weight: 600; color: #eee; text-decoration: underline;">Twitter</a> instead.</span>
|
||||
<span class="alert form-alert alert--success" id="success">Thanks! We'll contact you shortly.</span>
|
||||
</div>
|
||||
<eleventy-image src="./assets/images/contact.png" alt="photo of my tabby cat"></eleventy-image>
|
||||
<img class="hide-on-mobile" src="./assets/images/contact.png" alt="contact visual anatomy 3d developers" title="contact visual anatomy 3d developers">
|
||||
</section>
|
||||
</article>
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
</header>
|
||||
<section class="download__content">
|
||||
<a class="platform__wrapper" href="https://apps.apple.com/il/app/visual-anatomy-3d-human/id1148048602" target="_blank">
|
||||
<% include /store-icons/ios.svg %>
|
||||
<%- include('/store-icons/ios.svg') -%>
|
||||
<h2>
|
||||
iOS
|
||||
</h2>
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
</div>
|
||||
</a>
|
||||
<a class="platform__wrapper" href="https://play.google.com/store/apps/details?id=com.graphicvizion.visualAnatomyHumanFr" target="_blank">
|
||||
<% include /store-icons/android.svg %>
|
||||
<%- include('/store-icons/android.svg') -%>
|
||||
<h2>
|
||||
Android
|
||||
</h2>
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
</div>
|
||||
</a>
|
||||
<a class="platform__wrapper" href="https://apps.apple.com/il/app/visual-anatomy-3d-human/id1148048602" target="_blank">
|
||||
<% include /store-icons/macos.svg %>
|
||||
<%- include('/store-icons/macos.svg') -%>
|
||||
<h2>
|
||||
macOS
|
||||
</h2>
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
</div>
|
||||
</a>
|
||||
<a class="platform__wrapper" href="https://www.microsoft.com/en-us/p/visual-anatomy-human-body/9nblggh4qg21" target="_blank">
|
||||
<% include /store-icons/windows.svg %>
|
||||
<%- include('/store-icons/windows.svg') -%>
|
||||
<h2>
|
||||
Windows
|
||||
</h2>
|
||||
|
|
|
|||
45
src/_includes/download.ejs.bak
Normal file
45
src/_includes/download.ejs.bak
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
<article class="download__wrapper max-w-screen-lg">
|
||||
<header>
|
||||
<h1 id="download">
|
||||
download now
|
||||
</h1>
|
||||
</header>
|
||||
<section class="download__content">
|
||||
<a class="platform__wrapper" href="https://apps.apple.com/il/app/visual-anatomy-3d-human/id1148048602" target="_blank">
|
||||
<%- include('/store-icons/ios.svg') -%>
|
||||
<h2>
|
||||
iOS
|
||||
</h2>
|
||||
<div class="btn btn--store">
|
||||
go to store
|
||||
</div>
|
||||
</a>
|
||||
<a class="platform__wrapper" href="https://play.google.com/store/apps/details?id=com.graphicvizion.visualAnatomyHumanFr" target="_blank">
|
||||
<%- include('/store-icons/android.svg') -%>
|
||||
<h2>
|
||||
Android
|
||||
</h2>
|
||||
<div class="btn btn--store">
|
||||
go to store
|
||||
</div>
|
||||
</a>
|
||||
<a class="platform__wrapper" href="https://apps.apple.com/il/app/visual-anatomy-3d-human/id1148048602" target="_blank">
|
||||
<%- include('/store-icons/macos.svg') -%>
|
||||
<h2>
|
||||
macOS
|
||||
</h2>
|
||||
<div class="btn btn--store">
|
||||
go to store
|
||||
</div>
|
||||
</a>
|
||||
<a class="platform__wrapper" href="https://www.microsoft.com/en-us/p/visual-anatomy-human-body/9nblggh4qg21" target="_blank">
|
||||
<%- include('/store-icons/windows.svg') -%>
|
||||
<h2>
|
||||
Windows
|
||||
</h2>
|
||||
<div class="btn btn--store">
|
||||
go to store
|
||||
</div>
|
||||
</a>
|
||||
</section>
|
||||
</article>
|
||||
133
src/_includes/footer.ejs.bak
Normal file
133
src/_includes/footer.ejs.bak
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
<footer class="text-center">
|
||||
<section>
|
||||
<h3>
|
||||
<a href="https://www.graphicvizion.com/" target="_blank">GraphicViZion</a>
|
||||
</h3>
|
||||
<div class="copywrite">
|
||||
<p>© <%= new Date().getFullYear() %> by GraphicViZion</p>
|
||||
<p class="build">v <%= buildInfo.version %> @ <time datetime="<%= buildInfo.time.raw %>">
|
||||
<%= buildInfo.time.formatted %>
|
||||
</time></p>
|
||||
</div>
|
||||
<div class="credit">
|
||||
this site was hand-crafted by <a href="https://spencerflagg.com" target="_blank">Spencer Flagg</a>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://www.instagram.com/graphicvizion/" target="_blank">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-instagram" width="32" height="32" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ffffff" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
||||
<rect x="4" y="4" width="16" height="16" rx="4" />
|
||||
<circle cx="12" cy="12" r="3" />
|
||||
<line x1="16.5" y1="7.5" x2="16.5" y2="7.501" />
|
||||
</svg>
|
||||
@graphic_vizion
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://twitter.com/graphicvizion" target="_blank">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-twitter"
|
||||
width="32" height="32" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ffffff" fill="none"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path
|
||||
d="M22 4.01c-1 .49 -1.98 .689 -3 .99c-1.121 -1.265 -2.783 -1.335 -4.38 -.737s-2.643 2.06 -2.62 3.737v1c-3.245 .083 -6.135 -1.395 -8 -4c0 0 -4.182 7.433 4 11c-1.872 1.247 -3.739 2.088 -6 2c3.308 1.803 6.913 2.423 10.034 1.517c3.58 -1.04 6.522 -3.723 7.651 -7.742a13.84 13.84 0 0 0 .497 -3.753c-.002 -.249 1.51 -2.772 1.818 -4.013z" />
|
||||
</svg>
|
||||
@graphicvizion
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://www.facebook.com/GraphicViZion/" target="_blank">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-facebook" width="32" height="32" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ffffff" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
||||
<path d="M7 10v4h3v7h4v-7h3l1 -4h-4v-2a1 1 0 0 1 1 -1h3v-4h-3a5 5 0 0 0 -5 5v2h-3" />
|
||||
</svg>
|
||||
Facebook
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://www.linkedin.com/company/graphicvizion/" target="_blank">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-linkedin" width="32" height="32" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ffffff" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
||||
<rect x="4" y="4" width="16" height="16" rx="2" />
|
||||
<line x1="8" y1="11" x2="8" y2="16" />
|
||||
<line x1="8" y1="8" x2="8" y2="8.01" />
|
||||
<line x1="12" y1="16" x2="12" y2="11" />
|
||||
<path d="M16 16v-3a2 2 0 0 0 -4 0" />
|
||||
</svg>
|
||||
LinkedIn
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://www.youtube.com/user/GraphicVizion" target="_blank">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-youtube"
|
||||
width="32" height="32" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ffffff" fill="none"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<rect x="3" y="5" width="18" height="14" rx="4" />
|
||||
<path d="M10 9l5 3l-5 3z" />
|
||||
</svg>
|
||||
YouTube
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://itunes.apple.com/us/artist/graphicvizion/id492668041" target="_blank">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-apple" width="32"
|
||||
height="32" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ffffff" fill="none"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path
|
||||
d="M9 7c-3 0 -4 3 -4 5.5c0 3 2 7.5 4 7.5c1.088 -.046 1.679 -.5 3 -.5c1.312 0 1.5 .5 3 .5s4 -3 4 -5c-.028 -.01 -2.472 -.403 -2.5 -3c-.019 -2.17 2.416 -2.954 2.5 -3c-1.023 -1.492 -2.951 -1.963 -3.5 -2c-1.433 -.111 -2.83 1 -3.5 1c-.68 0 -1.9 -1 -3 -1z" />
|
||||
<path d="M12 4a2 2 0 0 0 2 -2a2 2 0 0 0 -2 2" />
|
||||
</svg>
|
||||
App Store
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://play.google.com/store/apps/developer?id=GraphicViZion" target="_blank">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-google-play"
|
||||
width="32" height="32" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ffffff" fill="none"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path
|
||||
d="M4 3.71v16.58a0.7 .7 0 0 0 1.05 .606l14.622 -8.42a0.55 .55 0 0 0 0 -.953l-14.622 -8.419a0.7 .7 0 0 0 -1.05 .607z" />
|
||||
<line x1="15" y1="9" x2="4.5" y2="20.5" />
|
||||
<line x1="4.5" y1="3.5" x2="15" y2="15" />
|
||||
</svg>
|
||||
Play Store
|
||||
</a>
|
||||
</li>
|
||||
<li><a href="<%= site.url %>app/policies/privacypolicy.html" target="_blank">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-eye-off" width="32"
|
||||
height="32" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ffffff" fill="none"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<line x1="3" y1="3" x2="21" y2="21" />
|
||||
<path d="M10.584 10.587a2 2 0 0 0 2.828 2.83" />
|
||||
<path
|
||||
d="M9.363 5.365a9.466 9.466 0 0 1 2.637 -.365c4 0 7.333 2.333 10 7c-.778 1.361 -1.612 2.524 -2.503 3.488m-2.14 1.861c-1.631 1.1 -3.415 1.651 -5.357 1.651c-4 0 -7.333 -2.333 -10 -7c1.369 -2.395 2.913 -4.175 4.632 -5.341" />
|
||||
</svg>
|
||||
Privacy Policy</a></li>
|
||||
<li><a href="<%= site.url %>app/policies/termsofuse.html" target="_blank"><svg
|
||||
xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-news" width="32"
|
||||
height="32" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ffffff" fill="none"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path
|
||||
d="M16 6h3a1 1 0 0 1 1 1v11a2 2 0 0 1 -4 0v-13a1 1 0 0 0 -1 -1h-10a1 1 0 0 0 -1 1v12a3 3 0 0 0 3 3h11" />
|
||||
<line x1="8" y1="8" x2="12" y2="8" />
|
||||
<line x1="8" y1="12" x2="12" y2="12" />
|
||||
<line x1="8" y1="16" x2="12" y2="16" />
|
||||
</svg>Terms of Use</a></li>
|
||||
<% sections.forEach((link)=> { %>
|
||||
<li class="menu-item menu-item--<% link.class %>">
|
||||
<a href="<% if (link.external) { %><%= link.slug %><% } else { %><%= `../#${link.slug}` %><% } %>">
|
||||
<%= link.name %>
|
||||
</a>
|
||||
</li>
|
||||
<% }) %>
|
||||
</ul>
|
||||
</section>
|
||||
</footer>
|
||||
|
|
@ -1,19 +1,18 @@
|
|||
<article class="hero__wrapper">
|
||||
<% include /nav %>
|
||||
<%- include('/nav') -%>
|
||||
<!-- whatever video you put here will be (effectively) cropped to fit container size; make sure you're okay with it shrinking to the top left corner of the video at your specified minimum dimensions -->
|
||||
<video autoplay muted playsinline class="hero__video">
|
||||
<video autoplay muted playsinline poster="../assets/images/hero.png" class="hero__video">
|
||||
<source src="../assets/images/hero.mp4" type="video/mp4" alt="HTML5 background video">
|
||||
</video>
|
||||
<!-- <img src="./assets/images/hero.png" class="hero__video">-->
|
||||
<div class="hero__info">
|
||||
<a class="btn btn--hero" href="#download">
|
||||
download now
|
||||
</a>
|
||||
<div class="platform-list">
|
||||
<% include /store-icons/ios.svg %>
|
||||
<% include /store-icons/android.svg %>
|
||||
<% include /store-icons/macos.svg %>
|
||||
<% include /store-icons/windows.svg %>
|
||||
<%- include('/store-icons/ios.svg') -%>
|
||||
<%- include('/store-icons/android.svg') -%>
|
||||
<%- include('/store-icons/macos.svg') -%>
|
||||
<%- include('/store-icons/windows.svg') -%>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hero__banner">
|
||||
|
|
|
|||
29
src/_includes/hero.ejs.bak
Normal file
29
src/_includes/hero.ejs.bak
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<article class="hero__wrapper">
|
||||
<%- include('/nav') -%>
|
||||
<!-- whatever video you put here will be (effectively) cropped to fit container size; make sure you're okay with it shrinking to the top left corner of the video at your specified minimum dimensions -->
|
||||
<video autoplay muted playsinline poster="../assets/images/hero.png" class="hero__video">
|
||||
<source src="../assets/images/hero.mp4" type="video/mp4" alt="HTML5 background video">
|
||||
</video>
|
||||
<div class="hero__info">
|
||||
<a class="btn btn--hero" href="#download">
|
||||
download now
|
||||
</a>
|
||||
<div class="platform-list">
|
||||
<%- include('/store-icons/ios.svg') -%>
|
||||
<%- include('/store-icons/android.svg') -%>
|
||||
<%- include('/store-icons/macos.svg') -%>
|
||||
<%- include('/store-icons/windows.svg') -%>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hero__banner">
|
||||
<svg class="banner-edge-left" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10">
|
||||
<path id="rect22" style="fill:#ffffff;fill-rule:evenodd;stroke-width:0.116947"
|
||||
d="M 9.9999058,0 A 10,10 0 0 1 0,10.000422 h 9.9999058 z" />
|
||||
</svg>
|
||||
<svg class="banner-edge-right" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10">
|
||||
<path id="rect22" style="fill:#ffffff;fill-rule:evenodd;stroke-width:0.116947"
|
||||
d="M 9.9999058,0 A 10,10 0 0 1 0,10.000422 h 9.9999058 z" />
|
||||
</svg>
|
||||
<h1 class="h1--hero">Interactive human anatomy in real-time 3D</h1>
|
||||
</div>
|
||||
</article>
|
||||
41
src/_includes/info.ejs.bak
Normal file
41
src/_includes/info.ejs.bak
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
<article class="info__wrapper max-w-screen-lg">
|
||||
<section id="info">
|
||||
<h1>
|
||||
Designed for anatomy students
|
||||
</h1>
|
||||
<p>
|
||||
We believe that learning by interaction is the best and easiest way to study human anatomy.
|
||||
</p>
|
||||
<h1>
|
||||
Perfect for professionals
|
||||
</h1>
|
||||
<p>
|
||||
When discussing anatomy with a patient it can help as an visual aid.
|
||||
</p>
|
||||
</section>
|
||||
<section>
|
||||
<ul>
|
||||
<li>
|
||||
over 1200 body parts!
|
||||
</li>
|
||||
<li>
|
||||
highly detailed
|
||||
</li>
|
||||
<li>
|
||||
fully searchable
|
||||
</li>
|
||||
<li>
|
||||
zoom, pan, and rotate in real time
|
||||
</li>
|
||||
<li>
|
||||
show and hide layers
|
||||
</li>
|
||||
<li>
|
||||
see details for each body part
|
||||
</li>
|
||||
<li class="hide-on-mobile">
|
||||
add custom notes
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</article>
|
||||
|
|
@ -118,7 +118,7 @@ pageName: ''
|
|||
<%- content %>
|
||||
</main>
|
||||
|
||||
<% include /footer %>
|
||||
<%- include('/footer') -%>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
@ -192,7 +192,7 @@ pageName: ''
|
|||
'http_origin': 'https://visualanatomy3d.app',
|
||||
'hash': md5(fromEmail.value + '192y34kjsdf32gt'), /*erkbn234987kjs*/
|
||||
'fromEmail': fromEmail.value,
|
||||
'message': message.value,
|
||||
'message': message.innerText,
|
||||
'urlUnderneath': 'https://visualanatomy3d.app',
|
||||
'title': 'Support - Visual Anatomy 3D (site)'
|
||||
};
|
||||
|
|
@ -233,7 +233,7 @@ pageName: ''
|
|||
emailError.classList.remove('form-alert--visible');
|
||||
otherError.classList.remove('form-alert--visible');
|
||||
fromEmail.value = '';
|
||||
message.value = '';
|
||||
message.innerText = '';
|
||||
break;
|
||||
case "invalidEmailAdres":
|
||||
emailError.classList.add('form-alert--visible');
|
||||
|
|
@ -247,7 +247,7 @@ pageName: ''
|
|||
emailError.classList.remove('form-alert--visible');
|
||||
otherError.classList.remove('form-alert--visible');
|
||||
fromEmail.value = '';
|
||||
message.value = '';
|
||||
message.innerText = '';
|
||||
break;
|
||||
}
|
||||
//console.log(data)
|
||||
|
|
|
|||
354
src/_includes/layouts/base.ejs.bak
Normal file
354
src/_includes/layouts/base.ejs.bak
Normal file
|
|
@ -0,0 +1,354 @@
|
|||
---
|
||||
pageName: ''
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="page--<%= pageName %>" lang="en" dir="ltr" style="--scrollbarWidth: 0px; --viewportWidth: calc(100vw - var(--scrollbarWidth));">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
|
||||
<!-- <link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Nunito&family=DM+Serif+Display:ital@0;1&display=swap" rel="stylesheet"> -->
|
||||
|
||||
<link rel="preconnect" href="https://api.fonts.coollabs.io" crossorigin>
|
||||
<link href="https://api.fonts.coollabs.io/css2?family=Bebas+Neue&family=Nunito&family=DM+Serif+Display&display=swap" rel="stylesheet">
|
||||
|
||||
<!-- Required Core Stylesheet -->
|
||||
<!-- <link rel="stylesheet" href="/node_modules/@glidejs/glide/dist/css/glide.core.css"> -->
|
||||
|
||||
<!-- Optional Theme Stylesheet -->
|
||||
<!-- <link rel="stylesheet" href="/node_modules/@glidejs/glide/dist/css/glide.theme.css"> -->
|
||||
|
||||
<script>
|
||||
|
||||
window.onload = setScrollbarVariable;
|
||||
document.onload = setScrollbarVariable;
|
||||
window.onresize = setScrollbarVariable;
|
||||
|
||||
function setScrollbarVariable() {
|
||||
//alert(window.innerWidth + " - " + document.body.clientWidth);
|
||||
//const scrollbarWidth = window.innerWidth - document.body.clientWidth;
|
||||
|
||||
const viewportDependantWidth = (typeof window.orientation !== "undefined") ? screen.width : window.innerWidth;
|
||||
|
||||
//console.log(screen.width + " " + window.innerWidth);
|
||||
const scrollbarWidth = viewportDependantWidth - document.body.clientWidth;
|
||||
document.documentElement.style.setProperty("--scrollbarWidth", `${scrollbarWidth}px`);
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
:root{
|
||||
--viewportWidth: calc(100vw - var(--scrollbarWidth));
|
||||
}
|
||||
</style>
|
||||
|
||||
<title>
|
||||
<%= site.title %>
|
||||
</title>
|
||||
<meta name="description" content="<%= (!!locals.description) ? description : site.description %>" />
|
||||
<meta name="author" content="<%= site.author %>" />
|
||||
<meta property="og:title" content="<%= site.title %>" />
|
||||
<meta property="og:description" content="<%= (!!locals.description) ? description : site.description %>" />
|
||||
<meta property="og:locale" content="<%= site.locale %>" />
|
||||
<meta property="og:site_name" content="<%= site.site_name %>" />
|
||||
<!--<script async defer data-website-id="f74324cf-e86f-4993-8537-63ccd9698204" src="https://s9-analytics.altweb.me/umami.js"></script>-->
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-MGE4QXKDFW"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-MGE4QXKDFW');
|
||||
</script>
|
||||
|
||||
<% if (locals.tags=="posts" ) { %>
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="article:published_time" content="<%= date.toISOString() %>" />
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"description": "<%= (!!locals.description) ? description : site.description %>",
|
||||
"author": { "@type": "Person", "name": "<%= site.author %>" },
|
||||
"@type": "BlogPosting",
|
||||
"url": "<%= `${site.url}${page.url}` %>",
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"logo": {
|
||||
"@type": "ImageObject",
|
||||
"url": "<%= `${site.url}/assets/images/logo.png` %>"
|
||||
},
|
||||
"name": "<%= site.author %>"
|
||||
},
|
||||
"headline": "<%= site.title %>",
|
||||
"datePublished": "<%= date.toISOString() %>",
|
||||
"mainEntityOfPage": {
|
||||
"@type": "WebPage",
|
||||
"@id": "<%= `${site.url}${page.url}` %>"
|
||||
},
|
||||
"@context": "http://schema.org"
|
||||
}
|
||||
</script>
|
||||
<% } %>
|
||||
<%- include('webpack.ejs') %>
|
||||
<% if (page.url=="/" ) { %>
|
||||
|
||||
<% } %>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="page" class="max-w-screen-lg mx-auto">
|
||||
<header class="site-header ">
|
||||
<a href="/"><img class="site-logo" src="<%= `/assets/images/logo.png` %>" alt=""></a>
|
||||
<h1 class="site-title">
|
||||
<%= site.title %>
|
||||
</h1>
|
||||
<!-- <div class="text-xl"><%= site.description %></div> -->
|
||||
</header>
|
||||
|
||||
<main class="page-content">
|
||||
<%- content %>
|
||||
</main>
|
||||
|
||||
<%- include('/footer') -%>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- <script src="https://unpkg.com/@glidejs/glide@3.3.0/dist/glide.js"></script> -->
|
||||
|
||||
<!-- <script src="/node_modules/@glidejs/glide/dist/glide.modular.esm.js"></script> -->
|
||||
<!-- <script src="/js/eleventy.js" type="module" async></script> -->
|
||||
|
||||
<!-- this below were the last ones that i used -->
|
||||
<!-- <script src="./node_modules/@glidejs/glide/dist/glide.min.js"></script> -->
|
||||
<script src="/node_modules/blueimp-md5/js/md5.min.js"></script>
|
||||
|
||||
<script>
|
||||
// new Glide('.glide').mount({
|
||||
// type: 'carousel',
|
||||
// startAt: 0,
|
||||
// perView: 1,
|
||||
// autoplay: 1000,
|
||||
// bound: true,
|
||||
// rewind: false
|
||||
// })
|
||||
// new Glide('.glide').mount()
|
||||
</script>
|
||||
|
||||
<script>
|
||||
|
||||
var siteUrl = "<%= site.url %>";
|
||||
|
||||
console.log(siteUrl);
|
||||
|
||||
document.getElementById('fromEmail').addEventListener('input', function () {
|
||||
|
||||
const fromEmail = document.getElementById('fromEmail');
|
||||
const message = document.getElementById('message');
|
||||
const emailError = document.getElementById('emailError');
|
||||
const otherError = document.getElementById('otherError');
|
||||
const success = document.getElementById('success');
|
||||
const contactSubmit = document.getElementById('contactSubmit');
|
||||
|
||||
// if (/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/.test(fromEmail.value)) {
|
||||
// contactSubmit.disabled = false;
|
||||
// alert.classList.remove('form-alert--visible');
|
||||
// } else {
|
||||
// contactSubmit.disabled = true;
|
||||
// alert.classList.add('form-alert--visible');
|
||||
// }
|
||||
|
||||
emailError.classList.remove('form-alert--visible');
|
||||
otherError.classList.remove('form-alert--visible');
|
||||
success.classList.remove('form-alert--visible');
|
||||
|
||||
});
|
||||
|
||||
document.getElementById('contactSubmit').addEventListener('click', function () {
|
||||
|
||||
const fromEmail = document.getElementById('fromEmail');
|
||||
const message = document.getElementById('message');
|
||||
const emailError = document.getElementById('emailError');
|
||||
const otherError = document.getElementById('otherError');
|
||||
const success = document.getElementById('success');
|
||||
|
||||
if (/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/.test(fromEmail.value)) {
|
||||
/* succeeded */
|
||||
emailError.classList.remove('form-alert--visible');
|
||||
|
||||
|
||||
|
||||
var details = {
|
||||
'http_origin': 'https://visualanatomy3d.app',
|
||||
'hash': md5(fromEmail.value + '192y34kjsdf32gt'), /*erkbn234987kjs*/
|
||||
'fromEmail': fromEmail.value,
|
||||
'message': message.innerText,
|
||||
'urlUnderneath': 'https://visualanatomy3d.app',
|
||||
'title': 'Support - Visual Anatomy 3D (site)'
|
||||
};
|
||||
|
||||
var formBody = [];
|
||||
for (var property in details) {
|
||||
var encodedKey = encodeURIComponent(property);
|
||||
var encodedValue = encodeURIComponent(details[property]);
|
||||
formBody.push(encodedKey + "=" + encodedValue);
|
||||
}
|
||||
formBody = formBody.join("&");
|
||||
|
||||
try {
|
||||
|
||||
/*siteUrl + 'app/php/email/v1/SendSupportMail.php'*/
|
||||
fetch('https://graphicvizion.com/apps/php/email/v1/SendSupportMail.php', {
|
||||
method: 'POST',
|
||||
//mode: 'no-cors',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
},
|
||||
body: formBody,
|
||||
})
|
||||
.then(response => {
|
||||
//console.log("response.status: " + response.status);
|
||||
if(response.status === 200){
|
||||
return response.text();
|
||||
} else {
|
||||
otherError.classList.add('form-alert--visible');
|
||||
}
|
||||
})
|
||||
.then(data => {
|
||||
console.log("data:");
|
||||
console.log(data);
|
||||
switch (data) {
|
||||
case "succesSendingSupportEmail":
|
||||
success.classList.add('form-alert--visible');
|
||||
emailError.classList.remove('form-alert--visible');
|
||||
otherError.classList.remove('form-alert--visible');
|
||||
fromEmail.value = '';
|
||||
message.innerText = '';
|
||||
break;
|
||||
case "invalidEmailAdres":
|
||||
emailError.classList.add('form-alert--visible');
|
||||
break;
|
||||
case "failedSendingSupportEmail":
|
||||
case "failedHash":
|
||||
otherError.classList.add('form-alert--visible');
|
||||
break;
|
||||
default:
|
||||
success.classList.add('form-alert--visible');
|
||||
emailError.classList.remove('form-alert--visible');
|
||||
otherError.classList.remove('form-alert--visible');
|
||||
fromEmail.value = '';
|
||||
message.innerText = '';
|
||||
break;
|
||||
}
|
||||
//console.log(data)
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
otherError.classList.add('form-alert--visible');
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
/* failed */
|
||||
emailError.classList.add('form-alert--visible');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// https://github.com/Modernizr/Modernizr/blob/master/feature-detects/css/flexgap.js
|
||||
|
||||
function checkFlexGap() {
|
||||
// create flex container with row-gap set
|
||||
var flex = document.createElement("div");
|
||||
flex.style.display = "flex";
|
||||
flex.style.flexDirection = "column";
|
||||
flex.style.rowGap = "1px";
|
||||
|
||||
// create two, elements inside it
|
||||
flex.appendChild(document.createElement("div"));
|
||||
flex.appendChild(document.createElement("div"));
|
||||
|
||||
// append to the DOM (needed to obtain scrollHeight)
|
||||
document.body.appendChild(flex);
|
||||
var isSupported = flex.scrollHeight === 1; // flex container should be 1px high from the row-gap
|
||||
//flex.parentNode.removeChild(flex);
|
||||
|
||||
return isSupported;
|
||||
}
|
||||
|
||||
console.log(checkFlexGap());
|
||||
|
||||
if (checkFlexGap()) {
|
||||
document.documentElement.classList.add("flexbox-gap");
|
||||
} else {
|
||||
document.documentElement.classList.add("no-flexbox-gap");
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
<!-- <style>
|
||||
.site-logo {
|
||||
height: 5rem;
|
||||
width: 5rem;
|
||||
transform: rotateZ(0deg) translateY(0.4rem);
|
||||
transition: 0.2s all;
|
||||
border: 3px solid var(--c-1);
|
||||
border-radius: 1rem;
|
||||
}
|
||||
|
||||
.site-logo:hover {
|
||||
transform: rotateZ(4deg) translateY(0.4rem) scale(1.1);
|
||||
}
|
||||
|
||||
.site-header {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: baseline;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.no-flexbox-gap .site-header>*:not(:last-child) {
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
.site-title {
|
||||
font-family: Bebas Neue;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-size: 3rem;
|
||||
line-height: 1;
|
||||
letter-spacing: 0.24em;
|
||||
text-transform: uppercase;
|
||||
width: auto;
|
||||
margin: 3rem 0 0 0;
|
||||
}
|
||||
|
||||
#page {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.page-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
</style> -->
|
||||
|
|
@ -5,26 +5,26 @@ layout: layouts/base.ejs
|
|||
<span>asdf</span>
|
||||
<%= 'hello' | i18n %>
|
||||
|
||||
<% include /hero %>
|
||||
<%- include('/hero') -%>
|
||||
|
||||
<% include /blurb %>
|
||||
<%- include('/blurb') -%>
|
||||
|
||||
<div class="inset">
|
||||
|
||||
<% include /info %>
|
||||
<%- include('/info') -%>
|
||||
|
||||
</div>
|
||||
|
||||
<% include /screenshots %>
|
||||
<%- include('/screenshots') -%>
|
||||
|
||||
<% include /systems %>
|
||||
<%- include('/systems') -%>
|
||||
|
||||
<div class="inset">
|
||||
|
||||
<% include /pricing %>
|
||||
<%- include('/pricing') -%>
|
||||
|
||||
<% include /download %>
|
||||
<%- include('/download') -%>
|
||||
|
||||
</div>
|
||||
|
||||
<% include /reviews %>
|
||||
<%- include('/reviews') -%>
|
||||
30
src/_includes/layouts/home.ejs.bak
Normal file
30
src/_includes/layouts/home.ejs.bak
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
---
|
||||
layout: layouts/base.ejs
|
||||
---
|
||||
|
||||
<span>asdf</span>
|
||||
<%= 'hello' | i18n %>
|
||||
|
||||
<%- include('/hero') -%>
|
||||
|
||||
<%- include('/blurb') -%>
|
||||
|
||||
<div class="inset">
|
||||
|
||||
<%- include('/info') -%>
|
||||
|
||||
</div>
|
||||
|
||||
<%- include('/screenshots') -%>
|
||||
|
||||
<%- include('/systems') -%>
|
||||
|
||||
<div class="inset">
|
||||
|
||||
<%- include('/pricing') -%>
|
||||
|
||||
<%- include('/download') -%>
|
||||
|
||||
</div>
|
||||
|
||||
<%- include('/reviews') -%>
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
layout: layouts/base.ejs
|
||||
pageName: post
|
||||
---
|
||||
<% include /nav-blog %>
|
||||
<%- include('/nav-blog') -%>
|
||||
<article id="post">
|
||||
<header class="post__header hero__wrapper">
|
||||
<img class="post__image" src="/assets/images/posts/<%= image %>" />
|
||||
|
|
|
|||
34
src/_includes/layouts/post.ejs.bak
Normal file
34
src/_includes/layouts/post.ejs.bak
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
---
|
||||
layout: layouts/base.ejs
|
||||
pageName: post
|
||||
---
|
||||
<%- include('/nav-blog') -%>
|
||||
<article id="post">
|
||||
<header class="post__header hero__wrapper">
|
||||
<img class="post__image" src="/assets/images/posts/<%= image %>" />
|
||||
<div class="hero__banner">
|
||||
<svg class="banner-edge-left" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10">
|
||||
<path id="rect22" style="fill:#ffffff;fill-rule:evenodd;stroke-width:0.116947"
|
||||
d="M 9.9999058,0 A 10,10 0 0 1 0,10.000422 h 9.9999058 z" />
|
||||
</svg>
|
||||
<svg class="banner-edge-right" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10">
|
||||
<path id="rect22" style="fill:#ffffff;fill-rule:evenodd;stroke-width:0.116947"
|
||||
d="M 9.9999058,0 A 10,10 0 0 1 0,10.000422 h 9.9999058 z" />
|
||||
</svg>
|
||||
<h1 class="">
|
||||
<%= title %>
|
||||
</h1>
|
||||
<time class="">
|
||||
<%= this.dateFns.format(new Date(date), 'yyyy.LL.dd' ) %>
|
||||
</time>
|
||||
</div>
|
||||
<% if (locals.intro) { %>
|
||||
<div class="post__intro">
|
||||
<%= intro %>
|
||||
</div>
|
||||
<% } %>
|
||||
</header>
|
||||
<section class="post__content">
|
||||
<%- content %>
|
||||
</section>
|
||||
</article>
|
||||
5
src/_includes/layouts/webpack.ejs.bak
Normal file
5
src/_includes/layouts/webpack.ejs.bak
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<link
|
||||
href="/assets/styles/main.css"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<!-- needed to add ./ the href, or else the path was wrong on production -->
|
||||
29
src/_includes/nav-blog.ejs.bak
Normal file
29
src/_includes/nav-blog.ejs.bak
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<div class="nav__wrapper">
|
||||
<nav>
|
||||
<ul>
|
||||
<li>
|
||||
<a class="nav-link" href="/blog/">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-arrow-left" width="32" height="32" viewBox="0 0 24 24" stroke-width="1.5" stroke="#000000" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
||||
<line x1="5" y1="12" x2="19" y2="12" />
|
||||
<line x1="5" y1="12" x2="11" y2="18" />
|
||||
<line x1="5" y1="12" x2="11" y2="6" />
|
||||
</svg> see more posts
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="nav-link nav-link--blog" href="/">
|
||||
home
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<svg class="nav-edge-left" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10">
|
||||
<path id="rect22" style="fill:#ffffff;fill-rule:evenodd;stroke-width:0"
|
||||
d="M 9.9999058,0 A 10,10 0 0 1 0,10.000422 h 9.9999058 z" />
|
||||
</svg>
|
||||
<svg class="nav-edge-right" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10">
|
||||
<path id="rect22" style="fill:#ffffff;fill-rule:evenodd;stroke-width:0"
|
||||
d="M 9.9999058,0 A 10,10 0 0 1 0,10.000422 h 9.9999058 z" />
|
||||
</svg>
|
||||
</div>
|
||||
21
src/_includes/nav.ejs.bak
Normal file
21
src/_includes/nav.ejs.bak
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<div class="nav__wrapper">
|
||||
<nav>
|
||||
<ul>
|
||||
<% sections.filter((item)=>{ return item.inNav == true; }).forEach((link)=> { %>
|
||||
<li>
|
||||
<a class="nav-link nav-link--<%= link.class %>" href="<% if (link.external) { %><%= link.slug %><% } else { %><%= `#${link.slug}` %><% } %>">
|
||||
<%= link.name %>
|
||||
</a>
|
||||
</li>
|
||||
<% }) %>
|
||||
</ul>
|
||||
</nav>
|
||||
<svg class="nav-edge-left" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10">
|
||||
<path id="rect22" style="fill:#ffffff;fill-rule:evenodd;stroke-width:0"
|
||||
d="M 9.9999058,0 A 10,10 0 0 1 0,10.000422 h 9.9999058 z" />
|
||||
</svg>
|
||||
<svg class="nav-edge-right" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10">
|
||||
<path id="rect22" style="fill:#ffffff;fill-rule:evenodd;stroke-width:0"
|
||||
d="M 9.9999058,0 A 10,10 0 0 1 0,10.000422 h 9.9999058 z" />
|
||||
</svg>
|
||||
</div>
|
||||
220
src/_includes/pricing.ejs.bak
Normal file
220
src/_includes/pricing.ejs.bak
Normal file
|
|
@ -0,0 +1,220 @@
|
|||
<article class="pricing__wrapper max-w-screen-lg">
|
||||
<header>
|
||||
<h1 id="pricing">
|
||||
flexible pricing options
|
||||
</h1>
|
||||
<aside>
|
||||
Our <%= site.site_name %> app is available for <strong>free download</strong>. By subscribing, you'll unlock all of the advanced features and systems.
|
||||
While our app is not currently not cross-platform, you can easily share your subscription across multiple devices on the same platform.
|
||||
Subscribing to our app gives you access to all the features and systems for a low monthly fee of just $7, or an even better value yearly subscription of $17 (that's <strong>less than $1.50 per month!</strong>).
|
||||
</aside>
|
||||
</header>
|
||||
<section class="pricing__content">
|
||||
<div class="level__wrapper level-wrapper--heading">
|
||||
<header>
|
||||
<!-- <h2>
|
||||
|
||||
<span>
|
||||
|
||||
</span>
|
||||
</h2>-->
|
||||
</header>
|
||||
<div class="level__content">
|
||||
<div class="level__price-wrapper">
|
||||
|
||||
<!--<h2 class="level__price">
|
||||
|
||||
</h2>
|
||||
<span>
|
||||
|
||||
</span>-->
|
||||
</div>
|
||||
<ul>
|
||||
<% systems.forEach((system)=> { %>
|
||||
<li class="">
|
||||
<%= system.name %>
|
||||
</li>
|
||||
<% }) %>
|
||||
</ul>
|
||||
</div>
|
||||
<div></div>
|
||||
</div>
|
||||
<div class="level__wrapper level-wrapper--trial">
|
||||
<header>
|
||||
<h2>
|
||||
starter
|
||||
<span>
|
||||
limited
|
||||
</span>
|
||||
</h2>
|
||||
</header>
|
||||
<div class="level__content">
|
||||
<div class="level__price-wrapper">
|
||||
|
||||
<!--<h2 class="level__price" style="align-items: center;">
|
||||
|
||||
<span>
|
||||
|
||||
</span>
|
||||
</h2>-->
|
||||
</div>
|
||||
<ul>
|
||||
<!-- <li>2 systems included</li>
|
||||
<li>purchase advanced systems separately</li> -->
|
||||
<% systems.forEach((system)=> { %>
|
||||
|
||||
<% if (system.status==='free' ) { %>
|
||||
|
||||
<li><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-check" width="32" height="32" viewBox="0 0 24 24" stroke-width="3" stroke="#00C2FF" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
||||
<path d="M5 12l5 5l10 -10" />
|
||||
</svg></li>
|
||||
|
||||
<% } else if (system.status==='pro' ) { %>
|
||||
|
||||
<li><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-x" width="32" height="32" viewBox="0 0 24 24" stroke-width="3" stroke="#000000" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
||||
<line x1="18" y1="6" x2="6" y2="18" />
|
||||
<line x1="6" y1="6" x2="18" y2="18" />
|
||||
</svg><!--<span>(in-app purchase)</span>--></li>
|
||||
|
||||
<% } else if (system.status==='soon' ) { %>
|
||||
|
||||
<li><span>(coming soon)</span></li>
|
||||
|
||||
<% } %>
|
||||
|
||||
<% }) %>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- <a class="btn btn--level" href="#download">
|
||||
download
|
||||
</a>-->
|
||||
</div>
|
||||
<div class="level__wrapper level__wrapper--monthly level__wrapper--enabled">
|
||||
<header>
|
||||
<h2>
|
||||
Premium
|
||||
<span>
|
||||
full
|
||||
</span>
|
||||
</h2>
|
||||
</header>
|
||||
<div class="level__content">
|
||||
<div class="level__price-wrapper">
|
||||
<!-- <h2 class="level__price">
|
||||
|
||||
span>
|
||||
monthly $7 / yearly $17 / lifetime $27
|
||||
</span>
|
||||
</h2>-->
|
||||
</div>
|
||||
<ul>
|
||||
<% systems.forEach((system)=> { %>
|
||||
|
||||
<% if (system.status==='pro' || system.status==='free' ) { %>
|
||||
|
||||
<li><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-check" width="32" height="32" viewBox="0 0 24 24" stroke-width="3" stroke="#00C2FF" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
||||
<path d="M5 12l5 5l10 -10" />
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
<% } else if (system.status==='soon' ) { %>
|
||||
|
||||
<li><span>(coming soon)</span></li>
|
||||
|
||||
<% } %>
|
||||
|
||||
<% }) %>
|
||||
</ul>
|
||||
</div>
|
||||
<!--<a class="btn btn--level btn--disabled">
|
||||
coming soon
|
||||
</a>-->
|
||||
</div>
|
||||
|
||||
<!--<div class="level__wrapper level__wrapper--yearly level__wrapper--disabled">
|
||||
<header>
|
||||
<h2>
|
||||
yearly
|
||||
<span>
|
||||
subscription
|
||||
</span>
|
||||
</h2>
|
||||
</header>
|
||||
<div class="level__content">
|
||||
<div class="level__price-wrapper">
|
||||
<h2 class="level__price">
|
||||
$3.95
|
||||
<span>
|
||||
paid monthly
|
||||
</span>
|
||||
</h2>
|
||||
</div>
|
||||
<ul>
|
||||
<% systems.forEach((system)=> { %>
|
||||
|
||||
<% if (system.status==='pro' || system.status==='free' ) { %>
|
||||
|
||||
<li><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-check" width="32" height="32" viewBox="0 0 24 24" stroke-width="3" stroke="#00C2FF" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
||||
<path d="M5 12l5 5l10 -10" />
|
||||
</svg></li>
|
||||
|
||||
<% } else if (system.status==='soon' ) { %>
|
||||
|
||||
<li><span class="">(coming soon)</span></li>
|
||||
|
||||
<% } %>
|
||||
|
||||
<% }) %>
|
||||
</ul>
|
||||
</div>
|
||||
<a class="btn btn--level btn--disabled">
|
||||
coming soon
|
||||
</a>
|
||||
</div>
|
||||
<div class="level__wrapper level__wrapper--lifetime">
|
||||
<header>
|
||||
<h2>
|
||||
lifetime
|
||||
<span>
|
||||
full version
|
||||
</span>
|
||||
</h2>
|
||||
</header>
|
||||
<div class="level__content">
|
||||
<div class="level__price-wrapper">
|
||||
<h2 class="level__price">
|
||||
$24.95
|
||||
<span>
|
||||
one time fee
|
||||
</span>
|
||||
</h2>
|
||||
</div>
|
||||
<ul>
|
||||
<% systems.forEach((system)=> { %>
|
||||
|
||||
<% if (system.status==='pro' || system.status==='free' ) { %>
|
||||
|
||||
<li><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-check" width="32" height="32" viewBox="0 0 24 24" stroke-width="3" stroke="#00C2FF" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
||||
<path d="M5 12l5 5l10 -10" />
|
||||
</svg></li>
|
||||
|
||||
<% } else if (system.status==='soon' ) { %>
|
||||
|
||||
<li><span>(coming soon)</span></li>
|
||||
|
||||
<% } %>
|
||||
|
||||
<% }) %>
|
||||
</ul>
|
||||
</div>
|
||||
<a class="btn btn--level" href="#download">
|
||||
download
|
||||
</a>
|
||||
</div>-->
|
||||
</section>
|
||||
</article>
|
||||
36
src/_includes/reviews.ejs.bak
Normal file
36
src/_includes/reviews.ejs.bak
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
<article class="reviews-wrapper">
|
||||
<header>
|
||||
<h1 id="reviews">
|
||||
Glowing reviews
|
||||
</h1>
|
||||
</header>
|
||||
<section>
|
||||
<ul class="reviews">
|
||||
<% reviews.forEach((review)=> { %>
|
||||
<li class="review">
|
||||
<div class="rating-wrapper">
|
||||
<div class="rating">
|
||||
<% for (let step=0; step <=review.stars * 10; step +=5) { %>
|
||||
<% if (step> 0) { %>
|
||||
<label class="<%= (step % 2 == 0) ? 'full' : 'half' %> <%= step %>"></label>
|
||||
<% } %>
|
||||
<% } %>
|
||||
<% if (review.stars * 10 % 2 !==0) { %>
|
||||
<label class="full" style="color: transparent"></label>
|
||||
<% } %>
|
||||
</div>
|
||||
<a href="<%= review.link %>">
|
||||
<%= review.site %>
|
||||
</a>
|
||||
</div>
|
||||
<blockquote>
|
||||
<%= review.quote %>
|
||||
</blockquote>
|
||||
<label class="review__name">
|
||||
<%= review.name %>
|
||||
</label>
|
||||
</li>
|
||||
<% }) %>
|
||||
</ul>
|
||||
</section>
|
||||
</article>
|
||||
65
src/_includes/screenshots.ejs.bak
Normal file
65
src/_includes/screenshots.ejs.bak
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
<article class="screenshots__wrapper">
|
||||
<header>
|
||||
<h1 id="screenshots">
|
||||
Hi-res imagery everywhere you need it
|
||||
</h1>
|
||||
<aside>
|
||||
The <%= site.site_name %> app is currently available for iOS and Android, with desktop support added later.
|
||||
The app supports portrait mode, text-scaling, and it includes 3 color themes.
|
||||
</aside>
|
||||
</header>
|
||||
<section>
|
||||
<div class="glide">
|
||||
<div data-glide-el="track" class="glide__track">
|
||||
<ul class="glide__slides">
|
||||
<% collections.screenshotThumbnails.forEach((screenshot, index)=> { %>
|
||||
<% if (screenshot.includes('--en')) { %>
|
||||
<li class="glide__slide">
|
||||
<img src="<%= screenshot %>" alt="" onclick="zoomScreenshot('<%= screenshot %>')" />
|
||||
</li>
|
||||
<% } %>
|
||||
<% }) %>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hires">
|
||||
<% collections.screenshotHires.forEach((screenshot, index)=> { %>
|
||||
<% if (screenshot.includes('--en')) { %>
|
||||
<div class="hires-details" data="<%= screenshot %>" onclick="clearScreenshotSelection()">
|
||||
<img src="<%= screenshot %>" alt="" />
|
||||
<caption></caption>
|
||||
</div>
|
||||
<% } %>
|
||||
<% }) %>
|
||||
</div>
|
||||
</section>
|
||||
</article>
|
||||
|
||||
<script>
|
||||
|
||||
function zoomScreenshot(slug) {
|
||||
|
||||
let thisImage = document.querySelector('[data="' + slug.replace('resized.','') + '"]');
|
||||
|
||||
thisImage.classList.add('hires-details--selected');
|
||||
|
||||
let allIconImages = document.querySelectorAll('.hires-details');
|
||||
|
||||
for (let elem of allIconImages) {
|
||||
if (elem !== thisImage) {
|
||||
elem.classList.remove('hires-details--selected')
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function clearScreenshotSelection() {
|
||||
let allIconImages = document.querySelectorAll('.hires-details');
|
||||
|
||||
for (let elem of allIconImages) {
|
||||
elem.classList.remove('hires-details--selected')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
69
src/_includes/systems.ejs.bak
Normal file
69
src/_includes/systems.ejs.bak
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
<article class="system__wrapper">
|
||||
<header>
|
||||
<h1 id="systems">
|
||||
<%= systems.filter(system => system.status !== 'soon').length %> detailed body systems
|
||||
</h1>
|
||||
<aside>
|
||||
The <%= site.site_name %> app includes <strong><%= systems.filter(system => system.status !== 'soon').length %></strong> body systems, which can be hidden or shown (in layers) and colored to easily distinguish the individual anatomical parts.
|
||||
All body systems can be viewed individually or in customizable combinations.
|
||||
</aside>
|
||||
</header>
|
||||
<section>
|
||||
<ul class="system__list">
|
||||
<% systems.forEach((system, index)=> { %>
|
||||
<li onclick="zoom('<%= system.slug %>')"
|
||||
class="system system--<%= system.slug %> system--<%= system.status %> <%= index === 0 ? 'system--selected' : '' %>">
|
||||
|
||||
<%- include('/system-icons/'+system.slug+'.svg') %>
|
||||
<span>
|
||||
<%= system.name %>
|
||||
</span>
|
||||
</li>
|
||||
<% }) %>
|
||||
</ul>
|
||||
<div class="system__zoom-wrapper">
|
||||
<img class="zoom__image--bkg %>"
|
||||
src="./assets/images/systems/layers/bkg.png" alt="background">
|
||||
<% systems.filter(system => system.status !== 'soon').forEach((system, index)=> { %>
|
||||
<img class="zoom__image zoom__image--<%= system.slug %> <%= index === 0 ? 'zoom__image--visible' : '' %>"
|
||||
src="./assets/images/systems/layers/<%= system.slug %>.png" alt="<%= system.name %>"
|
||||
title="<%= system.name %>">
|
||||
<% }) %>
|
||||
</div>
|
||||
</section>
|
||||
</article>
|
||||
|
||||
<script>
|
||||
|
||||
function zoom(slug) {
|
||||
|
||||
const thisIconClass = 'system--' + slug;
|
||||
let thisIconImage = document.querySelector('.' + thisIconClass);
|
||||
|
||||
thisIconImage.classList.add('system--selected')
|
||||
|
||||
let allIconImages = document.querySelectorAll('.system');
|
||||
|
||||
for (let elem of allIconImages) {
|
||||
if (!elem.classList.contains(thisIconClass)) {
|
||||
elem.classList.remove('system--selected')
|
||||
}
|
||||
}
|
||||
|
||||
const thisZoomClass = 'zoom__image--' + slug;
|
||||
let thisZoomImage = document.querySelector('.' + thisZoomClass);
|
||||
|
||||
thisZoomImage.classList.add('zoom__image--visible')
|
||||
|
||||
let allZoomImages = document.querySelectorAll('.zoom__image');
|
||||
|
||||
for (let elem of allZoomImages) {
|
||||
if (!elem.classList.contains(thisZoomClass)) {
|
||||
elem.classList.remove('zoom__image--visible')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 895 KiB After Width: | Height: | Size: 1,006 KiB |
BIN
src/assets/images/slider-1.png~
Normal file
BIN
src/assets/images/slider-1.png~
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 895 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.4 MiB |
BIN
src/assets/images/slider-2.png.kra
Normal file
BIN
src/assets/images/slider-2.png.kra
Normal file
Binary file not shown.
BIN
src/assets/images/slider-2.png~
Normal file
BIN
src/assets/images/slider-2.png~
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
42
src/blog.ejs.bak
Normal file
42
src/blog.ejs.bak
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
pagination:
|
||||
data: collections.posts
|
||||
size: 20
|
||||
alias: list
|
||||
reverse: true
|
||||
permalink: '<% if (pagination.pageNumber > 0) { %><%= `blog/page${pagination.pageNumber + 1}/index.html` %><% } else { %>blog/index.html<% } %>'
|
||||
eleventyComputed:
|
||||
title: '<% if (pagination.pageNumber > 0) { %><%= `Page ${pagination.pageNumber + 1} | ${site.title}` %><% } else { %><%= site.title %><% } %>'
|
||||
pageName: blog
|
||||
---
|
||||
|
||||
<h2 class="blog-header">
|
||||
Blog
|
||||
</h2>
|
||||
|
||||
<ul id="blogs">
|
||||
<% list.forEach((post) => { %>
|
||||
<li class="blog">
|
||||
<a href="<%= post.url %>">
|
||||
<article>
|
||||
<img src="/assets/images/posts/<%= post.data.image %>" alt="">
|
||||
<h1><%= post.data.title %></h1>
|
||||
<time datetime="<%= new Date(post.data.date) %>"><%= this.dateFns.format(new Date(post.data.date), 'LLLL d, yyyy') %></time>
|
||||
<p><%= post.data.description %></p>
|
||||
</article>
|
||||
</a>
|
||||
</li>
|
||||
<% }) %>
|
||||
</ul>
|
||||
|
||||
<div class="">
|
||||
<% if (pagination.previous) { %>
|
||||
<div>
|
||||
<a href="<%= pagination.previous.replace(/index.html$/, "") %>">← Newer Posts</a>
|
||||
</div>
|
||||
<% } %> <% if (pagination.next) { %>
|
||||
<div class="">
|
||||
<a href="<%= pagination.next.replace(/index.html$/, "") %>">Older Posts →</a>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
3
src/en-US/index.ejs.bak
Normal file
3
src/en-US/index.ejs.bak
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
layout: layouts/home.ejs
|
||||
---
|
||||
|
|
@ -4,28 +4,28 @@ layout: layouts/base.ejs
|
|||
pageName: home
|
||||
---
|
||||
|
||||
<% include /hero %>
|
||||
<%- include('/hero') -%>
|
||||
|
||||
<% include /blurb %>
|
||||
<%- include('/blurb') -%>
|
||||
|
||||
<div class="inset">
|
||||
|
||||
<% include /info %>
|
||||
<%- include('/info') -%>
|
||||
|
||||
</div>
|
||||
|
||||
<% include /screenshots %>
|
||||
<%- include('/screenshots') -%>
|
||||
|
||||
<% include /systems %>
|
||||
<%- include('/systems') -%>
|
||||
|
||||
<div class="inset">
|
||||
|
||||
<% include /pricing %>
|
||||
<%- include('/pricing') -%>
|
||||
|
||||
<% include /download %>
|
||||
<%- include('/download') -%>
|
||||
|
||||
</div>
|
||||
|
||||
<% include /reviews %>
|
||||
<%- include('/reviews') -%>
|
||||
|
||||
<% include /contact %>
|
||||
<%- include('/contact') -%>
|
||||
31
src/index.ejs.bak
Normal file
31
src/index.ejs.bak
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
title: '<%= site.title %>'
|
||||
layout: layouts/base.ejs
|
||||
pageName: home
|
||||
---
|
||||
|
||||
<%- include('/hero') -%>
|
||||
|
||||
<%- include('/blurb') -%>
|
||||
|
||||
<div class="inset">
|
||||
|
||||
<%- include('/info') -%>
|
||||
|
||||
</div>
|
||||
|
||||
<%- include('/screenshots') -%>
|
||||
|
||||
<%- include('/systems') -%>
|
||||
|
||||
<div class="inset">
|
||||
|
||||
<%- include('/pricing') -%>
|
||||
|
||||
<%- include('/download') -%>
|
||||
|
||||
</div>
|
||||
|
||||
<%- include('/reviews') -%>
|
||||
|
||||
<%- include('/contact') -%>
|
||||
7
src/robots.ejs.bak
Normal file
7
src/robots.ejs.bak
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
permalink: robots.txt
|
||||
eleventyExcludeFromCollections: true
|
||||
layout: null
|
||||
---
|
||||
|
||||
Sitemap: <%= `${site.url}/sitemap.xml` %>
|
||||
14
src/sitemap.ejs.bak
Normal file
14
src/sitemap.ejs.bak
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
permalink: sitemap.xml
|
||||
eleventyExcludeFromCollections: true
|
||||
layout: null
|
||||
---
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<% collections.all.forEach((page) => { %>
|
||||
<url>
|
||||
<loc><%= `${site.url}${page.url}` %></loc>
|
||||
</url>
|
||||
<% }) %>
|
||||
</urlset>
|
||||
Loading…
Reference in a new issue