Skip to content

Commit e9b6074

Browse files
authored
Merge pull request #114 from beamkenya/dev
updated 2023 pre event site
2 parents 1420ec9 + b0fd94c commit e9b6074

File tree

10 files changed

+732
-6
lines changed

10 files changed

+732
-6
lines changed

api/sessions-2022.json

Lines changed: 309 additions & 0 deletions
Large diffs are not rendered by default.

components/home/Partners.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export default {
2222
setup () {
2323
const partners = [
2424
{ logo: '/images/partners/podii.png', link: 'https://podiihq.com/' },
25-
{ logo: '/images/partners/erlef.png', link: 'http://erlef.org/' },
25+
// { logo: '/images/partners/erlef.png', link: 'http://erlef.org/' },
2626
]
2727
2828
return {
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<template>
2+
<div>
3+
<section id="why-attend" class="d-container py-3 md:py-6">
4+
<div class="row py-4 md:py-10 items-center">
5+
<div class="w-full md:w-1/2 flex flex-col justify-center md:justify-start">
6+
<shared-title :underlined="false">
7+
ElixirConfAfr Partners
8+
</shared-title>
9+
<p>Who make it happen</p>
10+
</div>
11+
<div class="flex flex-row justify-center md:justify-start items-center">
12+
<a v-for="(p, i) in partners" :key="i" :href="p.link" target="_blank" rel="noopener noreferrer"><img
13+
:src="p.logo"
14+
:alt="p.link"
15+
class="w-20 md:w-40 space-x-4 px-0 md:px-6 py-6 md:py-0"
16+
></a>
17+
</div>
18+
</div>
19+
</section>
20+
</div>
21+
</template>
22+
23+
<script>
24+
export default {
25+
name: 'PastPartners',
26+
setup () {
27+
const partners = [
28+
{ logo: '/images/partners/podii.png', link: 'https://podiihq.com/' },
29+
{ logo: '/images/partners/erlef.png', link: 'http://erlef.org/' },
30+
]
31+
32+
return {
33+
partners,
34+
}
35+
},
36+
}
37+
</script>
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<template>
2+
<div>
3+
<section id="sponsor" class="d-container py-4 md:py-10">
4+
<div class="flex justify-center">
5+
<shared-title>ElixirConfAfr Sponsors</shared-title>
6+
</div>
7+
<div v-if="config.isEventLive">
8+
<div class="row flex-col items-center">
9+
<h5 class="title-2-secondary py-3 md:py-5">
10+
Signature
11+
</h5>
12+
<div class="flex flex-row justify-center md:justify-start items-center">
13+
<a v-for="(p, i) in signature" :key="i" :href="p.link" target="_blank" rel="noopener noreferrer"><img :src="p.logo" :alt="p.link" class="w-36 md:w-72 space-x-4 px-0 md:px-6 py-6 md:py-0"></a>
14+
</div>
15+
</div>
16+
</div>
17+
<div v-else class="text-center">
18+
<p class="font-medium">
19+
Bring you logo here, sponsor Elixir Conf Africa
20+
</p>
21+
</div>
22+
23+
<div class="flex justify-center pt-6 md:pt-12 mb-5 md:mb-0">
24+
<a class="btn-accent" href="mailto:jambo@elixirconf.africa">Become A Sponsor</a>
25+
</div>
26+
</section>
27+
</div>
28+
</template>
29+
30+
<script>
31+
import { useRuntimeConfig } from 'nuxt/app'
32+
33+
export default {
34+
name: 'PastSponsors',
35+
setup () {
36+
const config = useRuntimeConfig()
37+
38+
const signature = [
39+
{ logo: '/images/partners/podii.png', link: 'https://podiihq.com/' },
40+
]
41+
42+
return {
43+
signature,
44+
config,
45+
}
46+
},
47+
}
48+
</script>

layouts/components/TopNav.vue

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<nav :class="['w-full py-3 md:py-3 fixed w-full z-10 top-0', changeColor ? 'bg-transparent' : 'bg-white dark:bg-dark border-b border-b-gray dark:border-0']">
2+
<nav :class="['w-full py-3 md:py-3 fixed z-10 top-0', changeColor ? 'bg-transparent' : 'bg-white dark:bg-dark border-b border-b-gray dark:border-0']">
33
<div class="d-container flex items-center justify-between flex-wrap">
44
<div class="flex items-center flex-shrink-0 text-white dark:text-secondary-dark-text mr-6">
55
<router-link to="/">
@@ -22,7 +22,7 @@
2222

2323
<div
2424
id="nav-content"
25-
:class="['w-full flex-grow lg:flex lg:items-center lg:w-auto lg:block pt-2 lg:pt-0', navVisible ? 'dark:bg-secondary-dark pb-2' : 'hidden']"
25+
:class="['w-full flex-grow lg:flex lg:items-center lg:w-auto lg:block pt-2 lg:pt-0', navVisible ? 'bg-white dark:bg-secondary-dark pb-2' : 'hidden']"
2626
>
2727
<div class="w-full ld:w-8/12">
2828
<ul :class="['list-reset flex-1 lg:flex justify-start lg:justify-center items-center', defaultLayout || !changeColor ? 'text-primary dark:text-primary-dark' : 'text-white dark:text-secondary-dark-text']">
@@ -46,10 +46,20 @@
4646
<i class="fa fa-credit-card" /> Sponsors
4747
</router-link>
4848
</li>
49+
<div class="dropdown dropdown-bottom">
50+
<label tabindex="0" class="px-4"><i class="fa fa-calendar" /> Past Events <i class="fa fa-caret-down" /></label>
51+
<ul tabindex="0" class="dropdown-content menu bg-white dark:bg-dark shadow rounded-lg w-52 mt-1">
52+
<li>
53+
<router-link class="inline-block no-underline py-2 px-4 text-px-13 nav-link" to="/past-events/2022">
54+
Elixirconf 2022
55+
</router-link>
56+
</li>
57+
</ul>
58+
</div>
4959
</ul>
5060
</div>
5161

52-
<div :class="['w-full lg:w-4/12 flex-grow flex justify-start lg:justify-end', navVisible ? 'px-2' : '']">
62+
<div :class="['w-full lg:w-4/12 flex-grow flex justify-start lg:justify-end', navVisible ? 'px-2 mt-2 md:mt-0' : '']">
5363
<a :class="defaultLayout || !changeColor ? 'btn-primary' : 'btn-secondary'" href="https://t.co/YpZdlgxwG1" target="_blank" rel="noreferrer noopener" disabled>Buy Ticket</a>
5464
</div>
5565
</div>

layouts/routes.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<template>
2+
<nuxt />
3+
</template>

pages/index.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<count-days />
2424
<div class="space-x-3 mt-5 md:mt-10 flex justify-center md:justify-start">
2525
<a href="https://t.co/YpZdlgxwG1" target="_blank" rel="noopener noreferrer" class="btn-secondary">Buy Ticket</a>
26-
<a class="btn-accent" href="https://sessionize.com/elixir-conf-africa-2023" target="_blank" rel="noreferrer noopener">Call For Speakers</a>
26+
<!-- <a class="btn-accent" href="https://sessionize.com/elixir-conf-africa-2023" target="_blank" rel="noreferrer noopener">Call For Speakers</a> -->
2727
</div>
2828
</div>
2929
</div>
@@ -80,6 +80,6 @@
8080
</div>
8181
</section>
8282
</div>
83-
<home-sponsors />
83+
<!-- <home-sponsors /> -->
8484
</div>
8585
</template>

pages/past-events/2022.vue

Lines changed: 222 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,222 @@
1+
<template>
2+
<div>
3+
<div class="d-container">
4+
<shared-banner>2022 ElixirConfAfr</shared-banner>
5+
<div class="w-full flex flex-wrap mt-2 md:mt-4">
6+
<div v-if="!pending" class="w-full container mx-auto flex flex-wrap px-0 md:px-12 py-4">
7+
<div
8+
class="flex flex-row lg:flex-col w-full lg:w-1/12 h-auto lg:h-64 bor border-r-0 lg:border-r border-primary dark:border-primary-dark space-y-0 lg:space-y-6 space-x-6 lg:space-x-0 items-center lg:items-start justify-center lg:justify-start py-2 lg:py-0 sticky nav-bg nav-side z-30"
9+
>
10+
<div
11+
v-for="(days, $index, $key) in schedule"
12+
:key="$key"
13+
:class="['w-4/12 px-3 py-1 lg:w-full cursor-pointer rounded-tl-lg rounded-bl-lg rounded-r-lg lg:rounded-r-none', currentTab === $key ? 'bg-primary dark:bg-primary-dark' : 'border border-r-1 lg:border-r-0 border-primary dark:border-primary-dark']"
14+
@click.prevent="showTab($key)"
15+
>
16+
<h4
17+
:class="['text-px-16-slab', currentTab === $key ? 'text-white dark:text-secondary-dark-text' : 'text-primary dark:text-primary-dark']"
18+
>
19+
{{ $timeDay($index) }} <small
20+
:class="['text-px-13 capitalize', currentTab === $key ? 'text-white dark:text-secondary-dark-text' : 'text-primary dark:text-primary-dark']"
21+
>Day
22+
{{ $key + 1 }}</small>
23+
</h4>
24+
</div>
25+
</div>
26+
<div class="w-full lg:w-11/12 lg:min-h-[300px] mt-10 md:mt-0">
27+
<div v-for="(days, $index, $key) in schedule" :id="$index" :key="$key">
28+
<Transition
29+
name="fade"
30+
enter-active-class="transition duration-300 ease-out transform"
31+
enter-class="-translate-y-3 scale-95 opacity-0"
32+
enter-to-class="translate-y-0 scale-100 opacity-100"
33+
leave-active-class="transition duration-150 ease-in transform"
34+
leave-class="translate-y-0 opacity-100"
35+
leave-to-class="-translate-y-3 opacity-0"
36+
>
37+
<div v-if="currentTab === $key" class="flex-wrap w-full flex space-y-6 mb-2 lg:mb-10">
38+
<div v-if="days.length > 0 && config.isEventLive">
39+
<div
40+
v-for="(session, $ind) in days"
41+
:key="$ind"
42+
class="flex w-full px-0 lg:px-2 mb-8 lg:mb-10"
43+
>
44+
<div
45+
:class="['w-2/12 flex items-center justify-center text-right hidden lg:grid', session.is_serviceSession ? 'h-24' : 'h-44']"
46+
>
47+
<h3 class="text-px-14-slab text-primary dark:text-primary-dark uppercase">
48+
{{ $time(session.start_date_time) }} <br> {{
49+
$timeAm(session.start_date_time) }}
50+
</h3>
51+
</div>
52+
<div class="w-full lg:w-10/12 flex rounded-tr-lg rounded-br-lg">
53+
<nuxt-link
54+
v-if="!session.is_serviceSession"
55+
:to="'/sessions/' + session.slug"
56+
class="h-20 w-20 lg:h-44 lg:w-44 shadow-lg flex-none bg-cover rounded-tl rounded-bl text-center overflow-hidden"
57+
>
58+
<div v-if="session.speakers.length === 1">
59+
<img
60+
v-for="(speaker, $i) in session.speakers"
61+
:key="$i"
62+
:src="speaker.avatar"
63+
:alt="speaker.name"
64+
:title="speaker.name"
65+
>
66+
</div>
67+
<div v-else>
68+
<client-only>
69+
<carousel
70+
:per-page="1"
71+
:nav="false"
72+
wrap-around
73+
pause-autoplay-on-hover
74+
:loop="true"
75+
:pagination-enabled="true"
76+
:transition="500"
77+
:autoplay="2000"
78+
:mouse-drag="false"
79+
>
80+
<slide v-for="(speaker, $i) in session.speakers" :key="$i">
81+
<img
82+
:src="speaker.avatar"
83+
:alt="speaker.name"
84+
:title="speaker.name"
85+
>
86+
</slide>
87+
</carousel>
88+
</client-only>
89+
</div>
90+
</nuxt-link>
91+
<div
92+
v-else
93+
class="h-12 w-20 lg:h-28 lg:w-44 flex-none bg-cover rounded-tl rounded-bl text-center overflow-hidden"
94+
style="background-image: url('/images/speakers/arrive.png')"
95+
:title="session.title"
96+
/>
97+
<div
98+
:class="['h-auto w-full shadow-lg rounded-tr-lg bg-white dark:bg-dark rounded-br-lg px-4 flex flex-col justify-between', session.is_serviceSession ? 'lg:h-28 py-2' : 'lg:h-44 py-1']"
99+
>
100+
<div class="flex flex-wrap items-start">
101+
<div class="md:w-12/12">
102+
<nuxt-link
103+
v-if="!session.is_serviceSession"
104+
:to="'/sessions/' + session.slug"
105+
>
106+
<div
107+
class="text-xl text-primary dark:text-primary-dark mb-2"
108+
>
109+
{{ session.title }}
110+
</div>
111+
<div
112+
class="text-base text-dark-text dark:text-dark-text-dark"
113+
>
114+
{{ $truncateString(session.description, 100) }}
115+
</div>
116+
</nuxt-link>
117+
<div v-else>
118+
<div
119+
class="text-xl text-primary dark:text-primary-dark mb-2"
120+
>
121+
{{ session.title }}
122+
</div>
123+
<div
124+
class="text-base text-dark-text dark:text-dark-text-dark"
125+
>
126+
{{ $truncateString(session.description, 100) }}
127+
</div>
128+
</div>
129+
<div
130+
class="text-xs text-dark-text dark:text-dark-text-dark uppercase mt-2"
131+
>
132+
{{ $hour(session.start_date_time) }} - {{
133+
$hour(session.end_date_time) }}
134+
<!-- | <span v-for="(room, $r) in session.rooms" :key="$r">{{ room.title }}<span v-if="$r+1 < session.rooms.length">, </span> </span>-->
135+
</div>
136+
<div
137+
v-if="!session.is_serviceSession"
138+
class="text-sm text-secondary dark:text-primary-dark pt-3"
139+
>
140+
<i class="fa fa-user pr-1" /> <span
141+
v-for="(speaker, $s) in session.speakers"
142+
:key="$s"
143+
><a
144+
:href="speaker.twitter"
145+
>{{ speaker.name }}</a><span
146+
v-if="$s + 1 < session.speakers.length"
147+
>, </span>
148+
</span>
149+
</div>
150+
</div>
151+
<!-- <div class="w-2/12 flex items-center justify-center">-->
152+
<!-- <star-session v-if="!session.is_serviceSession" :session-id="session.id" :is-bookmarked="session.is_bookmarked" :session-slug="session.slug" />-->
153+
<!-- </div>-->
154+
</div>
155+
</div>
156+
</div>
157+
</div>
158+
</div>
159+
<no-session v-else :is-event-live="config.isEventLive" />
160+
</div>
161+
</Transition>
162+
</div>
163+
</div>
164+
</div>
165+
<sessions-skeleton v-else />
166+
</div>
167+
</div>
168+
<hr>
169+
<PastSponsors />
170+
<hr>
171+
<PastPartners />
172+
</div>
173+
</template>
174+
175+
<script setup>
176+
import { useRuntimeConfig } from 'nuxt/app'
177+
import data from '../../api/sessions-2022.json'
178+
import SessionsSkeleton from '../../components/session/SessionsSkeleton'
179+
import NoSession from '../../components/session/NoSession'
180+
import 'vue3-carousel/dist/carousel.css'
181+
import { PastPartners } from '~~/.nuxt/components'
182+
183+
const config = useRuntimeConfig()
184+
185+
const currentTab = ref(0)
186+
const pending = ref(true)
187+
188+
const showTab = (id) => {
189+
currentTab.value = id
190+
}
191+
192+
const schedule = data.data
193+
onMounted(() => {
194+
setTimeout(() => {
195+
pending.value = false
196+
}, 100)
197+
})
198+
</script>
199+
200+
<style lang="scss" scoped>
201+
.all-sessions {
202+
animation: 1s appear;
203+
margin: auto;
204+
}
205+
206+
@keyframes appear {
207+
0% {
208+
opacity: 0;
209+
}
210+
211+
100% {
212+
opacity: 1;
213+
}
214+
}
215+
216+
.nav-side {
217+
top: 52px;
218+
219+
@media screen and (max-width: 360px) {
220+
top: 60px;
221+
}
222+
}</style>

0 commit comments

Comments
 (0)