feat: Check in simplified CSS

This commit is contained in:
Kumi 2025-04-09 10:36:19 +02:00
parent b5f3ddc4d7
commit 9de12606a6
Signed by: kumi
GPG key ID: ECBCC9082395383F
11 changed files with 901 additions and 381 deletions

1
.gitignore vendored
View file

@ -6,6 +6,7 @@ privacy.md
privacy.txt privacy.txt
*.pyc *.pyc
venv/ venv/
/output
# Special rules needed for building the Docker image # Special rules needed for building the Docker image
/dist/* /dist/*

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +1,2 @@
<svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"/></svg> <!-- MIT © Phosphor Icons - https://github.com/phosphor-icons -->
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#000000" viewBox="0 0 256 256"><path d="M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z"></path></svg>

Before

Width:  |  Height:  |  Size: 494 B

After

Width:  |  Height:  |  Size: 334 B

Before After
Before After

View file

@ -3,25 +3,20 @@
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{% if title %}{{ title }} - {% endif %}Structables</title> <title>
<link {% if title %}{{ title }} -{% endif %}
rel="stylesheet" Structables</title>
href="{{ url_for('static', filename='css/style.css') }}" <link rel="stylesheet"
/> href="{{ url_for('static', filename='css/style.css') }}" />
<link <link rel="icon"
rel="stylesheet" type="image/png"
href="{{ url_for('static', filename='dist/css/bootstrap.min.css') }}" href="{{ url_for('static', filename='img/logo.png') }}" />
/>
<link
rel="icon"
type="image/png"
href="{{ url_for('static', filename='img/logo.png') }}"
/>
</head> </head>
<body> <body>
{% include "header.html" %} {% include "header.html" %}
<main>{% block content %} {% endblock %}</main> <main class="container">
{% block content %}{% endblock %}
</main>
{% include "footer.html" %} {% include "footer.html" %}
</body> </body>
</html> </html>

View file

@ -1,68 +1,35 @@
{% extends "base.html" %} {% block content %} {% extends "base.html" %}
<div class="container"> {% block content %}
<h1 class="text-center">{{ title }}</h1> <div class="text-center">
<div class="row"> <h1>{{ title }}</h1>
{% for channel in channels %} <div class="channel-grid my-4">
<div class="col-6 col-md-4 col-lg-3 text-center mb-3"> {% for channel in channels %}<a href="/{{ channel }}" class="btn btn-primary">{{ channel }}</a>{% endfor %}
<a
href="/{{ channel }}"
class="btn btn-primary d-block position-relative"
>
{{ channel }}
</a>
</div> </div>
{% endfor %} <h2 class="my-4">
</div> <a href="{{ path }}projects/">Featured Projects</a>
</h2>
<h2 class="text-center"> <div class="card-grid">
<a href="{{ path }}projects/">Featured Projects</a> {% for ible in ibles %}
</h2> <div class="card">
<div class="row"> <a href="{{ ible.link }}">
{% for ible in ibles %} <img class="card-img-top" src="{{ ible.img }}" alt="{{ ible.alt }}">
<div class="col-xs-12 col-sm-6 col-lg-4 mb-4"> </a>
<div class="card h-100 d-flex flex-column">
<a href="{{ ible.link }}">
<img
class="card-img-top"
src="{{ ible.img }}"
alt="{{ ible.alt }}"
style="max-width: 100%"
/>
<div class="card-body"> <div class="card-body">
<h5 class="card-title">{{ ible.title }}</h5> <h5 class="card-title">
<a href="{{ ible.link }}">{{ ible.title }}</a>
</h5>
<p class="card-text">
by <a href="{{ ible.author_link }}">{{ ible.author }}</a>
</p>
<p class="card-text">
in <a href="{{ ible.channel_link }}">{{ ible.channel }}</a>
</p>
</div>
<div class="card-footer">
<p class="card-text">{{ ible.favorites }} Favorites, {{ ible.views }} Views</p>
</div> </div>
</a>
<div class="card-footer mt-auto">
<p class="card-text">
by <a href="{{ ible.author_link }}">{{ ible.author }}</a>
</p>
<p class="card-text">
in <a href="{{ ible.channel_link }}">{{ ible.channel }}</a>
</p>
<p class="card-text">
{{ ible.favorites }} Favorites, {{ ible.views }} Views
</p>
</div> </div>
</div>
</div>
{% endfor %}
</div>
<!-- Doesn't seem to be current
<h2 class="text-center"><a href="/contest/">Contests</a></h2>
<div class="row">
<div class="col">
{% for contest in contests %}
<a href="{{ contest.link }}">
<img
src="{{ contest.img }}"
alt="{{ contest.title }}"
class="img-fluid"
/>
</a>
{% endfor %} {% endfor %}
</div> </div>
</div> </div>
-->
</div>
{% endblock %} {% endblock %}

View file

@ -1,17 +1,13 @@
<footer class="bg-light text-dark py-4"> <footer>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-md-6 text-center text-md-left"> <div class="col-6">
<p class="mb-1"> <p class="mb-1">
<a <a href="https://git.private.coffee/PrivateCoffee/structables"
href="https://git.private.coffee/PrivateCoffee/structables" class="text-dark">Structables Code (AGPLv3)</a>
class="text-dark"
>
Structables Code (AGPLv3)
</a>
</p> </p>
</div> </div>
<div class="col-md-6 text-center text-md-right"> <div class="col-6 text-right">
<p class="mb-1"> <p class="mb-1">
<a href="/privacypolicy" class="text-dark">View privacy policy</a> <a href="/privacypolicy" class="text-dark">View privacy policy</a>
</p> </p>

View file

@ -1,39 +1,39 @@
<header> <header>
<nav class="navbar navbar-expand-lg navbar-light bg-light"> <div class="container">
<div class="container-fluid"> <nav class="navbar">
<a class="navbar-brand" href="/"> <a class="navbar-brand" href="/">
<img <img class="navbar-logo"
class="navbar-logo" src="{{ url_for('static', filename='img/logo.png') }}"
src="{{ url_for('static', filename='img/logo.png') }}" alt="Structables Logo" />
alt="Structables Logo" Structables
/>
</a> </a>
<div class="navbar-collapse"> <ul class="navbar-nav">
<ul class="navbar-nav me-auto mb-2 mb-lg-0"> <li class="nav-item">
<li class="nav-item"> <a class="nav-link" href="/projects/">Projects</a>
<a class="nav-link" href="/projects/">Projects</a> </li>
</li> <li class="nav-item">
<li class="nav-item"> <a class="nav-link" href="/contest/">Contests</a>
<a class="nav-link" href="/contest/">Contests</a> </li>
</li> <li class="nav-item">
<li class="nav-item"> <a class="nav-link" href="/teachers/">Teachers</a>
<a class="nav-link" href="/teachers/">Teachers</a> </li>
</li> <li class="nav-item">
<li class="nav-item"> <a class="nav-link" href="/sitemap/">Sitemap</a>
<a class="nav-link" href="/sitemap/">Sitemap</a> </li>
</li> </ul>
</ul> <form class="search-form" action="/search" method="post">
<form class="d-flex" action="/search" method="post"> <input class="search-input"
<input type="search"
class="form-control me-2" placeholder="Search"
type="search" name="q"
placeholder="Search" aria-label="Search" />
name="q" <button class="search-button" type="submit">
aria-label="Search" <img src="{{ url_for('static', filename='img/magnifying-glass-solid.svg') }}"
/> alt="Search"
<button class="btn btn-outline-success" type="submit">Search</button> width="16"
</form> height="16">
</div> </button>
</div> </form>
</nav> </nav>
</div>
</header> </header>

View file

@ -1,45 +1,37 @@
{% extends "base.html" %} {% block content %} {% extends "base.html" %}
<div class="container text-center"> {% block content %}
<h1>{{ title }}</h1> <div class="text-center">
{% for section in sections %} <h1>{{ title }}</h1>
<section> {% for section in sections %}
<div class="row"> <section class="my-5">
<h3><a href="{{ section[1] }}">{{ section[0] }}</a></h3> <h3>
</div> <a href="{{ section[1] }}">{{ section[0] }}</a>
<div class="row justify-content-center"> </h3>
{% for ible in section[2] %} <div class="card-grid">
<div class="col-xs-12 col-sm-6 col-lg-4 mb-4"> {% for ible in section[2] %}
<div class="card h-100"> <div class="card">
<a href="{{ ible.link }}"> <a href="{{ ible.link }}">
<img <img class="card-img-top" src="{{ ible.img }}" alt="{{ ible.alt }}">
class="card-img-top" </a>
src="{{ ible.img }}" <div class="card-body">
alt="{{ ible.alt }}" <h5 class="card-title">
style="max-width: 100%" <a href="{{ ible.link }}">{{ ible.title }}</a>
/> </h5>
<div class="card-body"> <p class="card-text">
<h5 class="card-title">{{ ible.title }}</h5> by <a href="{{ ible.author_link }}">{{ ible.author }}</a>
</p>
<p class="card-text">
in <a href="{{ ible.channel_link }}">{{ ible.channel }}</a>
</p>
</div>
<div class="card-footer">
<p class="card-text">{{ ible.favorites }} Favorites, {{ ible.views }} Views</p>
</div>
</div> </div>
</a> {% endfor %}
<div class="card-footer">
<p class="card-text">
by <a href="{{ ible.author_link }}">{{ ible.author }}</a>
</p>
<p class="card-text">
in <a href="{{ ible.channel_link }}">{{ ible.channel }}</a>
</p>
<p class="card-text">
{{ ible.favorites }} Favorites, {{ ible.views }} Views
</p>
</div>
</div> </div>
</div> {% if section != sections[-1] %}<hr class="my-4" />{% endif %}
{% endfor %} </section>
</div> {% endfor %}
{% if section != sections[-1] %} </div>
<hr />
{% endif %}
</section>
{% endfor %}
</div>
{% endblock %} {% endblock %}

View file

@ -1,56 +1,49 @@
{% extends "base.html" %} {% block content %} {% extends "base.html" %}
<center> {% block content %}
<h1>{{ title }}</h1> <div class="text-center">
<span><a href="{{ path }}/">Featured</a></span> <h1>{{ title }}</h1>
<span><a href="{{ path }}/recent/">Recent</a></span> <div class="sort-links my-3">
<span><a href="{{ path }}/popular/">Popular</a></span> <a href="{{ path }}/"
<span><a href="{{ path }}/views/">Views</a></span> class="btn btn-outline-primary {% if 'recent' not in path and 'popular' not in path and 'views' not in path and 'winners' not in path %}active{% endif %}">Featured</a>
<span><a href="{{ path }}/winners/">Winners</a></span> <a href="{{ path }}/recent/"
<br /> class="btn btn-outline-primary {% if 'recent' in path %}active{% endif %}">Recent</a>
<a href="{{ path }}/popular/"
<div class="container"> class="btn btn-outline-primary {% if 'popular' in path %}active{% endif %}">Popular</a>
<div class="row"> <a href="{{ path }}/views/"
class="btn btn-outline-primary {% if 'views' in path %}active{% endif %}">Views</a>
<a href="{{ path }}/winners/"
class="btn btn-outline-primary {% if 'winners' in path %}active{% endif %}">Winners</a>
</div>
<div class="card-grid">
{% for ible in ibles %} {% for ible in ibles %}
<div class="col-xs-12 col-sm-6 col-lg-4 mb-4"> <div class="card">
<div class="card h-100 d-flex flex-column">
<a href="{{ ible.link }}"> <a href="{{ ible.link }}">
<img <img class="card-img-top" src="{{ ible.img }}" alt="{{ ible.title }}">
class="card-img-top"
src="{{ ible.img }}"
alt="{{ ible.alt }}"
style="max-width: 100%"
/>
<div class="card-body">
<h5 class="card-title">{{ ible.title }}</h5>
</div>
</a> </a>
<div class="card-footer mt-auto"> <div class="card-body">
<h5 class="card-title">
<a href="{{ ible.link }}">{{ ible.title }}</a>
</h5>
<p class="card-text"> <p class="card-text">
by <a href="{{ ible.author_link }}">{{ ible.author }}</a> by <a href="{{ ible.author_link }}">{{ ible.author }}</a>
</p> </p>
<p class="card-text"> <p class="card-text">
in <a href="{{ ible.channel_link }}">{{ ible.channel }}</a> in <a href="{{ ible.channel_link }}">{{ ible.channel }}</a>
</p> </p>
<p class="card-text"> </div>
{{ ible.favorites }} Favorites, {{ ible.views }} Views <div class="card-footer">
</p> <p class="card-text">{{ ible.favorites }} Favorites, {{ ible.views }} Views</p>
</div> </div>
</div> </div>
</div>
{% endfor %} {% endfor %}
<ul class="pagination">
{% for page in pagination %}
<li class="page-item">
<a
class="page-link {% if page.active %}active{% endif %} {% if page.disabled %}disabled{% endif %}"
href="{{ page.link }}"
>{{ page.text }}</a
>
</li>
{% endfor %}
</ul>
</div> </div>
<ul class="pagination">
{% for page in pagination %}
<li class="page-item">
<a class="page-link {% if page.active %}active{% endif %} {% if page.disabled %}disabled{% endif %}"
href="{{ page.link }}">{{ page.text }}</a>
</li>
{% endfor %}
</ul>
</div> </div>
</center>
{% endblock %} {% endblock %}