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 6
6
< base href ="/ " />
7
7
< meta name ="viewport " content ="width=device-width, initial-scale=1 " />
8
8
< 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
- />
13
9
< meta
14
10
property ="og:description "
15
11
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 = {
25
25
name : 'description' ,
26
26
content : 'Curated list of Angular Events' ,
27
27
} ,
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
+ } ,
28
36
] ,
29
37
} ;
30
38
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 35
35
"marked" : " ^5.0.2" ,
36
36
"marked-gfm-heading-id" : " ^3.1.0" ,
37
37
"marked-highlight" : " ^2.0.1" ,
38
+ "marked-mangle" : " ^1.1.7" ,
38
39
"mermaid" : " ^10.2.4" ,
39
40
"primeicons" : " ^7.0.0" ,
40
41
"primeng" : " ^17.18.7" ,
41
42
"prismjs" : " ^1.29.0" ,
42
43
"rxjs" : " ~7.8.0" ,
44
+ "satori" : " ^0.10.14" ,
45
+ "satori-html" : " ^0.3.2" ,
46
+ "sharp" : " ^0.33.5" ,
43
47
"tslib" : " ^2.6.3" ,
44
48
"valibot" : " ^0.35.0" ,
45
- "zone.js" : " 0.14.7" ,
46
- "marked-mangle" : " ^1.1.7"
49
+ "zone.js" : " 0.14.7"
47
50
},
48
51
"devDependencies" : {
49
52
"@analogjs/platform" : " 1.8.0-beta.2" ,
You can’t perform that action at this time.
0 commit comments