Skip to content

Commit a1720c7

Browse files
authored
fix: update ticket URLs and improve badge text for purchase and past events pages (#174)
* fix: update ticket URLs and improve badge text for purchase and past events pages * feat: expire the super early bird ticket * Revert "feat: expire the super early bird ticket" This reverts commit b7827a7. * fix: add deadline and enable properties to CALLS_2026; include ctaNote in PageHero component
1 parent 4141af6 commit a1720c7

File tree

6 files changed

+92
-27
lines changed

6 files changed

+92
-27
lines changed

src/components/PageHero.jsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import { useEffect, useRef } from "react";
33
/**
44
* PageHero — shared hero for all inner pages.
55
* Mirrors Hero.jsx design exactly; only content differs via props.
6-
* @param {{ badge: string, title: string, titleGradient: string, subtitle: string, primaryCta: { text: string, href: string, external?: boolean }, secondaryCta?: { text: string, href: string, external?: boolean } }} props
6+
* @param {{ badge: string, title: string, titleGradient: string, subtitle: string, primaryCta: { text: string, href: string, external?: boolean }, secondaryCta?: { text: string, href: string, external?: boolean }, ctaNote?: string }} props
77
*/
8-
const PageHero = ({ badge, title, titleGradient, subtitle, primaryCta, secondaryCta }) => {
8+
const PageHero = ({ badge, title, titleGradient, subtitle, primaryCta, secondaryCta, ctaNote }) => {
99
const sectionRef = useRef(null);
1010
const hashTagList = ["#OSDIn2026", "#OSDIndia2026", "#OpenSourceDay"];
1111
useEffect(() => {
@@ -71,6 +71,12 @@ const PageHero = ({ badge, title, titleGradient, subtitle, primaryCta, secondary
7171
</a>
7272
)}
7373
</div>
74+
75+
{ctaNote && (
76+
<div class="text-gray-600 mt-6 pt-6 border-t border-gray-200 w-full">
77+
<span class="font-semibold">Deadline:</span> {ctaNote}
78+
</div>
79+
)}
7480
</div>
7581

7682
{/* Hashtag footer — mirrors Hero.jsx */}

src/config/config.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,18 @@ export const CALLS_2026 = [
8686
emoji: "🎤",
8787
color: "from-violet-500 to-purple-600",
8888
badge: "Open",
89+
deadline: "15th March 2026",
90+
enable: true,
8991
},
9092
{
9193
title: "Call for Volunteers",
9294
description: "Help us make OSD 2026 an unforgettable experience for everyone.",
9395
href: "/cfv",
9496
emoji: "🙌",
9597
color: "from-emerald-500 to-green-600",
96-
badge: "Open",
98+
badge: "CLOSED",
99+
deadline: "CLOSED",
100+
enable: false,
97101
},
98102
{
99103
title: "Call for Sponsors",
@@ -102,6 +106,8 @@ export const CALLS_2026 = [
102106
emoji: "🤝",
103107
color: "from-amber-500 to-orange-600",
104108
badge: "Open",
109+
deadline: "31st March 2026",
110+
enable: true,
105111
},
106112
{
107113
title: "Call for Community Partners",
@@ -110,6 +116,8 @@ export const CALLS_2026 = [
110116
emoji: "🌐",
111117
color: "from-sky-500 to-blue-600",
112118
badge: "Open",
119+
deadline: "31st March 2026",
120+
enable: true,
113121
},
114122
{
115123
title: "Call for Evangelists",
@@ -118,6 +126,8 @@ export const CALLS_2026 = [
118126
emoji: "📣",
119127
color: "from-pink-500 to-rose-600",
120128
badge: "Open",
129+
deadline: "21st March 2026",
130+
enable: true,
121131
},
122132
];
123133

@@ -373,7 +383,7 @@ export const TICKETS = [
373383
text: "Coming Soon",
374384
classes: "text-white bg-green-500",
375385
},
376-
konfhubUrl: "",
386+
konfhubUrl: "/purchase",
377387
linkText: "Coming Soon",
378388
},
379389
{
@@ -388,7 +398,7 @@ export const TICKETS = [
388398
text: "Most Popular",
389399
classes: "text-white bg-green-600",
390400
},
391-
konfhubUrl: "",
401+
konfhubUrl: "/purchase",
392402
linkText: "Coming Soon",
393403
},
394404
{
@@ -474,7 +484,7 @@ export const TICKETS = [
474484
"Appreciation Memento from OSD",
475485
],
476486
popular: false,
477-
available: false,
487+
available: true,
478488
konfhubUrl: "mailto:opensourceweekend@gmail.com",
479489
linkText: "Contact Organizers",
480490
extra:
@@ -501,7 +511,7 @@ export const TICKETS = [
501511
"Appreciation Memento from OSD",
502512
],
503513
popular: false,
504-
available: false,
514+
available: true,
505515
konfhubUrl: "mailto:opensourceweekend@gmail.com",
506516
linkText: "Contact Organizers",
507517
extra:

src/pages/index.astro

Lines changed: 66 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -71,24 +71,55 @@ const allSpeakers = ((speakersData as any)?.speakers?.[0]?.ourSpeakers ?? [])
7171

7272
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
7373
{CALLS_2026.map((call) => (
74-
<a
75-
href={call.href}
76-
target="_blank"
77-
rel="noopener noreferrer"
78-
class="group border border-gray-100 bg-white hover:border-green-200 hover:shadow-lg p-7 rounded-2xl transition-all duration-300 flex flex-col"
79-
>
80-
<div class="w-11 h-11 bg-green-50 border border-green-100 rounded-xl mb-5 flex items-center justify-center text-xl group-hover:bg-green-500 group-hover:scale-110 transition-all duration-300">
81-
{call.emoji}
74+
<div class="group border border-gray-100 bg-white hover:border-green-200 hover:shadow-lg p-7 rounded-2xl transition-all duration-300 flex flex-col">
75+
<!-- Header: Icon + Badge -->
76+
<div class="flex items-center justify-between mb-6">
77+
<div class="w-11 h-11 bg-green-50 border border-green-100 rounded-xl flex items-center justify-center text-xl group-hover:bg-green-500 group-hover:text-white group-hover:scale-110 transition-all duration-300">
78+
{call.emoji}
79+
</div>
80+
<span class={`text-xs px-2.5 py-1 rounded-full font-bold uppercase tracking-wide border ${
81+
call.badge === "Open"
82+
? "bg-green-50 text-green-700 border-green-100"
83+
: "bg-red-50 text-red-700 border-red-100"
84+
}`}>
85+
{call.badge}
86+
</span>
87+
</div>
88+
89+
<!-- Title -->
90+
<h3 class="text-lg font-bold text-gray-900 mb-3">{call.title}</h3>
91+
92+
<!-- Description -->
93+
<p class="text-gray-500 text-sm leading-relaxed flex-1 mb-4">{call.description}</p>
94+
95+
<!-- Deadline -->
96+
<div class="text-sm text-gray-600 mb-6 pb-6 border-b border-gray-100">
97+
<span class="font-semibold">Deadline:</span> {call.deadline}
8298
</div>
83-
<h3 class="text-lg font-bold text-gray-900 mb-2">{call.title}</h3>
84-
<p class="text-gray-500 text-sm leading-relaxed flex-1">{call.description}</p>
85-
<div class="mt-5 flex items-center text-sm font-semibold text-green-600 group-hover:text-green-700">
99+
100+
<!-- CTA -->
101+
{
102+
call.enable ? <a
103+
href={call.href}
104+
target="_blank"
105+
rel="noopener noreferrer"
106+
class="inline-flex items-center justify-center gap-2 bg-green-500 hover:bg-green-600 text-white font-semibold py-3 px-4 rounded-lg transition-all duration-300 group-hover:shadow-md"
107+
>
86108
Apply Now
87-
<svg class="w-4 h-4 ml-1 group-hover:translate-x-1 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
109+
<svg class="w-4 h-4 group-hover:translate-x-1 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
88110
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6" />
89111
</svg>
90-
</div>
91-
</a>
112+
</a> : <button
113+
class="inline-flex items-center justify-center gap-2 bg-green-500 hover:bg-green-600 text-white font-semibold py-3 px-4 rounded-lg transition-all duration-300 group-hover:shadow-md disabled:opacity-50 disabled:cursor-not-allowed"
114+
disabled
115+
>
116+
Apply Now
117+
<svg class="w-4 h-4 group-hover:translate-x-1 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
118+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6" />
119+
</svg>
120+
</button>
121+
}
122+
</div>
92123
))}
93124
</div>
94125

@@ -178,7 +209,7 @@ const allSpeakers = ((speakersData as any)?.speakers?.[0]?.ourSpeakers ?? [])
178209
))}
179210
</div>
180211
</div>
181-
212+
182213
</div>
183214
</section>
184215

@@ -393,13 +424,32 @@ const allSpeakers = ((speakersData as any)?.speakers?.[0]?.ourSpeakers ?? [])
393424

394425
<div class="flex flex-col gap-3 mb-auto">
395426
{TICKETS.slice(0, 3).map((t) => (
396-
<div class="flex justify-between items-center p-3 bg-gray-50 rounded-xl border border-gray-100">
427+
<div class="p-3 bg-gray-50 rounded-xl border border-gray-100 flex flex-col gap-4">
428+
429+
<div class="flex justify-between items-center">
397430
<div>
398431
<div class="font-semibold text-gray-900 text-sm">{t.name}</div>
399432
<div class="text-xs text-gray-400 mt-0.5">{t.description?.slice(0, 55)}…</div>
400433
</div>
401434
<div class="font-bold text-green-700 text-sm shrink-0 ml-2">{t.price}</div>
402435
</div>
436+
{t.available ? (
437+
<a
438+
href={t.konfhubUrl}
439+
target="_blank"
440+
rel="noopener noreferrer"
441+
class={`block w-full px-6 py-2 rounded-full font-bold text-sm transition-all text-center ${t.popular ? "bg-gray-900 hover:bg-gray-800 text-white" : "border-2 border-gray-200 hover:border-gray-900 text-gray-700"}`}
442+
>
443+
{t.linkText || "Coming Soon"}
444+
</a>
445+
) : (
446+
<button
447+
class={`block w-full px-6 py-2 rounded-full font-bold text-sm transition-all ${t.popular ? "bg-gray-900 hover:bg-gray-800 text-white" : "border-2 border-gray-200 hover:border-gray-900 text-gray-700"}`}
448+
>
449+
{t.linkText || "Coming Soon"}
450+
</button>
451+
)}
452+
</div>
403453
))}
404454
</div>
405455
<a href="/tickets" class="mt-6 block text-center bg-green-500 hover:bg-green-400 text-white px-6 py-3 rounded-full font-bold text-sm transition-all glow-effect hover:scale-105">

src/pages/past-events.astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const osd2025Photos = PastEvent[0]?.images?.slice(0, 4) ?? [];
1212
<!-- Hero -->
1313
<PageHero
1414
client:load
15-
badge="5 YEARS OF OPEN SOURCE"
15+
badge="5 YEARS OF OPEN SOURCE DAY"
1616
title="OUR"
1717
titleGradient="PAST EVENTS"
1818
subtitle="From humble beginnings to India's largest open source conference — look back at the journey."

src/pages/purchase.astro

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
---
22
import Layout from "@/layouts/Layout.astro";
33
import "@/styles/2025/global.css";
4-
import { TICKETS } from "@/config/config.ts";
5-
import PageHero from "@/components/PageHero.jsx";
64
75
import { ticketsData } from "@/lib/graphql/queries/tickets.query.ts";
86
console.log(JSON.stringify(ticketsData, null, 2));
@@ -13,7 +11,7 @@ console.log(JSON.stringify(ticketsData, null, 2));
1311
<section class="py-20 px-4 bg-white">
1412
<div class="max-w-6xl mx-auto">
1513
<iframe
16-
src="https://konfhub.com/widget/open-source-day-2026?desc=true&secondaryBg=f8fafc&ticketBg=f8fafc&borderCl=f8fafc&bg=e4ffe9&fontColor=000000&ticketCl=000000&btnColor=22c55e&fontFamily=Hind&borderRadius=10&widget_type=standard&tickets=82195%2C82196%2C82197%2C82262%2C82264%2C82265&ticketId=82195"
14+
src="https://konfhub.com/widget/open-source-day-2026?desc=true&secondaryBg=f8fafc&ticketBg=f8fafc&borderCl=f8fafc&bg=e4ffe9&fontColor=000000&ticketCl=000000&btnColor=22c55e&fontFamily=Hind&borderRadius=10&widget_type=standard&tickets=82195%2C82196%2C82197%2C82262%2C82264%2C82265"
1715
id="konfhub-widget"
1816
title="Register for Open Source Day 2026"
1917
width="100%"

src/pages/speakers.astro

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ const pastSpeakerSection: ResolvedSpeakerSection | null =
4848
subtitle="Share your knowledge, your open source story, or your latest project with 600+ developers and builders."
4949
primaryCta={{ text: "Submit a Talk Proposal", href: "/cfspk", external: true }}
5050
secondaryCta={{ text: "View 2025 Speakers", href: "/2025/speakers" }}
51+
ctaNote="15th March 2026"
5152
/>
5253

5354
<!-- ═══ CURRENT SPEAKERS ══════════════════════════════════════════════════ -->

0 commit comments

Comments
 (0)