Move all files to sculpin/

This commit is contained in:
Oliver Davies 2025-10-01 00:01:33 +01:00
parent c5d71803a5
commit 0f61b4e9ee
1514 changed files with 0 additions and 0 deletions

View file

@ -0,0 +1,17 @@
{% import "_macros" as macros %}
<div>
<h2 class="text-xl font-bold">About me</h2>
<div class="mt-4">
<div class="flex space-x-4">
<div class="flex flex-col flex-shrink-0 justify-start">
<img src="/assets/images/social-avatar.jpg" alt="Picture of Oliver" class="my-0 w-16 h-16 rounded-full ring-[3px] ring-blue-primary dark:ring-white">
</div>
<div class="{{ site.prose_classes }}">
<p>I'm an certified Drupal Triple Expert with {{ get_years_of_experience() }} years of experience, a Drupal core contributor, <a href="/presentations">public speaker</a>, <a href="{{ site.youtube.channel.url }}/streams">live streamer</a>, and host of the <a href="/podcast">Beyond Blocks podcast</a>.</p>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,9 @@
{% if site.banner_text %}
<div class="p-3 bg-[#ffc82c] text-black text-base mb-4 dark:text-white dark:bg-[#856200]">
<div class="min-w-full mx-auto px-6">
<div class="mx-auto max-w-xl prose prose-p:text-black prose:a:font-normal prose-p:text-sm prose-p:leading-normal dark:prose-p:text-white dark:prose-a:text-white text-center">
{{ site.banner_text|markdown }}
</div>
</div>
</div>
{% endif %}

View file

@ -0,0 +1,19 @@
{% set classes = [
'my-4 not-prose',
full_width ? 'flex' : 'inline-flex md:w-auto',
position == 'center' ? 'flex justify-center',
] -%}
<div class="{{ classes|join(' ') }}">
<a class="inline-flex gap-2 justify-center items-center py-3 px-6 w-full text-base font-medium text-white no-underline rounded-md duration-200 ease-in-out hover:bg-white focus:bg-white border-[2px] border-blue-primary bg-blue-primary transition-color dark:hover:border-white hover:text-blue-primary focus:text-blue-primary" href="{{ url }}">
<span>
{{ text|raw }}
</span>
<span>
<svg class="size-3" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M17.25 8.25 21 12m0 0-3.75 3.75M21 12H3" />
</svg>
</span>
</a>
</div>

View file

@ -0,0 +1,7 @@
<aside
class="p-6 my-8 border border-grey-300 dark:bg-grey-800 dark:border-grey-700"
>
<h2 class="mt-0">{{ title }}</h2>
{% block callout_content %}{% endblock %}
</aside>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,13 @@
<section>
<h2>{{ title }}</h2>
<p>Here are the emails I sent this week:</p>
<ul>
{% for email in emails %}
<li><a href="{{ email.url }}">{{ email.title }}</a></li>
{% endfor %}
</ul>
</section>

View file

@ -0,0 +1,7 @@
<section>
<h2>Work with me and support the Drupal project</h2>
<div>
<p>5% from any Drupal-related product or service is donated to the <a href="https://www.drupal.org/association">Drupal Association</a>.</p>
</div>
</section>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,8 @@
<figure class="block">
<img src="{{ image.src }}" alt="{{ image.alt }}" class="p-1 border">
{% if caption %}
<figcaption class="mt-1 mb-0 italic text-sm text-center text-gray-800">
{{ caption }}
</figcaption>
{% endif %}
</figure>

View file

