mirror of
https://github.com/supabase/supabase.git
synced 2026-10-18 15:49:09 +03:00
chore: add lw7 links in blog post
This commit is contained in:
1 parent
00d694c66a
commit
08c596048b
10 files changed
+321
-120
No files matched your search
@@ -0,0 +1,136 @@
|
||||
import Image from 'next/image'
|
||||
import React from 'react'
|
||||
import days from '~/components/LaunchWeek/lw7_days'
|
||||
|
||||
const BlogLinks = () => {
|
||||
const SectionButtons = ({
|
||||
blog,
|
||||
docs,
|
||||
video,
|
||||
}: {
|
||||
blog: string
|
||||
docs?: string
|
||||
video?: string
|
||||
}) => {
|
||||
return (
|
||||
<div className="flex gap-2 z-10">
|
||||
<a href={blog} target="_blank" rel="noopener">
|
||||
<div className="flex items-center border border-slate-400 bg-gradient-to-r from-[#fcfcfc] to-[#f2f2f2] hover:to-[#d5d5d5] text-black dark:text-white dark:from-[#191919] dark:to-[#464444] dark:hover:to-[#4e4e4e] rounded-full text-sm py-2 pl-3 pr-2">
|
||||
Blog post
|
||||
<div className="bg-[#eeeeee] dark:bg-[#313131] rounded-full inline-block p-1 ml-2">
|
||||
<PencilSvg />
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{docs && (
|
||||
<a href={docs} target="_blank" rel="noopener">
|
||||
<div className="flex items-center border border-slate-400 bg-gradient-to-r from-[#fcfcfc] to-[#f2f2f2] hover:to-[#d5d5d5] text-black dark:text-white dark:from-[#191919] dark:to-[#464444] dark:hover:to-[#4e4e4e] rounded-full text-sm py-2 pl-3 pr-2">
|
||||
Docs
|
||||
<div className="bg-[#eeeeee] dark:bg-[#313131] rounded-full inline-block p-1 ml-2">
|
||||
<DocsSvg />
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
)}
|
||||
{video && (
|
||||
<a href={video} target="_blank" rel="noopener">
|
||||
<div className="flex items-center border border-slate-400 bg-gradient-to-r from-[#fcfcfc] to-[#f2f2f2] hover:to-[#d5d5d5] text-black dark:text-white dark:from-[#191919] dark:to-[#464444] dark:hover:to-[#4e4e4e] rounded-full text-sm py-2 pl-3 pr-2">
|
||||
Video
|
||||
<div className="bg-[#eeeeee] dark:bg-[#313131] rounded-full inline-block p-1 ml-2">
|
||||
<PlaySvg />
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
const activeDays = days.filter((day) => Date.parse(day.publishedAt) <= Date.now())
|
||||
|
||||
if (!activeDays.length) return null
|
||||
|
||||
return (
|
||||
<div className="flex flex-col items-center gap-4 lg:gap-6">
|
||||
<h3 className="text-white text-xl">More Launch Week 7</h3>
|
||||
{activeDays.map((day) => (
|
||||
<div
|
||||
className={`h-[150px] w-full flex flex-col lg:flex-row group/day${day.d} relative overflow-hidden`}
|
||||
>
|
||||
<div
|
||||
className={`
|
||||
flex flex-col flex-1 gap-3 items-start justify-center border rounded-xl h-full relative overflow-hidden
|
||||
px-6 lg:px-10 py-4 text-2xl
|
||||
before:absolute before:w-full before:h-full before:top-52 before:right-0 before:bottom-0 before:left-0
|
||||
before:border-[#1f3536] before:-z-10
|
||||
`}
|
||||
>
|
||||
<div className="flex items-center lg: justify-between flex-col-reverse lg:flex-row lg:justify-start gap-2 text-black dark:text-white">
|
||||
<div>{day.title}</div>
|
||||
</div>
|
||||
<SectionButtons
|
||||
docs={day.steps[0].docs}
|
||||
blog={day.steps[0].blog}
|
||||
video={'https://www.youtube.com/watch?v=Q1Amk6iDlF8&ab_channel=Supabase'}
|
||||
/>
|
||||
</div>
|
||||
{day.steps[0].thumb && (
|
||||
<Image
|
||||
src={day.steps[0].thumb}
|
||||
className={`
|
||||
absolute group-hover/day${day.d}:scale-105 opacity-90
|
||||
group-hover/day${day.d}:opacity-100
|
||||
w-full h-full -z-10 transition-all duration-300
|
||||
`}
|
||||
layout="fill"
|
||||
objectPosition="100% 50%"
|
||||
objectFit="contain"
|
||||
/>
|
||||
)}
|
||||
<div
|
||||
className={`absolute group-hover/day${day.d}:scale-105 opacity-10 group-hover/day${day.d}:opacity-100 w-full h-full -z-10 transition-all duration-300`}
|
||||
style={{
|
||||
background: `radial-gradient(650px 150px at 50% 100%, #4635A730, transparent)`,
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
const PencilSvg = () => (
|
||||
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M3.21792 11.2469L11.8015 2.66333L14.0953 4.95709L5.51167 13.5407M3.21792 11.2469L2.34219 14.4164L5.51167 13.5407M3.21792 11.2469L5.51167 13.5407"
|
||||
// stroke="#6453C5"
|
||||
stroke="#A69DC9"
|
||||
strokeMiterlimit="10"
|
||||
strokeLinejoin="bevel"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
const DocsSvg = () => (
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M4.96289 9.48618H10.9629M4.96289 7.48618H10.9629M4.96289 11.4862H8.96289M3 2.00034V13.9998H12.9996V5.60113L9.38156 2.00034H3ZM12.9644 5.58432L9.38004 2L9.38004 5.58432L12.9644 5.58432Z"
|
||||
// stroke="#6453C5"
|
||||
stroke="#A69DC9"
|
||||
strokeMiterlimit="10"
|
||||
stroke-linejoin="bevel"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
const PlaySvg = () => (
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M13.4287 8L8.74762 10.7026L4.06653 13.4053L4.06653 8L4.06653 2.59474L8.74762 5.29737L13.4287 8Z"
|
||||
// stroke="#6453C5"
|
||||
stroke="#A69DC9"
|
||||
strokeMiterlimit="10"
|
||||
strokeLinejoin="bevel"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
|
||||
export default BlogLinks
|
||||
@@ -1,114 +0,0 @@
|
||||
[
|
||||
{
|
||||
"title": "Docs Updated",
|
||||
"shipped": true,
|
||||
"date": "12 Dec 2022",
|
||||
"description": "Supabase Docs",
|
||||
"d": 1,
|
||||
"dd": "Monday",
|
||||
"youtube_id": "OpPOaJI_Z28",
|
||||
"blogpost": "https://supabase.com/blog/new-supabase-docs-built-with-nextjs",
|
||||
"docs": "https://supabase.com/docs",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Supabase Docs",
|
||||
"blog": "/blog/new-supabase-docs-built-with-nextjs",
|
||||
"docs": "/docs",
|
||||
"isNew": true,
|
||||
"description": ""
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Image Processing: Resize V2 + CDN",
|
||||
"shipped": true,
|
||||
"date": "13 Dec 2022",
|
||||
"description": "Image Transformations",
|
||||
"d": 2,
|
||||
"dd": "Tuesday",
|
||||
"youtube_id": "iqZlPtl_b-I",
|
||||
"blogpost": "https://supabase.com/blog",
|
||||
"docs": "https://supabase.com/docs",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Image Transformations",
|
||||
"blog": "/blog/storage-image-resizing-smart-cdn",
|
||||
"docs": "/docs/guides/storage/image-transformations",
|
||||
"isNew": true,
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"title": "Smart CDN",
|
||||
"description": "Faster asset delivery, now even faster.",
|
||||
"blog": "/blog/storage-image-resizing-smart-cdn",
|
||||
"docs": "/docs/guides/storage/cdn",
|
||||
"isNew": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Multi-factor Authentication",
|
||||
"shipped": true,
|
||||
"date": "14 Dec 2022",
|
||||
"description": "Multi-factor Authentication",
|
||||
"d": 3,
|
||||
"dd": "Wednesday",
|
||||
"youtube_id": "CGZr5tybW18",
|
||||
"blogpost": "https://supabase.com/blog",
|
||||
"docs": "https://supabase.com/docs",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Multi-factor Authentication",
|
||||
"blog": "/blog/mfa-auth-via-rls",
|
||||
"docs": "/docs/guides/auth/auth-mfa",
|
||||
"isNew": false,
|
||||
"description": ""
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Supabase Wrappers - FDW Framework",
|
||||
"shipped": true,
|
||||
"date": "15 Dec 2022",
|
||||
"description": "Supabase Wrappers",
|
||||
"d": 4,
|
||||
"dd": "Thursday",
|
||||
"youtube_id": "QA2qC5F-4OU",
|
||||
"blogpost": "/blog/postgres-foreign-data-wrappers-rust",
|
||||
"docs": "https://supabase.com/docs",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Supabase Wrappers",
|
||||
"blog": "/blog/postgres-foreign-data-wrappers-rust",
|
||||
"docs": "https://supabase.github.io/wrappers/",
|
||||
"isNew": true,
|
||||
"description": "Connect Postgres to external systems with Postgres Foreign Data Wrappers"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Supabase Vault Release",
|
||||
"shipped": true,
|
||||
"date": "16 Dec 2022",
|
||||
"description": "Vault Release",
|
||||
"d": 5,
|
||||
"dd": "Friday",
|
||||
"youtube_id": "6bGQotxisoY",
|
||||
"blogpost": "https://supabase.com/blog",
|
||||
"docs": "https://supabase.com/docs",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Vault Release",
|
||||
"blog": "/blog/vault-now-in-beta",
|
||||
"isNew": true,
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"title": "Transparent Column Encryption",
|
||||
"description": "Faster asset delivery, now even faster.",
|
||||
"blog": "/blog/transparent-column-encryption-with-postgres",
|
||||
"isNew": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,176 @@
|
||||
export interface WeekDayProps {
|
||||
title: string
|
||||
shipped: boolean
|
||||
date: string
|
||||
publishedAt: string
|
||||
description: string
|
||||
d: number
|
||||
dd: string
|
||||
youtube_id: string
|
||||
blogpost: string
|
||||
docs: string
|
||||
steps: {
|
||||
title: string
|
||||
blog: string
|
||||
docs?: string
|
||||
isNew: boolean
|
||||
description: string
|
||||
thumb?: string
|
||||
}[]
|
||||
}
|
||||
|
||||
const days: WeekDayProps[] = [
|
||||
{
|
||||
title: 'AI generated OG images',
|
||||
shipped: true,
|
||||
date: '',
|
||||
publishedAt: '2023-04-07T07:00:00.000-07:00',
|
||||
description: 'AI generated OG images',
|
||||
d: 0,
|
||||
dd: 'Pre-release',
|
||||
youtube_id: '',
|
||||
blogpost: 'https://supabase.com/blog/new-supabase-docs-built-with-nextjs',
|
||||
docs: 'https://supabase.com/docs',
|
||||
steps: [
|
||||
{
|
||||
title: 'AI generated OG images',
|
||||
blog: '/blog/',
|
||||
docs: '/docs',
|
||||
isNew: false,
|
||||
description: '',
|
||||
thumb: '/images/launchweek/seven/day0/ai-images-thumb.png',
|
||||
},
|
||||
{
|
||||
title: 'Supavisor',
|
||||
blog: '/blog/',
|
||||
docs: '/docs',
|
||||
isNew: true,
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Self-hosted Logs & observability',
|
||||
shipped: false,
|
||||
date: '10 Apr 2023',
|
||||
publishedAt: '2023-04-10T07:00:00.000-07:00',
|
||||
description: 'Supabase Docs',
|
||||
d: 1,
|
||||
dd: 'Monday',
|
||||
youtube_id: 'OpPOaJI_Z28',
|
||||
blogpost: 'https://supabase.com/blog/new-supabase-docs-built-with-nextjs',
|
||||
docs: 'https://supabase.com/docs',
|
||||
steps: [
|
||||
{
|
||||
title: 'Supabase Docs',
|
||||
blog: '/blog/new-supabase-docs-built-with-nextjs',
|
||||
docs: '/docs',
|
||||
isNew: true,
|
||||
description: '',
|
||||
thumb: '/images/launchweek/seven/day1/self-hosted-logs-thumb.png',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Self-hosted Edge Functions',
|
||||
shipped: false,
|
||||
date: '11 Apr 2023',
|
||||
publishedAt: '2023-04-11T07:00:00.000-07:00',
|
||||
description: 'Image Transformations',
|
||||
d: 2,
|
||||
dd: 'Tuesday',
|
||||
youtube_id: 'iqZlPtl_b-I',
|
||||
blogpost: 'https://supabase.com/blog',
|
||||
docs: 'https://supabase.com/docs',
|
||||
steps: [
|
||||
{
|
||||
title: 'Image Transformations',
|
||||
blog: '',
|
||||
docs: '',
|
||||
isNew: true,
|
||||
description: '',
|
||||
thumb: '/images/launchweek/seven/day2/self-hosted-edge-functions-thumb.png',
|
||||
},
|
||||
{
|
||||
title: 'Smart CDN',
|
||||
description: 'Faster asset delivery, now even faster.',
|
||||
blog: '/blog/storage-image-resizing-smart-cdn',
|
||||
docs: '/docs/guides/storage/cdn',
|
||||
isNew: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Storage v3 Multipart upload',
|
||||
shipped: false,
|
||||
date: '12 Apr 2023',
|
||||
publishedAt: '2023-04-12T07:00:00.000-07:00',
|
||||
description: 'Storage v3 Multipart upload',
|
||||
d: 3,
|
||||
dd: 'Wednesday',
|
||||
youtube_id: 'CGZr5tybW18',
|
||||
blogpost: 'https://supabase.com/blog',
|
||||
docs: 'https://supabase.com/docs',
|
||||
steps: [
|
||||
{
|
||||
title: 'Storage v3 Multipart upload',
|
||||
blog: '/blog/mfa-auth-via-rls',
|
||||
docs: '/docs/guides/auth/auth-mfa',
|
||||
isNew: false,
|
||||
description: '',
|
||||
thumb: '/images/launchweek/seven/day3/storage-v3-thumb.png',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'SSO Support for Projects',
|
||||
shipped: false,
|
||||
date: '13 Apr 2023',
|
||||
publishedAt: '2023-04-13T07:00:00.000-07:00',
|
||||
description: 'Supabase Wrappers',
|
||||
d: 4,
|
||||
dd: 'Thursday',
|
||||
youtube_id: 'QA2qC5F-4OU',
|
||||
blogpost: '/blog/postgres-foreign-data-wrappers-rust',
|
||||
docs: 'https://supabase.com/docs',
|
||||
steps: [
|
||||
{
|
||||
title: 'Supabase Wrappers',
|
||||
blog: '/blog/postgres-foreign-data-wrappers-rust',
|
||||
docs: 'https://supabase.github.io/wrappers/',
|
||||
isNew: true,
|
||||
description: '',
|
||||
thumb: '/images/launchweek/seven/day4/SSO-support-thumb.png',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Community Highlight',
|
||||
shipped: false,
|
||||
date: '14 Apr 2023',
|
||||
publishedAt: '2023-04-14T07:00:00.000-07:00',
|
||||
description: 'Vault Release',
|
||||
d: 5,
|
||||
dd: 'Friday',
|
||||
youtube_id: '6bGQotxisoY',
|
||||
blogpost: 'https://supabase.com/blog',
|
||||
docs: 'https://supabase.com/docs',
|
||||
steps: [
|
||||
{
|
||||
title: 'Vault Release',
|
||||
blog: '/blog/vault-now-in-beta',
|
||||
isNew: true,
|
||||
description: '',
|
||||
thumb: '/images/launchweek/seven/day0/ai-images-thumb.png',
|
||||
},
|
||||
{
|
||||
title: 'Transparent Column Encryption',
|
||||
description: '',
|
||||
blog: '/blog/transparent-column-encryption-with-postgres',
|
||||
isNew: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
export default days
|
||||
@@ -13,6 +13,7 @@ import { generateReadingTime } from '~/lib/helpers'
|
||||
import mdxComponents from '~/lib/mdx/mdxComponents'
|
||||
import { mdxSerialize } from '~/lib/mdx/mdxSerialize'
|
||||
import { getAllPostSlugs, getPostdata, getSortedPosts } from '~/lib/posts'
|
||||
import BlogLinks from '~/components/LaunchWeek/BlogLinks'
|
||||
|
||||
// table of contents extractor
|
||||
const toc = require('markdown-toc')
|
||||
@@ -64,6 +65,7 @@ export async function getStaticProps({ params }: any) {
|
||||
function BlogPostPage(props: any) {
|
||||
const content = props.blog.content
|
||||
const authorArray = props.blog.author.split(',')
|
||||
const isLaunchWeek7 = props.blog.launchWeek7
|
||||
|
||||
const author = []
|
||||
for (let i = 0; i < authorArray.length; i++) {
|
||||
@@ -307,6 +309,7 @@ function BlogPostPage(props: any) {
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
{isLaunchWeek7 && <BlogLinks />}
|
||||
<div className="grid gap-8 py-8 lg:grid-cols-1">
|
||||
<div>
|
||||
{props.prevPost && <NextCard post={props.prevPost} label="Last post" />}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 578 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 668 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 609 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 560 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 883 KiB |
@@ -5,14 +5,14 @@
|
||||
<link>https://supabase.com</link>
|
||||
<description>Latest news from Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Thu, 06 Apr 2023 22:10:00 +0000</lastBuildDate>
|
||||
<lastBuildDate>Mon, 03 Apr 2023 22:10:00 +0000</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/infinite-scroll-with-supabase</guid>
|
||||
<title>Infinite scroll with NextJs, Supabase and Framer Motion</title>
|
||||
<link>https://supabase.com/blog/infinite-scroll-with-supabase</link>
|
||||
<description>Lazy load and paginate data on scroll with supabase-js and a sprinkle of Framer Motion magic ✨</description>
|
||||
<pubDate>Thu, 06 Apr 2023 22:10:00 +0000</pubDate>
|
||||
<guid>https://supabase.com/blog/infinite-scroll-with-nextjs-framer-motion</guid>
|
||||
<title>Infinite scroll with Next.js, Framer Motion, and Supabase</title>
|
||||
<link>https://supabase.com/blog/infinite-scroll-with-nextjs-framer-motion</link>
|
||||
<description>Lazy load and paginate data on scroll with Next.js and a sprinkle of Framer Motion magic ✨</description>
|
||||
<pubDate>Mon, 03 Apr 2023 22:10:00 +0000</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/supaclub</guid>
|
||||
|
||||
Reference in new issue
Block a user