feat: Check in simplified CSS
This commit is contained in:
parent
b5f3ddc4d7
commit
9de12606a6
11 changed files with 901 additions and 381 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -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
|
@ -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 |
|
@ -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>
|
||||||
|
|
|
@ -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 %}
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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 %}
|
||||||
|
|
|
@ -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 %}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue