diff --git a/content/_index.md b/content/_index.md index 41e1997..9b399b5 100644 --- a/content/_index.md +++ b/content/_index.md @@ -31,9 +31,10 @@ draft: false url="./speakers" target="_blank" >}} -{{< button-link label="Get Tickets" - url="https://ticket.apidays.global/event/apidays-paris-2025/3cccd07f-acb2-466e-8d91-cb1f208ecf42?_gl=1*1i6mx1e*_gcl_au*MTY3OTY0ODcyNS4xNzUwMTA0MzA4" - target="_blank" >}} + +{{< button-link label="Buy Tickets" + url="https://ticket.apidays.global/event/apidays-paris-2025/3cccd07f-acb2-466e-8d91-cb1f208ecf42/json-schema-conference-at-apidays-paris-2025" target="_blank">}} + diff --git a/data/partner.yml b/data/partner.yml index 56ca013..7dab532 100644 --- a/data/partner.yml +++ b/data/partner.yml @@ -1,5 +1,15 @@ platinum: - - name: Octue - homepage_url: https://www.octue.com/ - logo: octue.svg - description: Octue helps scientists and engineers in energy and climate sectors work with data. + - name: Sourcemeta + homepage_url: https://www.sourcemeta.com/ + logo: sourcemeta.svg + description: Sourcemeta provides tools and solutions for JSON Schema validation and management. + - name: .txt + homepage_url: https://txt.co/ + logo: txt.svg + description: .txt is a cloud platform for document management and collaboration. + +media: + - name: dev.events + homepage_url: https://dev.events/ + logo: dev-events.png + description: dev.events is a platform for discovering and promoting tech events. diff --git a/data/sponsors.yml b/data/sponsors.yml index 93d268d..020b5a5 100644 --- a/data/sponsors.yml +++ b/data/sponsors.yml @@ -2,7 +2,7 @@ platinum: items: - name: Octue homepage_url: https://www.octue.com/ - logo: octue.svg + logo: octue.svg gold: items: diff --git a/layouts/partials/sponsor-card.html b/layouts/partials/sponsor-card.html index 90337ff..4b828f1 100644 --- a/layouts/partials/sponsor-card.html +++ b/layouts/partials/sponsor-card.html @@ -1,25 +1,22 @@ - diff --git a/layouts/shortcodes/countdown.html b/layouts/shortcodes/countdown.html index 13d6c27..db43b66 100644 --- a/layouts/shortcodes/countdown.html +++ b/layouts/shortcodes/countdown.html @@ -1,24 +1,174 @@ - + + + diff --git a/layouts/shortcodes/sponsors-list.html b/layouts/shortcodes/sponsors-list.html index 468de36..1342b47 100644 --- a/layouts/shortcodes/sponsors-list.html +++ b/layouts/shortcodes/sponsors-list.html @@ -2,7 +2,7 @@ {{ with site.Data.partner.platinum }}
-

Past Platinum Sponsor (2024)

+

Platinum Sponsors (2025)

{{ range . }} {{ end }} - {{ with site.Data.partner.bronze }} + {{ with site.Data.partner.media }} +
+

Media Partners (2025)

+
+ {{ range . }} + + {{ end }} +
+ {{ end }} + + {{ with site.Data.sponsors.platinum.items }}
-

Bronze

+

Past Platinum Sponsor (2024)

{{ range . }} {{ end }}
diff --git a/layouts/shortcodes/tickets.html b/layouts/shortcodes/tickets.html index ee96078..0238ef8 100644 --- a/layouts/shortcodes/tickets.html +++ b/layouts/shortcodes/tickets.html @@ -8,8 +8,8 @@
"Be part of the JSON Schema Conference — connect with the community, learn from experts, and gain skills you can apply right away."
- Get Your Ticket Now → diff --git a/static/JS/countdown.js b/static/JS/countdown.js index b526ea0..624942b 100644 --- a/static/JS/countdown.js +++ b/static/JS/countdown.js @@ -1,7 +1,10 @@ // Countdown to December 11th, 2025 const countdownDate = new Date("Dec 11, 2025 00:00:00").getTime(); -const countdown = setInterval(function () { +// Track previous values for animation +let previousValues = { days: 0, hours: 0, minutes: 0, seconds: 0 }; + +function updateCountdown() { const now = new Date().getTime(); const distance = countdownDate - now; @@ -12,19 +15,46 @@ const countdown = setInterval(function () { const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); const seconds = Math.floor((distance % (1000 * 60)) / 1000); - const daysEl = document.getElementById("days"); - const hoursEl = document.getElementById("hours"); - const minutesEl = document.getElementById("minutes"); - const secondsEl = document.getElementById("seconds"); + const daysEl = document.querySelector(".days"); + const hoursEl = document.querySelector(".hours"); + const minutesEl = document.querySelector(".minutes"); + const secondsEl = document.querySelector(".seconds"); + + // Add animation class when values change + function updateWithAnimation(element, newValue, oldValue) { + if (element && newValue !== oldValue) { + element.textContent = String(newValue).padStart(2, '0'); + // Add pulse animation + const box = element.closest('.countdown-number-box'); + if (box) { + box.style.animation = 'none'; + setTimeout(() => { + box.style.animation = 'pulse-number 0.3s ease-in-out'; + }, 10); + } + } else if (element && !element.textContent) { + element.textContent = String(newValue).padStart(2, '0'); + } + } + + updateWithAnimation(daysEl, days, previousValues.days); + updateWithAnimation(hoursEl, hours, previousValues.hours); + updateWithAnimation(minutesEl, minutes, previousValues.minutes); + updateWithAnimation(secondsEl, seconds, previousValues.seconds); - if (daysEl) daysEl.innerHTML = days; - if (hoursEl) hoursEl.innerHTML = hours; - if (minutesEl) minutesEl.innerHTML = minutes; - if (secondsEl) secondsEl.innerHTML = seconds; + previousValues = { days, hours, minutes, seconds }; if (distance < 0) { clearInterval(countdown); const countdownEl = document.getElementById("countdown"); - if (countdownEl) countdownEl.innerHTML = "Conference Started!"; + if (countdownEl) { + countdownEl.innerHTML = '
Conference Started! 🎉
'; + } } -}, 1000); +} + +// Initial update +updateCountdown(); + +// Update every second +const countdown = setInterval(updateCountdown, 1000); diff --git a/static/images/media-partners/dev-events.png b/static/images/media-partners/dev-events.png new file mode 100644 index 0000000..4b9f2bb Binary files /dev/null and b/static/images/media-partners/dev-events.png differ diff --git a/static/images/partners/platinum/sourcemeta.svg b/static/images/partners/platinum/sourcemeta.svg new file mode 100644 index 0000000..7be48b1 --- /dev/null +++ b/static/images/partners/platinum/sourcemeta.svg @@ -0,0 +1,44 @@ + + + Artboard + + + + Sourcemeta + + + \ No newline at end of file diff --git a/static/images/partners/platinum/txt.svg b/static/images/partners/platinum/txt.svg new file mode 100644 index 0000000..fdb8acf --- /dev/null +++ b/static/images/partners/platinum/txt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/theme.css b/static/theme.css index 8e2f45d..214234e 100644 --- a/static/theme.css +++ b/static/theme.css @@ -127,109 +127,7 @@ body { gap: 0rem; } } -.countdown-container { - background: white; - border-radius: 1rem; - padding: 0.8rem; - margin: 0.5rem auto; - max-width: 600px; - width: calc(100% - 2rem); - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); - text-align: center; - color: var(--primary); -} - -.countdown-header h4 { - font-size: 1.3rem; - font-weight: 600; - margin-bottom: 0.3rem; - color: var(--primary); -} - -.countdown-header h5 { - font-size: 1.1rem; - color: var(--primary); - margin: 0; -} - -.countdown-timer { - display: flex; - justify-content: center; - gap: 1rem; - margin: 0.8rem 0; - flex-wrap: wrap; - max-width: 100%; -} - -.countdown-item { - text-align: center; - background: rgba(255, 255, 255, 0.1); - border-radius: 0.5rem; - padding: 0.4rem; - min-width: 70px; - flex: 1; - max-width: 80px; - height: 55px; - display: flex; - flex-direction: column; - justify-content: center; -} - -.countdown-item span { - display: block; - font-size: 1.4rem; - font-weight: bold; - color: var(--primary); - line-height: 1; -} - -.countdown-item label { - display: block; - font-size: 0.7rem; - text-transform: uppercase; - margin-top: 0.2rem; - opacity: 0.8; -} -/* iPhone 14 Pro specific */ -@media (max-width: 430px) { - .countdown-container { - margin: 0.3rem auto; - padding: 0.6rem; - width: calc(100% - 1rem); - } - - .countdown-header h4 { - font-size: 1.2rem; - margin-bottom: 0.2rem; - } - - .countdown-header h5 { - font-size: 1rem; - } - - .countdown-timer { - gap: 0.5rem; - margin: 0.6rem 0; - justify-content: space-between; - } - - .countdown-item { - min-width: 60px; - max-width: 70px; - padding: 0.3rem 0.2rem; - height: 50px; - flex: 1; - } - - .countdown-item span { - font-size: 1.2rem; - } - - .countdown-item label { - font-size: 0.65rem; - } -} section.location { margin: 2rem 0;