create-modulo
Version:
Starter projects for Modulo.html - Ready for all uses - Markdown-SSG / SSR / API-backed SPA
192 lines (169 loc) • 4.24 kB
HTML
<script src=../Modulo.html></script><template type=f>
<Props slotclass></Props>
<Template>
{% if global.page %}
<title>{{ global.page.page_title }}</title>
{% endif %}
<nav class="page-nav u--container">
<ul>
<li>
<!-- Replace this logo with one of your own!
<img src="./static/images/example_logo.svg" title="Site Logo" style="float: left; height: 80px" /> -->
<span style="font-size: 24px; font-family: serif">“WEB-<br />SITE”</span>
</li>
{% for row in global.definitions.contentlist.data %}
<li><a href="{{ row|get:0 }}">{{ row|get:1|upper }}</a></li>
{% endfor %}
</ul>
</nav>
<main class="u--container">
<div class="page-container">
{% if not global.page %}
{# Default to "slot" #}
<slot class="{{ props.slotclass }}"></slot>
{% else %}
{# Show page meta info #}
<h1>{{ global.page.page_title|default:'' }}</h1>
<h4>{{ global.page.page_author|default:'' }}</h4>
{# Show body #}
{% if global.page.body|trim %}
<div class="page-content markdown-page">
{{ global.page.body|syntax:"md"|safe }}
</div>
{% endif %}
{# Show all articles #}
{% if global.page.bottomlist is "articles" %}
{% for article in global.definitions.articlelist.files %}
<article class="page-article">
<a class="page-article-title u--blocklink"
href="{{ article.Source }}">
{{ article.page_title }}</a>
<p>{{ article.desc }}</p>
</article>
{% endfor %}
{% endif %}
{% endif %}
</div>
</main>
</Template>
<Style>
.page-container,
.page-content,
.page-nav,
.page-article,
.page-nav a {
display: block;
background-color: var(--color);
box-shadow:
0 0 0 4px var(--color),
-5px -5px 100px 3px inset var(--fg-shading),
0 0 0 10px inset var(--color);
border: 3px groove var(--color);
border-radius: 8px;
padding: 20px;
margin: 4px;
color: var(--fg);
}
.page-nav a {
text-decoration: none;
font-weight: bold;
border-color: var(--fg-shading);
}
.page-content {
background-color: var(--bg);
box-shadow: none;
}
.page-article {
position: relative;
background: var(--bg);
}
.page-article-title {
font-size: 38px;
color: var(--fg);
}
.page-article:hover {
background: var(--color);
}
/* Utility class */
.u--blocklink {
display: block;
}
.u--blocklink::before {
content: ' ';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
/* Layout */
.u--container {
display: grid;
grid-template-columns: 1fr minmax(auto, var(--page-width)) 1fr;
font-family: sans-serif;
}
.u--container > * {
grid-column: 2;
}
/* Nav bar */
.page-nav ul li:first-child {
margin-right: auto;
}
.page-nav a:hover {
border-color: var(--fg);
}
.page-nav a:active,
.page-nav a.nav--selected{
border-color: var(--bg);
}
.page-nav ul {
display: flex;
margin: 0;
flex-wrap: wrap;
}
.page-nav li {
list-style: none;
}
@media (max-width: 992px) {
/* Make it fit better on mobile */
.page-container,
.page-nav {
padding: 4px;
margin: 2px;
}
}
@media (max-width: 576px) {
.page-nav ul { display: block }
}
</Style>
<Style prefix=".markdown-page">
p {
line-height: 1.6;
font-size: 18px
}
h2[h] {
margin: 60px 0 0 0;
font-family: sans-serif;
font-weight: 500;
}
h2[h='#'] {
font-size: 64px;
}
h2[h='##'] {
font-size: 46px;
}
h2[h='###'] {
font-size: 30px
}
h2[h='#'],
h2[h='##'] {
text-align: center;
}
code, tt {
background: #88888855;
}
hr {
border: 0.5vw solid #88888855;
margin: 5vw 30% 5vw 30%
}
</Style>