Improve responsive, icons, refactor search, update readme
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Lucas Chaplain 2022-01-29 14:42:09 +01:00
parent e958d4a1d0
commit e6f8f43b6c
27 changed files with 414 additions and 113 deletions

View file

@ -1,6 +1,6 @@
# Garage Website # Garage Website
¡ Work in progress ! ¡ Work in progress (almost done) !
--- ---
@ -12,3 +12,44 @@
- Run `zola build` to get the public directory - Run `zola build` to get the public directory
- Run `npm start` to compile styles and scripts - Run `npm start` to compile styles and scripts
- Run `zola serve` - Run `zola serve`
## Build
CSS : `28.4 kB`
JS : `6.8 kB (app)` + `1.2 MB (search)`*
*<em>The search index in loaded only when the user opens the search modal</em>
Images + Icons : `1.1 MB`
## Fonctions & utilities
JavaScript can be disabled and the website will still run nicely.
It only brings QoL advantages for the user.
The function is [x] if it still runs <u>without</u> JavaScript enabled.
- [x] Responsive main navigation menu (toggle)
- [x] Documentation : user can deploy or reploy ToC submenus
- [ ] Documentation : deploy only the current ToC submenu after a page change
- [ ] Documentation : sidebar focus effect on current section anchor when user scrolls
- [ ] Documentation : ToC that follows the user's scroll
- [ ] Global search
## Screenshots
<div style="display:grid;grid-template-columns: repeat(3, 1fr);grid-gap: 10px;grid-auto-rows: minmax(100px, auto);">
<p style="text-align:center;margin-bottom:5rem;">
<span>480px</span>
<img src="static/screenshots/screenshot-480.png" />
</p>
<p style="text-align:center;margin-bottom:5rem;">
<span>768px</span>
<img src="static/screenshots/screenshot-768.png" />
</p>
<p style="text-align:center;margin-bottom:5rem;">
<span>1280px</span>
<img src="static/screenshots/screenshot-1280.png" />
</p>
</div>

View file

@ -9,10 +9,6 @@ ignored_content = []
generate_feed = true generate_feed = true
feed_filename = "rss.xml" feed_filename = "rss.xml"
hard_link_static = false hard_link_static = false
# taxonomies = [
# { name = "categories", feed = true, paginate_by = 10 },
# { name = "tags", feed = true, paginate_by = 10 }
# ]
build_search_index = true build_search_index = true
[markdown] [markdown]
@ -61,7 +57,6 @@ navbar_items = [
favicon_16x16 = "/icons/favicon-16x16.png" favicon_16x16 = "/icons/favicon-16x16.png"
favicon_32x32 = "/icons/favicon-32x32.png" favicon_32x32 = "/icons/favicon-32x32.png"
apple_touch_icon = "/icons/apple-touch-icon.png" apple_touch_icon = "/icons/apple-touch-icon.png"
safari_pinned_tab = "/icons/safari-pinned-tab.svg"
webmanifest = "/icons/site.webmanifest" webmanifest = "/icons/site.webmanifest"
[extra.organization] [extra.organization]
@ -78,10 +73,3 @@ avatar = "/images/garage-logo.svg"
[extra.social] [extra.social]
git = "https://git.deuxfleurs.fr/Deuxfleurs/garage" git = "https://git.deuxfleurs.fr/Deuxfleurs/garage"
email = "contact@garagehq.com" email = "contact@garagehq.com"
[extra.analytics]
google = "UA-176984489-2"
[extra.mapbox]
enabled = true
access_token = "pk.eyJ1IjoicmF0YW5zaHJlc2h0aGEiLCJhIjoiY2tla2s2NmM3MDd0ZzJzbXFtc3Y2YmU0NyJ9.0RhUnJPKbxHWw3xGPnnBlA"

View file

@ -2,10 +2,10 @@
@tailwind components; @tailwind components;
@tailwind utilities; @tailwind utilities;
/* ARTICLES BASIC ELEMENTS */ /* POST BASIC ELEMENTS */
article .page-content { article .page-content {
@apply text-lg; @apply text-base md:text-lg;
} }
/** Pre */ /** Pre */
@ -104,18 +104,47 @@ p > code, p > strong > code, li > code, li > strong > code {
@layer utilities { @layer utilities {
/** Main nav */
#navMenuToggleBtn {
position: absolute;
left: -100vw;
}
#navMenuToggleBtn:checked + label {
background: white;
padding: 0.375rem;
border-radius: 0.5rem;
--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
#navMenuToggleBtn:checked ~ #navMenu {
display: block;
}
/** Home map */ /** Home map */
#map-container { #map-container {
background-image: url('/images/map.svg'); background-image: url('/images/map.svg');
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: left;
background-size: cover; background-size: cover;
background-attachment: fixed; background-attachment: fixed;
height: 70vh; height: 70vh;
} }
/** Global ToC */ @media screen and (max-width: 768px) {
#map-container {
background-position: 25%;
background-size: auto;
background-attachment: scroll;
height: 50vh;
}
}
/** Documentation */
#global_toc .deploySubMenu { #global_toc .deploySubMenu {
position: absolute; position: absolute;
left: -100vw; left: -100vw;
@ -129,4 +158,100 @@ p > code, p > strong > code, li > code, li > strong > code {
transform: rotate(0deg); transform: rotate(0deg);
} }
#documentation-section .page-content {
line-height: 1.9rem;
}
#documentation-section .page-content p + p {
margin-top: 1.15rem;
}
#documentation-section .page-content h1,
#documentation-section .page-content h2,
#documentation-section .page-content h3 {
margin-top: 2.85rem;
}
#documentation-section .page-content h4,
#documentation-section .page-content h5,
#documentation-section .page-content h6 {
margin-top: 2rem;
font-weight: 600;
}
#documentation-section .page-content ul {
list-style-type: "➡";
padding-left: 1.25rem;
}
#documentation-section .page-content ol {
padding-left: 1.25rem;
}
#documentation-section .page-content ul li,
#documentation-section .page-content ol li {
padding-left: 0.95rem;
}
#documentation-section .page-content ul li ul,
#documentation-section .page-content ul li ol,
#documentation-section .page-content ol li ul,
#documentation-section .page-content ol li ol {
padding-left: 0rem;
}
#documentation-section .page-content ul li ul,
#documentation-section .page-content ol li ul {
list-style-type: "➜";
}
@media screen and (max-width: 768px) {
#documentation-section .page-content p {
font-size: 0.95rem;
}
#documentation-section .page-content p + p {
margin-top: 0.75rem;
}
#documentation-section .page-content code {
font-size: 0.9rem;
}
#documentation-section .page-content pre {
overflow-x: scroll;
font-size: 0.95rem;
}
#documentation-section .page-content ul {
padding-left: 0.25rem;
}
#documentation-section .page-content ul li {
font-size: 0.95rem;
padding-left: 0.75rem;
}
#documentation-section .page-content ul li a {
font-size: 0.95rem;
}
}
/** Blog */
#blogpost-section .page-content p + p,
#blogpost-section .page-content p + #continue-reading + p {
margin-top: 2rem;
}
#blogpost-section .page-content #continue-reading {
margin: 2rem 0;
}
#blogpost-section .page-content ul {
list-style-type: "➡";
padding-left: 1.25rem;
margin: 2rem 0;
}
#blogpost-section .page-content ul li {
padding-left: 0.95rem;
}
#blogpost-section img {
display: inline-block;
margin: 2.75rem 0;
}
} }

