Skip to content

Commit dc7f44c

Browse files
chore: setup 2026 ticket office (#52)
* chore: setup 2026 ticket office * chore: display standard tickets waves dates * feat: add displayNewsletterRegistration to ticket data and update TicketCard component --------- Co-authored-by: Julien PONTILLO <jpontillo@klanik.com>
1 parent 7f5fd99 commit dc7f44c

5 files changed

Lines changed: 55 additions & 21 deletions

File tree

src/components/home/Hero.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import Cluster from '../ui-elements/Cluster.astro'
1616
<Cluster>
1717
<!-- <ButtonLink href="/schedule">Voir le programme</ButtonLink> -->
1818
<ButtonLink href="https://conference-hall.io/sunny-tech-2026" target="_blank">CFP</ButtonLink>
19-
<ButtonLink href="https://www.youtube.com/playlist?list=PLz7aCyCbFOu_5UbMFIJyZ_9Qsu5jZTBnU" external>
20-
Voir les replays 2025
19+
<ButtonLink href="https://www.billetweb.fr/sunny-tech-2026" target="_blank" external>
20+
Accéder à la billetterie
2121
</ButtonLink>
2222
</Cluster>
2323
</div>

src/components/home/HomeTicketsBlock.astro

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,18 @@ const { tickets } = Astro.props
1414

1515
<div id="tickets">
1616
<ContentContainer spaceBlock="4rem">
17-
<!--
1817
<h2>Acheter votre billet</h2>
1918

2019
<p style="max-width: 85ch; color: var(--text-subtle)">
2120
* Les billets donnent accès à toutes les conférences, aux pauses café, aux déjeuners et à la soirée. Les
22-
goodies sont aussi inclus mais pas les t-shirts. Lhébergement nest pas inclus dans le prix du billet.
21+
goodies sont aussi inclus mais pas les t-shirts. L'hébergement n'est pas inclus dans le prix du billet.
2322
</p>
2423

2524
<Grid space="4rem" autoLayout="fit">
2625
{tickets.map((ticket) => <TicketCard ticket={ticket} />)}
2726
</Grid>
28-
-->
29-
<h2>Billetterie</h2>
27+
28+
<!-- <h2>Billetterie</h2>
3029
<p style="max-width: 85ch; color: var(--text-subtle)">
3130
La billetterie sera ouverte prochainement. Inscrivez-vous à la newsletter pour être informé des nouvelles
3231
annonces.
@@ -35,6 +34,6 @@ const { tickets } = Astro.props
3534
href="https://1485701c.sibforms.com/serve/MUIFAMgB9ZySVOL_x0g-9wEIwg1l1jh6RrSs3xTTnw5ZInV4HRM009fe1mwczAa8HEaB4kJf-sTzkK06jO2RIaxSpuflFWayHm2y5m86PhfcDp1kLA8VYGJozdX8flk6OdewY3pf2aE7Wh54VsDoUbYGxHO_mOXmweUPXeFd3_xK6_6FLN9KTdLWRvWiJ7Ldmbx0tByLixqYWBYu"
3635
external>
3736
S'inscrire à la newsletter
38-
</ButtonLink>
37+
</ButtonLink> -->
3938
</ContentContainer>
4039
</div>

src/components/home/TicketCard.astro

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,19 @@ interface Props {
88
}
99
1010
const { ticket } = Astro.props
11-
const { name, price, url, startDate, endDate, ticketsCount, available, soldOut, highlighted, message } = ticket.data
11+
const {
12+
name,
13+
price,
14+
url,
15+
startDate,
16+
endDate,
17+
ticketsCount,
18+
available,
19+
soldOut,
20+
highlighted,
21+
message,
22+
displayNewsletterRegistration,
23+
} = ticket.data
1224
---
1325

1426
<article
@@ -42,7 +54,11 @@ const { name, price, url, startDate, endDate, ticketsCount, available, soldOut,
4254
!!message && (
4355
<p class="text-center">
4456
<br />
45-
<span class="ticket-card-message">{message}</span>
57+
<span class="ticket-card-message">
58+
{message.split('\n').map((line) => (
59+
<span style="display: block;">{line}</span>
60+
))}
61+
</span>
4662
</p>
4763
)
4864
}
@@ -54,8 +70,24 @@ const { name, price, url, startDate, endDate, ticketsCount, available, soldOut,
5470
</ButtonLink>
5571
)
5672
}
57-
{!available && !soldOut && <span class="ticket-card-unavailable">Pas disponible</span>}
73+
{
74+
!available && !soldOut && !displayNewsletterRegistration && (
75+
<span class="ticket-card-unavailable">Pas disponible</span>
76+
)
77+
}
5878
{soldOut && <span class="ticket-card-sold-out">Épuisé</span>}
79+
{
80+
displayNewsletterRegistration && (
81+
<p class="text-center">
82+
<ButtonLink
83+
href="https://1485701c.sibforms.com/serve/MUIFAMgB9ZySVOL_x0g-9wEIwg1l1jh6RrSs3xTTnw5ZInV4HRM009fe1mwczAa8HEaB4kJf-sTzkK06jO2RIaxSpuflFWayHm2y5m86PhfcDp1kLA8VYGJozdX8flk6OdewY3pf2aE7Wh54VsDoUbYGxHO_mOXmweUPXeFd3_xK6_6FLN9KTdLWRvWiJ7Ldmbx0tByLixqYWBYu"
84+
target="_blank"
85+
external>
86+
S'inscrire à la newsletter
87+
</ButtonLink>
88+
</p>
89+
)
90+
}
5991
</div>
6092
</Stack>
6193
</article>

src/content.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ const ticketsCollection = defineCollection({
2828
soldOut: z.boolean(),
2929
highlighted: z.boolean(),
3030
message: z.string().optional(),
31+
displayNewsletterRegistration: z.boolean().optional(),
3132
}),
3233
})
3334

src/data/tickets/tickets.json

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
11
[
22
{
33
"id": "student",
4-
"name": "Étudiant",
5-
"price": 40,
6-
"url": "http://billetweb.fr/sunny-tech-2025",
4+
"name": "Étudiant et demandeur d'emploi",
5+
"price": 44,
6+
"url": "https://www.billetweb.fr/sunny-tech-2026",
77
"ticketsCount": 18,
8-
"available": true,
9-
"soldOut": true,
10-
"highlighted": false
8+
"available": false,
9+
"soldOut": false,
10+
"highlighted": false,
11+
"message": "La billetterie ouvrira bientôt, inscrivez-vous à la newsletter pour en être les premiers informés !"
1112
},
1213
{
1314
"id": "default2",
1415
"name": "Standard",
15-
"price": 100,
16-
"url": "http://billetweb.fr/sunny-tech-2025",
17-
"ticketsCount": 300,
18-
"available": true,
16+
"price": 110,
17+
"url": "https://www.billetweb.fr/sunny-tech-2026",
18+
"ticketsCount": 280,
19+
"available": false,
1920
"soldOut": false,
2021
"highlighted": false,
21-
"message": "Billetterie soldout, mais inscrivez-vous à la liste d'attente, on sait jamais :)"
22+
"message": "La billetterie ouvrira bientôt, inscrivez-vous à la newsletter pour en être les premiers informés !\n100 places disponibles pour la Vague 1 le mardi 27 janvier à 10h\n100 places disponibles pour la Vague 2 le mercredi 15 avril à 20h30\n80 places disponibles pour la Vague 3 le samedi 25 avril à 14h",
23+
"displayNewsletterRegistration": true
2224
}
2325
]

0 commit comments

Comments
 (0)