default layout: extract parts

This commit is contained in:
He4eT 2025-04-19 04:10:25 +02:00 • committed by Alexey
commit 9028c571ff
7 changed files with 124 additions and 14 deletions

View file

@ -0,0 +1,33 @@
.default-layout {
box-sizing: border-box;
height: 100%;
min-width: 300px;
display: flex;
flex-direction: row;
}
@media (max-width: 768px) {
.default-layout {
flex-direction: column;
}
}
@media (min-width: 1610px) {
.default-layout {
width: 1201px;
margin: 0 auto;
}
}
.default-layout > main {
box-sizing: border-box;
flex: 1 1 auto;
padding: calc(4 * var(--step));
max-width: calc(100 * var(--step));
}
@media (max-width: 768px) {
.default-layout > main {
padding: calc(2 * var(--step));
max-width: 100%;
}
}
/* @see ../parts/menu.css */

View file

@ -0,0 +1,92 @@
.hero {
position: relative;
display: flex;
flex-direction: row;
align-items: flex-start;
padding: calc(0.5 * var(--step));
--hero-border: calc(0.5 * var(--step)) solid var(--color-inactive);
font-family: Xecut;
font-size: calc(3 * var(--step));
}
@media (max-width: 500px) {
.hero {
align-items: normal;
flex-direction: row-reverse;
font-size: calc(2 * var(--step));
}
}
.hero:before,
.hero:after {
content: '';
position: absolute;
right: 0;
z-index: -1;
width: 90%;
height: calc(1 * var(--step));
border-right: var(--hero-border);
border-left: var(--hero-border);
}
.hero:before {
top: calc(0.5 * var(--step));
border-top: var(--hero-border);
}
.hero:after {
bottom: calc(1 * var(--step));
border-bottom: var(--hero-border);
}
.tags {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
}
.tag {
padding: calc(0.25 * var(--step)) calc(1.5 * var(--step));
border: var(--hero-border);
outline: var(--hero-border);
background: var(--color-bg);
}
@media (max-width: 500px) {
.tag {
flex-grow: 1;
}
}
.tower_cell {
box-sizing: border-box;
flex-shrink: 0;
display: flex;
align-items: center;
border: var(--hero-border);
outline: var(--hero-border);
background: var(--color-bg);
}
@media (max-width: 500px) {
.tower_cell {
align-items: flex-end;
}
}
.tower {
width: calc(18 * var(--step));
margin: calc(4 * var(--step));
}
@media (prefers-color-scheme: dark) {
.tower {
filter: invert(1);
}
}
@media (max-width: 500px) {
.tower {
max-width: calc(10 * var(--step));
margin: calc(1 * var(--step));
}
}

View file

