Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,11 @@ defaults:
path: "world/2025"
values:
description: September 4 & 5 - Beurs van Berlage, Amsterdam, NL
- scope:
path: "_world_speakers/2026"
type: "world_speakers"
values:
layout: "world/2026/speaker"

markdown: kramdown
highlighter: rouge
Expand Down
18 changes: 15 additions & 3 deletions _data/world/2026/sponsors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ gold:
- name: "RWX"
logo: /assets/world/2026/logos/logo-rwx.png
url: "https://www.rwx.com/"
- name: "SerpApi"
logo: /assets/images/logo-serpapi.svg
url: "https://serpapi.com/"
- name: "Test Double"
logo: /assets/world/2024/images/sponsors/RW-logo-testdouble.svg
url: "https://link.testdouble.com/bp8"
Expand All @@ -30,14 +33,23 @@ silver:
- name: "37signals"
logo: /assets/world/2024/images/sponsors/RW-logo-37signals.svg
url: "https://37signals.com/"
- name: "Crunch Loop"
logo: /assets/world/2026/logos/logo-crunchloop.svg
url: "https://www.crunchloop.io/"
- name: "Intercom"
logo: /assets/world/2024/images/sponsors/RW-logo-intercom.svg
url: "https://www.intercom.com/"
- name: "TRMNL"
logo: /assets/world/2026/logos/logo-trmnl.png
url: "https://trmnl.com/"
- name: "Wyeworks"
logo: /assets/world/2026/logos/wyeworks-logo-white.svg
url: "https://www.wyeworks.com/"

other:
- name: "Baytek"
logo: /assets/world/2026/logos/logo-baytek.svg
url: "https://www.baytekent.com/"
- name: "Beyond Finance"
logo: /assets/world/2026/logos/logo-beyond-finance.svg
url: "https://www.beyondfinance.com/"
Expand All @@ -53,6 +65,9 @@ other:
- name: "Sorcer"
logo: /assets/world/2026/logos/logo-sorcer.png
url: "https://sorcer.io/"
- name: "thoughtbot"
logo: /assets/world/2026/logos/logo-thoughtbot.svg
url: "https://thoughtbot.com/"
- name: "Typesense"
logo: /assets/world/2026/logos/logo-typesense.png
url: "https://typesense.org/"
Expand Down Expand Up @@ -100,9 +115,6 @@ members:
- name: "Chime"
logo: /assets/images/logo-chime-black.svg
url: "https://www.chime.com/"
- name: "SerpApi"
logo: /assets/images/logo-serpapi.svg
url: "https://serpapi.com/"
- name: "Planning Center"
logo: /assets/images/logo-planningcenter-black.svg
url: "https://www.planningcenter.com/"
2 changes: 1 addition & 1 deletion _includes/world/2026/head.html
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@

<!-- Clash Grotesk via Fontshare CDN (ITF FFL license permits API usage) -->
<link rel="preconnect" href="https://api.fontshare.com">
<link href="https://api.fontshare.com/v2/css?f[]=clash-grotesk@400,500,600,700&display=swap" rel="stylesheet">
<link href="https://api.fontshare.com/v2/css?f[]=clash-grotesk@200,300,400,500,600,700&display=swap" rel="stylesheet">

<link rel="stylesheet" href="/assets/css/world-2026.css" />
<link rel="canonical" href="{{ url }}" />
Expand Down
2 changes: 1 addition & 1 deletion _includes/world/2026/homepage_sections/nl_banner.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<div class="nl-banner__inner">
<div class="nl-banner__card">
<div class="nl-banner__text">
<p class="nl-banner__title">Book a Corporate Support ticket.</p>
<p class="nl-banner__title">Book a Corporate Support ticket</p>
<p class="nl-banner__subtitle">Support tickets play a key role in making Rails World possible and also help keep General Admission tickets affordable for others paying out of pocket. As a thank you for supporting the event, we’ll recognize your name (or your company’s name) during the opening session at Rails World, and as an additional bonus, this ticket comes with a very special limited edition gift with your swag bag, a special nod to both Rails and Austin. 🎶</p>
</div>
<a href="https://luma.com/rails-world-2026" class="nl-banner__btn" target="_blank" rel="noopener noreferrer">Book a Support ticket</a>
Expand Down
4 changes: 1 addition & 3 deletions _includes/world/2026/homepage_sections/speaker_carousel.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
{% assign keynote_speakers = site.world_speakers | where_exp: 'item', 'item.path contains "2026"' | where: 'keynote', true | sort: 'first_name' %}
{% assign regular_speakers = site.world_speakers | where_exp: 'item', 'item.path contains "2026"' | where: 'keynote', false | sort: 'first_name' %}
{% assign all_speakers = keynote_speakers | concat: regular_speakers %}
{% assign all_speakers = site.world_speakers | where_exp: 'item', 'item.path contains "2026"' | sort: 'specific_order' %}

<section class="speaker-carousel-section">
<div class="speaker-carousel-section__header">
Expand Down
58 changes: 58 additions & 0 deletions _layouts/world/2026/speaker.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
layout: world/2026/default
---

<div class="page-wrapper-2026">
<div id="section-desktop">
{% include world/2026/components/nav.html %}

