Big bang/webgune berria (#18)

* chore: netlify deployments plugina kentzen du

* chore: Strapi berria instalatzen du

* feat: astro instalatzen du

* chore: cypress instalatzen du

* feat: back eta front konektatzen ditu

* feat: server side rendering egiten du

* chore: Strapin enterprise edition flagak kentzen ditu

* feat: euskara sartzen du

* chore: Strapi bertsioa igotzen du

* feat: preview modua sortzen du ingurune bariableen bidez

* aurreko commitarekin doa

* fix: cypress konpontzen du

* chore: Strapi bertsioa igotzen du

* feat: ekintza back-ean sortzen du

* feat: zikloa eta erakundea sortzen ditu

* feat: erakundeen kudeaketa hobetzen du

* chore: pnpm erabiltzen du

* feat: Strapi bertsioa igotzen du

* ekintza sortzen du eta zerbitzuak eguneratzen ditu

* chore: graphql erabiltzen du populazioa ekiditeko

* chore: collection erabiltzen du ekintzetarako

* chore: bertsioak igotzen ditu

* chore: Astro bertsioa igotzen du

* chore: Strapi bertsioa igotzen du

* feat: home-a hasten du

* feat: zig zag separadorea sortzen du

* feat: zig zaga doitzen du

* feat: heroa doitzen du

* feat: agenda sortzen du

* feat: agenda eta izan labazkide atalak konektatzen ditu

* feat: home-aren edukia sortzen du

* chore: app.js sartzen du WTF

* feat: header-a sortzen du

* feat: card-a hobetzen du

* feat: footer-a sortzen du

* feat: ekintzen zerrenda erakusten du

* feat: zikloaren bista sortzen du

* fix: header-aren estekak konpontzen ditu

* chore: remove unused code

* chore: components directorioa kentzen du

* chore: typescript konfigurazioa hobetzen du

* chore: views path-a sortzen du

* feat: zikloaren deskribapena erakusten du

* feat: ekintzaren bista sortzen du

* feat: zig zag marra erakusten du

* ignore: comment

* feat: hitzordua erakusten du

* feat: zikloa erakusten du

* feat: Waveko erroreak errepasatzen ditu

* feat: Wave birpasatzen du

* feat: zerrendan irudia erakusten du

* feat: karga optimizatzen du

* feat: irudien formatuak kontuan hartzen ditu

* feat: zikloan ekintza irudiak erakusten ditu

* feat: ekintza zerrenda atontzen du

* feat: header-eko estekak markatzen ditu

* feat: irudi estela erakusten du

* feat: responsive-a hobetzen du

* feat: orri basikoa sortzen du

* feat: hasiera responsive egiten du

* feat: overflow konpontzen du

* feat: bug-a uzten du LOL

* feat: irudi estela mugikorrean aktibatzen du

* feat: orri basikoa eta ekintza mugikorrean jartzen ditu

* feat: mugikor menua sortzen du

* feat: mugikor menua amaitzen du

* feat: build estatikoa sortzen du

* feat: sitemap-a sortzen du

* feat: rss feed-a sortzen du

* chore: ingurune aldagaiak sortzen ditu

* chore: public-proxy komandoa sortzen du

* feat: irudiak webp formatuan jartzen ditu

* fix: irudiak erakusten ditu ekintzen zerrendan

* feat: ekintza zerrendaren irudia animatzen du

* refactor: extract functions

* fix: animazioa konpontzen du

* feat: irudi estela hobetzen du

* chore: prerender aldagaiak kentzen ditu

* chore: SASS warning-ak kentzen ditu

* feat: ziklo eta ekintzetan H1 ezartzen du

* feat: slideshow-a sortzen du

* feat: ekintzak hitzorduan oinarrituta filtratzen ditu

* feat: hitzorduen arabera filtratzen du eta moment kentzen du

* feat: titulua aldatzen du

* feat: menua eguneratzen du

* feat: parte hartun deskribapena sortzen du

* feat: Cloudinary konfiguratzen du

* fix: cloudinary konfigurazioa konpontzen du

* feat: erositako fonteak jartzen ditu
This commit is contained in:
Aitor Urrutia
2025-08-29 19:43:56 +02:00
committed by GitHub
parent 67110a4821
commit 93fb0c9b40
325 changed files with 23452 additions and 26547 deletions

View File

@@ -0,0 +1,35 @@
import type { ImageMedia } from "./ImageMedia";
import type { Zikloa } from "./Zikloa";
export interface Ekintza {
id: string;
slug: string;
createdAt: string;
izenburua: string;
titularra: string;
deskribapena: string;
hitzordua: string;
sarrera: {
label: string;
deskribapena: string;
};
mainMedia: ImageMedia;
zikloa: Pick<Zikloa, "izena" | "slug">;
}
export type EkintzaSnippet = Pick<
Ekintza,
"id" | "izenburua" | "hitzordua" | "slug" | "mainMedia"
>;
export function getShortDate(ekintza: Pick<Ekintza, "hitzordua">): string {
const date = new Date(ekintza.hitzordua);
const day = date.getDate();
const month = date.toLocaleString("eu", { month: "short" });
return `${month} ${day}`;
}
export function getUrl(ekintza: Pick<Ekintza, "slug">): string {
return `/ekintzak/${ekintza.slug}`;
}

View File

@@ -0,0 +1,30 @@
import type { ImageMedia } from "./ImageMedia";
import type { Markdown } from "./Markdown";
export type ExternalSVG = string;
export interface Partehartzea {
ikonoa: ExternalSVG;
izenburua: string;
deskribapena: string;
email: string;
}
export interface Hasiera {
id: number;
izenburua: string;
izanLabazkide: {
izenburua: string;
deskribapena: Markdown;
url: {
label: string;
url: string;
};
};
parteHartu: {
izenburua: string;
deskribapena?: Markdown;
parteHartzea: Partehartzea[];
};
mosaikoa: ImageMedia[];
}

View File

@@ -0,0 +1,42 @@
export interface ImageMedia {
alternativeText?: string;
formats: {
thumbnail: {
url: string;
height: number;
width: number;
};
small?: {
url: string;
height: number;
width: number;
};
};
}
export interface ImageData {
alt: string;
src: string;
height: number;
width: number;
}
export function getImageData(imageMedia: ImageMedia): ImageData {
if (imageMedia.formats.small) {
return {
alt: imageMedia.alternativeText ?? "",
// react konponentean ingurune aldagaiak undefined ematen du
// TODO STRAPI_URL ingurune aldagaia erabili
src: `http://127.0.0.1:1337${imageMedia.formats.small.url}`,
width: imageMedia.formats.small.width,
height: imageMedia.formats.small.height,
};
}
return {
alt: imageMedia.alternativeText ?? "",
src: `http://127.0.0.1:1337${imageMedia.formats.thumbnail.url}`,
width: imageMedia.formats.thumbnail.width,
height: imageMedia.formats.thumbnail.height,
};
}

View File

@@ -0,0 +1 @@
export type Markdown = string;

View File

@@ -0,0 +1,14 @@
import type { Markdown } from "./Markdown";
interface ParagraphTestua {
id: string;
testua: Markdown;
}
export interface OrriBasikoa {
id: string;
izenburua: string;
slug: string;
deskribapena?: string;
edukiLibrea: ParagraphTestua[];
}

View File

@@ -0,0 +1,13 @@
import type { EkintzaSnippet } from "./Ekintza";
export interface Zikloa {
id: string;
slug: string;
izena: string;
deskribapena?: string;
ekintzak: EkintzaSnippet[];
}
export function getUrl(zikloa: Pick<Zikloa, "slug">): string {
return `/zikloak/${zikloa.slug}`;
}