From 524a42250d3669eb05b4af08a25f758b3cb2f67a Mon Sep 17 00:00:00 2001 From: Zorex Salvo Date: Sun, 22 Feb 2026 18:32:23 +0800 Subject: [PATCH] feat: improve Pretalx schedule embed - Widget scrolls into view on hover - Height set to 90dvh with scroll contained within wrapper - Full page width layout with minimal side padding - Direct link to pretalx.com schedule added to subtext - Improved subtext copy --- .../templates/internal/pages/schedule.html | 47 ++++---- static/css/app.css | 109 ++++++++++++++++++ 2 files changed, 135 insertions(+), 21 deletions(-) diff --git a/app/home/templates/internal/pages/schedule.html b/app/home/templates/internal/pages/schedule.html index 42463ea..77e0154 100644 --- a/app/home/templates/internal/pages/schedule.html +++ b/app/home/templates/internal/pages/schedule.html @@ -32,33 +32,38 @@ {% endblock header %} -
-
+
+

Schedule

-

Note: This schedule is subject to change. Please check back regularly for updates.

- -
- -
- +

+ The schedule is still taking shape — sessions and times may shift as we finalize the program. + Check back closer to the event for the latest updates, or view it directly on pretalx.com. +

+ +
+ +
+ +
diff --git a/static/css/app.css b/static/css/app.css index cc0d9ba..57200be 100644 --- a/static/css/app.css +++ b/static/css/app.css @@ -263,6 +263,92 @@ } } } + .tab { + @layer daisyui.l1.l2.l3 { + position: relative; + display: inline-flex; + cursor: pointer; + appearance: none; + flex-wrap: wrap; + align-items: center; + justify-content: center; + text-align: center; + webkit-user-select: none; + user-select: none; + &:hover { + @media (hover: hover) { + color: var(--color-base-content); + } + } + --tab-p: 0.75rem; + --tab-bg: var(--color-base-100); + --tab-border-color: var(--color-base-300); + --tab-radius-ss: 0; + --tab-radius-se: 0; + --tab-radius-es: 0; + --tab-radius-ee: 0; + --tab-order: 0; + --tab-radius-min: calc(0.75rem - var(--border)); + --tab-radius-limit: min(var(--radius-field), var(--tab-radius-min)); + --tab-radius-grad: #0000 calc(69% - var(--border)), + var(--tab-border-color) calc(69% - var(--border) + 0.25px), + var(--tab-border-color) 69%, + var(--tab-bg) calc(69% + 0.25px); + border-color: #0000; + order: var(--tab-order); + height: var(--tab-height); + font-size: 0.875rem; + padding-inline: var(--tab-p); + &:is(input[type="radio"]) { + min-width: fit-content; + &:after { + --tw-content: attr(aria-label); + content: var(--tw-content); + } + } + &:is(label) { + position: relative; + input { + position: absolute; + inset: calc(0.25rem * 0); + cursor: pointer; + appearance: none; + opacity: 0%; + } + } + &:checked, &:is(label:has(:checked)), &:is(.tab-active, [aria-selected="true"], [aria-current="true"], [aria-current="page"]) { + & + .tab-content { + display: block; + } + } + &:not( :checked, label:has(:checked), :hover, .tab-active, [aria-selected="true"], [aria-current="true"], [aria-current="page"] ) { + color: var(--color-base-content); + @supports (color: color-mix(in lab, red, red)) { + color: color-mix(in oklab, var(--color-base-content) 50%, transparent); + } + } + &:not(input):empty { + flex-grow: 1; + cursor: default; + } + &:focus { + --tw-outline-style: none; + outline-style: none; + @media (forced-colors: active) { + outline: 2px solid transparent; + outline-offset: 2px; + } + } + &:focus-visible, &:is(label:has(:checked:focus-visible)) { + outline: 2px solid currentColor; + outline-offset: -5px; + } + &[disabled] { + pointer-events: none; + opacity: 40%; + } + } + } .menu { @layer daisyui.l1.l2.l3 { display: flex; @@ -2376,6 +2462,26 @@ .z-\[999\] { z-index: 999; } + .tab-content { + @layer daisyui.l1.l2.l3 { + order: var(--tabcontent-order); + display: none; + border-color: transparent; + --tabcontent-radius-ss: var(--radius-box); + --tabcontent-radius-se: var(--radius-box); + --tabcontent-radius-es: var(--radius-box); + --tabcontent-radius-ee: var(--radius-box); + --tabcontent-order: 1; + width: 100%; + height: calc(100% - var(--tab-height) + var(--border)); + margin: var(--tabcontent-margin); + border-width: var(--border); + border-start-start-radius: var(--tabcontent-radius-ss); + border-start-end-radius: var(--tabcontent-radius-se); + border-end-start-radius: var(--tabcontent-radius-es); + border-end-end-radius: var(--tabcontent-radius-ee); + } + } .hero { @layer daisyui.l1.l2.l3 { display: grid; @@ -3284,6 +3390,9 @@ .px-8 { padding-inline: calc(var(--spacing) * 8); } + .px-\[2\%\] { + padding-inline: 2%; + } .px-\[4\%\] { padding-inline: 4%; }