Files
supabase/apps/www/components/Enterprise/CTAForm.tsx
T
Danny White 2e7a8a3362 chore(www): rename customer logo folders to on-dark and on-light (#48962)
## What kind of change does this PR introduce?

Chore: rename customer logo folders and document the theme contract. No
intended visual change, aside from Phoenix Energy whose two marks were
in the wrong folders.

## What is the current behavior?

Customer logos live at:

- `/images/customers/logos/{slug}.png` (`logo`, light mode)
- `/images/customers/logos/light/{slug}.png` (`logo_inverse`, dark mode)

`light/` actually means “use me on a dark background”.

## What is the new behavior?

Same assets, clearer paths:

- `/images/customers/logos/on-light/{slug}.png` → dark/black mark →
`logo` → light mode
- `/images/customers/logos/on-dark/{slug}.png` → light/white mark →
`logo_inverse` → dark mode

Icon chips stay at `/images/customers/logos/{slug}-icon.svg`. Old
`/images/customers/logos/light/*` URLs redirect to `on-dark`. www README
now has the contract.

# To test

Use the [www
preview](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app).
Toggle light/dark from the site header on each page. Logos should stay
readable (no white-on-white or black-on-black).

1. [Customers
grid](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/customers)
— main `logo` / `logo_inverse` surface. Spot-check Juniver, Phoenix
Energy, and one other card.
2. [Phoenix Energy
story](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/customers/phoenix-energy)
— story header uses `logo` only (on-light, plus a dark-mode brightness
filter). We swapped this pair.
3.
[Homepage](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/)
— “How industry leaders…” section. Icon chips only (`*-icon.svg`); the
wordmark `logo` field is unused here.
4. [Solutions /
Agents](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/solutions/agents)
— Chatbase quote near the top shows both theme variants. Same pattern on
[/healthcare](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/solutions/healthcare),
[/finserv](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/solutions/finserv),
and
[/b2b-saas](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/solutions/b2b-saas).
5. [Contact
sales](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/contact/sales)
— Good Tape / Xendit / Chatbase wordmarks (`on-light`). Same logos on
the demo form at
[/solutions/enterprise](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/solutions/enterprise).
6.
[Enterprise](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/solutions/enterprise)
— Mozilla / Epsilon3 / Pebblely icons in the use-cases section
(`on-dark`).
7.
[Vector](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/modules/vector)
— customer quotes. This is the only page that builds `on-light` /
`on-dark` paths at runtime from the customer slug.
8. [Mobbin
event](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/events/migrating-from-firebase-mobbin)
— company logo uses event `logo` / `logo_light` (dark vs light).
Optional second:
[/events/scale-to-millions-goodtape-auth](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/events/scale-to-millions-goodtape-auth).

Quick extra: hover **Product** in the site nav. The customer story
thumbnail uses `imgUrl` (`on-light`).

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

## Documentation
- Clarified customer logo requirements, including separate light and
dark asset locations, monochrome formats, and dark PNG assets for image
generation.

## Updates
- Standardized customer logos across stories, events, sales pages,
solution pages, testimonials, and generated images.
- Improved logo rendering across light and dark themes with dedicated
variants.
- Added permanent redirects for legacy logo URLs while preserving
filename suffixes.

## Tests
- Added coverage verifying legacy logo redirects resolve correctly,
including supported exceptions.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-08-12 03:49:21 +00:00

114 lines
3.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import React, { FC } from 'react'
import SectionContainer from '~/components/Layouts/SectionContainer'
import { CustomerLogo, CustomerQuote } from '../../pages/contact/sales'
import EnterpriseFormQuotes from '../EnterpriseFormQuotes'
import RequestADemoForm from '../Forms/RequestADemoForm'
interface Props {}
const UseCases: FC<Props> = (props) => {
return (
<SectionContainer className="text grid gap-8 lg:gap-12 md:grid-cols-2">
<div className="lg:pb-8 md:h-full w-full flex flex-col justify-between gap-2">
<div className="flex flex-col gap-2 md:max-w-md">
<h1 className="h1 m-0!">Request a demo</h1>
<p className="md:text-lg text-foreground-lighter">
We can take your requirements and show you how Supabase can help you achieve your goals.
</p>
</div>
<EnterpriseFormQuotes
className="hidden md:flex"
tabs={[
{
label: (
<CustomerLogo
title="Goodtape"
logo="/images/customers/logos/on-light/good-tape.png"
/>
),
panel: (
<CustomerQuote
quote="My biggest regret is not having gone with Supabase from the beginning."
author="Jakob Steinn, Co-founder & Tech Lead, Good Tape"
/>
),
},
{
label: (
<CustomerLogo title="Xendit" logo="/images/customers/logos/on-light/xendit.png" />
),
panel: (
<CustomerQuote
quote="The full solution was built and in production in less than one week."
author="Developer, Xendit"
/>
),
},
{
label: (
<CustomerLogo
title="Chatbase"
logo="/images/customers/logos/on-light/chatbase.png"
/>
),
panel: (
<CustomerQuote
quote="Supabase is great because it has everything. I don’t need a different solution for authentication, a different solution for database, or a different solution for storage."
author="Yasser Elsaid, Founder, Chatbase"
className="max-w-none"
/>
),
},
]}
/>
</div>
<RequestADemoForm />
<EnterpriseFormQuotes
className="md:hidden mt-4"
tabs={[
{
label: (
<CustomerLogo
title="Goodtape"
logo="/images/customers/logos/on-light/good-tape.png"
/>
),
panel: (
<CustomerQuote
quote="My biggest regret is not having gone with Supabase from the beginning."
author="Jakob Steinn Co-founder & Tech Lead"
/>
),
},
{
label: (
<CustomerLogo title="Xendit" logo="/images/customers/logos/on-light/xendit.png" />
),
panel: (
<CustomerQuote
quote="The full solution was built and in production in less than one week."
author="Xendit developer"
/>
),
},
{
label: (
<CustomerLogo title="Chatbase" logo="/images/customers/logos/on-light/chatbase.png" />
),
panel: (
<CustomerQuote
quote="Supabase is great because it has everything. I don’t need a different solution for authentication, a different solution for database, or a different solution for storage."
author="Yasser Elsaid, Founder, Chatbase"
className="max-w-none"
/>
),
},
]}
/>
</SectionContainer>
)
}
export default UseCases