From 81d5c69fa0d0013cb81385977ad37fa233ad0b77 Mon Sep 17 00:00:00 2001 From: "Aitor C. Urrutia Aranburu" Date: Wed, 22 Oct 2025 18:17:44 +0200 Subject: [PATCH] feat: OG irudia sortzen du ekintzen datuetatik --- front/package.json | 4 +- .../fonts/sohne/soehne-dreiviertelfett.otf | Bin 0 -> 116116 bytes .../components/OgImage/OgImage.module.scss | 7 ++ front/src/components/OgImage/OgImage.tsx | 59 ++++++++++ front/src/components/OgImage/index.ts | 1 + front/src/layouts/Layout.astro | 14 ++- .../index.astro} | 0 front/src/pages/ekintzak/[ekintza]/og.png.ts | 53 +++++++++ front/src/views/ekintza/Ekintza.astro | 6 +- pnpm-lock.yaml | 109 ++++++++++++++++-- 10 files changed, 236 insertions(+), 17 deletions(-) create mode 100644 front/public/fonts/sohne/soehne-dreiviertelfett.otf create mode 100644 front/src/components/OgImage/OgImage.module.scss create mode 100644 front/src/components/OgImage/OgImage.tsx create mode 100644 front/src/components/OgImage/index.ts rename front/src/pages/ekintzak/{[ekintza].astro => [ekintza]/index.astro} (100%) create mode 100644 front/src/pages/ekintzak/[ekintza]/og.png.ts diff --git a/front/package.json b/front/package.json index 0b3d42f..7cf824b 100644 --- a/front/package.json +++ b/front/package.json @@ -22,7 +22,9 @@ "marked": "^15.0.11", "react": "^19.1.1", "react-dom": "^19.1.1", - "serve": "^14.2.4" + "satori": "^0.18.3", + "serve": "^14.2.4", + "sharp": "^0.34.4" }, "devDependencies": { "sass-embedded": "^1.90.0" diff --git a/front/public/fonts/sohne/soehne-dreiviertelfett.otf b/front/public/fonts/sohne/soehne-dreiviertelfett.otf new file mode 100644 index 0000000000000000000000000000000000000000..dccb54329f474fd8997687ad7be54f3e3ff338f0 GIT binary patch literal 116116 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 TO(ck)Zt+~}>HEx88B6~kbQpbs literal 0 HcmV?d00001 diff --git a/front/src/components/OgImage/OgImage.module.scss b/front/src/components/OgImage/OgImage.module.scss new file mode 100644 index 0000000..f2b75ef --- /dev/null +++ b/front/src/components/OgImage/OgImage.module.scss @@ -0,0 +1,7 @@ +.wrapper { + display: flex; + flex-direction: column; + + background-color: #ff3e3e; // gorria + color: #ffffff; +} diff --git a/front/src/components/OgImage/OgImage.tsx b/front/src/components/OgImage/OgImage.tsx new file mode 100644 index 0000000..9955ed2 --- /dev/null +++ b/front/src/components/OgImage/OgImage.tsx @@ -0,0 +1,59 @@ +import { type CollectionEntry } from "astro:content"; +import type { Ekintza } from "models/Ekintza"; + +import dayjs from "dayjs"; +import "dayjs/locale/eu"; + +dayjs.locale("eu"); + +export function OgImage(props: CollectionEntry<"ekintzak">) { + const ekintza: Ekintza = props as unknown as Ekintza; + + return ( +

+ ); +} diff --git a/front/src/components/OgImage/index.ts b/front/src/components/OgImage/index.ts new file mode 100644 index 0000000..3d42fb2 --- /dev/null +++ b/front/src/components/OgImage/index.ts @@ -0,0 +1 @@ +export { OgImage } from "./OgImage"; diff --git a/front/src/layouts/Layout.astro b/front/src/layouts/Layout.astro index 23a583c..aaa3b07 100644 --- a/front/src/layouts/Layout.astro +++ b/front/src/layouts/Layout.astro @@ -5,9 +5,14 @@ import "../style/vars/index.scss"; interface Props { title: string; description?: string; + ogImage?: string; } -const { title, description = "" } = Astro.props; +const { + title, + description = "", + ogImage = "https://laba.eus/og-image.jpg", +} = Astro.props; --- @@ -31,11 +36,8 @@ const { title, description = "" } = Astro.props; - - + + diff --git a/front/src/pages/ekintzak/[ekintza].astro b/front/src/pages/ekintzak/[ekintza]/index.astro similarity index 100% rename from front/src/pages/ekintzak/[ekintza].astro rename to front/src/pages/ekintzak/[ekintza]/index.astro diff --git a/front/src/pages/ekintzak/[ekintza]/og.png.ts b/front/src/pages/ekintzak/[ekintza]/og.png.ts new file mode 100644 index 0000000..61dd97e --- /dev/null +++ b/front/src/pages/ekintzak/[ekintza]/og.png.ts @@ -0,0 +1,53 @@ +import fs from "fs/promises"; +import satori from "satori"; +import sharp from "sharp"; +import { getCollection } from "astro:content"; +import type { InferGetStaticParamsType } from "astro"; +import { OgImage } from "../../../components/OgImage"; + +const posts = await getCollection("ekintzak"); +type Params = InferGetStaticParamsType; + +export async function GET({ params }: { params: Params }) { + const postEntry = posts.find((p) => p.data?.slug === params.ekintza); + if (!postEntry) { + return new Response("Post not found", { status: 404 }); + } + + const element = OgImage(postEntry.data); + const png = await PNG(element); + return new Response(png as any, { + headers: { + "Content-Type": "image/png", + }, + }); +} + +export async function getStaticPaths() { + return posts.map((p) => ({ + params: { ekintza: p.data?.slug }, + props: p.data, + })); +} + +export async function SVG(component: JSX.Element) { + return await satori(component as any, { + width: 1200, + height: 630, + fonts: [ + { + name: "Sohne", + data: await fs.readFile( + "./public/fonts/sohne/soehne-dreiviertelfett.otf" + ), + weight: 400, + }, + ], + }); +} + +export async function PNG(component: JSX.Element) { + return await sharp(Buffer.from(await SVG(component))) + .png() + .toBuffer(); +} diff --git a/front/src/views/ekintza/Ekintza.astro b/front/src/views/ekintza/Ekintza.astro index 91d53ca..b821b3a 100644 --- a/front/src/views/ekintza/Ekintza.astro +++ b/front/src/views/ekintza/Ekintza.astro @@ -23,7 +23,11 @@ const { ekintza } = Astro.props; const irudia = ekintza.mainMedia ? getImageData(ekintza.mainMedia) : null; --- - +
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d9717f..6f27845 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,9 +115,15 @@ importers: react-dom: specifier: ^19.1.1 version: 19.1.1(react@19.1.1) + satori: + specifier: ^0.18.3 + version: 0.18.3 serve: specifier: ^14.2.4 version: 14.2.4 + sharp: + specifier: ^0.34.4 + version: 0.34.4 devDependencies: sass-embedded: specifier: ^1.90.0 @@ -457,9 +463,6 @@ packages: peerDependencies: react: '>=16.8.0' - '@emnapi/runtime@1.5.0': - resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} - '@emnapi/runtime@1.6.0': resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} @@ -2250,6 +2253,11 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@shuding/opentype.js@1.4.0-beta.0': + resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==} + engines: {node: '>= 8.0.0'} + hasBin: true + '@simov/deep-extend@1.0.0': resolution: {integrity: sha512-Arv8/ZPcdKAMJnNF8cks35mPq1y3JnwH1lWpfWDKlJoj+Vw2xmA4+oL7m9GVHTgdX0mGFR7bCPTBTGbxhnfJJw==} engines: {node: '>=4.0.0'} @@ -3197,6 +3205,10 @@ packages: base-64@1.0.0: resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + base64-js@0.0.8: + resolution: {integrity: sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==} + engines: {node: '>= 0.4'} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -3779,10 +3791,20 @@ packages: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} + css-background-parser@0.1.0: + resolution: {integrity: sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA==} + + css-box-shadow@1.0.0-3: + resolution: {integrity: sha512-9jaqR6e7Ohds+aWwmhe6wILJ99xYQbfmK9QQB9CcMjDbTxPZjwEmUQpU91OG05Xgm8BahT5fW+svbsQGjS/zPg==} + css-color-keywords@1.0.0: resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} engines: {node: '>=4'} + css-gradient-parser@0.0.17: + resolution: {integrity: sha512-w2Xy9UMMwlKtou0vlRnXvWglPAceXCTtcmVSo8ZBUvqCV5aXEFP/PC6d+I464810I9FT++UACwTD5511bmGPUg==} + engines: {node: '>=16'} + css-loader@6.11.0: resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} engines: {node: '>= 12.13.0'} @@ -4126,6 +4148,10 @@ packages: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} + emoji-regex-xs@2.0.1: + resolution: {integrity: sha512-1QFuh8l7LqUcKe24LsPUNzjrzJQ7pgRwp1QMcZ5MX6mFplk2zQ08NVCM84++1cveaUUYtcCYHmeFEuNg16sU4g==} + engines: {node: '>=10.0.0'} + emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -4393,6 +4419,9 @@ packages: fecha@4.2.3: resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + fflate@0.7.4: + resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} + figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -4833,6 +4862,10 @@ packages: resolution: {integrity: sha512-DWlwuXLLqbrIOltR6tFQXShj/+7Cyp0gLi6uAb8qMdFh/YBBFbKSgQ6nbXmScYd8emMctuthmgIa7tUfo9Rtyg==} engines: {node: '>=14.0.0'} + hex-rgb@4.3.0: + resolution: {integrity: sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==} + engines: {node: '>=6'} + highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} @@ -5525,6 +5558,9 @@ packages: limiter@1.1.5: resolution: {integrity: sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==} + linebreak@1.1.0: + resolution: {integrity: sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -6335,6 +6371,9 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-css-color@0.2.1: + resolution: {integrity: sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==} + parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} @@ -7272,6 +7311,10 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + satori@0.18.3: + resolution: {integrity: sha512-T3DzWNmnrfVmk2gCIlAxLRLbGkfp3K7TyRva+Byyojqu83BNvnMeqVeYRdmUw4TKCsyH4RiQ/KuF/I4yEzgR5A==} + engines: {node: '>=16'} + sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} @@ -7608,6 +7651,9 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} + string.prototype.codepointat@0.2.1: + resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==} + string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} @@ -8583,6 +8629,9 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} + yoga-layout@3.2.1: + resolution: {integrity: sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==} + yup@0.32.9: resolution: {integrity: sha512-Ci1qN+i2H0XpY7syDQ0k5zKQ/DoxO0LzPg8PAR/X4Mpj6DqaeCoIYEEjDJwhArh3Fa7GWbQQVDZKeXYlSH4JMg==} engines: {node: '>=10'} @@ -9100,11 +9149,6 @@ snapshots: react: 18.3.1 tslib: 2.8.1 - '@emnapi/runtime@1.5.0': - dependencies: - tslib: 2.8.1 - optional: true - '@emnapi/runtime@1.6.0': dependencies: tslib: 2.8.1 @@ -9693,7 +9737,7 @@ snapshots: '@img/sharp-wasm32@0.34.4': dependencies: - '@emnapi/runtime': 1.5.0 + '@emnapi/runtime': 1.6.0 optional: true '@img/sharp-win32-arm64@0.34.4': @@ -10680,6 +10724,11 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} + '@shuding/opentype.js@1.4.0-beta.0': + dependencies: + fflate: 0.7.4 + string.prototype.codepointat: 0.2.1 + '@simov/deep-extend@1.0.0': {} '@sindresorhus/is@4.6.0': {} @@ -12673,6 +12722,8 @@ snapshots: base-64@1.0.0: {} + base64-js@0.0.8: {} + base64-js@1.5.1: {} baseline-browser-mapping@2.8.19: {} @@ -13266,8 +13317,14 @@ snapshots: crypto-random-string@2.0.0: {} + css-background-parser@0.1.0: {} + + css-box-shadow@1.0.0-3: {} + css-color-keywords@1.0.0: {} + css-gradient-parser@0.0.17: {} + css-loader@6.11.0(webpack@5.102.1(esbuild@0.25.11)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) @@ -13614,6 +13671,8 @@ snapshots: emittery@0.13.1: {} + emoji-regex-xs@2.0.1: {} + emoji-regex@10.4.0: {} emoji-regex@8.0.0: {} @@ -13972,6 +14031,8 @@ snapshots: fecha@4.2.3: {} + fflate@0.7.4: {} + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 @@ -14589,6 +14650,8 @@ snapshots: helmet@6.2.0: {} + hex-rgb@4.3.0: {} + highlight.js@10.7.3: {} hls.js@1.5.20: {} @@ -15325,6 +15388,11 @@ snapshots: limiter@1.1.5: {} + linebreak@1.1.0: + dependencies: + base64-js: 0.0.8 + unicode-trie: 2.0.0 + lines-and-columns@1.2.4: {} linkify-it@4.0.1: @@ -16321,6 +16389,11 @@ snapshots: dependencies: callsites: 3.1.0 + parse-css-color@0.2.1: + dependencies: + color-name: 1.1.4 + hex-rgb: 4.3.0 + parse-entities@4.0.2: dependencies: '@types/unist': 2.0.11 @@ -17348,6 +17421,20 @@ snapshots: '@parcel/watcher': 2.5.1 optional: true + satori@0.18.3: + dependencies: + '@shuding/opentype.js': 1.4.0-beta.0 + css-background-parser: 0.1.0 + css-box-shadow: 1.0.0-3 + css-gradient-parser: 0.0.17 + css-to-react-native: 3.2.0 + emoji-regex-xs: 2.0.1 + escape-html: 1.0.3 + linebreak: 1.1.0 + parse-css-color: 0.2.1 + postcss-value-parser: 4.2.0 + yoga-layout: 3.2.1 + sax@1.4.1: {} scheduler@0.23.0: @@ -17822,6 +17909,8 @@ snapshots: get-east-asian-width: 1.3.0 strip-ansi: 7.1.2 + string.prototype.codepointat@0.2.1: {} + string_decoder@0.10.31: {} string_decoder@1.1.1: @@ -18676,6 +18765,8 @@ snapshots: yoctocolors@2.1.2: {} + yoga-layout@3.2.1: {} + yup@0.32.9: dependencies: '@babel/runtime': 7.28.4