From f3582ed1973fca6fb8c85f3f6000becbd46e7f33 Mon Sep 17 00:00:00 2001 From: Waleed Date: Fri, 10 Jul 2026 20:44:55 -0700 Subject: [PATCH] feat(branding): sim wordmark favicon/OG, docs footer parity, footer peel (#5587) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(branding): sim wordmark favicon/OG, docs footer parity, footer peel - replace apps/sim favicon and default OG image with the sim wordmark logo (OG image widened, logo kept at native size) - swap the docs navbar logo to the icon-only mark (no wordmark text) - add a scroll "peel" reveal effect to the landing footer using a sticky-positioned illustration, pure CSS, no scroll listeners - port the same footer (link directory + peel effect) to the docs app so both apps are visually consistent; add Academy to Resources - rebuild the docs OG image template to match the site's existing blog/library cover style (wordmark top-left, arrow top-right, title bottom-left), working around a Satori text-measurement bug that doubled the gap after certain words * fix(docs): correct OG font, mobile logo, and footer stacking - switch the docs OG image title font from Geist to the site's real brand font (Season Sans), instantiated as a static TTF weight since Satori can't parse WOFF2 or variable fonts; served from /static/ so the i18n proxy's matcher (which excludes static but not fonts) doesn't intercept it - fix DocsLayout's nav.title (fumadocs' own mobile menu slot) to show the wordmark instead of the icon mark - add an isolated stacking context + higher z-index to both the docs and sim app footers so fumadocs' sticky z-20 sidebar can't paint over the footer content or the peel reveal * fix(docs): match OG template exactly, fix gradient/origin bugs - recalibrate the OG image to the reference cover template's actual measured values: 1200x675 canvas (was 630), ~26px margins (was 56-64px), ink #525252 (was #3f3f3f), larger wordmark/arrow/title sizing — confirmed by direct pixel measurement of the reference cover.jpg, not estimation - fix SimLogoIcon/SimLogoFull's SVG gradient ids to be unique via useId() instead of a fixed string, so multiple instances on one page don't collide (Greptile P2) - fix SIM_SITE_URL to be a hardcoded sim.ai constant instead of deriving from NEXT_PUBLIC_APP_URL, which reflects wherever this deployment runs, not the fixed public marketing site (Greptile P1) * fix(docs): route Jira footer link to the docs guide, not sim.ai Every other integration in the footer's Integrations column links to its own docs.sim.ai guide; Jira was the only one pointing at the marketing site's landing page instead, despite docs having its own /integrations/jira guide. Matches the established pattern. * fix(docs): fix sidebar-divider grid regression, footer-peel path/positioning, OG sizing, and prune stray comments - #nd-docs-layout::before divider now spans the full grid explicitly (grid-row/grid-column: 1 / -1) instead of being auto-placed into a real content cell, which was pushing page content down - footer-peel.jpg moved under /static/landing/ (was 404ing behind the i18n proxy's non-static path matcher) and wrapped in a relative div so next/image's fill positioning is valid under the sticky container - OG route: corrected title font sizes and char-width ratio so long titles wrap to 2 lines instead of 3, and resized the corner arrow to match the reference cover template's proportions - swapped the icon-only desktop navbar logo back to the wordmark - removed stray non-TSDoc comments, folded into TSDoc where the explanation was worth keeping * fix(footer): remove sticky peel reveal, keep clean footer link directory The peel's "reveal window" relied on position: sticky bottom-detaching into a containing block whose extra height came from padding-bottom — that combination doesn't reliably work in WebKit/Safari (sticky never gets room to engage when the surplus height is padding rather than an explicit height or content), so the peel stayed permanently covered by the footer regardless of viewport size. Rather than carry that unreliable technique further, removing it entirely from both apps and reverting to the plain footer link directory. --- apps/docs/app/[lang]/[[...slug]]/page.tsx | 2 +- apps/docs/app/[lang]/layout.tsx | 6 +- apps/docs/app/api/og/route.tsx | 171 +++++++++++------- apps/docs/app/global.css | 14 +- apps/docs/app/layout.tsx | 2 +- apps/docs/components/footer/footer.tsx | 160 ++++++++++++++++ apps/docs/components/navbar/navbar.tsx | 6 +- apps/docs/components/ui/sim-logo.tsx | 80 +++++++- apps/docs/lib/urls.ts | 8 + .../static/fonts/SeasonSans-600-static.ttf | Bin 0 -> 158484 bytes .../public/favicon/android-chrome-192x192.png | Bin 2617 -> 5550 bytes .../public/favicon/android-chrome-512x512.png | Bin 2783 -> 18335 bytes apps/sim/public/favicon/apple-touch-icon.png | Bin 4342 -> 5102 bytes apps/sim/public/favicon/favicon-16x16.png | Bin 425 -> 432 bytes apps/sim/public/favicon/favicon-32x32.png | Bin 814 -> 840 bytes apps/sim/public/favicon/favicon-96x96.png | Bin 2271 -> 2626 bytes apps/sim/public/favicon/favicon.ico | Bin 15086 -> 4414 bytes apps/sim/public/favicon/favicon.svg | 4 +- .../favicon/web-app-manifest-192x192.png | Bin 4531 -> 5550 bytes .../favicon/web-app-manifest-512x512.png | Bin 12945 -> 18335 bytes apps/sim/public/icon.svg | 2 +- .../sim/public/logo/426-240/reverse/small.png | Bin 30221 -> 19956 bytes 22 files changed, 375 insertions(+), 80 deletions(-) create mode 100644 apps/docs/components/footer/footer.tsx create mode 100644 apps/docs/public/static/fonts/SeasonSans-600-static.ttf diff --git a/apps/docs/app/[lang]/[[...slug]]/page.tsx b/apps/docs/app/[lang]/[[...slug]]/page.tsx index 86539c5230..249d8d8a1a 100644 --- a/apps/docs/app/[lang]/[[...slug]]/page.tsx +++ b/apps/docs/app/[lang]/[[...slug]]/page.tsx @@ -323,7 +323,7 @@ export async function generateMetadata(props: { { url: ogImageUrl, width: 1200, - height: 630, + height: 675, alt: data.title, }, ], diff --git a/apps/docs/app/[lang]/layout.tsx b/apps/docs/app/[lang]/layout.tsx index 869919d2a4..f7dadc59af 100644 --- a/apps/docs/app/[lang]/layout.tsx +++ b/apps/docs/app/[lang]/layout.tsx @@ -9,8 +9,9 @@ import { SidebarItem, SidebarSeparator, } from '@/components/docs-layout/sidebar-components' +import { Footer } from '@/components/footer/footer' import { Navbar } from '@/components/navbar/navbar' -import { SimLogoFull } from '@/components/ui/sim-logo' +import { SimWordmark } from '@/components/ui/sim-logo' import { i18n } from '@/lib/i18n' import { serializeJsonLd } from '@/lib/json-ld' import { source } from '@/lib/source' @@ -101,7 +102,7 @@ export default async function Layout({ children, params }: LayoutProps) { , + title: , }} sidebar={{ tabs: false, @@ -121,6 +122,7 @@ export default async function Layout({ children, params }: LayoutProps) { > {children} +