diff --git a/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__404-avatar.snap.png b/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__404-avatar.snap.png index f7a22cb9bcc..5728b3f0155 100644 Binary files a/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__404-avatar.snap.png and b/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__404-avatar.snap.png differ diff --git a/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image.snap.png b/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image.snap.png index 329641edd3c..e1420dc2d33 100644 Binary files a/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image.snap.png and b/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image.snap.png differ diff --git a/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image_escaping.snap.png b/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image_escaping.snap.png index f642e03a89c..e63d00fa49a 100644 Binary files a/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image_escaping.snap.png and b/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image_escaping.snap.png differ diff --git a/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image_minimal.snap.png b/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image_minimal.snap.png index 0d3210c6ea1..c5c09ad3266 100644 Binary files a/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image_minimal.snap.png and b/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image_minimal.snap.png differ diff --git a/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image_overflow.snap.png b/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image_overflow.snap.png index e72b0907203..61a4986dd5d 100644 Binary files a/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image_overflow.snap.png and b/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__generated_og_image_overflow.snap.png differ diff --git a/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__unicode-truncation.snap.png b/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__unicode-truncation.snap.png index fe49dd23503..57fa611f0ad 100644 Binary files a/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__unicode-truncation.snap.png and b/crates/crates_io_og_image/src/snapshots/crates_io_og_image__tests__unicode-truncation.snap.png differ diff --git a/crates/crates_io_og_image/template/assets/code-branch.svg b/crates/crates_io_og_image/template/assets/code-branch.svg index 706d1da23d7..f4707e89091 100644 --- a/crates/crates_io_og_image/template/assets/code-branch.svg +++ b/crates/crates_io_og_image/template/assets/code-branch.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/crates/crates_io_og_image/template/assets/code.svg b/crates/crates_io_og_image/template/assets/code.svg index dd6c997e3a2..e1a73651cab 100644 --- a/crates/crates_io_og_image/template/assets/code.svg +++ b/crates/crates_io_og_image/template/assets/code.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/crates/crates_io_og_image/template/assets/rust-logo.svg b/crates/crates_io_og_image/template/assets/rust-logo.svg index 2981e5e5d19..0b7ffc1c12c 100644 --- a/crates/crates_io_og_image/template/assets/rust-logo.svg +++ b/crates/crates_io_og_image/template/assets/rust-logo.svg @@ -1,4 +1,4 @@ - - + + diff --git a/crates/crates_io_og_image/template/assets/scale-balanced.svg b/crates/crates_io_og_image/template/assets/scale-balanced.svg index 2820331073a..735f1f52587 100644 --- a/crates/crates_io_og_image/template/assets/scale-balanced.svg +++ b/crates/crates_io_og_image/template/assets/scale-balanced.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/crates/crates_io_og_image/template/assets/tag.svg b/crates/crates_io_og_image/template/assets/tag.svg index cae05beda3c..29cbbfce4b9 100644 --- a/crates/crates_io_og_image/template/assets/tag.svg +++ b/crates/crates_io_og_image/template/assets/tag.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/crates/crates_io_og_image/template/assets/weight-hanging.svg b/crates/crates_io_og_image/template/assets/weight-hanging.svg index 6dd049b1733..827f869e329 100644 --- a/crates/crates_io_og_image/template/assets/weight-hanging.svg +++ b/crates/crates_io_og_image/template/assets/weight-hanging.svg @@ -1 +1 @@ - + diff --git a/crates/crates_io_og_image/template/og-image.typ b/crates/crates_io_og_image/template/og-image.typ index 04571bbbcbc..65f15cbb90f 100644 --- a/crates/crates_io_og_image/template/og-image.typ +++ b/crates/crates_io_og_image/template/og-image.typ @@ -9,6 +9,7 @@ #let colors = ( bg: oklch(97%, 0.0147, 98deg), + rust-overlay: oklch(36%, 0.07, 144deg, 20%), header-bg: oklch(36%, 0.07, 144deg), header-text: oklch(100%, 0, 0deg), primary: oklch(36%, 0.07, 144deg), @@ -91,6 +92,21 @@ }) } +// ============================================================================= +// IMAGE UTILITIES +// ============================================================================= +// Functions for loading and processing images + +// Loads an SVG icon and replaces currentColor with the specified color +// @param icon-name: The name of the SVG file (without .svg extension) +// @param color: The color to replace currentColor with +// @param width: The width of the image (default: auto) +// @param height: The height of the image (default: auto) +#let colored-image(path, color, width: auto, height: auto) = { + let svg = read(path).replace("currentColor", color.to-hex()) + image(bytes(svg), width: width, height: height) +} + // ============================================================================= // AVATAR RENDERING // ============================================================================= @@ -225,9 +241,11 @@ // Renders a metadata item with icon, title, and content #let render-metadata(title, content, icon-name) = { + let icon-path = "assets/" + icon-name + ".svg" + box(inset: (right: 20pt), grid(columns: (auto, auto), rows: (auto, auto), column-gutter: .75em, row-gutter: .5em, - grid.cell(rowspan: 2, align: horizon, image("assets/" + icon-name + ".svg", height: 1.2em)), + grid.cell(rowspan: 2, align: horizon, colored-image(icon-path, colors.primary, height: 1.2em)), text(size: 8pt, fill: colors.text-light, upper(title)), text(size: 12pt, fill: colors.primary, content) ) @@ -259,7 +277,7 @@ // Rust logo overlay (20% opacity watermark) #place(bottom + right, dx: 200pt, dy: 100pt, - image("assets/rust-logo.svg", width: 300pt) + colored-image("assets/rust-logo.svg", colors.rust-overlay, width: 300pt) ) // Main content area diff --git a/src/worker/jobs/snapshots/crates_io__worker__jobs__generate_og_image__tests__og-image.snap.png b/src/worker/jobs/snapshots/crates_io__worker__jobs__generate_og_image__tests__og-image.snap.png index efc5b0eec39..0da8004fff0 100644 Binary files a/src/worker/jobs/snapshots/crates_io__worker__jobs__generate_og_image__tests__og-image.snap.png and b/src/worker/jobs/snapshots/crates_io__worker__jobs__generate_og_image__tests__og-image.snap.png differ