<div class="speaker-page container-center">
<div class="speaker-page__left">
<div class="speaker-page__photo-frame">
<img src="{{ page.image_path }}" alt="{{ page.first_name }} {{ page.last_name }}" loading="lazy">
</div>
</div>

<div class="speaker-page__right">
<div class="speaker-page__content">
<h1 class="speaker-page__name">{{ page.first_name }} {{ page.last_name }}</h1>
<p class="speaker-page__tagline">{{ page.tagline }}{% if page.company and page.company != "false" %}, {{ page.company }}{% endif %}</p>
<div class="speaker-page__bio">{{ content }}</div>
</div>
<div class="speaker-page__social">
{% if page.github %}
<a href="{{ page.github }}" class="social-icon" target="_blank" rel="noopener noreferrer" aria-label="GitHub">
<span class="social-icon__glyph social-icon__glyph--github"></span>
</a>
{% endif %}
{% if page.linkedin %}
<a href="{{ page.linkedin }}" class="social-icon" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn">
<span class="social-icon__glyph social-icon__glyph--linkedin"></span>
</a>
{% endif %}
{% if page.twitter %}
<a href="{{ page.twitter }}" class="social-icon" target="_blank" rel="noopener noreferrer" aria-label="X / Twitter">
<span class="social-icon__glyph social-icon__glyph--x"></span>
</a>
{% endif %}
</div>
</div>
</div>

{% if page.talk_title %}
<div class="talk-card container-center">
<div class="talk-card__inner">
{% if page.talk_date %}
<div class="talk-card__chip">{{ page.talk_date }}</div>
{% endif %}
<h2 class="talk-card__title">{{ page.talk_title }}</h2>
{% if page.talk_description %}
<div class="talk-card__description">{{ page.talk_description | markdownify }}</div>
{% endif %}
</div>
</div>
{% endif %}

{% include world/2026/components/footer.html %}
</div>
</div>
15 changes: 10 additions & 5 deletions _sass/world/2026/common/_social_icons.scss
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@
display: inline-flex;
align-items: center;
justify-content: center;
width: 50px;
height: 50px;
width: 36px;
height: 36px;
background: white;
border-radius: 5px;
border-radius: 4px;
text-decoration: none;
flex-shrink: 0;

&__glyph {
display: block;
width: 32px;
height: 32px;
width: 22px;
height: 22px;
background: #0d0d0d;
-webkit-mask-size: contain;
-webkit-mask-repeat: no-repeat;
Expand All @@ -21,6 +21,11 @@
mask-repeat: no-repeat;
mask-position: center;

&--github {
-webkit-mask-image: url("/assets/world/2026/icons/github.svg");
mask-image: url("/assets/world/2026/icons/github.svg");
}

&--linkedin {
-webkit-mask-image: url("/assets/world/2026/icons/linkedin.svg");
mask-image: url("/assets/world/2026/icons/linkedin.svg");
Expand Down
137 changes: 137 additions & 0 deletions _sass/world/2026/modules/_speaker_page.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
.speaker-page {
display: grid;
grid-template-columns: 360px 1fr;
gap: 60px;
align-items: stretch;
margin: 60px auto 0;
padding: 0 30px 100px;

&__left {
display: flex;
flex-direction: column;
}

&__photo-frame {
position: relative;
border-radius: 3px;
border: 1px solid rgba(217, 217, 217, 1);
overflow: hidden;
flex: 1;
@include neon-glow-outer;

// Conic gradient border
&::before {
content: '';
position: absolute;
inset: 0;
border-radius: inherit;
background: $neon-border-gradient;
opacity: 0.7;
-webkit-mask:
linear-gradient(#fff 0 0) content-box,
linear-gradient(#fff 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
pointer-events: none;
z-index: 2;
}

// Inner glow
&::after {
content: '';
position: absolute;
inset: 0;
pointer-events: none;
z-index: 3;
@include neon-glow-inner;
}

img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
object-position: top center;
}
}

&__right {
display: flex;
flex-direction: column;
padding-top: 12px;
}

&__content {
flex: 1;
}

&__social {
display: flex;
gap: 12px;
padding-top: 24px;
}

&__name {
font-size: 60px;
font-weight: $font-weight-600;
color: $white;
line-height: 1.05;
letter-spacing: 1px;
margin-bottom: 16px;
}

&__tagline {
font-size: 25px;
font-weight: $font-weight-400;
color: $off-white;
letter-spacing: 0.5px;
margin-bottom: 32px;
line-height: 1.4;
}

&__bio {
p {
font-size: 16px;
font-weight: 200;
color: $white;
line-height: 1.7;
letter-spacing: 0.3px;
}
}

@include media(TabletScreens) {
grid-template-columns: 260px 1fr;
gap: 40px;
margin-top: 40px;

&__name {
font-size: $xx-large * 1.5;
}
}

@include media(MobileScreens) {
grid-template-columns: 1fr;
gap: 28px;
margin-top: 32px;
padding: 0 20px 60px;
align-items: start;

&__photo-frame {
flex: none;
aspect-ratio: 1 / 1;

img {
height: auto;
aspect-ratio: 1 / 1;
}
}

&__right {
padding-top: 0;
}

&__name {
font-size: $xx-large * 1.2;
}
}
}
Loading