diff options
Diffstat (limited to 'templates')
-rw-r--r-- | templates/base.html | 43 | ||||
-rw-r--r-- | templates/event-page.html | 20 | ||||
-rw-r--r-- | templates/events.html | 26 | ||||
-rw-r--r-- | templates/index.html | 85 | ||||
-rw-r--r-- | templates/macros.html | 40 | ||||
-rw-r--r-- | templates/page.html | 46 |
6 files changed, 96 insertions, 164 deletions
diff --git a/templates/base.html b/templates/base.html index 1e1f2d6..fa0ebb0 100644 --- a/templates/base.html +++ b/templates/base.html @@ -11,32 +11,31 @@ </head> <body> - {% block header %} <header> - <nav> - <img class="logo" src="/cph-rs-ferris.png"> - <a href="./"> - <h1>Copenhagen Rust Community</h1> - </a> - </nav> + <a href="/"> + <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 411 208"><g filter="url(#a)"><path fill="#A52B00" d="m325.003 145.462-3.526-7.303c.019-.277.033-.555.033-.834 0-8.278-8.61-15.908-23.095-22.018v5.08a101.807 101.807 0 0 0-4.416-1.633v-2.368c-20.701-7.465-51.519-12.202-85.944-12.202-30.077 0-57.403 3.616-77.634 9.508v8.249-9.985c-20.727 6.586-33.577 15.736-33.577 25.852 0 1.595.322 3.165.94 4.706l-2.111 3.758s-1.692 2.194 1.287 6.823c2.627 4.082 15.786 20.06 22.732 28.427 2.983 4.29 5.007 6.932 5.183 6.676.279-.404-1.855-8.458-7.78-17.647-2.764-4.934-6.066-11.472-8.048-16.302 5.533 3.502 38.039 19.868 104.343 19.802 67.762-.068 97.883-21.277 101.189-24.164-1.156 4.64-5.103 14.028-8.25 20.63-5.172 9.443-7.046 17.663-6.805 18.07.153.256 1.918-2.465 4.52-6.876 6.056-8.628 17.531-25.099 19.823-29.295 2.599-4.756 1.136-6.954 1.136-6.954Z"/><path fill="#F74C00" d="m345.476 145.416-23.175-17.07c-.217-.759-.435-1.519-.66-2.272l7.613-11.027a4.134 4.134 0 0 0 .429-3.858c-.506-1.273-1.611-2.185-2.918-2.409l-12.871-2.184a112.232 112.232 0 0 0-1.547-3.014l5.408-12.38a4.111 4.111 0 0 0-.298-3.87c-.735-1.15-1.982-1.822-3.312-1.77l-13.063.475c-.676-.881-1.363-1.754-2.064-2.61l3.002-13.27a4.1 4.1 0 0 0-1.019-3.736 3.72 3.72 0 0 0-3.579-1.063l-12.723 3.128a110.708 110.708 0 0 0-2.509-2.151l.458-13.622c.049-1.379-.594-2.69-1.698-3.455a3.686 3.686 0 0 0-3.71-.313l-11.869 5.643a131.937 131.937 0 0 0-2.89-1.618l-2.097-13.423c-.213-1.36-1.088-2.515-2.313-3.042a3.683 3.683 0 0 0-3.695.448l-10.582 7.94a113.29 113.29 0 0 0-3.149-.995l-4.561-12.73c-.464-1.297-1.534-2.25-2.838-2.518a3.737 3.737 0 0 0-3.539 1.191l-8.908 9.965a117.294 117.294 0 0 0-3.235-.33l-6.878-11.588c-.697-1.174-1.927-1.888-3.254-1.888-1.323 0-2.556.714-3.247 1.888l-6.881 11.588c-1.081.093-2.163.206-3.238.33l-8.909-9.965a3.741 3.741 0 0 0-3.54-1.191c-1.303.271-2.374 1.22-2.836 2.518l-4.565 12.73c-1.057.317-2.104.65-3.148.995l-10.58-7.94a3.68 3.68 0 0 0-3.7-.449c-1.221.528-2.099 1.683-2.311 3.043l-2.099 13.423c-.97.526-1.932 1.066-2.89 1.618l-11.869-5.643a3.68 3.68 0 0 0-3.71.313c-1.103.766-1.747 2.076-1.698 3.455l.457 13.622a122.92 122.92 0 0 0-2.51 2.151l-12.721-3.128a3.733 3.733 0 0 0-3.583 1.063c-.94.979-1.322 2.39-1.019 3.737l2.996 13.269c-.695.86-1.383 1.729-2.057 2.61l-13.063-.475a3.802 3.802 0 0 0-3.314 1.77 4.13 4.13 0 0 0-.3 3.87l5.412 12.38a121.85 121.85 0 0 0-1.551 3.014l-12.87 2.184c-1.308.22-2.41 1.132-2.92 2.409a4.148 4.148 0 0 0 .431 3.858l7.614 11.027c-.06.194-.113.391-.172.586l-21.525 22.864s-3.3 2.585 1.503 8.66c4.235 5.36 25.981 26.606 37.466 37.736 4.851 5.651 8.174 9.15 8.521 8.847.548-.48-2.329-10.761-11.883-22.824-7.365-10.822-16.924-27.468-14.682-29.386 0 0 2.55-3.236 7.665-5.566-.193-.148.187.15 0 0 0 0 107.954 49.793 208.091.842 11.439-2.051 18.364 4.076 18.364 4.076 2.388 1.384-3.796 18.5-8.881 29.83-6.917 12.865-7.931 22.904-7.344 23.252.37.221 2.886-3.608 6.476-9.701 8.857-12.341 25.6-35.866 28.664-41.58 3.475-6.479 0-8.294 0-8.294Z"/><path fill="#F74C00" d="M298.277 139.029s15.533-.72 35.936-21.455l2.891-6.419s-31.667-31.498 17.56-53.24c0 0-4.31 7.042-3.045 34.25 0 0 14.842-5.154 19.194-29.188 0 0 21.649 28.541-23.514 55.309 0 0-21.188 33.964-51.058 30.71l2.036-9.967Z"/><path fill="#000" d="M227.914 119.466s10.788-11.812 21.577 0c0 0 8.476 15.75 0 23.624 0 0-13.871 11.024-21.577 0 0 0-9.247-8.662 0-23.624Z"/><path fill="#fff" d="M240.402 123.85c0 4.599-2.711 8.328-6.056 8.328-3.344 0-6.055-3.729-6.055-8.328 0-4.6 2.711-8.329 6.055-8.329 3.345 0 6.056 3.729 6.056 8.329Z"/><path fill="#000" d="M179.763 116.239s18.506-8.193 23.557 10.094c0 0 5.29 21.314-15.198 22.517 0 0-26.125-5.031-8.359-32.611Z"/><path fill="#fff" d="M189.058 124.154c0 4.743-2.796 8.589-6.245 8.589-3.448 0-6.245-3.846-6.245-8.589 0-4.744 2.797-8.59 6.245-8.59 3.449 0 6.245 3.846 6.245 8.59Z"/><path fill="#000" d="m203.47 156.304 23.599-1.894s-.799 3.799-3.878 6.65c0 0-8.117 8.899-17.43-.74 0 0-1.524-1.644-2.291-4.016Z"/><path fill="#F74C00" d="M108.975 134.459c-.195 0-.386.014-.577.029-7.662-1.744-29.2-7.355-34.894-16.461 0 0 28.983-32.965-16.316-54.037l5.275 36.472s-13.965-9.33-16.978-29.599c0 0-34.006 24.677 15.008 48.328 0 0 4.446 16.702 47.128 30.028l.032-.127c.429.08.869.127 1.322.127 4.033 0 7.303-3.304 7.303-7.38 0-4.076-3.27-7.38-7.303-7.38Z"/><path stroke="gray" stroke-width="3" d="m305.061 35.52 71.161 71.161"/><path fill="#C8102E" d="M305.825 34.756 339.581 1l25.544 25.545-33.755 33.756-25.545-25.545Z"/><path fill="#fff" d="m316.773 45.704 10.947-10.948-10.947-10.948 3.649-3.65 10.948 10.949 19.158-19.159 3.65 3.65-19.159 19.158 10.948 10.948-3.65 3.65-10.947-10.949-10.948 10.948-3.649-3.65ZM71.16 1l33.757 33.756L79.372 60.3 45.616 26.545 71.161 1Z"/><path stroke="gray" stroke-width="3" d="m105.605 35.444-71.161 71.161"/><path fill="#000" d="M84.38 22.429c-4.538-4.539-11.928-4.537-16.465 0-4.537 4.537-4.537 11.928 0 16.465 4.537 4.537 11.928 4.537 16.465 0 4.537-4.537 4.537-11.928 0-16.465Zm-.743.72a.762.762 0 0 1-.016 1.067.766.766 0 1 1 .016-1.068Zm.348 2.13a9.427 9.427 0 0 1 1.313 7.814l-2.081.803a.704.704 0 0 0-.402.904l.684 1.774a9.429 9.429 0 0 1-1.142 1.17l-.685-.684c-.068-.068-.141-.05-.207.016l-.314.313c-.738.739-1.316.485-1.722.159-.389-.308-.587-.88-.423-1.14.949-1.361.853-1.948.74-2.915 1.095.246 2.42.314 3.26-.526.908-.907.857-2.1.714-2.804-.204-.987-.784-1.724-.961-1.901l-7.071-7.072a9.426 9.426 0 0 1 5.832 1.625l-.04 1.709a.694.694 0 0 0 .681.712l1.824.044Zm-11.707-3.688a.766.766 0 1 1-1.115 1.052.766.766 0 0 1 1.115-1.052Zm12.89 12.939a.766.766 0 1 1-1.115 1.051.766.766 0 0 1 1.115-1.051ZM73.187 22.723l.944.944-4.257 4.257-1.905-1.906a9.426 9.426 0 0 1 2.328-2.76l1.686.648c.36.137.765-.04.902-.4l.302-.783Zm3.894 3.985 2.249 2.248c.116.117.686.955.158 1.483-.437.437-1.134.054-1.578-.39l-2.086-2.087 1.257-1.254Zm-3.058 3.058 1.722 1.723c.157.157.796.886.14 1.978-.2.337-.924 1.362-1.101 1.745-.21.417-.422 1.46.022 1.904l2.812 2.811c-.441.064-.886.097-1.331.098l-.899-1.39a.7.7 0 0 0-.966-.207l-1.54.996a9.426 9.426 0 0 1-5.532-5.584l.997-1.54a.697.697 0 0 0-.206-.964l-1.36-.88c.007-.422.041-.843.104-1.26l5.447 5.445c.06.061.113.093.17.035l1.927-1.926c.055-.056.026-.11-.035-.17L72.8 30.984l1.223-1.219Zm-6.925 1.899a.766.766 0 1 1-1.113 1.05.766.766 0 0 1 1.113-1.05Zm7.996 8.044a.766.766 0 1 1-1.115 1.052.766.766 0 0 1 1.115-1.052Z"/><path fill="#000" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width=".739" d="M83.92 38.434A10.992 10.992 0 1 1 68.376 22.89 10.992 10.992 0 0 1 83.92 38.434Zm.605-.896.461 1.962-1.962-.461.067 2.015-1.833-.834-.326 1.99-1.639-1.179-.707 1.892-1.376-1.477-1.062 1.717-1.063-1.717-1.376 1.477-.707-1.892-1.639 1.18-.325-1.991-1.834.834.068-2.015-1.963.461.461-1.962-2.015.067.835-1.833-1.991-.326 1.179-1.64-1.892-.706 1.477-1.376-1.717-1.063 1.717-1.062-1.477-1.376 1.892-.707-1.18-1.639 1.992-.325-.835-1.834 2.015.067-.461-1.962 1.963.461-.068-2.015 1.834.834.325-1.99 1.64 1.179.706-1.892 1.376 1.477 1.063-1.717 1.062 1.717 1.376-1.477.707 1.892 1.639-1.18.326 1.991 1.834-.834-.068 2.015 1.962-.461-.461 1.962 2.015-.067-.834 1.834 1.99.325-1.179 1.64 1.892.706-1.477 1.376 1.717 1.063-1.717 1.062 1.477 1.376-1.892.707 1.18 1.639-1.991.326.834 1.833-2.015-.067Z" clip-rule="evenodd"/><path fill="#F74C00" d="M62.463 100.462s-13.965-9.33-16.978-29.599c0 0-34.006 24.677 15.008 48.328C67.5 114.5 65.5 111 62.463 100.462ZM337.103 111.155l6.395 2.345 3.8 4.786c45.163-26.767 23.513-55.309 23.513-55.309-4.352 24.034-19.194 29.189-19.194 29.189-2.619 7.834-7.619 8.834-7.619 8.834-3 1-6.895 10.155-6.895 10.155Z"/></g><defs><filter id="a" width="347.899" height="208" x="29.384" y="0" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dx="-2" dy="1"/><feGaussianBlur stdDeviation="1"/><feComposite in2="hardAlpha" operator="out"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_12_180"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_12_180" result="shape"/></filter></defs></svg> + <h1>Copenhagen <span>Rust</span> Community</h1> + </a> </header> - {% endblock header %} + <nav> + <ul> + {% for item in config.extra.nav %} + <li> + <a href="{{ item.url | safe }}"> + {% if item.icon %}{{ item.icon | safe }}{% endif %}{{ item.title }} + </a> + </li> + {%- endfor %} + </ul> + </nav> - <main {% if page %}class="page-{{page.slug}}"{% endif %} {% if section %}class="section-{{section.title | lower}}"{% endif %}> - {% block sidebar %} - {% endblock sidebar %} - <div class="content"> - {% block content %} - {% endblock content %} - </div> + <main {% if page %}class="page-{{page.slug}}"{% endif %} {% if section %}class="page-{{section.title | lower}}"{% endif %}> + {% block content %} + {% endblock content %} </main> - - <footer> - <small>Last updated: {{ now()| date(format="%e %B at %H:%M", timezone="Europe/Berlin") }}</small> - </footer> - - {% block script %} - {% endblock script %} + + {% block footer %} + {% endblock footer %} </body> </html> diff --git a/templates/event-page.html b/templates/event-page.html index 44911f7..51a7cf4 100644 --- a/templates/event-page.html +++ b/templates/event-page.html @@ -3,9 +3,7 @@ {% block content %} <article> - <h1 class="title"> - {{ page.title }} - </h1> + <h1>{{ page.title }}</h1> {% set meetups = load_data(path="events.toml") %} {% set upcoming = meetups['upcoming'] %} @@ -14,14 +12,14 @@ {% set event = all_events | filter(attribute="title", value=page.title) | first %} {% if event %} - <details> - <summary> - <h3>Details about this event</h3> - </summary> - <div> - {{ macros::event_attributes(event=event) }} - </div> - </details> + <details> + <summary> + <h3>Details about this event</h3> + </summary> + <div> + {{ macros::event_attributes(event=event) }} + </div> + </details> {% else %} No data found for this event. {% endif %} diff --git a/templates/events.html b/templates/events.html index 6a34d22..3fefc7a 100644 --- a/templates/events.html +++ b/templates/events.html @@ -1,27 +1,8 @@ {% extends "base.html" %} {% import "macros.html" as macros %} -{% block sidebar %} -{% set toc = ['upcoming', 'recent', 'past'] %} -<aside class="toc"> - {% if section.toc %}{% set toc = section.toc %}{% elif page.toc %}{% set toc = page.toc %}{% endif %} - {% if toc %} - <div class="toc-sticky"> - <div class="toc-item"> - <a href="#events">Events</a> - </div> - {% for h in toc %} - <div class="toc-item-child"> - <a href="#{{h}}">{{ h | capitalize }}</a> - </div> - {% endfor %} - </div> - {% endif %} -</aside> -{% endblock sidebar %} - {% block content %} -<h1 class="title"> +<h1> {{ section.title }} </h1> @@ -64,5 +45,8 @@ {% endif %} {% endfor %} +{% endblock content %} -{% endblock content %}
\ No newline at end of file +{% block footer %} + {{ macros::last_update() }} +{% endblock footer %}
\ No newline at end of file diff --git a/templates/index.html b/templates/index.html index 5822323..4e66f89 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,50 +1,43 @@ {% extends "base.html" %} +{% import "macros.html" as macros %} -{% block sidebar %} - <aside class="menu"> - {% set events = load_data(path="events.toml") %} - - {%- set nextEvent = events.upcoming | last %} - {%- if nextEvent -%} - <h2>Next event</h2> - - {% if nextEvent.url %} - <a class="title" href="{{ nextEvent.url }}">{{ nextEvent.title }}</a> - {% else %} - <span class="title">{{ nextEvent.title }}</span> - {% endif -%} - {% if nextEvent.date %} - <time datetime="{{ nextEvent.date }}">{{ nextEvent.date | date(format="%A, %e %B at %H:%M", timezone="Europe/Berlin") }}</time> - {% else %} - <div>(No date announced)</div> - {% endif -%} - {%- if not nextEvent.url -%}<div>(Link coming soon)</div>{%- endif -%} - {% endif %} +{% block content %} +<aside> + <h2>Updates</h2> + {% set events = load_data(path="events.toml") %} + + {%- set nextEvent = events.upcoming | last %} + {%- if nextEvent -%} + <p> + Next event: + <a href="/events">{{ nextEvent.title }}</a> - {%- set recentEvent = events.recent | first %} - {%- if recentEvent -%} - <h2>Recent event</h2> - - {% if recentEvent.url %} - <a class="title" href="{{ recentEvent.url }}">{{ recentEvent.title }}</a> - {% else %} - <span class="title">{{ recentEvent.title }}</span> - {% endif -%} - {% if recentEvent.date %} - <time datetime="{{ recentEvent.date }}">{{ recentEvent.date | date(format="%A, %e %B", timezone="Europe/Berlin") }}</time> - {% else %} - <div>(No date found)</div> - {% endif -%} - {%- if not recentEvent.url -%}<div>(No link found)</div>{%- endif -%} - {% endif %} - - <h2>Links</h2> - {% for menu in config.extra.menu %} - <a class="button" {% if menu.url %}href="{{ menu.url | safe }}"{% endif %}>{{ menu.title }}</a> - {%- endfor %} - </aside> -{% endblock sidebar %} + {% if nextEvent.date %} + <time datetime="{{ nextEvent.date }}">{{ nextEvent.date | date(format="%A, %e %B", timezone="Europe/Berlin") }}</time> + {% else %} + <i>To be announced</i> + {% endif -%} + </p> + {% endif %} -{% block content %} -{{ section.content | safe }} -{% endblock content %}
\ No newline at end of file + {%- set recentEvent = events.recent | first %} + {%- if recentEvent -%} + <p> + Recent event: + <a href="/events">{{ recentEvent.title }}</a> + + {% if recentEvent.date %} + <time datetime="{{ recentEvent.date }}">{{ recentEvent.date | date(format="%A, %e %B", timezone="Europe/Berlin") }}</time> + {% endif -%} + </p> + {% endif %} +</aside> + +<article> + {{ section.content | safe }} +</article> +{% endblock content %} + +{% block footer %} + {{ macros::last_update() }} +{% endblock footer %}
\ No newline at end of file diff --git a/templates/macros.html b/templates/macros.html index 7e5acb1..0ccadc1 100644 --- a/templates/macros.html +++ b/templates/macros.html @@ -1,37 +1,33 @@ {% macro event_attributes(event) %} <dl> - {% if event.url %} - <dt> - Signup - </dt> - <dd> - <a href="{{ event.url }}">{{ event.title}} on Meetup.com</a> - </dd> - {% endif %} - - <dt> - Date - </dt> + <dt>Date</dt> <dd> {% if event.date %} - <time datetime="{{ event.date }}">{{ event.date | date(format="%A, %e %B %Y", timezone="Europe/Berlin") }}</time> + <time datetime="{{ event.date }}">{{ event.date | date(format="%A, %e %B %Y at %R", timezone="Europe/Berlin") }}</time> {% else %} - (No date found) + <i>To be announced</i> {% endif %} </dd> - <dt> - Venue - </dt> + <dt>Venue</dt> <dd> {% if event.venue %} {{ event.venue }} – {% endif %} {% if event.address %}{{ event.address }} {% else %} - (No venue) + <i>To be announced</i> {% endif %} </dd> + <dt>Signup</dt> + <dd> + {% if event.url %} + <a href="{{ event.url }}">{{ event.title}} on Meetup.com</a> + {% else %} + <i>To be announced</i> + {% endif %} + </dd> + {% if event.content -%} <dt>Description</dt> <dd> @@ -39,4 +35,10 @@ </dd> {% endif %} </dl> -{% endmacro event_attributes %}
\ No newline at end of file +{% endmacro event_attributes %} + +{% macro last_update() %} +<footer> + <small>Last updated: {{ now()| date(format="%e %B at %H:%M", timezone="Europe/Berlin") }}</small> +</footer> +{% endmacro last_update %}
\ No newline at end of file diff --git a/templates/page.html b/templates/page.html index 6e097b8..a5e3d6f 100644 --- a/templates/page.html +++ b/templates/page.html @@ -2,51 +2,7 @@ {% block title %}{{ page.title }} | {{ super() }} {% endblock title %} -{% block sidebar %} -<aside class="toc"> - {% if section.toc %}{% set toc = section.toc %}{% elif page.toc %}{% set toc = page.toc %}{% endif %} - {% if toc %} - <div class="toc-sticky"> - {% for h in toc %} - <div class="toc-item"> - <a href="{{h.permalink | safe}}">{{ h.title }}</a> - </div> - {% if h.children %} - {% for h2 in h.children %} - <div class="toc-item-child"> - <a href="{{h2.permalink | safe}}">{{ h2.title }}</a> - </div> - {% endfor %} - {% endif %} - {% endfor %} - </div> - {% endif %} -</aside> -{% endblock sidebar %} - {% block content %} <h1>{{ page.title }}</h1> {{ page.content | safe }} -{% endblock content %} - -{% block script %} -<script> - const scrollHandler = entries => { - let entry = entries.find(entry => { return entry.isIntersecting && entry.intersectionRatio > 0.9; }); - if (!entry) return; - - document.querySelectorAll(".toc a").forEach((item) => { - item.classList.remove("active"); - }); - - let link = document.querySelector(`.toc a[href$="${decodeURIComponent(`#${entry.target.id}`)}"]`) - if (link) { - link.classList.add("active"); - link.scrollIntoView({ behavior: "auto", block: "nearest" }); - } - }; - const observer = new IntersectionObserver(scrollHandler, { threshold: 1 }); - let items = document.querySelectorAll('h1,h2,h3,h4,h5,h6'); - items.forEach(item => observer.observe(item)); -</script> -{% endblock script %}
\ No newline at end of file +{% endblock content %}
\ No newline at end of file |