@ -0,0 +1,178 @@
header.menu {
flex-shrink: 0;
display: flex;
flex-direction: column;
position: sticky;
top: 0;
padding: calc(4 * var(--step));
min-height: 100vh;
height: fit-content;
width: calc(40 * var(--step));
box-sizing: border-box;
font-family: Xecut, sans-serif;
text-align: end;
z-index: 1;
}
@media (max-width: 768px) {
header.menu {
min-height: auto;
height: auto;
width: 100%;
padding: 0;
border-block-end: calc(0.5 * var(--step)) solid var(--color-fg);
border-block-start: calc(0.5 * var(--step)) solid var(--color-fg);
background-color: var(--color-bg);
}
}
/* Link Style */
header.menu a {
color: var(--color-fg);
border-block-end: calc(0.8 * var(--step)) solid;
border-color: transparent;
transition: border-color 0.2s ease;
}
@media (min-width: 768px) {
header.menu a:hover {
border-color: var(--color-fg);
}
}
/* Topbar */
header.menu .topbar {}
@media (max-width: 768px) {
header.menu .topbar {
display: flex;
flex-direction: row;
align-items: center;
padding: 0 calc(2 * var(--step));
}
}
/* Logo */
header.menu .logo a {
/* @see h1 in base.css */
font-size: calc(9 * var(--step));
line-height: 1;
border-block-end-width: calc(1 * var(--step));
}
@media (max-width: 768px) {
header.menu .logo a {
font-size: calc(5 * var(--step));
line-height: 1.6;
}
}
/* Hamburger Menu Button */
header.menu .main-menu-button {
display: none;
background: none;
border: none;
cursor: pointer;
margin-inline-start: auto;
padding: calc(1 * var(--step));
width: calc(3 * var(--step));
height: calc(3 * var(--step));
box-sizing: content-box;
}
@media (max-width: 768px) {
header.menu .main-menu-button {
display: flex;
flex-direction: column;
justify-content: space-between;
}
}
header.menu .main-menu-button-part {
display: block;
height: 20%;
width: 100%;
background-color: var(--color-fg);
}
/* Menu or Dropdown Menu */
header.menu .navbar {
display: flex;
flex-direction: column;
flex-grow: 1;
font-size: calc(4 * var(--step));
}
@media (max-width: 768px) {
header.menu .navbar {
display: none;
}
header.menu .navbar.active {
display: block;
}
}
/* List of Pages */
header.menu .nav-links {
padding: 0;
margin: calc(8 * var(--step)) 0;
}
@media (max-width: 768px) {
header.menu .nav-links {
margin: calc(0 * var(--step)) 0;
padding: calc(0 * var(--step));
border-block: calc(0.5 * var(--step)) solid var(--color-fg);
}
}
header.menu .nav-links li {
border-inline-end: calc(1 * var(--step)) solid;
border-color: var(--color-inactive);
padding: calc(1 * var(--step)) calc(2 * var(--step));
list-style: none;
}
header.menu .nav-links li.active {
border-color: var(--color-fg);
}
/* Language Switcher */
header.menu .nav-langs {
display: flex;
flex-direction: row;
justify-content: space-evenly;
padding: 0;
margin: 0;
margin-block-start: auto;
text-transform: uppercase;
}
header.menu .nav-langs li {
list-style: none;
}
header.menu .nav-langs .lang-separator {
color: var(--color-inactive);
}
header.menu .nav-langs .lang-separator:first-child {
display: none;
}

View file

@ -17,12 +17,12 @@
<link rel="stylesheet" href="/_assets/css/fonts.css">
<link rel="stylesheet" href="/_assets/css/vendor.css">
<link rel="stylesheet" href="/_assets/css/variables.css">
<link rel="stylesheet" href="/_assets/css/base.css">
<link rel="stylesheet" href="/_assets/css/layouts/default.css">
<link rel="stylesheet" href="/_assets/css/parts/menu.css">
<link rel="stylesheet" href="/_assets/css/layout.css">
<link rel="stylesheet" href="/_assets/css/menu.css">
{% block extra_css %}{% endblock %}
</head>
<body>
<div class="default-layout">
@ -31,5 +31,6 @@
{{ content | safe }}
</main>
</div>
{% block extra_js %}{% endblock %}
</body>
</html>

View file

@ -0,0 +1,9 @@
---
indexPage: true
---
{% extends "./base.njk" %}
{% block extra_css %}
<link rel="stylesheet" href="/_assets/css/parts/hero.css">
{% endblock %}

View file

@ -0,0 +1,18 @@
<div class="hero">
<div class="tower_cell">
<img class="tower" src="/_assets/img/tower/tower_logo.svg">
</div>
<div class="tags">
<div class="tag">DIY</div>
<div class="tag">Engineering</div>
<div class="tag">Embedded</div>
<div class="tag">FPGA</div>
<div class="tag">IoT</div>
<div class="tag">AI/ML</div>
<div class="tag">LLM</div>
<div class="tag">Wireless</div>
<div class="tag">Reverse Engineering</div>
<div class="tag">Information Security</div>
<div class="tag">Open-Source</div>
</div>
</div>

View file

@ -56,9 +56,6 @@
{%- endfor %}
</ul>
</nav>
<a href="/" class="desktop-logo" aria-hidden>
<img src="/_assets/img/common/tower.svg">
</a>
</header>
<script>