@ -0,0 +1,10 @@
<div class="flex flex-col justify-between items-center md:flex-row">
<div>
<a href="/" aria-label="Go back to the Home page">
<svg aria-hidden="true" class="w-16 h-16 fill-current dark:text-blue-400 text-blue-primary md:w-18 md:h-18" viewBox="0 0 706 504" xmlns="http://www.w3.org/2000/svg">
<path d="M456.5 1.1c-12.3 1.5-31 5.5-44.1 9.4-12.7 3.9-63.6 24.6-64.1 26.2-.2.5 1.4 1.7 3.4 2.7 2.1 1 8.9 5.1 15.1 9.2l11.2 7.5 14.5-6c22.9-9.5 37.3-14 57.5-17.8 7.2-1.3 14.7-1.7 31-1.8 18.6 0 23.1.3 33 2.3 22 4.5 46.1 13.9 64.5 25.2 39.3 24.2 69.9 65.3 86.9 116.5 16.3 49.2 13 100.2-9.4 145.3-21.8 43.7-49.2 68.8-101.5 92.9-13.4 6.2-120.1 51.3-121.3 51.3-.5 0-15.7-35.1-33.7-78l-32.8-78 3.1-12.8c4.4-18 5.6-29.5 4.9-48.5-.6-16.8-2-25.7-6.3-38.7-12-35.8-40.8-69.2-74-85.6l-7.2-3.6-4.2-10c-2.4-5.6-3.9-10.3-3.4-10.7.5-.5 9.7-4.5 20.4-9s19.9-8.6 20.4-9.1c1.5-1.5-18.6-10.1-32.3-13.9l-6.8-1.9-20.6 8.7c-11.4 4.8-20.9 8.9-21.2 9.2-.2.3 2 6.3 5 13.3 3 7 5.5 12.8 5.5 12.9 0 .1-7.5.2-16.7.2-11.8.1-19.4.6-25.6 1.8-27.3 5.5-50.5 17.6-70.4 37-21.8 21.2-36.7 49-43 80.2-2.4 12.3-2.4 44 0 57.2 3.6 19.4 11.9 40.4 22.3 56 6.9 10.4 21.1 25.4 31.2 33 29.9 22.5 70.8 33.2 106.2 27.8 18.9-2.8 39.3-10.6 54.1-20.5 13.5-9.1 29.1-23.8 37.6-35.5 1.2-1.7 2.4-2.8 2.7-2.5.3.3 15.6 36.6 34.1 80.5 18.5 44 33.8 80.1 33.9 80.3.8.8 144.9-60.8 162.1-69.3 45.5-22.4 73.4-47.1 95.7-84.7 28-47.4 37.5-99.7 27.8-153.5-6.8-37.6-25-79-48.6-110.3-33.2-44.1-83-74.2-138.4-83.6-11.4-1.9-46.9-2.7-58.5-1.3zM259.2 141.4c42.4 10.9 77.8 50 84.8 93.8 1.6 9.9.8 34.5-1.4 44.8-5.2 24-15.5 43-32.6 60-20.7 20.6-42.8 31.3-67.7 32.7-26.9 1.5-53.2-6.2-74.3-21.7-29.4-21.7-46-56.2-46-95.7 0-45.4 27.2-89.6 66.1-107.2 8.2-3.7 21.7-7.9 29.4-9.1 10.4-1.6 30.8-.4 41.7 2.4z"></path>
<path d="M201 20.6c-83 11.2-157 71-186.5 150.8-22.3 60.3-18.3 134.9 10.2 192 21.5 43.1 59.6 81.6 102.1 103.4 21.1 10.9 46.3 19 71.2 22.9 16.2 2.5 53.1 2.5 68.5 0 25.9-4.2 45.2-10.5 69-22.2 14.4-7.1 39.7-23.2 41.8-26.7.8-1.2-.2-4.6-4.3-14.5-2.9-7-5.7-13.2-6.1-13.7-.5-.5-4.3 1.7-8.6 5.1C320 447.1 277.6 462 232 462c-59.8 0-115.2-26.3-154.8-73.5-32.2-38.3-48.8-88.7-46.9-142 2-53.7 22.1-99.6 60.7-138.5 28.1-28.3 63-47.2 102.9-55.7 11.9-2.6 14.1-2.8 38.6-2.8 28.3 0 39.4 1.3 59 7 27.9 8.1 58.5 26.1 80.9 47.6l10.9 10.5-14.3 6c-7.8 3.2-14.5 6.4-14.7 7-.2.7 16.5 41.3 37.1 90.4 20.7 49.1 37.6 90.1 37.6 91.1 0 3.4-7.1 24.2-11.6 33.8-2.4 5.1-6.6 13.1-9.4 17.7l-5 8.3 6.6 15.6c5.5 12.9 6.9 15.4 8 14.4 2.8-2.3 19.2-27.8 24.4-37.9l5.3-10.3 8.3 19.8c4.7 10.9 8.7 20.1 8.9 20.3.6.6 60.8-24.6 74.5-31.2 29.7-14.2 52.7-35.8 65.3-61.1 16.9-34 17.6-70.8 2.2-112-17-45.3-45.8-76.7-82.5-90-18.2-6.5-43.1-9.1-63.5-6.5-11.5 1.4-30 5.8-40.3 9.5l-7.3 2.6L402.3 91c-20.3-21.3-37.9-34.3-65.4-48.3-33.4-17.1-63.7-23.8-105.9-23.6-10.7.1-24.2.7-30 1.5zM504.5 122c9.2 2.5 22.1 8.3 29.2 13.1 6.9 4.7 18.7 16.3 24.3 23.9 15.1 20.6 26.3 49 29 74 2.3 20.7-3.1 43-14.5 60.5-8.7 13.3-27.6 29.5-44.5 38-6 3.1-47.3 20.6-47.5 20.2-1.1-1.6-87.5-208-87.3-208.3.2-.2 7.4-3.3 15.8-6.9 22.5-9.5 33.8-13 55-16.9 1.4-.2 9.3-.3 17.5-.1 11.5.2 16.9.8 23 2.5z"></path>
</svg>
</a>
</div>
</div>

