Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: optimize Hey API logo size #1499

Merged
merged 1 commit into from
Dec 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div align="center">
<img width="150" height="150" src="https://heyapi.dev/logo.png" alt="Logo">
<img alt="Hey API logo" height="150" src="https://heyapi.dev/images/logo-150w.png" width="150">
<h1 align="center"><b>OpenAPI TypeScript</b></h1>
<p align="center">🚀 The OpenAPI to TypeScript codegen. Generate clients, SDKs, validators, and more.</p>
</div>
Expand Down
32 changes: 29 additions & 3 deletions docs/.vitepress/config/shared.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,33 @@ import { defineConfig, type HeadConfig } from 'vitepress';
export default defineConfig({
cleanUrls: true,
head: [
['link', { href: '/logo.png', rel: 'icon', type: 'image/png' }],
[
'link',
{
href: '/images/logo-16w.png',
rel: 'icon',
sizes: '16x16',
type: 'image/png',
},
],
[
'link',
{
href: '/images/logo-32w.png',
rel: 'icon',
sizes: '32x32',
type: 'image/png',
},
],
[
'link',
{
href: '/images/logo-48w.png',
rel: 'icon',
sizes: '48x48',
type: 'image/png',
},
],
['meta', { content: 'website', property: 'og:type' }],
['meta', { content: 'en', property: 'og:locale' }],
[
Expand All @@ -15,7 +41,7 @@ export default defineConfig({
},
],
['meta', { content: 'OpenAPI TypeScript', property: 'og:site_name' }],
['meta', { content: '/logo.png', property: 'og:image' }],
['meta', { content: '/images/logo-640w.png', property: 'og:image' }],
['meta', { content: 'https://heyapi.dev', property: 'og:url' }],
[
'script',
Expand All @@ -33,7 +59,7 @@ export default defineConfig({
},
themeConfig: {
externalLinkIcon: true,
logo: '/logo.png',
logo: '/images/logo-48w.png',
search: {
provider: 'local',
},
Expand Down
16 changes: 8 additions & 8 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@ hero:
name: High-quality tools for interacting with APIs
tagline: Codegen for your TypeScript projects. Trusted more than 700k times each month to generate reliable API clients and SDKs.
actions:
- theme: brand
- link: /openapi-ts/get-started
text: Get Started
link: /openapi-ts/get-started
- theme: alt
theme: brand
- link: https://stackblitz.com/edit/hey-api-example?file=openapi-ts.config.ts,src%2Fclient%2Fschemas.gen.ts,src%2Fclient%2Fsdk.gen.ts,src%2Fclient%2Ftypes.gen.ts
text: View Demo
link: https://stackblitz.com/edit/hey-api-example?file=openapi-ts.config.ts,src%2Fclient%2Fschemas.gen.ts,src%2Fclient%2Fsdk.gen.ts,src%2Fclient%2Ftypes.gen.ts
- theme: alt
theme: alt
- link: https://github.com/orgs/hey-api/discussions/1495
text: Roadmap
link: https://github.com/orgs/hey-api/discussions/1495
theme: alt
image:
src: /logo.png
alt: logo
alt: Hey API logo
src: /images/logo-640w.png

features:
- icon: <svg class="icon-openapi" width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 32"><path d="M8.96 18.397H.515l.005.123.014.238.007.102.022.275.006.061.033.304.003.03.043.327c.098.677.243 1.343.437 1.999l.003.008.1.326.006.018.093.276.025.07.087.24.04.107.078.2.06.149.065.154.086.188.05.114.105.225.035.072.126.256.02.039.154.293.033.057 7.235-4.366a5.754 5.754 0 0 1-.528-1.885ZM.914 22.27l.002.007.273-.085-.275.078ZM11.034 22.275l-5.97 5.967.092.085.255.227.203.172.055.045.232.187.03.024.255.196a.066.066 0 0 1 .01.007l1.113.752.04.024.219.13.134.076.128.072.232.126.032.017.658.32 3.213-7.805a5.719 5.719 0 0 1-.934-.623l.003.001ZM10.415 21.683l-.186-.219-.154-.199-.165-.233-.154-.241-7.22 4.349.371.584.03.044.002.003.388.547.009.011.008.011.176.229.21.261.045.055.173.203.076.087.15.171.084.092.039.042.114.12.046.047.2.204 5.956-5.956-.195-.209-.003-.003ZM18.31 22.272l-.2.154.016.025 4.342 7.209.594-.41c.42-.31.827-.645 1.22-1.007l-5.949-5.947-.023-.024ZM21.92 30.003l.01-.006-.01.006Zm-.005.003ZM21.929 29.994l.057-.028-.001-.002-.056.033v-.003Zm-.01.009-.002.001.002-.001ZM21.916 30.006l-.011-.018.01.018Zm.004-.003.01-.005-.01.005Z" fill="#fff"></path><path d="m21.837 29.719-4.2-6.97-.25.139-.256.128a5.756 5.756 0 0 1-4.106.319l-.27-.095-.27-.095-3.207 7.788.024.009.024.009.007.003.615.235a14.262 14.262 0 0 0 3.007.708l.349.038.056.005.28.023.095.006.245.014.15.006.195.007.348.004c.788 0 1.575-.066 2.352-.196l.04-.006.246-.045.143-.027.145-.03.24-.053.044-.01a14.241 14.241 0 0 0 3.398-1.267l.209-.115.424-.238-.007-.02.01.018.014-.008.056-.034-.15-.25Zm-10.8-16.335.2-.155-.015-.024-4.343-7.206-.595.41c-.42.31-.827.645-1.218 1.006l5.948 5.945.024.024ZM4.654 7.808l-.395.413c-.44.476-.841.971-1.203 1.491l-.052.075-.121.178-.123.188-.045.068a14.135 14.135 0 0 0-2.2 7.035l-.007.286-.005.285h8.424l.013-.285.016-.286a5.716 5.716 0 0 1 1.27-3.068c.058-.073.128-.142.192-.212.065-.07.124-.144.192-.212L4.654 7.808Zm17.38-2.09L22 5.695l-.224-.132-.13-.075-.132-.073-.228-.123-.036-.019a14.74 14.74 0 0 0-1.52-.686l-.04-.015-.342-.124a14.216 14.216 0 0 0-2.839-.673l-.118-.016-.119-.013-.228-.025-.064-.006-.273-.023-.342-.02-.124-.006v8.444c.433.045.862.138 1.279.279l6.216-6.211a13.96 13.96 0 0 0-.703-.461h.002ZM7.363 5.692l.147.244-.147-.244Zm0 0L7.36 5.69l.004.002Z" fill="#fff"></path><path d="m14.388 3.664-.285.005a14.24 14.24 0 0 0-1.78.184l-.04.007-.247.044-.143.027-.145.03-.24.053-.043.01a14.252 14.252 0 0 0-3.4 1.268l-.705.398v.001l4.349 7.219.25-.14a5.727 5.727 0 0 1 2.141-.657l.285-.022s.19-.01.286-.01V3.658c-.095 0-.19.003-.285.005h.002ZM28.827 17.131l-.014-.227-.007-.113-.022-.267-.006-.07-.032-.297-.002-.024-.002-.012-.043-.32-.001-.01a14.164 14.164 0 0 0-.436-1.992l-.003-.013-.094-.304-.013-.04-.091-.272-.026-.074-.086-.235-.043-.111-.075-.194-.063-.153-.063-.15-.083-.191-.049-.108-.107-.228-.033-.069-.128-.259-.018-.035-.149-.286c-.002-.003-.003-.007-.006-.01a14.217 14.217 0 0 0-.806-1.308l-6.217 6.218c.14.415.233.844.278 1.279h8.444l-.004-.125ZM20.42 17.828l-.013.285-.016.286a5.709 5.709 0 0 1-1.27 3.068c-.057.073-.128.142-.192.212s-.123.144-.191.212l5.956 5.956c.067-.068.13-.138.197-.206l.197-.207c.44-.477.843-.977 1.206-1.496l.043-.06.13-.193.113-.173.057-.084a14.13 14.13 0 0 0 2.196-7.03l.007-.285.005-.286H20.42Z" fill="#fff"></path></svg>
Expand Down
Binary file added docs/public/images/logo-150w.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/public/images/logo-16w.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/public/images/logo-32w.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/public/images/logo-48w.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/public/images/logo-640w.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/public/images/stainless-logo-1200w.jpeg
Binary file not shown.
Binary file removed docs/public/images/stainless-logo-1200w.png
Binary file not shown.
Binary file removed docs/public/images/stainless-logo-1200w.webp
Binary file not shown.
Binary file removed docs/public/images/stainless-logo-480w.jpeg
Binary file not shown.
Binary file removed docs/public/images/stainless-logo-480w.png
Binary file not shown.
Binary file removed docs/public/images/stainless-logo-480w.webp
Binary file not shown.
Binary file removed docs/public/images/stainless-logo-768w.jpeg
Binary file not shown.
Binary file removed docs/public/images/stainless-logo-768w.png
Binary file not shown.
Binary file removed docs/public/images/stainless-logo-768w.webp
Binary file not shown.
Binary file not shown.
Binary file removed docs/public/images/stainless-logo-wordmark-480w.png
Binary file not shown.
Binary file removed docs/public/images/stainless-logo-wordmark-768w.jpeg
Binary file not shown.
Binary file removed docs/public/images/stainless-logo-wordmark-768w.png
Binary file not shown.
File renamed without changes
77 changes: 58 additions & 19 deletions docs/scripts/optimize-images.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,53 @@ import path from 'node:path';

import sharp from 'sharp';

const inputDir = 'public/raw';
const outputDir = 'public/images';
const allowedImageExtensions = ['.png', '.jpg', '.jpeg', '.webp'];
const images = [
{
sizes: [
{
formats: ['png'],
width: 16,
},
{
formats: ['png'],
width: 32,
},
{
formats: ['png'],
width: 48,
},
{
formats: ['png'],
width: 150,
},
{
formats: ['png'],
width: 640,
},
],
source: 'logo.png',
},
{
sizes: [
{
formats: ['jpeg', 'webp'],
width: 480,
},
{
formats: ['webp'],
width: 768,
},
{
formats: ['png', 'webp'],
width: 1200,
},
],
source: 'stainless-logo-wordmark.png',
},
];

const supportedExtensions = ['.png', '.jpg', '.jpeg', '.webp'];
const sizes = [480, 768, 1200];
const formats = ['png', 'webp', 'jpeg'];
const outputDir = 'public/images';

if (fs.existsSync(outputDir)) {
fs.rmSync(outputDir, { force: true, recursive: true });
Expand All @@ -17,22 +58,23 @@ if (fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir, { recursive: true });

async function processImages() {
const files = fs.readdirSync(inputDir);

for (const file of files) {
const inputPath = path.join(inputDir, file);
const ext = path.extname(file).toLowerCase();
const baseName = path.basename(file, ext);
for (const image of images) {
const inputPath = path.join('public', image.source);
const ext = path.extname(image.source).toLowerCase();
const name = path.basename(image.source, ext);

if (!supportedExtensions.includes(ext)) {
if (!allowedImageExtensions.includes(ext)) {
continue;
}

console.log(`Processing ${file}...`);

for (const size of sizes) {
for (const imageSize of image.sizes) {
const size = typeof imageSize === 'object' ? imageSize.width : imageSize;
const formats =
typeof imageSize === 'object'
? imageSize.formats || image.formats
: image.formats;
for (const format of formats) {
const outputFileName = `${baseName}-${size}w.${format}`;
const outputFileName = `${name}-${size}w.${format}`;
const outputPath = path.join(outputDir, outputFileName);

let image = sharp(inputPath).resize(size).toFormat(format, {
Expand All @@ -44,12 +86,9 @@ async function processImages() {
}

await image.toFile(outputPath);

console.log(`Generated: ${outputFileName}`);
}
}
}
console.log('✅ Image optimization complete!');
}

processImages().catch((err) => {
Expand Down
2 changes: 1 addition & 1 deletion packages/client-axios/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div align="center">
<img width="150" height="150" src="https://heyapi.dev/logo.png" alt="Logo">
<img alt="Hey API logo" height="150" src="https://heyapi.dev/images/logo-150w.png" width="150">
<h1 align="center"><b>Axios Client</b></h1>
<p align="center">🚀 Axios client for `@hey-api/openapi-ts` codegen.</p>
</div>
Expand Down
2 changes: 1 addition & 1 deletion packages/client-fetch/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div align="center">
<img width="150" height="150" src="https://heyapi.dev/logo.png" alt="Logo">
<img alt="Hey API logo" height="150" src="https://heyapi.dev/images/logo-150w.png" width="150">
<h1 align="center"><b>Fetch API Client</b></h1>
<p align="center">🚀 Fetch API client for `@hey-api/openapi-ts` codegen.</p>
</div>
Expand Down
2 changes: 1 addition & 1 deletion packages/openapi-ts/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div align="center">
<img width="150" height="150" src="https://heyapi.dev/logo.png" alt="Logo">
<img alt="Hey API logo" height="150" src="https://heyapi.dev/images/logo-150w.png" width="150">
<h1 align="center"><b>OpenAPI TypeScript</b></h1>
<p align="center">🚀 The OpenAPI to TypeScript codegen. Generate clients, SDKs, validators, and more.</p>
</div>
Expand Down
Loading