feat(route): ✨ use new member card list
This commit is contained in:
parent
708dfe1b71
commit
5749ef8e62
|
@ -3,10 +3,10 @@ import { AutoGrid } from ':components/AutoGrid.tsx'
|
||||||
import { CohabitInfoTable } from ':components/CohabitInfoTable.tsx'
|
import { CohabitInfoTable } from ':components/CohabitInfoTable.tsx'
|
||||||
import { Heros } from ':components/Heros.tsx'
|
import { Heros } from ':components/Heros.tsx'
|
||||||
import { MachineCard, machineMock } from ':components/MachineCard.tsx'
|
import { MachineCard, machineMock } from ':components/MachineCard.tsx'
|
||||||
import { MemberCard, memberMock } from ':components/MemberCard.tsx'
|
|
||||||
import { ProjectCard, projectMock } from ':components/ProjectCard.tsx'
|
import { ProjectCard, projectMock } from ':components/ProjectCard.tsx'
|
||||||
import { SponsorCards } from ':components/SponsorCards.tsx'
|
import { SponsorCards } from ':components/SponsorCards.tsx'
|
||||||
import BlogCardList from ':islands/BlogCardList.tsx'
|
import BlogCardList from ':islands/BlogCardList.tsx'
|
||||||
|
import MemberCardList from ':islands/MemberCardList.tsx'
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home() {
|
||||||
return (
|
return (
|
||||||
|
@ -18,10 +18,12 @@ export default function Home() {
|
||||||
<section id='first-section'>
|
<section id='first-section'>
|
||||||
<h2>Nos actus</h2>
|
<h2>Nos actus</h2>
|
||||||
<AutoGrid columnWidth='15rem' style={{ alignItems: 'center' }}>
|
<AutoGrid columnWidth='15rem' style={{ alignItems: 'center' }}>
|
||||||
<>
|
<BlogCardList
|
||||||
<BlogCardList limit={4} usePlaceholder={true} useObserver={true} />
|
limit={4}
|
||||||
|
usePlaceholder={true}
|
||||||
|
useObserver={true}
|
||||||
|
/>
|
||||||
<a href='/blog' class='cta'>Voir plus</a>
|
<a href='/blog' class='cta'>Voir plus</a>
|
||||||
</>
|
|
||||||
</AutoGrid>
|
</AutoGrid>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
|
@ -50,10 +52,12 @@ export default function Home() {
|
||||||
<section>
|
<section>
|
||||||
<h2>Nos membres</h2>
|
<h2>Nos membres</h2>
|
||||||
<AutoGrid columnWidth='15rem' style={{ alignItems: 'center' }}>
|
<AutoGrid columnWidth='15rem' style={{ alignItems: 'center' }}>
|
||||||
<>
|
<MemberCardList
|
||||||
{memberMock.slice(0, 4).map(MemberCard)}
|
limit={4}
|
||||||
|
usePlaceholder={true}
|
||||||
|
useObserver={true}
|
||||||
|
/>
|
||||||
<a href='/membres' class='cta'>Nous découvrir</a>
|
<a href='/membres' class='cta'>Nous découvrir</a>
|
||||||
</>
|
|
||||||
</AutoGrid>
|
</AutoGrid>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
|
|
|
@ -1,31 +1,19 @@
|
||||||
import { PageProps } from '$fresh/server.ts'
|
import { PageProps } from '$fresh/server.ts'
|
||||||
import { Markdown } from ':components/Markdown.tsx'
|
import { Markdown } from ':components/Markdown.tsx'
|
||||||
import { MemberCard, memberMock } from ':components/MemberCard.tsx'
|
import { MemberCard } from ':components/MemberCard.tsx'
|
||||||
|
import { db } from ':src/db/mod.ts'
|
||||||
|
import { fetchCarnet, userToMemberCardProps } from ':src/members/mod.ts'
|
||||||
|
|
||||||
const db = [
|
export default async function Member(_: Request, { params, url }: PageProps) {
|
||||||
'julien.oculi',
|
const uuid = params.id as ReturnType<Crypto['randomUUID']>
|
||||||
]
|
const user = await db.ressource.user.get({ uuid }).catch(() => undefined)
|
||||||
|
|
||||||
async function getCarnet(user: string): Promise<string> {
|
if (!user) {
|
||||||
try {
|
|
||||||
const response = await fetch(
|
|
||||||
`https://git.cohabit.fr/${user}/.carnet/raw/branch/main/index.md`,
|
|
||||||
)
|
|
||||||
return response.text()
|
|
||||||
} catch (error) {
|
|
||||||
return 'Carnet introuvable\n```js\nString(error)\n```'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default async function Member(_: Request, { params }: PageProps) {
|
|
||||||
const id = Number(params.id)
|
|
||||||
const Member = memberMock.at(id)
|
|
||||||
|
|
||||||
if (!Member) {
|
|
||||||
return <h3>Membre inconnu, peut être serez vous le prochain</h3>
|
return <h3>Membre inconnu, peut être serez vous le prochain</h3>
|
||||||
}
|
}
|
||||||
|
|
||||||
const carnet = await getCarnet(db.at(id)!)
|
const memberCardProps = await userToMemberCardProps(user)
|
||||||
|
const carnet = await fetchCarnet(user.login)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
@ -38,17 +26,27 @@ export default async function Member(_: Request, { params }: PageProps) {
|
||||||
>
|
>
|
||||||
<style>{'.markdown-body { max-width: 80dvw; }'}</style>
|
<style>{'.markdown-body { max-width: 80dvw; }'}</style>
|
||||||
<div>
|
<div>
|
||||||
{MemberCard(Member)}
|
{MemberCard(memberCardProps)}
|
||||||
<br />
|
<br />
|
||||||
<a
|
<a
|
||||||
href={`/membres/${id}/portfolio/index.html`}
|
href={`https://${
|
||||||
|
user.login.replace('.', '-')
|
||||||
|
}.portfolio.${url.hostname}`}
|
||||||
class='cta'
|
class='cta'
|
||||||
target='_blank'
|
target='_blank'
|
||||||
>
|
>
|
||||||
Portfolio
|
Portfolio
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<Markdown>{carnet}</Markdown>
|
<Markdown
|
||||||
|
options={{
|
||||||
|
baseUrl:
|
||||||
|
`https://git.cohabit.fr/${user.login}/.carnet/raw/branch/main/index.md`,
|
||||||
|
allowMath: true,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{carnet}
|
||||||
|
</Markdown>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { AutoGrid } from ':components/AutoGrid.tsx'
|
import { AutoGrid } from ':components/AutoGrid.tsx'
|
||||||
import { MemberCard, memberMock } from ':components/MemberCard.tsx'
|
import MemberCardList from ':islands/MemberCardList.tsx'
|
||||||
|
|
||||||
export default function Membres() {
|
export default function Membres() {
|
||||||
return (
|
return (
|
||||||
|
@ -8,32 +8,34 @@ export default function Membres() {
|
||||||
<section>
|
<section>
|
||||||
<h2>Permanents</h2>
|
<h2>Permanents</h2>
|
||||||
<AutoGrid columnWidth='15rem'>
|
<AutoGrid columnWidth='15rem'>
|
||||||
{memberMock.slice(0, 5).map(MemberCard)}
|
<MemberCardList
|
||||||
|
filters={[['group', 'user.admin']]}
|
||||||
|
usePlaceholder={true}
|
||||||
|
useObserver={true}
|
||||||
|
/>
|
||||||
</AutoGrid>
|
</AutoGrid>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<h2>Bénévoles</h2>
|
<h2>Bénévoles</h2>
|
||||||
<AutoGrid columnWidth='15rem'>
|
<AutoGrid columnWidth='15rem'>
|
||||||
{memberMock.slice(5, 10).map(MemberCard)}
|
<MemberCardList
|
||||||
|
filters={[['group', 'user.member']]}
|
||||||
|
usePlaceholder={true}
|
||||||
|
useObserver={true}
|
||||||
|
/>
|
||||||
</AutoGrid>
|
</AutoGrid>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<h2>Service civique</h2>
|
<h2>Service civique</h2>
|
||||||
<AutoGrid columnWidth='15rem'>
|
{/* <AutoGrid columnWidth='15rem'></AutoGrid> */}
|
||||||
{memberMock.slice(10, 15).map(MemberCard)}
|
|
||||||
</AutoGrid>
|
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<h2>Stage</h2>
|
<h2>Stage</h2>
|
||||||
<AutoGrid columnWidth='15rem'>
|
{/* <AutoGrid columnWidth='15rem'></AutoGrid> */}
|
||||||
{memberMock.slice(15, 20).map(MemberCard)}
|
|
||||||
</AutoGrid>
|
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<h2>Étudiants</h2>
|
<h2>Étudiants</h2>
|
||||||
<AutoGrid columnWidth='15rem'>
|
{/* <AutoGrid columnWidth='15rem'></AutoGrid> */}
|
||||||
{memberMock.slice(0, 5).map(MemberCard)}
|
|
||||||
</AutoGrid>
|
|
||||||
</section>
|
</section>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue