mirror of
https://github.com/supabase/supabase.git
synced 2026-07-06 20:44:21 +08:00
* migrate some www components to tokens * consolidate InteractiveShimmerCard to Panel component * update tokens in blog * update tokens in careers page * update tokens in customers section * update tokens in open-source section * update tokens in Realtime page * update tokens in Storage and Vector * update tokens in SplitCodeBlockCarousel * update tokens in PGCharts * remove unused css files * update tokens in Card * update tokens in Pricing page * clean up priving page imports * remove hardcoded theme vars * migrate first half of defaultTheme.ts to tokens * migrate second half of defaultTheme.ts to tokens * improve inputs * add foreground to text-light and text-lighter * add foreground to text-light and text-lighter * migrate docs components with styling tokens * migrate docs components with styling tokens * fix broken Repos component * fix broken classes in blog * update tokens on Button and other components * update tokens on IconPanel * update studio main layout base styling tokens * update tokens across studio, docs and www * update tokens across studio, docs and www * update ui/Panel to styling tokens * update ExampleProject and TableEditorMenu tokens * www vector page tokens * update studio UI tokens * update other studio UI tokens * update more studio UI tokens * change tokens here, change tokens there * finish updating colors with tokens variables * add gui sandbox for theme experimentation * use common package for www, docs and studio and fix Command K tokens * provide light mode default tokens options * fix conflict leftover * update loading line * fix className typo * fix prettier * update themeSandbox preset default values * fix text-background0 * prettier * update warningBanner with warning color * switch all border-border with border-default * improve border-secondary and foreground-muted in light mode * force ring color on toggle * fix button bg color and border-muted light token * fix input bg color * fix dark button hover * fix homepage product card * fix code-hike table header colors * button dark border * remove tabIndex leftover from homepage main ctas --------- Co-authored-by: Kevin Grüneberg <k.grueneberg1994@gmail.com> Co-authored-by: Jonathan Summers-Muir <MildTomato@users.noreply.github.com>
131 lines
2.9 KiB
TypeScript
131 lines
2.9 KiB
TypeScript
import Image from 'next/image'
|
|
import Link from 'next/link'
|
|
import { motion } from 'framer-motion'
|
|
|
|
interface iImages {
|
|
name: string
|
|
image: string
|
|
alt?: string
|
|
link?: string
|
|
}
|
|
|
|
type colSizes = 8 | 6 | 4 | 3
|
|
type paddingSizes = 6 | 8 | 12
|
|
|
|
interface iImageGrid {
|
|
images: iImages[]
|
|
smCols?: colSizes
|
|
mdCols?: colSizes
|
|
lgCols?: colSizes
|
|
padding?: paddingSizes
|
|
className?: string
|
|
animated?: boolean
|
|
}
|
|
|
|
const ImageGrid = ({
|
|
images,
|
|
smCols = 3,
|
|
mdCols = 6,
|
|
lgCols = 8,
|
|
padding = 8,
|
|
className,
|
|
animated = false,
|
|
}: iImageGrid) => {
|
|
const smBreakpoint = {
|
|
3: 'grid-cols-3',
|
|
4: 'grid-cols-4',
|
|
6: 'grid-cols-6',
|
|
8: 'grid-cols-8',
|
|
}
|
|
|
|
const mdBreakpoint = {
|
|
3: 'md:grid-cols-3',
|
|
4: 'md:grid-cols-4',
|
|
6: 'md:grid-cols-6',
|
|
8: 'md:grid-cols-8',
|
|
}
|
|
|
|
const lgBreakpoint = {
|
|
3: 'lg:grid-cols-3',
|
|
4: 'lg:grid-cols-4',
|
|
6: 'lg:grid-cols-6',
|
|
8: 'lg:grid-cols-8',
|
|
}
|
|
|
|
const imgPadding = {
|
|
6: 'h-6 ',
|
|
8: 'h-8 ',
|
|
12: 'h-12 ',
|
|
}
|
|
|
|
return (
|
|
<div
|
|
className={`grid
|
|
gap-0.5
|
|
${smBreakpoint[smCols]}
|
|
${mdBreakpoint[mdCols]}
|
|
${lgBreakpoint[lgCols]}
|
|
`}
|
|
>
|
|
{images.map((x, i) => {
|
|
const Container = ({ children, link }: any) => {
|
|
if (x.link) {
|
|
return (
|
|
<Link href={link}>
|
|
<div className="scale-100 transform cursor-pointer duration-100 ease-in-out hover:shadow-sm">
|
|
{children}
|
|
</div>
|
|
</Link>
|
|
)
|
|
} else {
|
|
return children
|
|
}
|
|
}
|
|
|
|
const MaybeAnimatedDiv = ({ children, ...rest }: any) =>
|
|
animated ? (
|
|
<motion.div
|
|
initial={{ opacity: 0, y: 20 }}
|
|
animate={{ opacity: 1, y: 0, transition: { delay: i / 10 } }}
|
|
{...rest}
|
|
>
|
|
{children}
|
|
</motion.div>
|
|
) : (
|
|
<div {...rest}>{children}</div>
|
|
)
|
|
|
|
return (
|
|
<Container link={x.link} key={i}>
|
|
<MaybeAnimatedDiv
|
|
key={`${x.name}-${i}`}
|
|
className={`
|
|
bg-surface-200 col-span-1 flex items-center justify-center
|
|
${x.link && 'hover:bg-overlay-hover'}
|
|
p-8 ${className}`}
|
|
>
|
|
<div className={`relative h-8 w-full overflow-auto ${imgPadding[padding]}`}>
|
|
<Image
|
|
layout="fill"
|
|
src={`${x.image}`}
|
|
alt={`${x.name} logo`}
|
|
objectFit="scale-down"
|
|
objectPosition="center"
|
|
className="
|
|
bg-no-repeat
|
|
opacity-50
|
|
contrast-0
|
|
filter
|
|
"
|
|
/>
|
|
</div>
|
|
</MaybeAnimatedDiv>
|
|
</Container>
|
|
)
|
|
})}
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default ImageGrid
|