diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 38e1abb11d..0000000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/assets/img/globalping/check.svg b/src/assets/img/globalping/check.svg new file mode 100644 index 0000000000..b0266a611d --- /dev/null +++ b/src/assets/img/globalping/check.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/img/globalping/credits/polygons_1.svg b/src/assets/img/globalping/credits/polygons_1.svg new file mode 100644 index 0000000000..88bfdebfc7 --- /dev/null +++ b/src/assets/img/globalping/credits/polygons_1.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/img/globalping/credits/polygons_2.svg b/src/assets/img/globalping/credits/polygons_2.svg new file mode 100644 index 0000000000..08fee84265 --- /dev/null +++ b/src/assets/img/globalping/credits/polygons_2.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/img/globalping/globalping-grid-type-4.svg b/src/assets/img/globalping/globalping-grid-type-4.svg new file mode 100644 index 0000000000..3bf717e4a3 --- /dev/null +++ b/src/assets/img/globalping/globalping-grid-type-4.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/img/globalping/header-grid.svg b/src/assets/img/globalping/header-grid.svg new file mode 100644 index 0000000000..9c6e30f0d3 --- /dev/null +++ b/src/assets/img/globalping/header-grid.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/img/landing/render.png b/src/assets/img/landing/render.png deleted file mode 100644 index 636871a805..0000000000 Binary files a/src/assets/img/landing/render.png and /dev/null differ diff --git a/src/assets/img/landing/render@2x.png b/src/assets/img/landing/render@2x.png deleted file mode 100644 index 3d4ad8f586..0000000000 Binary files a/src/assets/img/landing/render@2x.png and /dev/null differ diff --git a/src/assets/img/sponsors/macarne.svg b/src/assets/img/sponsors/macarne.svg deleted file mode 100644 index 996db18d29..0000000000 --- a/src/assets/img/sponsors/macarne.svg +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/assets/img/sponsors/render-black.svg b/src/assets/img/sponsors/render-black.svg new file mode 100644 index 0000000000..cd9faad5f5 --- /dev/null +++ b/src/assets/img/sponsors/render-black.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/img/sponsors/render.png b/src/assets/img/sponsors/render.png deleted file mode 100644 index 33e24885d9..0000000000 Binary files a/src/assets/img/sponsors/render.png and /dev/null differ diff --git a/src/assets/img/sponsors/render@2x.png b/src/assets/img/sponsors/render@2x.png deleted file mode 100644 index bd7a0196f4..0000000000 Binary files a/src/assets/img/sponsors/render@2x.png and /dev/null differ diff --git a/src/assets/js/app-docs.js b/src/assets/js/app-docs.js index c55e338dcb..2e3e2c5089 100644 --- a/src/assets/js/app-docs.js +++ b/src/assets/js/app-docs.js @@ -28,9 +28,6 @@ Ractive.Router.prototype.dispatch = function (...args) { return; } - document.title = app.router.route.view.get('title') || 'jsDelivr - A free, fast, and reliable CDN for JS and open source'; - document.querySelector('meta[name=description]').setAttribute('content', app.router.route.view.get('description') || 'Optimized for JS and ESM delivery from npm and GitHub. Works with all web formats. Serving more than 150 billion requests per month.'); - return this; }; diff --git a/src/assets/js/app-globalping.js b/src/assets/js/app-globalping.js index 30cdedc6e1..e425af75e5 100644 --- a/src/assets/js/app-globalping.js +++ b/src/assets/js/app-globalping.js @@ -10,6 +10,7 @@ const cGlobalpingNetworkTools = require('../../views/pages/globalping/network-to const cGlobalpingIntegrations = require('../../views/pages/globalping/integrations.html'); const cGlobalpingAbout = require('../../views/pages/globalping/about-us.html'); const cGlobalpingSponsors = require('../../views/pages/globalping/sponsors.html'); +const cGlobalpingCredits = require('../../views/pages/globalping/credits.html'); const { getGlobalpingUser } = require('./utils/http'); Ractive.DEBUG = location.hostname === 'localhost'; @@ -35,6 +36,7 @@ app.router.addRoute('/network-tools/:params?', cGlobalpingNetworkTools); app.router.addRoute('/integrations', cGlobalpingIntegrations); app.router.addRoute('/about-us', cGlobalpingAbout); app.router.addRoute('/sponsors', cGlobalpingSponsors); +app.router.addRoute('/credits', cGlobalpingCredits); app.router.replaceQueryParam = function (name, newValue) { history.replaceState(history.state, null, location.href.replace(new RegExp(`${name}=[^&]+|$`), `${name}=${encodeURIComponent(newValue)}`)); diff --git a/src/assets/js/utils/http.js b/src/assets/js/utils/http.js index d36c3f9e83..1286d7bac1 100644 --- a/src/assets/js/utils/http.js +++ b/src/assets/js/utils/http.js @@ -281,11 +281,14 @@ module.exports.getGlobalpingMeasurement = (id) => { return _.makeHTTPRequest({ url: `${GLOBALPING_HOST}/v1/measurements/${id}` }); }; - module.exports.getBlogRss = () => { return _.makeHTTPRequest({ url: `/blog/rss`, rawResponse: true }); }; +module.exports.getGPBlogRss = () => { + return _.makeHTTPRequest({ url: `https://blog.globalping.io/rss/`, rawResponse: true }); +}; + module.exports.getCdnOssFiles = ( name, by = 'hits', diff --git a/src/assets/less/app-globalping.less b/src/assets/less/app-globalping.less index 91036e2e73..0489a5f0c2 100644 --- a/src/assets/less/app-globalping.less +++ b/src/assets/less/app-globalping.less @@ -17,6 +17,7 @@ @import "components/gp-credits-message.less"; @import "components/gp-credits.less"; @import "components/controlled-textarea.less"; +@import "components/range-slider.less"; @import "pages/globalping.less"; @import "pages/globalping/cli.less"; @@ -25,3 +26,4 @@ @import "pages/globalping/integrations.less"; @import "pages/globalping/about-us.less"; @import "pages/globalping/sponsors.less"; +@import "pages/globalping/credits.less"; diff --git a/src/assets/less/common-globalping.less b/src/assets/less/common-globalping.less index 3aee51c2b2..fdb7678b16 100644 --- a/src/assets/less/common-globalping.less +++ b/src/assets/less/common-globalping.less @@ -16,6 +16,7 @@ outline: none; cursor: pointer; white-space: nowrap; + text-decoration: none !important; &:hover, &:focus { color: #fff; diff --git a/src/assets/less/components/gp-jumbotron.less b/src/assets/less/components/gp-jumbotron.less index 0d91d2af45..9efbc7ae46 100644 --- a/src/assets/less/components/gp-jumbotron.less +++ b/src/assets/less/components/gp-jumbotron.less @@ -262,4 +262,29 @@ } } } + + &.credits { + padding: 0; + height: 100%; + top: 0; + left: 0; + z-index: -1; + + .jumbotron { + &_grid { + position: absolute; + top: -14px; + left: 65px; + + @media (min-width: @screen-sm-min) { + top: -32px; + left: 65px; + } + } + + &_blur { + display: none; + } + } + } } diff --git a/src/assets/less/components/header.less b/src/assets/less/components/header.less index 9d593aee24..50b0f5497a 100644 --- a/src/assets/less/components/header.less +++ b/src/assets/less/components/header.less @@ -21,7 +21,7 @@ } } - &.header-with-globalping-bg { + &.header-with-globalping-bg, &.header-with-gp-translucent-bg { --link-highlight-color: @gp-green; .navbar { @@ -46,6 +46,18 @@ } } + &.header-with-gp-translucent-bg { + .navbar { + @media (max-width: (@screen-sm-min - 1)) { + position: relative; + background-image: url("../../img/globalping/header-grid.svg"); + background-blend-mode: overlay; + background-size: cover; + background-position: 0 0; + } + } + } + &.header-with-dark-bg { .navbar { background-color: #323334; diff --git a/src/assets/less/components/range-slider.less b/src/assets/less/components/range-slider.less new file mode 100644 index 0000000000..8935afe3b4 --- /dev/null +++ b/src/assets/less/components/range-slider.less @@ -0,0 +1,103 @@ +.c-range-slider { + font-family: Lexend, sans-serif; + font-style: normal; + font-weight: 400; + -webkit-font-smoothing: antialiased; + display: flex; + flex-flow: column; + row-gap: 16px; + + .range { + &-slider { + position: relative; + display: flex; + align-items: center; + width: 100%; + height: 16px; + cursor: pointer; + + &_line { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + height: 4px; + + &_part { + flex-grow: 1; + height: 100%; + background-color: #e7e7ee; + transition: background-color .3s ease; + + &:nth-child(1) { + border-top-left-radius: 8px; + border-bottom-left-radius: 8px; + } + + &:nth-last-child(1) { + border-top-right-radius: 8px; + border-bottom-right-radius: 8px; + } + } + + &_gap { + width: 2px; + background: transparent; + } + } + + &_knob { + position: absolute; + width: 16px; + height: 16px; + background: #17d4a7; + cursor: pointer; + transition: left .1s linear; + border: 2px solid #fff; + border-radius: 50%; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .2); + transform: translate(-50%, 0); + } + } + + &-slider-labels { + position: relative; + display: flex; + justify-content: space-between; + align-items: center; + height: 20px; + + &_label { + display: flex; + justify-content: center; + align-items: center; + overflow: hidden; + font-size: 14px; + font-weight: 400; + line-height: 20px; + color: #17233a; + + &.m-first-label { + justify-content: flex-start; + } + + &.m-middle-label { + justify-content: center; + } + + &.m-last-label { + justify-content: flex-end; + } + } + } + + &-slider-header { + height: 24px; + text-align: center; + font-size: 16px; + font-weight: 600; + line-height: 24px; + color: #17233a; + } + } +} diff --git a/src/assets/less/pages/globalping/about-us.less b/src/assets/less/pages/globalping/about-us.less index 0b5f6c357b..2f4d1c453e 100644 --- a/src/assets/less/pages/globalping/about-us.less +++ b/src/assets/less/pages/globalping/about-us.less @@ -20,7 +20,7 @@ @media (min-width: @screen-sm-min) { max-width: 856px; - row-gap: 100px; + row-gap: 64px; padding-top: 64px; } @@ -31,7 +31,6 @@ font-weight: 600; line-height: 50px; letter-spacing: .2px; - text-align: left; } &_info { @@ -66,6 +65,7 @@ font-size: 20px; font-weight: 400; line-height: 32px; + color: #17233a; } &_focus { @@ -78,7 +78,6 @@ font-size: 20px; font-weight: 600; line-height: 32px; - text-align: left; } &_list { @@ -95,7 +94,7 @@ display: flex; align-items: center; column-gap: 16px; - padding: 0 0 0 24px; + padding: 0 24px; height: 80px; border-radius: 8px; border: 1.5px solid #e7e7ee; @@ -157,7 +156,6 @@ font-size: 16px; font-weight: 400; line-height: 20px; - text-align: left; } &_value { @@ -165,7 +163,6 @@ font-size: 24px; font-weight: 600; line-height: 36px; - text-align: left; background: linear-gradient(0deg, #17233a, #17233a), linear-gradient(66.12deg, rgba(23, 212, 167, 0) -.72%, #17d4a7 124.59%); background-size: cover; background-blend-mode: overlay; @@ -191,10 +188,9 @@ row-gap: 20px; > span { - font-size: 16px; + font-size: 18px; font-weight: 400; - line-height: 20px; - text-align: left; + line-height: 26px; color: #17233a; } } @@ -208,10 +204,9 @@ padding: 0 24px; &_descr { - font-size: 16px; + font-size: 18px; font-weight: 400; - line-height: 20px; - text-align: left; + line-height: 26px; color: #17233a; margin: 0; } @@ -238,7 +233,6 @@ font-size: 24px; font-weight: 600; line-height: 36px; - text-align: left; color: #17233a; } @@ -286,7 +280,6 @@ font-size: 20px; font-weight: 600; line-height: 32px; - text-align: left; color: #17233a; } @@ -294,7 +287,6 @@ font-size: 16px; font-weight: 400; line-height: 20px; - text-align: left; color: #17233a; } diff --git a/src/assets/less/pages/globalping/credits.less b/src/assets/less/pages/globalping/credits.less new file mode 100644 index 0000000000..dad7da31bc --- /dev/null +++ b/src/assets/less/pages/globalping/credits.less @@ -0,0 +1,302 @@ +.p-globalping-credits { + font-family: Lexend, sans-serif; + font-style: normal; + font-weight: 400; + -webkit-font-smoothing: antialiased; + display: flex; + flex-direction: column; + align-items: center; + + .gp-credits { + display: flex; + flex-direction: column; + align-items: center; + row-gap: 48px; + padding: 48px 24px 8px; + + @media (min-width: @screen-sm-min) { + padding: 100px 24px 88px; + row-gap: 80px; + } + + &_info { + display: flex; + flex-direction: column; + width: 100%; + + @media (min-width: @screen-sm-min) { + max-width: 808px; + } + + &_title { + font-size: 40px; + font-weight: 600; + line-height: 60px; + text-align: left; + color: #17233a; + margin: 0; + } + + &_descr { + margin-top: 24px; + font-size: 16px; + font-weight: 400; + line-height: 32px; + color: #17233a; + + br { + display: none; + + @media (width: 360px) { + display: inline-block; + } + } + } + + &_user-benefits { + display: flex; + flex-direction: column; + row-gap: 8px; + margin-top: 48px; + + @media (min-width: @screen-sm-min) { + flex-direction: row; + column-gap: 8px; + } + + &_block { + display: flex; + flex-direction: column; + row-gap: 16px; + padding: 24px 8px; + border: 1px solid #e7e7ee; + border-radius: 8px; + height: 186px; + background: #fff; + box-sizing: border-box; + + @media (min-width: @screen-sm-min) { + flex-grow: 1; + flex-basis: 0; + } + + &.registered { + background: #e8fff9; + + .gp-credits_info_user-benefits_block_title { + color: #17d4a7; + } + } + + &_title { + font-size: 24px; + font-weight: 600; + line-height: 36px; + text-align: left; + padding-left: 24px; + color: #17233a; + } + + &_list { + display: flex; + flex-direction: column; + + &_item { + display: flex; + align-items: center; + column-gap: 8px; + height: 28px; + padding-left: 24px; + + &_numbers, &_text { + font-size: 14px; + line-height: 20px; + color: #17233a; + } + + &_numbers { + font-weight: 600; + } + } + } + + &_hint { + display: flex; + align-items: center; + column-gap: 10px; + padding-left: 24px; + + > span { + font-size: 12px; + font-weight: 400; + line-height: 12px; + text-align: left; + } + } + } + } + + &_credits-donations { + height: 100px; + margin-top: 48px; + } + } + + &_become-a-sponsor { + position: relative; + display: flex; + flex-direction: column; + row-gap: 40px; + + @media (min-width: @screen-sm-min) { + flex-flow: row wrap; + column-gap: 48px; + overflow: visible; + } + + &_polygons { + display: none; + position: absolute; + z-index: -1; + + @media (min-width: @screen-sm-min) { + display: block; + } + + &.left { + top: 418px; + left: -72px; + } + + &.right { + top: -75px; + right: 20px; + } + } + + &_block { + display: flex; + flex-direction: column; + row-gap: 16px; + + @media (min-width: @screen-sm-min) { + max-width: 380px; + flex-grow: 1; + flex-basis: 0; + } + + &.right { + @media (min-width: @screen-sm-min) { + padding-top: 240px; + } + } + + &_title { + font-size: 32px; + font-weight: 600; + line-height: 50px; + letter-spacing: .2px; + text-align: left; + color: #17233a; + margin: 0; + } + + &_subtitle { + font-size: 18px; + font-weight: 600; + line-height: 32px; + text-align: left; + color: #17233a; + margin: 0; + } + + &_content { + font-size: 16px; + font-weight: 400; + line-height: 32px; + text-align: left; + color: #17233a; + } + + &_btn { + height: 36px; + width: 192px; + font-size: 14px; + font-weight: 400; + line-height: 20px; + text-align: left; + // color: #f3f5f6; // TODO: this color used in the design, but why? everywhere else is #fff used + color: #fff; + } + } + } + + &_faq { + display: flex; + flex-direction: column; + + @media (min-width: @screen-sm-min) { + max-width: 808px; + width: 100%; + } + + &_title { + font-size: 40px; + font-weight: 600; + line-height: 60px; + text-align: left; + color: #17233a; + margin: 0; + } + + &_descr { + margin-top: 24px; + font-size: 16px; + font-weight: 400; + line-height: 32px; + color: #17233a; + } + + &_list { + margin-top: 48px; + display: flex; + flex-direction: column; + row-gap: 16px; + + &_item { + display: flex; + flex-direction: column; + border: 1px solid #e7e7ee; + border-radius: 8px; + + &_question { + padding: 16px 24px; + background: #f3f5f6; + border-bottom: 1px solid #e7e7ee; + font-size: 16px; + font-weight: 600; + line-height: 24px; + color: #17233a; + } + + &_answer { + padding: 24px; + font-size: 16px; + font-weight: 400; + line-height: 24px; + color: #17233a; + + > a { + color: #17d4a7; + font-weight: 600; + } + } + } + } + } + } +} + +.gp-credits_tooltip { + border-radius: 8px; +} diff --git a/src/assets/less/pages/sponsors.less b/src/assets/less/pages/sponsors.less index 65998eb0b8..2e7315498c 100644 --- a/src/assets/less/pages/sponsors.less +++ b/src/assets/less/pages/sponsors.less @@ -277,6 +277,14 @@ height: 30px; } } + + &.render { + height: 30px; + + @media (min-width: 576px) { + height: 40px; + } + } } .sp-text { @@ -303,11 +311,6 @@ } &.row-gold .sp-item { - &.auto-height { - min-height: 272px; - height: auto; - } - @media (min-width: @screen-lg-min) { height: 272px; } diff --git a/src/routes/jsdelivr.js b/src/routes/jsdelivr.js index 5aab9f0603..c4a5f2cd80 100644 --- a/src/routes/jsdelivr.js +++ b/src/routes/jsdelivr.js @@ -178,7 +178,7 @@ koaElasticUtils.addRoutes(router, [ */ router.get('/globalping/:path(.*)?', async (ctx) => { ctx.status = 301; - return ctx.redirect(`https://globalping.io/${ctx.params.path || ''}`); + return ctx.redirect(`https://globalping.io${ctx.url.replace(/^\/[^/?]+/, '')}`); }); module.exports = router; diff --git a/src/views/components/gp-credits-message.html b/src/views/components/gp-credits-message.html index 63d5b39ac0..6049c5fcb9 100644 --- a/src/views/components/gp-credits-message.html +++ b/src/views/components/gp-credits-message.html @@ -2,8 +2,7 @@ {{#if message}}
{{message}} - - + Sign up
{{/if}} diff --git a/src/views/components/gp-credits.html b/src/views/components/gp-credits.html index a51a41f5b0..8ac2851b99 100644 --- a/src/views/components/gp-credits.html +++ b/src/views/components/gp-credits.html @@ -45,10 +45,9 @@ {{/if}} - - - - + + + Add Credits + {{#if testInProgress && isInfiniteModeRes && consumingValue}}
diff --git a/src/views/components/gp-footer.html b/src/views/components/gp-footer.html index 462b04fcdc..c5977b1db4 100644 --- a/src/views/components/gp-footer.html +++ b/src/views/components/gp-footer.html @@ -184,7 +184,7 @@ }, oninit () { if (!Ractive.isServer) { - http.getBlogRss().then((response) => { + http.getGPBlogRss().then((response) => { if (response) { let document = new window.DOMParser().parseFromString(response, 'text/xml'); let items = document.documentElement.childNodes[0].getElementsByTagName('item'); @@ -208,7 +208,7 @@ data.push({ text: currItemTitle, - url: `/blog${new URL(currItemLink, 'https://www.jsdelivr.com').pathname}`, + url: currItemLink, date: new Date(currItemPubDate).getTime(), }); } diff --git a/src/views/components/gp-header.html b/src/views/components/gp-header.html index b474981948..52fdee9893 100644 --- a/src/views/components/gp-header.html +++ b/src/views/components/gp-header.html @@ -27,9 +27,6 @@
-
+
Join the network To join the Globalping probe network all you have to do is run our container. diff --git a/src/views/pages/globalping/about-us.html b/src/views/pages/globalping/about-us.html index 5cafcdf0d5..d88ecb2da6 100644 --- a/src/views/pages/globalping/about-us.html +++ b/src/views/pages/globalping/about-us.html @@ -21,13 +21,13 @@
- Globalping is a free and open source platform for network testing and monitoring. - At its core, a single API that can schedule and run network related commands in real-time from any location in the world. + Globalping is a free, open-source platform for network testing and monitoring. + At its core is a robust API that can schedule and run network-related commands in real-time from any location in the world. - It's a simple and secure way to test your web services, APIs, CDNs, DNS and edge compute services. - To ensure their global availability and understand their latency and performance on a global scale. + It's a simple and secure way to test your web services, APIs, CDNs, DNS and edge compute services, + to ensure their global availability, and understand their latency and performance on a global scale.
@@ -118,10 +118,10 @@

Globalping in numbers

Ready for production

- From solo developers to enterprises + From solo developers to enterprises - our platform is designed as one-size-fits-all. - Our platform is designed as a one size fits all. We always aim to ensure the service remains useful to the majority of users for free but at the same time making sure heavier users like enterprise companies pay their fair share and help us develop a high quality service. + We aim to ensure the service remains useful to the majority of users for free, while heavier users and enterprise companies pay their fair share and help us develop a high quality service. @@ -193,6 +193,8 @@

{{this.title}} + + + + + + + + + + + +
+ + +
+
+

Globalping limits and credits

+ +
+ Start using Globalping for free - no registration needed! +
+ +
+
+ Unregistered User + +
+ + + + + {{this.userBenefits.unregistered.probesPerMeas}} + + + Probes per measurement + + + + + + + {{this.userBenefits.unregistered.freeTestsPerHour}} + + + Free tests per hour + +
+
+ +
+ Registered User + +
+ + + {{this.userBenefits.registered.probesPerMeas}} + Probes per measurement + + + + + {{this.userBenefits.registered.freeTestsPerHour}} + Free tests per hour + +
+ + + Higher limits for members! + + +
+
+ +
+ +
+
+ +
+ + + + +
+

Become a sponsor

+ +

+2000 tests per $1 donated

+ +
+ We aim to offer a reliable service to everyone, + from home users and solo developers to startups, corporations, and large enterprises. + We're doing our best to keep things fair. Everyone gets a number of free requests every hour, + while larger users may pay for additional requests, and help support the active development of the project. +
+ + + Become a GitHub sponsor + +
+ +
+

Host a probe

+ +

+150 tests/probe/day

+ +
+ Generate free credits passively! + Become a member of the community by hosting a probe and adopting it under your account. + For each day your probe stays online, you will get additional free credits. +
+ + + Host a probe + +
+
+ +
+

Frequently Asked Questions

+ + +
+ {{#each faq}} +
+ {{this.question}} + {{{this.answer}}} +
+ {{/each}} +
+
+
+
+ + +
+ + diff --git a/src/views/pages/globalping/docs/api.globalping.io.html b/src/views/pages/globalping/docs/api.globalping.io.html index 993690c39d..a0b2e49d58 100644 --- a/src/views/pages/globalping/docs/api.globalping.io.html +++ b/src/views/pages/globalping/docs/api.globalping.io.html @@ -1,4 +1,4 @@ - + diff --git a/src/views/pages/sponsors.html b/src/views/pages/sponsors.html index a08c43defd..b1eee9515d 100644 --- a/src/views/pages/sponsors.html +++ b/src/views/pages/sponsors.html @@ -134,7 +134,7 @@

PLATINUM

- +
Main hosting provider for jsDelivr related websites and APIs. @@ -197,21 +197,6 @@

GOLD

- -
-
- - -
- In a world where every millisecond counts, Macarne LLC stands as the unparalleled champion of hosting solutions tailored for the gaming industry. -
- - - - macarne.com - -
-

BRONZE

diff --git a/src/views/r-docs-globalping.html b/src/views/r-docs-globalping.html new file mode 100644 index 0000000000..9dd0f0b8e7 --- /dev/null +++ b/src/views/r-docs-globalping.html @@ -0,0 +1,101 @@ + + +{{#if !@shared.isServer}} + {{yield}} +{{else}} + + + + + + + + + + + + + + + {{#if openGraphImage}} + + + + + + {{else}} + + + + + + {{/if}} + + + + + + + {{title || 'Globalping - Internet and web infrastructure monitoring and benchmarking'}} + + + + + + + + + + + + + {{yield seo}} + + + + + + + + + + + + + + + + + + + {{yield css}} + + + +
+ {{#unless noYield}}{{yield}}{{/unless}} +
+ + + + + + + + {{yield js}} + + + + + +{{/if}} + + diff --git a/src/views/r-page-globalping.html b/src/views/r-page-globalping.html index d53e102c3f..6eb77cfef4 100644 --- a/src/views/r-page-globalping.html +++ b/src/views/r-page-globalping.html @@ -10,7 +10,7 @@ - + {{#if openGraphImage}} @@ -97,9 +97,7 @@ {{yield js}} - - - + {{/if}}