11import Image from "next/image" ;
22import Link from "next/link" ;
3+ import type { Metadata } from "next" ;
4+ import type { Organization , WebPage , WithContext } from "schema-dts" ;
35
46import {
57 Accordion ,
@@ -17,7 +19,34 @@ import GridItemsContainer, {
1719import data from "@/data.json" ;
1820import { CaseStudiesCTA } from "./components/case-studies-cta" ;
1921
20- const { cta, location } = data ;
22+ const {
23+ cta,
24+ hero : { heading, subheading } ,
25+ location,
26+ socials,
27+ title,
28+ url
29+ } = data ;
30+
31+ export const metadata : Metadata = {
32+ description : subheading ,
33+ title : `${ title } - ${ heading } ` ,
34+ openGraph : {
35+ url,
36+ type : "website" ,
37+ title : `${ title } - ${ heading } ` ,
38+ images : [
39+ {
40+ url : "https://hyperjump.tech/images/hyperjump-og.png" ,
41+ width : 1200 ,
42+ height : 630 ,
43+ alt : "Hyperjump Logo" ,
44+ type : "image/png"
45+ }
46+ ] ,
47+ siteName : title
48+ }
49+ } ;
2150
2251export default function Home ( ) {
2352 return (
@@ -27,6 +56,7 @@ export default function Home() {
2756 < OpenSourceProducts />
2857 < Faqs />
2958 < Location />
59+ < JsonLd />
3060 </ >
3161 ) ;
3262}
@@ -200,3 +230,63 @@ function Location() {
200230 </ GridItemsContainer >
201231 ) ;
202232}
233+
234+ function JsonLd ( ) {
235+ return (
236+ < >
237+ < JsonLdOrganization />
238+ < JsonLdWebsite />
239+ </ >
240+ ) ;
241+ }
242+
243+ function JsonLdOrganization ( ) {
244+ const jsonLd : WithContext < Organization > = {
245+ "@context" : "https://schema.org" ,
246+ "@type" : "Organization" ,
247+ name : title ,
248+ url,
249+ logo : "https://hyperjump.tech/images/hyperjump-colored.png" ,
250+ address : {
251+ "@type" : "PostalAddress" ,
252+ streetAddress : "D.Lab Building (6th floor), Jl. Riau No. 1" ,
253+ addressLocality : "Gondangdia, Menteng, Jakarta Pusat" ,
254+ addressRegion : "DKI Jakarta" ,
255+ postalCode : "10350" ,
256+ addressCountry : "ID"
257+ } ,
258+ contactPoint : {
259+ "@type" : "ContactPoint" ,
260+ email : location . email ,
261+ contactType : "Sales" ,
262+ areaServed : "Worldwide" ,
263+ availableLanguage : [ "English" , "Indonesian" ]
264+ } ,
265+ sameAs : socials . map ( ( { url } ) => url ) ,
266+ duns : location . duns
267+ } ;
268+
269+ return (
270+ < script
271+ type = "application/ld+json"
272+ dangerouslySetInnerHTML = { { __html : JSON . stringify ( jsonLd ) } }
273+ />
274+ ) ;
275+ }
276+
277+ function JsonLdWebsite ( ) {
278+ const jsonLd : WithContext < WebPage > = {
279+ "@context" : "https://schema.org" ,
280+ "@type" : "WebPage" ,
281+ name : title ,
282+ url,
283+ description : subheading
284+ } ;
285+
286+ return (
287+ < script
288+ type = "application/ld+json"
289+ dangerouslySetInnerHTML = { { __html : JSON . stringify ( jsonLd ) } }
290+ />
291+ ) ;
292+ }
0 commit comments