View file

@ -0,0 +1,7 @@
<nav class="flex flex-wrap justify-center -mb-3">
{% for link in site.menu_links %}
<a class="mx-3 mb-3 text-base underline md:text-lg dark:text-white hover:no-underline link dark:hover:text-blue-400 hover:text-gray-900" href="{{ link.url }}" title="{{ link.attributes.title ?? link.title }}">
{{ link.title }}
</a>
{% endfor %}
</nav>

View file

@ -0,0 +1,9 @@
{# <div class="mb-10 border border-grey-800 dark:border-grey-600">
<div class="py-4 px-4 border-l-4 border-blue-primary">
<div class="{{ site.prose_classes }}">
<p>
<strong>Work with me and support the Drupal project.</strong> 5% from any Drupal-related product or service is donated to the <a href="https://www.drupal.org/association">Drupal Association</a>.
</p>
</div>
</div>
</div> #}

View file

@ -0,0 +1,22 @@
{% set other_episodes = [] %}
{% for episode in all_episodes %}
{% if guest in episode.guests and episode.topic is not same as topic %}
{% set other_episodes = other_episodes|merge([episode]) %}
{% endif %}
{% endfor %}
{% if other_episodes is not empty %}
<section>
<h2>Other episodes with {{ guest }}</h2>
<ul>
{% for episode in other_episodes %}
<li>
<a href="{{ episode.url|trim('/', 'right') }}">{{ episode.topic }}</a>
- {{ episode.date|date('jS F Y') }}
</li>
{% endfor %}
</ul>
</section>
{% endif %}

View file

@ -0,0 +1,46 @@
<section>
<h2>Events</h2>
<table>
<thead>
<th>Event name</th>
<th>Date</th>
<th>Location</th>
<th>Links</th>
</thead>
<tbody>
{% for event in events|sort((a, b) => b.date <=> a.date) %}
<tr>
<td>{{ event.name }}</td>
<td><time datetime="{{ event.date|date('Y-m-d') }}">{{ event.date|date('jS F Y') }}</time></td>
<td>
{% if event.online %}
Online
{% elseif event.location %}
{{ event.location }}
{% endif %}
</td>
<td>
{% if event.urls %}
<ul>
{% for key, link in event.urls if link %}
<li>
<a class="text-sm" href="{{ link }}" title="{% spaceless %}
{{ key == 'code' ? 'View the example code from %s.'|format(event.name) }}
{{ key == 'demo' ? 'View the demo from %s.'|format(event.name) }}
{{ key == 'slides' ? 'View the slides from %s.'|format(event.name) }}
{{ key == 'video' ? 'Watch the video recording from %s.'|format(event.name) }}
{{ key == 'website' ? 'View the website for %s.'|format(event.name) }}
{% endspaceless %}">
{{- key|capitalize -}}
</a>
</li>
{% endfor %}
</ul>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</section>

View file

@ -0,0 +1,25 @@
{% if events %}
<section>
<h2>Events</h2>
<ul>
{% for event in events|sort((a, b) => b.date <=> a.date) %}
<li>
{% if event.url %}
<a href="{{ event.url }}">{{ event.name }}</a>
{% else %}
{{ event.name }}
{% endif %}
{% if event.location and not event.online %}
in {{ event.location }}
{% endif %}
- {{ event.date|date('F jS, Y') }}
{{ event.online ? '(online)' }}
</li>
{% endfor %}
</ul>
</section>
{% endif %}

View file

@ -0,0 +1,15 @@
{% if speakerdeck.id %}
<section>
<h2>Slides</h2>
<div>
<noscript>**Please enable JavaScript to view slides.**</noscript>
<script
class="speakerdeck-embed"
data-id="{{ speakerdeck.id }}"
data-ratio="{{ speakerdeck.ratio ?? '1.29456384323641' }}"
src="//speakerdeck.com/assets/embed.js"
></script>
</div>
</section>
{% endif %}

View file

@ -0,0 +1,20 @@
{% if video.id %}
<section>
<h2>Video</h2>
<div>
{% if video.type == 'vimeo' %}
<div>
<iframe
allowfullscreen
class="w-full border border-gray-500 aspect-[16/9]"
frameborder="0"
src="https://player.vimeo.com/video/{{ video.id }}"
></iframe>
</div>
{% elseif video.type == 'youtube' %}
{% include 'youtube-video.html.twig' with { id: video.id } %}
{% endif %}
</div>
</section>
{% endif %}

View file

@ -0,0 +1,26 @@
{% for plan in plans %}
<div>
<h3>
<strong>
{{ plan.name }}:
£{{ plan.price|number_format }} per month
</strong>
</h3>
<p>{{ plan.tagline }}</p>
<ul>
{% for feature in plan.features|merge(page.features) %}
<li>{{ feature }}</li>
{% endfor %}
</ul>
<footer class="mt-6">
{% include 'button.html.twig' with {
text: 'Register now for the ' ~ plan.name|lower ~ ' plan',
url: plan.url,
withArrow: true,
} %}
</footer>
</div>
{% endfor %}

View file

@ -0,0 +1,50 @@
{% set limit = limit ?? 10 %}
{% set offset = offset ?? 0 %}
{% set testimonials = site.testimonials %}
{% if tag is not null %}
{% set testimonials = testimonials|filter(testimonial => tag in testimonial.tags) %}
{% endif %}
{% if limit > 0 %}
{% set testimonials = testimonials|slice(offset, limit) %}
{% endif %}
<section>
<h2 class="text-xl font-bold">{{ title|default('Testimonials') }}</h2>
<div class="mt-4 space-y-12">
{% for testimonial in testimonials %}
<div>
<div class="{{ site.prose_classes }}">
<blockquote>
{{ testimonial.text|markdown }}
</blockquote>
<div>
<footer class="mt-8 flex items-center space-x-4 space-x-reverse">
<span class="text-base">
{% if testimonial.url %}
<a href="{{ testimonial.url }}">{{ testimonial.name }}</a>
{% else %}
{{ testimonial.name }}
{% endif %}
{% if testimonial.title %}
- {{ testimonial.title }}
{% endif %}
</span>
{% if testimonial.image %}
<span class="not-prose order-first flex-shrink-0">
<img class="size-16 rounded-full ring-[3px] ring-blue-primary dark:ring-white" alt="Photo of {{ testimonial.name }}" src="{{ testimonial.image.url }}">
</span>
{% endif %}
</footer>
</div>
</div>
</div>
{% endfor %}
</div>
</section>

View file

@ -0,0 +1,10 @@
<div class="my-4 flex justify-center {{ class }}">
<blockquote
class="twitter-tweet"
lang="en"
{% if not data_cards %}data-cards="hidden"{% endif %}
{% if no_parent %}data-conversation="none"{% endif %}
>
{{ content|raw }}
</blockquote>
</div>

View file

@ -0,0 +1,8 @@
<div>
<iframe
allowfullscreen
class="w-full border border-gray-500 aspect-[16/9]"
frameborder="0"
src="https://www.youtube.com/embed/{{ id }}?rel=0&iv_load_policy=3"
></iframe>
</div>