diff --git a/README.md b/README.md index c39303b5ab..8ddcde97ca 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,22 @@ + + + + + JetBrains logo + + + + + + + Package hosting provided by Cloudsmith. + + + Tooling provided by JetBrains. + diff --git a/website/.vitepress/components/VPSponsorsGrid.vue b/website/.vitepress/components/VPSponsorsGrid.vue new file mode 100644 index 0000000000..aca38773bf --- /dev/null +++ b/website/.vitepress/components/VPSponsorsGrid.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/website/.vitepress/config.ts b/website/.vitepress/config.ts index c17d73edea..7bf78562be 100644 --- a/website/.vitepress/config.ts +++ b/website/.vitepress/config.ts @@ -316,6 +316,12 @@ export default defineConfig({ replacement: fileURLToPath( new URL('./components/VPTeamMembersItem.vue', import.meta.url) ) + }, + { + find: /^.*\/VPSponsorsGrid\.vue$/, + replacement: fileURLToPath( + new URL('./components/VPSponsorsGrid.vue', import.meta.url) + ) } ] } diff --git a/website/.vitepress/sponsors.ts b/website/.vitepress/sponsors.ts index fa8e43c25b..1927a36cf4 100644 --- a/website/.vitepress/sponsors.ts +++ b/website/.vitepress/sponsors.ts @@ -1,4 +1,15 @@ -export const sponsors = [ +export interface Sponsor { + name: string; + url: string; + img: string; + // Logo variant for dark backgrounds. Sponsors that set one keep their own + // colours instead of being inverted by the sponsor grid. + imgDark?: string; + // Tooltip explaining what this sponsor gives the project. + description?: string; +} + +export const sponsors: { tier: string; size: string; items: Sponsor[] }[] = [ { tier: 'Gold Sponsors', size: 'big', @@ -27,7 +38,16 @@ export const sponsors = [ { name: 'Cloudsmith', url: 'https://cloudsmith.com/', - img: '/img/cloudsmith.svg' + img: '/img/cloudsmith.svg', + description: 'Hosts the deb and rpm package registries for free' + }, + { + name: 'JetBrains', + url: 'https://jb.gg/OpenSource', + img: '/img/jetbrains.svg', + imgDark: '/img/jetbrains-mono.svg', + description: + 'Provides free All Products Pack licenses to the maintainers' } ] } diff --git a/website/.vitepress/theme/custom.css b/website/.vitepress/theme/custom.css index 6e5c2b163c..0c7456e0f9 100644 --- a/website/.vitepress/theme/custom.css +++ b/website/.vitepress/theme/custom.css @@ -145,3 +145,27 @@ img[src*='custom-icon-badges.demolab.com'] { .VPTeamPage > .VPTeamPageTitle { padding-top: 0 } + +/* VitePress greys out sponsor logos by default. Show them in their brand + colours in light mode; dark mode keeps the inversion so black wordmarks + stay readable. */ +html:not(.dark) .vp-sponsor-grid-image { + filter: none; +} + +/* A sponsor shipping its own dark-background logo already reads correctly on + dark, so it opts out of the grid's invert treatment. On hover the grid turns + the tile white, so it falls back to the light logo like every other tile. */ +.vp-sponsor-grid-item.has-dark-logo .vp-sponsor-grid-image { + filter: none; +} + +.dark .vp-sponsor-grid-item.has-dark-logo .logo-light, +.dark .vp-sponsor-grid-item.has-dark-logo:hover .logo-dark, +html:not(.dark) .vp-sponsor-grid-item .logo-dark { + display: none; +} + +.dark .vp-sponsor-grid-item.has-dark-logo:hover .logo-light { + display: block; +} diff --git a/website/src/public/img/jetbrains-dark.svg b/website/src/public/img/jetbrains-dark.svg new file mode 100644 index 0000000000..521da3fd60 --- /dev/null +++ b/website/src/public/img/jetbrains-dark.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/website/src/public/img/jetbrains-mono.svg b/website/src/public/img/jetbrains-mono.svg new file mode 100644 index 0000000000..b4c8d83c27 --- /dev/null +++ b/website/src/public/img/jetbrains-mono.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/website/src/public/img/jetbrains.svg b/website/src/public/img/jetbrains.svg new file mode 100644 index 0000000000..cb3a2a0e58 --- /dev/null +++ b/website/src/public/img/jetbrains.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + +