File tree Expand file tree Collapse file tree 6 files changed +376
-11
lines changed
Expand file tree Collapse file tree 6 files changed +376
-11
lines changed Original file line number Diff line number Diff line change 66 < base href ="/ " />
77 < meta name ="viewport " content ="width=device-width, initial-scale=1 " />
88 < meta property ="og:title " content ="Angular Hub " />
9- < meta
10- property ="og:image "
11- content ="https://angular-hub.com/assets/images/og-image.webp "
12- />
139 < meta
1410 property ="og:description "
1511 content ="Curated list of Angular events and communities "
Original file line number Diff line number Diff line change @@ -25,6 +25,14 @@ export const routeMeta: RouteMeta = {
2525 name : 'description' ,
2626 content : 'Curated list of Angular Events' ,
2727 } ,
28+ {
29+ property : 'og:title' ,
30+ content : 'Title of the page' ,
31+ } ,
32+ {
33+ property : 'og:image' ,
34+ content : '/api/v1/og-image?title=Developer' ,
35+ } ,
2836 ] ,
2937} ;
3038
Original file line number Diff line number Diff line change 1+ import { ImageResponse } from '@analogjs/content/og' ;
2+ import { Event } from '../../../models/event.model' ;
3+
4+ export default defineEventHandler ( async ( event ) => {
5+ const data = await fetch ( 'http://localhost:4200/api/v1/events/upcoming' ) ;
6+ const events : Event [ ] = await data . json ( ) ;
7+ const eventLength = events . length ;
8+ const topEvents = events . slice ( 0 , 3 ) ;
9+
10+ const fontFile = await fetch (
11+ 'https://og-playground.vercel.app/inter-latin-ext-700-normal.woff' ,
12+ ) ;
13+ const fontData : ArrayBuffer = await fontFile . arrayBuffer ( ) ;
14+ const query = getQuery ( event ) ; // query params
15+
16+ const template = `
17+ <div tw="bg-gray-50 flex flex-col w-full h-full items-center justify-center">
18+ <h2 class="text-5xl">${ eventLength } upcoming events</h2>
19+ ${ topEvents . map ( ( event ) => `${ event . name } ` ) }
20+ </div>
21+ ` ;
22+
23+ const cards = `
24+ ${ topEvents . map ( ( event ) => {
25+ return `<h4 class="text-xl font-bold my-1">
26+ ${ event . name }
27+ </h4>
28+ <div class="flex gap-4 mb-2">
29+ <div class="flex justify-center items-center w-20 h-20">
30+ <img
31+ class="rounded-xl"
32+ [src]="${ event . community ?. logo } "
33+ aria-hidden="true"
34+ height="70"
35+ width="70"
36+ alt=""
37+ />
38+ </div>
39+ <div class="flex-1">
40+ <span class="font-bold text-primary" itemprop="date">
41+ ${ event . date }
42+ ${ event . endDate ? '- ' + event . endDate : '' }
43+ </span>
44+ </div>
45+ </div>` ;
46+ } ) }
47+ ` ;
48+
49+ return new ImageResponse ( template , {
50+ debug : true , // disable caching
51+ fonts : [
52+ {
53+ name : 'Inter Latin' ,
54+ data : fontData ,
55+ style : 'normal' ,
56+ } ,
57+ ] ,
58+ } ) ;
59+ } ) ;
Original file line number Diff line number Diff line change 3535 "marked" : " ^5.0.2" ,
3636 "marked-gfm-heading-id" : " ^3.1.0" ,
3737 "marked-highlight" : " ^2.0.1" ,
38+ "marked-mangle" : " ^1.1.7" ,
3839 "mermaid" : " ^10.2.4" ,
3940 "primeicons" : " ^7.0.0" ,
4041 "primeng" : " ^17.18.7" ,
4142 "prismjs" : " ^1.29.0" ,
4243 "rxjs" : " ~7.8.0" ,
44+ "satori" : " ^0.10.14" ,
45+ "satori-html" : " ^0.3.2" ,
46+ "sharp" : " ^0.33.5" ,
4347 "tslib" : " ^2.6.3" ,
4448 "valibot" : " ^0.35.0" ,
45- "zone.js" : " 0.14.7" ,
46- "marked-mangle" : " ^1.1.7"
49+ "zone.js" : " 0.14.7"
4750 },
4851 "devDependencies" : {
4952 "@analogjs/platform" : " 1.8.0-beta.2" ,
You can’t perform that action at this time.
0 commit comments