mirror of
https://github.com/supabase/supabase.git
synced 2026-10-12 21:05:06 +03:00
+9







![coderabbitai[bot]](/assets/img/avatar_default.png)
a469504f21
* wip * wip * single page * new sections and polishing up * reponsive * nits * semantic titles * optimize imgs * nits * wup * hero bubbles * Update apps/www/components/Wrapped/Pages/SupabaseSelect.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: Use `amaro` for stripping types in code samples (#41229) * Fix the error for babel/preset-typescript in docs. * Unfix the version. * Try using amaro for type stripping. * Run prettier after stripping types. * Fix tests. --------- Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com> * fix: Fix minor issue in the foreign key selector (#41235) Change the isPending state to isLoading. * docs: Remove empty troubleshooting fields (#41236) * Remove emoty fields * Fix lock file * chore: update self-hosted image versions (#41234) * Feature: show index advisor in table editor (#41166) * added table advisor query * updated to include table editor performance * updated JSON B * added side panel * updated query indexes to show highlights context * show index advisor in table editor * updated invalidation logic * added color updates * added query indexes * updated query performance type * updated overflow and title * put behind flag * remove gap * added on close * Update apps/studio/data/database/table-index-advisor-query.ts Co-authored-by: Charis <26616127+charislam@users.noreply.github.com> * updated styling --------- Co-authored-by: Charis <26616127+charislam@users.noreply.github.com> * fix: useFlag to update initial check of flag store (#41209) * fix flag lib * updated uneeded logic * updated logic * remove line * updated comment * fix: Hide favourites and share snippets on self-hosted variant (#41227) * Hide favorite and share actions for self-hosted version. * Rename the query on save only on platform. * Simplify useCheckOpenAiKeyQuery. * Rename with AI now depends if the OPENAI_API_KEY is set. * Minor fixes. * Fix the tests to use .skip for skipping tests. Remove extra port params. * Make the test for favourites work only on platform variant. * feat(reports): support new database report granularity FE-2221 (#41228) * handle new granularity * undo unnecessary type change * rm console log * fix: blog auto scroll post app router migration for blog (#41220) Enhance TOC highlighting and anchor scroll in blog posts Refactored useActiveAnchors hook to support smooth hash scrolling and improved TOC highlighting based on scroll position. Added options for custom selectors and offset, and updated BlogPostClient to enable scroll-to-anchor and TOC highlight functionality. * fix: remove flakiness with launch options and default timeouts (#41245) * attempt to make table editor tests less flaky * updated race conditions for table editor * updated playwright config with optimized launch options * reduce workers * updated timeouts for tests * updated config to have a global timeout of 20 seconds * updated to be visible * chore: update changelog and image versions file (#41244) * feat(design-system): improve table docs (#41215) * docs updates * docs expansion * minor docs fix * improvements * fix dependencies * docs expansion * more table examples * map over data * improve copy * Update apps/design-system/registry/default/example/table-row-link-actions.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update apps/design-system/registry/default/example/table-row-link-actions.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fixes * fix --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * chore(studio): improve table presentation (#41217) * billing improvements * wrapper improvements * border fix * Nit adjustments * fixes * fix aria * fix loading * fixes * fix --------- Co-authored-by: Joshen Lim <joshenlimek@gmail.com> * Save opened side bar in local storage, and init on new session (#41224) * Save opened side bar in local storage, and init on new session * Fix test * Fix * Nit * docs(design-system): Data Table and Data Grid documentation (#41252) * basic differentiation * docs * data-grid examples * data-grid-demo * data-table * demo * use existing components * improvements * markup * docs * remove data table * lint * Update apps/design-system/content/docs/ui-patterns/empty-states.mdx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix ref * use TanStack sorting * grammar * dependency * 📝 Add docstrings to `dnywh/docs/data-table-data-grid` (#41255) Docstrings generation was requested by @MildTomato. * https://github.com/supabase/supabase/pull/41252#issuecomment-3640781017 The following files were modified: * `apps/design-system/registry/default/example/data-grid-demo.tsx` * `apps/design-system/registry/default/example/data-grid-empty-state.tsx` * `apps/design-system/registry/default/example/data-table-demo.tsx` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * docs: fix grammatical error in generate-text-embeddings guide (#41187) * docs: fix grammatical error in generate-text-embeddings guide * Update generate-text-embeddings.mdx Co-authored-by: Chris Chinchilla <chris@chrischinchilla.com> --------- Co-authored-by: Chris Chinchilla <chris@chrischinchilla.com> * chore: uniform card and panel padding-x (#41237) * docs: Fix typo in API introduction documentation (#41251) * chore(billing): regenerate api-types to include vanity subdomain entitlement (#41257) chore(billing: regenerate api-types to include vanity subdomain entitlement * Add liam to humans.txt (#41169) * docs: Add link to restoring backup to new Supabase project (#39108) Co-authored-by: Chris Chinchilla <chris.ward@supabase.io> * feat(code-block): add word wrap functionality and controls to code bl… (#39689) * feat(code-block): add word wrap functionality and controls to code blocks * feat(code-block): enhance layout of code block with improved line number display and structure * fix h-full issue * fix Prettier issue --------- Co-authored-by: Chris Chinchilla <chris.ward@supabase.io> * wip * wip * single page * optimize imgs * revert * pkg * update new content * rm overflow * new data * nits * nits * og * border * fix: improve AnimatedCounter and FloatingStatBubbles/Intro components - Update AnimatedCounter to correctly reflect value changes in the DOM. - Add lifetime management for timers in FloatingStatBubbles and FloatingBoxes to prevent memory leaks. - Ensure cleanup of timers on component unmount for better resource management. * dbs * minify images * text-brand-link on light mode * fix grid * max-width on images * address comments * fixes * faster image rotation * upd og * new launch * nitsgs * last nits --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com> Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com> Co-authored-by: Chris Chinchilla <chris.ward@supabase.io> Co-authored-by: Andrey A. <56412611+aantti@users.noreply.github.com> Co-authored-by: Ali Waseem <waseema393@gmail.com> Co-authored-by: Jordi Enric <37541088+jordienr@users.noreply.github.com> Co-authored-by: Jonathan Summers-Muir <MildTomato@users.noreply.github.com> Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com> Co-authored-by: Joshen Lim <joshenlimek@gmail.com> Co-authored-by: Dinesh Dawonauth <dineshddawo@gmail.com> Co-authored-by: Chris Chinchilla <chris@chrischinchilla.com> Co-authored-by: Francesco Sansalvadore <f.sansalvadore@gmail.com> Co-authored-by: 李子衿 <160584929+hhhez@users.noreply.github.com> Co-authored-by: Kanishk Dudeja <kanishk@kanishkdudeja.com> Co-authored-by: lch-supa <liam.hogan@supabase.io> Co-authored-by: Timothy Lim <tim.lim@supabase.io> Co-authored-by: Priyanshu Thapliyal <114170980+Priyanshuthapliyal2005@users.noreply.github.com>
166 lines
6.3 KiB
TypeScript
166 lines
6.3 KiB
TypeScript
'use client'
|
|
|
|
import Link from 'next/link'
|
|
import { cn } from 'ui'
|
|
import { AnimatedGridBackground } from '../AnimatedGridBackground'
|
|
import {
|
|
DerivLogo,
|
|
JuniverLogo,
|
|
KayhanSpaceLogo,
|
|
PhoenixEnergyLogo,
|
|
RallyLogo,
|
|
ResendLogo,
|
|
SoshiLogo,
|
|
} from '../Logos'
|
|
|
|
const testimonials = [
|
|
{
|
|
quote:
|
|
'We needed a system that could handle serious performance and security requirements — without slowing down our developers. Supabase has given us both.',
|
|
author: 'Kris Woods',
|
|
company: 'Phoenix Energy',
|
|
url: 'https://supabase.com/customers/phoenix-energy',
|
|
logo: <PhoenixEnergyLogo className="w-32" />,
|
|
},
|
|
{
|
|
quote:
|
|
"We could not have built this company without Supabase. If I had to go and build all these components myself, we wouldn't even have launched.",
|
|
author: 'Thiago Peres',
|
|
company: 'Rally',
|
|
url: 'https://supabase.com/customers/rally',
|
|
logo: <RallyLogo className="w-32" />,
|
|
},
|
|
{
|
|
quote:
|
|
'We used Supabase at the hackathon because it let us go from idea to MVP in under two days. Then it took only a couple of months to turn that janky MVP into a production-ready application.',
|
|
author: 'Elijah Muraoka',
|
|
company: 'Soshi',
|
|
url: 'https://supabase.com/customers/soshi',
|
|
logo: <SoshiLogo className="w-32" />,
|
|
},
|
|
{
|
|
quote:
|
|
"It's literally a night and day difference compared to Amazon RDS. With Supabase and Next.js, it's been very smooth and very fast to get new features out.",
|
|
author: 'Hyun S',
|
|
company: 'Kayhan Space',
|
|
url: 'https://supabase.com/customers/kayhanspace',
|
|
logo: <KayhanSpaceLogo className="w-24" />,
|
|
},
|
|
{
|
|
quote:
|
|
'Supabase enabled us to focus on building the best email infrastructure for developers—without worrying about backend complexity. Their authentication, database, and support have been game-changers for our rapid growth.',
|
|
author: 'Zeno Rocha',
|
|
company: 'Resend',
|
|
url: 'https://supabase.com/customers/resend',
|
|
logo: <ResendLogo className="w-32" />,
|
|
},
|
|
{
|
|
quote:
|
|
"What set Supabase apart for us was its feature set and how these features worked together cohesively to create a comprehensive environment. The platform's focus on security, performance, and developer experience aligned perfectly with our needs.",
|
|
author: 'Raunak Kathuria',
|
|
company: 'Deriv',
|
|
url: 'https://supabase.com/customers/deriv',
|
|
logo: <DerivLogo className="w-32" />,
|
|
},
|
|
{
|
|
quote:
|
|
"For me, the biggest benefit of Supabase is developer experience. My expertise doesn't lie in databases and infrastructure. It really didn't take much time at all to spin up this product with Supabase.",
|
|
author: 'Nick Farrant',
|
|
company: 'Juniver',
|
|
url: 'https://supabase.com/customers/juniver',
|
|
logo: <JuniverLogo className="w-32" />,
|
|
},
|
|
]
|
|
|
|
export const CustomerStories = () => {
|
|
const cols = 2
|
|
|
|
return (
|
|
<>
|
|
<section className="relative max-w-[60rem] h-[240px] md:h-[360px] mx-auto border-x border-b w-[95%] md:w-full">
|
|
{/* Grid background */}
|
|
<AnimatedGridBackground
|
|
cols={5}
|
|
rows={{ mobile: 2, desktop: 3 }}
|
|
tiles={[
|
|
{ cell: 3, type: 'dots' },
|
|
{ cell: 4, type: 'dots' },
|
|
{ cell: 6, type: 'stripes' },
|
|
{ cell: 9, type: 'stripes' },
|
|
]}
|
|
initialDelay={0.35}
|
|
/>
|
|
|
|
{/* Content */}
|
|
<div className="flex flex-col justify-end h-full px-4 lg:px-8 py-0 relative">
|
|
<h2 className="font-medium tracking-tighter text-6xl md:text-7xl lg:text-[5.6rem] -mt-4 translate-y-2 lg:translate-y-[10px]">
|
|
Customer Stories
|
|
</h2>
|
|
</div>
|
|
</section>
|
|
|
|
{/* NOTE (Alan): extra padding here to optically align subheading with header */}
|
|
<div className="relative max-w-[60rem] mx-auto border-x border-b px-6 lg:px-10 py-12 w-[95%] md:w-full">
|
|
<h3 className="text-lg">Customers count on Supabase.</h3>
|
|
</div>
|
|
|
|
{/* Testimonials grid */}
|
|
<div className="relative max-w-[60rem] mx-auto border-x border-b w-[95%] md:w-full">
|
|
<div className="grid grid-cols-1 lg:grid-cols-2">
|
|
{(() => {
|
|
const remainder = testimonials.length % cols
|
|
const emptyCells = remainder === 0 ? 0 : cols - remainder
|
|
const totalItems = testimonials.length + emptyCells
|
|
|
|
return (
|
|
<>
|
|
{testimonials.map((testimonial, index) => (
|
|
<Link
|
|
key={testimonial.company}
|
|
href={testimonial.url}
|
|
className={cn(
|
|
'group px-6 py-8 lg:border-r border-muted lg:[&:nth-child(2n)]:border-r-0 hover:bg-surface-75 transition-colors',
|
|
index < totalItems - 2 ? 'border-b' : 'lg:border-b-0',
|
|
index < totalItems - 1 ? 'border-b' : 'border-b-0'
|
|
)}
|
|
>
|
|
<div className="grid grid-rows-[44px_1fr_auto] gap-6 h-full">
|
|
{/* Logo placeholder */}
|
|
{testimonial.logo}
|
|
|
|
{/* Quote */}
|
|
<blockquote className="flex-1">
|
|
<p className="text-base text-foreground-light italic leading-relaxed">
|
|
"{testimonial.quote}"
|
|
</p>
|
|
</blockquote>
|
|
|
|
{/* Author */}
|
|
<div className="flex items-center justify-between">
|
|
<p className="text-sm text-foreground-lighter">
|
|
{testimonial.author},{' '}
|
|
<span className="text-foreground">{testimonial.company}</span>
|
|
</p>
|
|
<span className="text-foreground-muted group-hover:text-foreground transition-colors">
|
|
→
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</Link>
|
|
))}
|
|
|
|
{Array.from({ length: emptyCells }).map((_, i) => (
|
|
<div
|
|
key={`empty-${i}`}
|
|
className="px-6 py-8 border-r border-muted last:border-r-0"
|
|
/>
|
|
))}
|
|
</>
|
|
)
|
|
})()}
|
|
</div>
|
|
</div>
|
|
</>
|
|
)
|
|
}
|