BIN
static/icons/android-chrome-192x192.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

BIN
static/icons/android-chrome-384x384.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 15 KiB

BIN
static/icons/apple-touch-icon.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

96
static/icons/contact.svg Normal file
View file

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="32mm"
height="32mm"
viewBox="0 0 32 32"
version="1.1"
id="svg5"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<style
type="text/css"
id="style2346">
.st0{fill:#4E4E4E;}
.st1{fill:#FFD952;}
.st2{fill:#49C8FA;}
.st3{fill:#45C8FF;}
.st4{fill:#FF9329;}
.st5{fill:#3B2100;}
.st6{fill:#C3C3C3;}
</style>
<g
id="g1314"
transform="matrix(0.45983054,0,0,0.45983054,2.5100707,3.2593744)">
<g
id="g1245">
<path
d="m 60.764965,27.712142 c 0,0.153336 -0.0037,0.305868 -0.0059,0.458712 -0.102126,4.309716 -1.703065,9.213027 -8.456869,9.213027 -6.994656,0 -8.462771,-5.259423 -8.462771,-9.671739 V 15.622468 a 2.417935,2.417935 0 0 0 -4.83587,0 v 1.287852 a 14.506149,14.506149 0 1 0 2.03423,19.358237 11.960844,11.960844 0 0 0 1.020952,1.501985 c 1.622189,2.029802 4.716328,4.449212 10.243459,4.449212 a 14.885985,14.885985 0 0 0 5.374237,-0.925948 31.428228,31.428228 0 1 1 3.088535,-13.581664 z m -41.104892,0 a 9.6717392,9.6717392 0 1 0 9.67174,-9.671739 9.6828226,9.6828226 0 0 0 -9.67174,9.671739 z"
id="path1901"
style="stroke-width:0.302242;fill:#ff6600" />
</g>
<g
id="g1247">
</g>
<g
id="g1249">
</g>
<g
id="g1251">
</g>
<g
id="g1253">
</g>
<g
id="g1255">
</g>
<g
id="g1257">
</g>
<g
id="g1259">
</g>
<g
id="g1261">
</g>
<g
id="g1263">
</g>
<g
id="g1265">
</g>
<g
id="g1267">
</g>
<g
id="g1269">
</g>
<g
id="g1271">
</g>
<g
id="g1273">
</g>
<g
id="g1275">
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/icons/favicon-16x16.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 645 B

BIN
static/icons/favicon-32x32.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
static/icons/favicon.ico Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

8
static/icons/git.svg Normal file
View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="97px" height="97px" viewBox="0 0 97 97" enable-background="new 0 0 97 97" xml:space="preserve">
<g>
<path fill="#F05133" d="M92.71,44.408L52.591,4.291c-2.31-2.311-6.057-2.311-8.369,0l-8.33,8.332L46.459,23.19 c2.456-0.83,5.272-0.273,7.229,1.685c1.969,1.97,2.521,4.81,1.67,7.275l10.186,10.185c2.465-0.85,5.307-0.3,7.275,1.671 c2.75,2.75,2.75,7.206,0,9.958c-2.752,2.751-7.208,2.751-9.961,0c-2.068-2.07-2.58-5.11-1.531-7.658l-9.5-9.499v24.997 c0.67,0.332,1.303,0.774,1.861,1.332c2.75,2.75,2.75,7.206,0,9.959c-2.75,2.749-7.209,2.749-9.957,0c-2.75-2.754-2.75-7.21,0-9.959 c0.68-0.679,1.467-1.193,2.307-1.537V36.369c-0.84-0.344-1.625-0.853-2.307-1.537c-2.083-2.082-2.584-5.14-1.516-7.698 L31.798,16.715L4.288,44.222c-2.311,2.313-2.311,6.06,0,8.371l40.121,40.118c2.31,2.311,6.056,2.311,8.369,0L92.71,52.779 C95.021,50.468,95.021,46.719,92.71,44.408z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

62
static/icons/rss.svg Normal file
View file

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 492 492" style="enable-background:new 0 0 492 492;" xml:space="preserve">
<circle style="fill:#FA9826;" cx="73.728" cy="418.296" r="69.704"/>
<g>
<path style="fill:#EF8114;" d="M0,162.664v92.976C136,255.632,236.384,356,236.384,492h92.952C329.336,308,184,162.664,0,162.664z"
/>
<path style="fill:#EF8114;" d="M8,0v92.944C224,92.944,399.064,268,399.064,492H492C492,220,272,0,8,0z"/>
</g>
<g>
<circle style="fill:#FA9826;" cx="73.728" cy="418.296" r="69.704"/>
<path style="fill:#FA9826;" d="M0,162.664v92.976c120,0,221.8,90.008,234.672,206.008c31.864-9.2,61.2-21.456,88.248-35.672
C294.168,275.776,160,162.664,0,162.664z"/>
<path style="fill:#FA9826;" d="M456.168,306.848C383.624,126.624,208,0,8,0v92.944c176,0,331.84,122.304,376.88,290.928
C414.8,359.664,439.888,337.16,456.168,306.848z"/>
<path style="fill:#FA9826;" d="M73.728,348.584c-38.496,0-69.72,31.2-69.72,69.696c0,22.352,10.576,42.216,26.928,54.968
c37.744-13.584,75.72-33.032,112.352-58.008C141.672,378.16,111.184,348.584,73.728,348.584z"/>
<path style="fill:#FA9826;" d="M0,162.664v92.976c88,0,161.696,45.192,202.408,112.624c7.92-7.088,15.408-14.4,23.072-22.04
c15.176-15.192,28.808-32.128,41.784-48.224C208.176,215.432,112,162.664,0,162.664z"/>
<path style="fill:#FA9826;" d="M8,0v92.944c120,0,232.248,57.184,304.752,146.472c18.184-29.872,33.056-57.24,43.816-87.6
C267.8,60.24,144,0,8,0z"/>
</g>
<g>
<path style="fill:#F9BD28;" d="M106.512,356.776c-9.792-5.224-20.936-8.184-32.792-8.184c-38.496,0-69.72,31.2-69.72,69.696
c0,13.384,3.84,25.84,10.376,36.472C49.632,431.704,80.976,398.184,106.512,356.776z"/>
<path style="fill:#F9BD28;" d="M163.344,204.976C115.8,177.736,64,162.664,0,162.664v92.976c54.872,0.496,96,16.864,134.24,41.456
C146.184,268.6,156.496,237.576,163.344,204.976z"/>
<path style="fill:#F9BD28;" d="M8,92.944c56,0,117.504,14.64,169.4,39.752c1.128-14.736,0.84-30.216,0.84-45.392
c0-19.192,0.528-38.04-1.256-56.504C123.888,10.928,64,0,8,0V92.944z"/>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -1,15 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="450.000000pt" height="450.000000pt" viewBox="0 0 450.000000 450.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,450.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M750 2250 l0 -2250 1500 0 1500 0 0 2250 0 2250 -1500 0 -1500 0 0
-2250z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 605 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 KiB

View file

@ -13,36 +13,10 @@
{% include "partials/shared/nav.html" %} {% include "partials/shared/nav.html" %}
<div>
{% block content %}{% endblock %} {% block content %}{% endblock %}
</div>
{% block search %} {% block search %}
<section id="search-modal" class="modal hidden bg-gradient-to-b from-gray-50 to-gray-100 w-5/6 md:w-4/5 lg:w-3/4 xl:w-2/3 2xl:w-1/2 absolute top-20 left-1/2 transform -translate-x-1/2 shadow-2xl rounded-lg"> {% include "partials/shared/search.html" %}
<div class="p-2 md:p-4 xl:p-8 border-8 border-gray-300 rounded-lg shadow-inner" style="min-height:30vh;">
<section class="relative flex flex-col items-center justify-center">
<div class="flexs items-center justify-center">
<span class="text-xl inline-block font-thin">Search</span>
<span class="font-normal inline-block text-xs text-gray-500">(alt + S)</span>
</div>
<div class="field mt-8 md:mt-0 mb-2">
<div class="control">
<input
id="search"
class="p-2 md:p-4 shadow rounded-lg outline-2 focus:outline outline-garage-orange"
placeholder="Search on Garage..." type="search" />
</div>
</div>
<div class="search-results hidden mt-8 p-2 md:p-4 w-full bg-white rounded shadow">
<div class="search-results__items max-h-96 overflow-y-scroll p-2 md:p-4 focus:outline outline-garage-orange"></div>
</div>
</section>
<button aria-label="close" id="close-modal-btn" class="absolute top-4 right-4 flex items-center group rounded-full shadow-inner bg-gray-300 border border-transparent hover:border-gray-500 bg-opacity-50 p-2">
<svg id="close-modal-btn-icon" class="w-6 h-6 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg>
<small class="text-xs text-gray-400">(Esc)</small>
</button>
</div>
</section>
{% endblock %} {% endblock %}
{% block pagination %} {% block pagination %}

View file

@ -6,7 +6,7 @@
{% block content %} {% block content %}
{% set section = get_section(path="documentation/_index.md") %} {% set section = get_section(path="documentation/_index.md") %}
<section class="section overflow-x-hidden"> <section id="documentation-section" class="section overflow-x-hidden">
<div class="grid grid-cols-1 xl:grid-cols-5"> <div class="grid grid-cols-1 xl:grid-cols-5">
{% include "partials/doc/global_toc.html" %} {% include "partials/doc/global_toc.html" %}
<div class="col-span-full xl:col-span-3" style="min-height:85vh;"> <div class="col-span-full xl:col-span-3" style="min-height:85vh;">

View file

@ -11,26 +11,26 @@
<div class="max-w-7xl mx-auto grid grid-cols-1 md:grid-cols-3 gap-x-32 py-12"> <div class="max-w-7xl mx-auto grid grid-cols-1 md:grid-cols-3 gap-x-32 py-12">
<div class="group flex flex-col items-center justify-center p-2"> <div class="group flex flex-col items-center justify-center p-2">
<img src="{{ get_url(path='images/host.png') }}" class="transform group-hover:translate-y-2 transition duration-500"> <img src="{{ get_url(path='images/host.png') }}" class="transform group-hover:translate-y-2 transition duration-500">
<span class="text-xl text-gray-700 font-semibold mt-4 transform group-hover:-translate-y-1 transition duration-500">Host a Website</span> <span class="text-xl text-gray-700 font-semibold mt-4 transform group-hover:-translate-y-1 transition duration-500 whitespace-nowrap">Host a Website</span>
</div> </div>
<div class="group flex flex-col items-center justify-center p-2"> <div class="group flex flex-col items-center justify-center p-2">
<img src="{{ get_url(path='images/store.png') }}" class="transform group-hover:translate-y-2 transition duration-500"> <img src="{{ get_url(path='images/store.png') }}" class="transform group-hover:translate-y-2 transition duration-500">
<span class="text-xl text-gray-700 font-semibold mt-4 transform group-hover:-translate-y-1 transition duration-500">Store Media</span> <span class="text-xl text-gray-700 font-semibold mt-4 transform group-hover:-translate-y-1 transition duration-500 whitespace-nowrap">Store Media</span>
</div> </div>
<div class="group flex flex-col items-center justify-center p-2"> <div class="group flex flex-col items-center justify-center p-2">
<img src="{{ get_url(path='images/backup.png') }}" class="transform group-hover:translate-y-2 transition duration-500"> <img src="{{ get_url(path='images/backup.png') }}" class="transform group-hover:translate-y-2 transition duration-500">
<span class="text-xl text-gray-700 font-semibold mt-4 transform group-hover:-translate-y-1 transition duration-500">Backup Target</span> <span class="text-xl text-gray-700 font-semibold mt-4 transform group-hover:-translate-y-1 transition duration-500 whitespace-nowrap">Backup Target</span>
</div> </div>
</div> </div>
</div> </div>
<div class="w-full flex flex-col items-center justify-center border-b"> <div class="w-full flex flex-col items-center justify-center border-b">
<div id="map-container" class="relative w-full shadow-inner border-t border-b"> <div id="map-container" class="relative w-full shadow-inner border-t border-b">
<span class="absolute top-1/2 left-1/2 transform -translate-y-1/2 text-2xl text-white font-light select-none px-2 py-1.5 rounded shadow" style="background:#999999;"> <span class="hidden md:inline-block absolute top-1/2 left-1/2 transform -translate-y-1/2 text-2xl text-white font-light select-none px-2 py-1.5 rounded shadow" style="background:#999999;">
Made for redundancy Made for redundancy
</span> </span>
</div> </div>
<div id="map-legend-container" class="max-w-7xl mx-auto flex items-center justify-around space-x-12 py-2 text-sm text-gray-700"> <div id="map-legend-container" class="max-w-7xl mx-auto flex flex-col lg:flex-row items-center justify-around lg:space-x-12 py-2 text-sm text-gray-700">
<div> <div>
<p class="text-base text-gray-600">Each chunk of data is replicated in 3 zones</p> <p class="text-base text-gray-600">Each chunk of data is replicated in 3 zones</p>
</div> </div>
@ -45,9 +45,9 @@
</div> </div>
</div> </div>
<div class="grid grid-cols-1 xl:grid-cols-2 gap-x-0 xl:gap-x-12 gap-y-24 text-garage-gray font-light bg-gray-100 py-12 w-full shadow-inner"> <div class="grid grid-cols-1 xl:grid-cols-2 gap-x-0 xl:gap-x-12 gap-y-24 text-garage-gray font-light bg-gray-100 py-12 px-4 md:px-0 w-full shadow-inner">
<div class="flex flex-col items-center justify-start space-y-2"> <div class="flex flex-col items-center justify-start space-y-2">
<h2 class="mb-2 text-2xl font-bold text-garage-orange leading-5">Our Goals</h2> <h2 class="mb-2 text-xl text-center md:text-2xl font-bold text-garage-orange leading-5">Our Goals</h2>
<div class="w-8 h-1 bg-garage-orange"></div> <div class="w-8 h-1 bg-garage-orange"></div>
<p class="text-center leading-5 italic">We made it lightweight and kept the efficiency in mind.</p> <p class="text-center leading-5 italic">We made it lightweight and kept the efficiency in mind.</p>
<ul class="list-style-none font-semibold flex flex-col items-center justify-center py-4"> <ul class="list-style-none font-semibold flex flex-col items-center justify-center py-4">
@ -80,7 +80,7 @@
</div> </div>
<div class="flex flex-col items-center justify-start space-y-2"> <div class="flex flex-col items-center justify-start space-y-2">
<h2 class="mb-2 text-2xl font-bold text-garage-orange leading-5">Keeping requirements low</h2> <h2 class="mb-2 text-xl text-center md:text-2xl font-bold text-garage-orange leading-5">Keeping requirements low</h2>
<div class="w-8 h-1 bg-garage-orange"></div> <div class="w-8 h-1 bg-garage-orange"></div>
<p class="text-center leading-5 italic"> <p class="text-center leading-5 italic">
We worked hard to keep requirements as low as possible<br>as we target the largest possible public. We worked hard to keep requirements as low as possible<br>as we target the largest possible public.
@ -125,7 +125,7 @@
</div> </div>
<div class="flex flex-col items-center justify-start space-y-2 px-6 xl:px-0"> <div class="flex flex-col items-center justify-start space-y-2 px-6 xl:px-0">
<h2 class="mb-2 text-2xl font-bold text-garage-orange leading-5">Data resiliency for everyone</h2> <h2 class="mb-2 text-xl text-center md:text-2xl font-bold text-garage-orange leading-5">Data resiliency for everyone</h2>
<div class="w-8 h-1 bg-garage-orange"></div> <div class="w-8 h-1 bg-garage-orange"></div>
<p class="text-center leading-5 italic pb-4"> <p class="text-center leading-5 italic pb-4">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Lorem ipsum dolor sit amet consectetur adipisicing elit.
@ -168,7 +168,7 @@
</div> </div>
<div class="flex flex-col items-center justify-start space-y-2 px-6 xl:px-0"> <div class="flex flex-col items-center justify-start space-y-2 px-6 xl:px-0">
<h2 class="mb-2 text-2xl font-bold text-garage-orange leading-5">Standing on the shoulders of giants</h2> <h2 class="mb-2 text-xl text-center md:text-2xl font-bold text-garage-orange leading-5">Standing on the shoulders of giants</h2>
<div class="w-8 h-1 bg-garage-orange"></div> <div class="w-8 h-1 bg-garage-orange"></div>
<p class="text-center leading-5 italic"> <p class="text-center leading-5 italic">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Lorem ipsum dolor sit amet consectetur adipisicing elit.
@ -191,7 +191,7 @@
</div> </div>
<div class="w-full flex flex-col items-center justify-center shadow-inner"></div> <div class="w-full flex flex-col items-center justify-center shadow-inner"></div>
<div class="py-24 space-y-8 text-garage-gray max-w-4xl mx-auto"> <div class="px-8 py-24 space-y-8 text-garage-gray max-w-4xl mx-auto">
<h2 class="text-2xl text-garage-orange font-semibold">Sponsors and funding</h2> <h2 class="text-2xl text-garage-orange font-semibold">Sponsors and funding</h2>
<p> <p>
The Deuxfleurs association has received a grant from <a class="text-garage-orange underline" href="https://pointer.ngi.eu/" target="_blank">NGI POINTER</a>, The Deuxfleurs association has received a grant from <a class="text-garage-orange underline" href="https://pointer.ngi.eu/" target="_blank">NGI POINTER</a>,

View file

@ -2,24 +2,24 @@
<p class="flex items-center justify-center space-x-2"> <p class="flex items-center justify-center space-x-2">
{% if social_config.git %} {% if social_config.git %}
<a href="{{ social_config.git }}" target="_blank"> <a href="{{ social_config.git }}" target="_blank">
<span class="icon is-large" title="Git"> <span class="h-10 w-10 bg-white hover:shadow-xl rounded-full shadow flex items-center justify-center" title="Git">
<i class="fab fa-git fa-lg text-garage-gray h-8 w-8 bg-white hover:bg-garage-orange hover:text-white rounded-full shadow flex items-center justify-center"></i> <img src="{{get_url(path='icons/git.svg')}}" width="24px" alt="">
</span> </span>
</a> </a>
{% endif %} {% endif %}
{% if social_config.email %} {% if social_config.email %}
<a href="mailto:{{ social_config.email }}" target="_blank"> <a href="mailto:{{ social_config.email }}" target="_blank">
<span class="icon is-large" title="Email"> <span class="h-10 w-10 bg-white hover:shadow-xl rounded-full shadow flex items-center justify-center" title="Contact">
<i class="far fa-envelope fa-lg text-garage-gray h-8 w-8 bg-white hover:bg-garage-orange hover:text-white rounded-full shadow flex items-center justify-center"></i> <img src="{{get_url(path='icons/contact.svg')}}" width="24px" alt="">
</span> </span>
</a> </a>
{% endif %} {% endif %}
{% if config.generate_feed %} {% if config.generate_feed %}
<a href="{{ config.base_url }}/{{ config.feed_filename }}" target="_blank"> <a href="{{ config.base_url }}/{{ config.feed_filename }}" target="_blank">
<span class="icon is-large" title="RSS Feed"> <span class="h-10 w-10 bg-white hover:shadow-xl rounded-full shadow flex items-center justify-center" title="RSS Feed">
<i class="fas fa-rss fa-lg text-garage-gray h-8 w-8 bg-white hover:bg-garage-orange hover:text-white rounded-full shadow flex items-center justify-center"></i> <img src="{{get_url(path='icons/rss.svg')}}" width="24px" alt="">
</span> </span>
</a> </a>
{% endif %} {% endif %}

View file

@ -5,7 +5,7 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<section class="section"> <section id="blogpost-section" class="section">
<div class="mx-auto max-w-7xl"> <div class="mx-auto max-w-7xl">
<div class="grid grid-cols-5 gap-x-12"> <div class="grid grid-cols-5 gap-x-12">
<div class="{% if page.extra.toc %}col-span-4{% else %}col-span-full{% endif %}"> <div class="{% if page.extra.toc %}col-span-4{% else %}col-span-full{% endif %}">
@ -24,11 +24,11 @@
</div> </div>
</a> </a>
</div> </div>
<div class="w-full text-garage-gray text-sm grid grid-cols-2 bg-gradient-to-r from-gray-100 to-transparent p-3 border-l-4 border-gray-300"> <div class="w-full text-garage-gray text-sm grid grid-cols-1 md:grid-cols-2 bg-gradient-to-r from-gray-100 to-transparent p-3 border-l-4 border-gray-300">
<div class="flex items-center justify-start"> <div class="flex items-center justify-start md:justify-start">
{{ macros::page_publish_metadata(page=page) }} {{ macros::page_publish_metadata(page=page) }}
</div> </div>
<div class="flex items-center justify-end"> <div class="flex items-center justify-start md:justify-end">
{{ macros::page_content_metadata(page=page) }} {{ macros::page_content_metadata(page=page) }}
</div> </div>
<div> <div>
@ -43,7 +43,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="page-content max-w-4xl text-justify mt-12"> <div class="page-content max-w-4xl text-justify mt-12 px-5 md:px-12">
{{ page.content | safe }} {{ page.content | safe }}
</div> </div>
</article> </article>

View file

@ -11,12 +11,14 @@ const navSections = new Array(tocItems.length);
*/ */
window.addEventListener('scroll', function() { window.addEventListener('scroll', function() {
if (window.screen.width >= 1280) {
if (window.scrollY >= menuBarHeight) { if (window.scrollY >= menuBarHeight) {
document.getElementById('main-toc-menu').classList.add('fixed', 'top-0', 'left-0'); document.getElementById('main-toc-menu').classList.add('fixed', 'top-0', 'left-0');
document.getElementById('main-toc-menu').style.width = mainTocMenuWidth + 'px'; document.getElementById('main-toc-menu').style.width = mainTocMenuWidth + 'px';
} else { } else {
document.getElementById('main-toc-menu').classList.remove('fixed', 'top-0', 'left-0'); document.getElementById('main-toc-menu').classList.remove('fixed', 'top-0', 'left-0');
} }
}
}); });
// Page content // Page content

View file

@ -1,9 +1,6 @@
{% if config.extra.favicon.webmanifest %} {% if config.extra.favicon.webmanifest %}
<link href='{{ config.extra.favicon.webmanifest }}' rel="manifest" /> <link href='{{ config.extra.favicon.webmanifest }}' rel="manifest" />
{% endif %} {% endif %}
{% if config.extra.favicon.safari_pinned_tab %}
<link color="#5bbad5" href='{{ config.extra.favicon.safari_pinned_tab }}' rel="mask-icon" />
{% endif %}
{% if config.extra.favicon.favicon_16x16 %} {% if config.extra.favicon.favicon_16x16 %}
<link href='{{ config.extra.favicon.favicon_16x16 }}' rel="icon" sizes="16x16" type="image/png" /> <link href='{{ config.extra.favicon.favicon_16x16 }}' rel="icon" sizes="16x16" type="image/png" />
{% endif %} {% endif %}
@ -14,21 +11,13 @@
<link href='{{ config.extra.favicon.apple_touch_icon }}' rel="apple-touch-icon" sizes="180x180" /> <link href='{{ config.extra.favicon.apple_touch_icon }}' rel="apple-touch-icon" sizes="180x180" />
{% endif %} {% endif %}
{% if config.extra.galleria.enabled %}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/galleria@1.6.1/dist/themes/folio/galleria.folio.min.css"
integrity="sha384-+rY0QD+LRnTOquDMzGa9lXU6jIwdiQuwCJQ2cdcW0qeP/0UbjQCZlXnRsUMA+9pH" crossorigin="anonymous">
{% endif %}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.4/css/all.min.css"
integrity="sha384-DyZ88mC6Up2uqS4h/KRgHuoeGwBcD4Ng9SiP4dIRy0EXTlnuz47vAwmeGwVChigm" crossorigin="anonymous">
<link href="{{ get_url(path='style.css') }}" rel="stylesheet" /> <link href="{{ get_url(path='style.css') }}" rel="stylesheet" />
{% block user_custom_stylesheet %}{% endblock %} {% block user_custom_stylesheet %}{% endblock %}
<title> <title>
{% block title %} {% block title %}
{{ config.title }} {{ config.title }} - An open-source distributed storage service
{% endblock title %} {% endblock title %}
</title> </title>

View file

@ -1,12 +1,16 @@
<nav aria-label="section navigation" class="navbar w-full" role="navigation"> <nav aria-label="navigation-section" class="navbar w-full relative" role="navigation">
<div class="w-full flex flex-col space-y-2 md:space-y-0 md:flex-row items-center justify-between py-1.5 px-8 text-garage-gray bg-garage-orange bg-opacity-20"> <div class="w-full flex flex-row items-center justify-between py-1.5 px-8 text-garage-gray bg-garage-orange bg-opacity-20">
<div class="navbar-brand"> <div class="navbar-brand">
<a class="hover:rounded-full hover:bg-white" href="{{config.base_url}}"> <a class="hover:rounded-full hover:bg-white" href="{{config.base_url}}">
<img class="px-2 transform duration-150 focus:bg-white hover:bg-white hover:shadow rounded-lg" <img class="px-2 transform duration-150 focus:bg-white hover:bg-white hover:shadow rounded-lg"
src="{{ config.extra.organization.logo_horizontal }}" width="120px"> src="{{ config.extra.organization.logo_horizontal }}" width="120px">
</a> </a>
</div> </div>
<div class="navbar-menu" id="navMenu"> <input type="checkbox" id="navMenuToggleBtn" value="0"/>
<label for="navMenuToggleBtn" class="md:hidden p-1.5 hover:bg-white rounded-lg hover:shadow cursor-pointer" style="margin-top:0.08rem;">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h7"></path></svg>
</label>
<div class="hidden py-4 md:py-0 z-40 md:block absolute md:static top-12 left-0 right-0 navbar-menu bg-gray-100 shadow-md md:shadow-none md:bg-transparent" id="navMenu">
<div class="flex items-center justify-center space-x-2"> <div class="flex items-center justify-center space-x-2">
{% for item in config.extra.navbar_items %} {% for item in config.extra.navbar_items %}
{% if lang == item.code %} {% if lang == item.code %}
@ -29,7 +33,7 @@
href="https://garagehq.deuxfleurs.fr/_releases.html" href="https://garagehq.deuxfleurs.fr/_releases.html"
class="group flex items-center justify-center space-x-1 font-semibold shadow hover:shadow px-2 py-1.5 rounded text-white transition-all duration-500 bg-gradient-to-tl from-garage-orange via-orange-500 to-orange-300 bg-size-200 bg-pos-0 hover:bg-pos-100"> class="group flex items-center justify-center space-x-1 font-semibold shadow hover:shadow px-2 py-1.5 rounded text-white transition-all duration-500 bg-gradient-to-tl from-garage-orange via-orange-500 to-orange-300 bg-size-200 bg-pos-0 hover:bg-pos-100">
<svg class="w-6 h-6 animate-pulse" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"></path></svg> <svg class="w-6 h-6 animate-pulse" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"></path></svg>
<span>Download</span> <span class="hidden md:inline">Download</span>
</a> </a>
</div> </div>
</div> </div>

View file

@ -0,0 +1,25 @@
<section id="search-modal" class="modal hidden z-50 bg-gradient-to-b from-gray-50 to-gray-100 w-5/6 md:w-4/5 lg:w-3/4 xl:w-2/3 2xl:w-1/2 absolute top-20 left-1/2 transform -translate-x-1/2 shadow-2xl rounded-lg">
<div class="p-2 md:p-4 xl:p-8 border-8 border-gray-300 rounded-lg shadow-inner" style="min-height:30vh;">
<section class="relative flex flex-col items-center justify-center">
<div class="flexs items-center justify-center">
<span class="text-xl inline-block font-thin">Search</span>
<span class="font-normal inline-block text-xs text-gray-500">(alt + S)</span>
</div>
<div class="field mt-8 md:mt-0 mb-2">
<div class="control">
<input
id="search"
class="p-2 md:p-4 shadow rounded-lg outline-2 focus:outline outline-garage-orange"
placeholder="Search on Garage..." type="search" />
</div>
</div>
<div class="search-results hidden mt-8 p-2 md:p-4 w-full bg-white rounded shadow">
<div class="search-results__items max-h-96 overflow-y-scroll p-2 md:p-4 focus:outline outline-garage-orange"></div>
</div>
</section>
<button aria-label="close" id="close-modal-btn" class="absolute top-4 right-4 flex items-center group rounded-full shadow-inner bg-gray-300 border border-transparent hover:border-gray-500 bg-opacity-50 p-2">
<svg id="close-modal-btn-icon" class="w-6 h-6 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg>
<small class="text-xs text-gray-400">(Esc)</small>
</button>
</div>
</section>

View file

@ -14,7 +14,7 @@
<div class="content"> <div class="content">
{{ section.content | safe }} {{ section.content | safe }}
</div> </div>
<div class="columns is-centered"> <div class="px-0 md:px-8 xl:px-4 2xl:px-0">
<div class="space-y-20"> <div class="space-y-20">
{% if paginator %} {% if paginator %}
{% set pages = paginator.pages %} {% set pages = paginator.pages %}
@ -23,7 +23,7 @@
{% endif %} {% endif %}
{% for page in pages %} {% for page in pages %}
<article class="border-l-4 border-garage-gray pl-4"> <article class="border-l-4 border-garage-gray pl-4 max-w-5xl">
<h2 class="text-garage-gray hover:text-garage-orange text-2xl pb-3"> <h2 class="text-garage-gray hover:text-garage-orange text-2xl pb-3">
<a class="w-full block" href='{{ page.permalink }}'> <a class="w-full block" href='{{ page.permalink }}'>
{{ page.title }} {{ page.title }}
@ -41,8 +41,10 @@
</div> </div>
</div> </div>
<div class="content mt-2"> <div class="content mt-2">
<div class="text-gray-700">
{{ page.summary | safe }} {{ page.summary | safe }}
<a class="group py-4 font-semibold px-4 py-2 flex items-center space-x-1 text-garage-orange" href='{{ page.permalink }}'> </div>
<a class="group font-semibold p-4 flex items-center space-x-1 text-garage-orange" href='{{ page.permalink }}'>
<div class="h-0.5 mt-0.5 w-4 group-hover:w-8 group-hover:bg-garage-gray transition-all bg-garage-orange"></div> <div class="h-0.5 mt-0.5 w-4 group-hover:w-8 group-hover:bg-garage-gray transition-all bg-garage-orange"></div>
<span>Read</span> <span>Read</span>
<span class="text-garage-orange group-hover:text-garage-gray transition-all"> <span class="text-garage-orange group-hover:text-garage-gray transition-all">