Skip to content

Commit c94bc6a

Browse files
committed
added team page
1 parent cd7c308 commit c94bc6a

7 files changed

Lines changed: 70 additions & 0 deletions

File tree

front/src/app/equipo/page.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Metadata } from "next";
2+
import { EquipoPod } from "@/pods/equipo";
23

34
export const metadata: Metadata = {
45
title: "Equipo - InfoEmbalses",
@@ -11,6 +12,7 @@ const EquipoPage = () => {
1112
<img src="/images/logo.svg" alt="InfoEmbalses logo" className="w-64" />
1213
<p className="text-xl font-semibold">InfoEmbalses Versión Beta</p>
1314
<h1 className="text-3xl font-bold">Equipo de desarrollo</h1>
15+
<EquipoPod />
1416
</div>
1517
</div>
1618
);
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import type { Media } from "@content-island/api-client";
2+
3+
export interface Developer {
4+
id: string;
5+
language: "es";
6+
lastUpdate: string;
7+
fullname: string;
8+
picture: Media;
9+
linkedin: string;
10+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import "server-only";
2+
import { unstable_cache } from "next/cache";
3+
import type { Developer } from "./equipo.api-model";
4+
import { contentIslandClient } from "@/lib";
5+
6+
export const getDeveloperListCached = unstable_cache(
7+
async (): Promise<Developer[]> => {
8+
try {
9+
return await contentIslandClient.getContentList<Developer>({
10+
contentType: "developer",
11+
language: "es",
12+
});
13+
} catch (error) {
14+
console.warn("Warning: developer list not available");
15+
return [];
16+
}
17+
},
18+
["developer-list"],
19+
{ revalidate: 60 }
20+
);

front/src/pods/equipo/api/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from "./equipo.api";
2+
export type { Developer } from "./equipo.api-model";
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import type { Developer } from "./api";
2+
3+
interface Props {
4+
developers: Developer[];
5+
}
6+
7+
export const EquipoComponent: React.FC<Props> = ({ developers }) => {
8+
return (
9+
<div className="flex flex-wrap justify-center gap-8">
10+
{developers.map((dev) => (
11+
<a
12+
key={dev.id}
13+
href={dev.linkedin}
14+
target="_blank"
15+
rel="noopener noreferrer"
16+
className="flex flex-col items-center gap-2"
17+
>
18+
<img
19+
src={dev.picture.url}
20+
alt={dev.fullname}
21+
className="h-24 w-24 rounded-full border-2 border-accent object-cover"
22+
/>
23+
<span className="text-sm font-medium">{dev.fullname}</span>
24+
</a>
25+
))}
26+
</div>
27+
);
28+
};
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { getDeveloperListCached } from "./api";
2+
import { EquipoComponent } from "./equipo.component";
3+
4+
export const EquipoPod: React.FC = async () => {
5+
const developers = await getDeveloperListCached();
6+
return <EquipoComponent developers={developers} />;
7+
};

front/src/pods/equipo/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { EquipoPod } from "./equipo.pod";

0 commit comments

Comments
 (0)