You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
2.1 KiB
Plaintext

---
import Base from './Base.astro'
const years = await Astro.glob('../pages/archivio/*/index.md')
const currentYear = years
.map(module => module.file.split('/').at(-2))
.toSorted()
.at(-1)
const {
file,
frontmatter: { title, tutors: tutorEntries },
} = Astro.props
const selectedCourseLabel = file.split('/').at(-1)
const allCourses = await Astro.glob(`../pages/archivio/*/*`)
const courses = allCourses.filter(module => module.file.includes(file.split('/').at(-2)))
function upperFirst(string) {
return string.charAt(0).toUpperCase() + string.slice(1)
}
---
<Base title={title} courses={courses} selectedCourseLabel={selectedCourseLabel}>
<h1>{title}</h1>
{
tutorEntries && (
<div class="tutor-entries">
<h2>Tutor</h2>
{tutorEntries.map(({ name, image, contacts }) => (
<div class="tutor">
<h3 class="name">{name ?? '???'}</h3>
<img class="image" src={image ? image : '/tutors/placeholder-person.svg'} alt={name} />
{contacts && (
<ul class="contacts">
{contacts.map(({ type, value }) => (
<li>
<strong>{upperFirst(type)}</strong>:{' '}
{type === 'email' ? (
<a href={`mailto:${value}`}>{value}</a>
) : type === 'telegram' ? (
<a href={`https://t.me/${value}`}>{value}</a>
) : type === 'website' ? (
<a href={value}>{value}</a>
) : (
value
)}
</li>
))}
</ul>
)}
</div>
))}
</div>
)
}
<slot />
</Base>