@@ -160,11 +49,7 @@ export const StyledArticleBadge = ({
className?: string
children: any
}) => (
-
+
{children}
@@ -174,95 +59,55 @@ export const StyledArticleBadge = ({
)
-export const AccordionHeader = ({
- date,
- day,
- weekDay,
- title,
- shipped,
- publishedAt,
- shippable = true,
- youtube_id,
- videoThumbnail,
-}: {
- date: string
- day: number
- weekDay: string
- title: string
- shipped?: boolean
- publishedAt: string
- shippable?: boolean
- youtube_id?: string
- videoThumbnail?: string
-}) => (
-
-
-
-
- {weekDay}
- {date && (
-
- ・ {date}
-
- )}
-
- {shippable && shipped && (
-
-
- Shipped
-
-
- )}
- {shippable && shipped && youtube_id && (
-
-
- }
- />
-
- )}
-
- {/* {shippable && !shipped && (
-
-
-
-
-
-
+interface DayLink extends StepLink {
+ className?: string
+}
- {day === 5 && }
-
- )} */}
-
-
-)
+export const DayLink = ({ type, icon, text, href = '', className }: DayLink) => {
+ const linkTypes = {
+ docs: {
+ icon: IconDocumentation,
+ text: 'Docs',
+ },
+ productHunt: {
+ icon: IconProductHunt,
+ text: 'Product Hunt',
+ },
+ video: {
+ icon: IconYoutubeSolid,
+ text: 'Watch video',
+ },
+ xSpace: {
+ icon: IconMicSolid,
+ text: 'X Space',
+ },
+ }
+ const isTargetBlank = () => {
+ switch (type) {
+ case 'productHunt':
+ case 'docs':
+ return true
+ }
+ }
+ const Icon = icon ?? linkTypes[type].icon
+ const Text = () => <>{text ?? linkTypes[type]?.text}>
+
+ return (
+
+
+
+
+
+
+ )
+}
export const VideoPreviewTrigger = ({
title,
@@ -287,24 +132,6 @@ export const VideoPreviewTrigger = ({
)
-export const MultistepSectionHeader = ({ title, blog }: any) => {
- return (
-
-
- {title &&
{title} }
- {!!blog && (
-
- Blog post
-
-
- )}
-
-
- )
-}
-
export const ChipLink = ({
href,
uiOnly,
@@ -320,10 +147,10 @@ export const ChipLink = ({
}) =>
uiOnly ? (
{children}
@@ -332,131 +159,25 @@ export const ChipLink = ({
href={href}
target={target ?? '_self'}
rel="noopener"
- className={[
+ className={cn(
'flex flex-auto justify-center sm:justify-between w-full text-center sm:text-left min-h-[43px] sm:w-auto items-center border border-[#232323] bg-gradient-to-r text-white from-[#46444460] to-[#19191980] hover:from-[#4e4e4e90] hover:to-[#19191990] hover:border-stronger backdrop-blur-xl rounded-full text-sm py-2 px-3 sm:pr-2',
- className,
- ].join(' ')}
+ className
+ )}
>
{children}
) : null
-export const SectionButtons = ({
- blog,
- docs,
- video,
- github,
- url,
- hackernews,
- twitter_spaces,
- product_hunt,
- mobileGrid,
-}: {
- blog?: string
- docs?: string
- video?: string
- github?: string
- url?: string
- hackernews?: string
- twitter_spaces?: string
- product_hunt?: string
- mobileGrid?: boolean
-}) => {
- return (
-
- {!!blog && (
-
- Blog post
-
-
- )}
- {!!docs && (
-
- Docs
-
-
-
-
- )}
- {!!video && (
-
- Video
-
-
- )}
- {!!github && (
-
- GitHub
-
-
-
-
- )}
- {!!url && (
-
- Read
-
-
-
-
- )}
- {hackernews && (
-
- Hacker News
-
-
-
-
- )}
- {product_hunt && (
-
- Product Hunt
-
-
- )}
- {twitter_spaces && (
-
- Twitter Spaces
-
-
-
-
- )}
-
- )
-}
-
export const CartTitle = ({ children, className }: { children: any; className?: string }) => (
-
+
{children}
-
)
export default {
- AccordionHeader,
- DocsSvg,
- PencilSvg,
- PlaySvg,
+ DayLink,
CartTitle,
ChipLink,
- SectionButtons,
SmallCard,
StyledArticleBadge,
}
diff --git a/apps/www/components/LaunchWeek/X/Releases/data/index.ts b/apps/www/components/LaunchWeek/X/Releases/data/index.ts
new file mode 100644
index 00000000000..508893faca4
--- /dev/null
+++ b/apps/www/components/LaunchWeek/X/Releases/data/index.ts
@@ -0,0 +1,4 @@
+export { default as mainDays } from './lwx_data'
+export type { StepProps, StepLink, WeekDayProps } from './lwx_data'
+export { days as buildDays } from './lwx_advent_days'
+export type { AdventDay } from './lwx_advent_days'
diff --git a/apps/www/components/LaunchWeek/X/Releases/data/lwx_advent_days.tsx b/apps/www/components/LaunchWeek/X/Releases/data/lwx_advent_days.tsx
new file mode 100644
index 00000000000..94552e38d50
--- /dev/null
+++ b/apps/www/components/LaunchWeek/X/Releases/data/lwx_advent_days.tsx
@@ -0,0 +1,300 @@
+export interface AdventDay {
+ type: string | 'blog'
+ icon?: any
+ className?: string
+ id: string
+ title: string
+ description?: string
+ is_shipped: boolean
+ image: string
+ links: AdventLink[]
+}
+
+export interface AdventLink {
+ url: string
+ label: string
+ target?: '_blank'
+}
+
+export const days: AdventDay[] = [
+ {
+ title: 'Supabase Album',
+ description: 'The best soundtrack to build your app in a weekend',
+ type: '',
+ className: '',
+ icon: (
+
+
+
+
+
+ ),
+ id: '',
+ is_shipped: true,
+ links: [
+ {
+ url: 'https://supabase.productions/',
+ label: 'Listen now',
+ target: '_blank',
+ },
+ ],
+ image: '',
+ },
+ {
+ title: 'Postgres Language Server',
+ description: 'Implementing the Parser',
+ type: '',
+ className: '',
+ icon: (
+
+
+
+
+ ),
+ id: '',
+ is_shipped: true,
+ links: [
+ {
+ url: '/blog/postgres-language-server-implementing-parser',
+ label: 'Blog post',
+ },
+ ],
+ image: '',
+ },
+ {
+ type: '',
+ title: 'Design at Supabase',
+ description: "The transformative journey of Supabase's Design team",
+ className: '',
+ icon: (
+
+
+
+
+ ),
+ id: '',
+ is_shipped: true,
+ links: [
+ {
+ url: '/blog/how-design-works-at-supabase',
+ label: 'Blog post',
+ },
+ ],
+ image: '',
+ },
+ {
+ title: '',
+ type: '',
+ is_shipped: false,
+ className: '',
+ icon: '',
+ id: '',
+ links: [
+ {
+ url: '',
+ label: '',
+ },
+ ],
+ image: '',
+ },
+ {
+ title: '',
+ type: '',
+ is_shipped: false,
+ className: 'col-span-2 xl:col-span-3 aspect-[2/1] xl:aspect-auto md:h-full',
+ icon: '',
+ id: '',
+ links: [
+ {
+ url: '',
+ label: '',
+ },
+ ],
+ image: '',
+ },
+ {
+ title: '',
+ type: '',
+ is_shipped: false,
+ className: '',
+ icon: '',
+ id: '',
+ links: [
+ {
+ url: '',
+ label: '',
+ },
+ ],
+ image: '',
+ },
+ {
+ title: '',
+ type: '',
+ is_shipped: false,
+ className: '',
+ icon: '',
+ id: '',
+ links: [
+ {
+ url: '',
+ label: '',
+ },
+ ],
+ image: '',
+ },
+ {
+ title: '',
+ type: '',
+ is_shipped: false,
+ className: 'xl:col-span-2 xl:aspect-auto h-full',
+ icon: '',
+ id: '',
+ links: [
+ {
+ url: '',
+ label: '',
+ },
+ ],
+ image: '',
+ },
+ {
+ title: '',
+ type: '',
+ is_shipped: false,
+ className: '',
+ icon: '',
+ id: '',
+ links: [
+ {
+ url: '',
+ label: '',
+ },
+ ],
+ image: '',
+ },
+ {
+ title: '',
+ type: '',
+ is_shipped: false,
+ className: '',
+ icon: '',
+ id: '',
+ links: [
+ {
+ url: '',
+ label: '',
+ },
+ ],
+ image: '',
+ },
+ {
+ title: '',
+ type: '',
+ is_shipped: false,
+ className: 'xl:col-span-2 xl:aspect-auto h-full',
+ icon: '',
+ id: '',
+ links: [
+ {
+ url: '',
+ label: '',
+ },
+ ],
+ image: '',
+ },
+ {
+ title: '',
+ type: '',
+ is_shipped: false,
+ className: '',
+ icon: '',
+ id: '',
+ links: [
+ {
+ url: '',
+ label: '',
+ },
+ ],
+ image: '',
+ },
+ {
+ title: '',
+ type: '',
+ is_shipped: false,
+ className: 'xl:col-span-2 md:aspect-auto h-full',
+ icon: '',
+ id: '',
+ links: [
+ {
+ url: '',
+ label: '',
+ },
+ ],
+ image: '',
+ },
+ {
+ title: '',
+ type: '',
+ className:
+ 'col-span-2 aspect-[2/1] md:col-span-1 md:aspect-auto xl:col-span-2 xl:aspect-[2/1] h-full',
+ is_shipped: false,
+ icon: '',
+ id: '',
+ links: [
+ {
+ url: '',
+ label: '',
+ },
+ ],
+ image: '',
+ },
+]
diff --git a/apps/www/components/LaunchWeek/X/Releases/data/lwx_data.tsx b/apps/www/components/LaunchWeek/X/Releases/data/lwx_data.tsx
new file mode 100644
index 00000000000..622bce2e743
--- /dev/null
+++ b/apps/www/components/LaunchWeek/X/Releases/data/lwx_data.tsx
@@ -0,0 +1,147 @@
+import { ReactNode } from 'react'
+
+const images = {}
+
+type StepLinkType = 'productHunt' | 'video' | 'docs' | 'xSpace'
+
+export interface StepLink {
+ type: StepLinkType
+ text?: string
+ icon?: any
+ href: string
+}
+
+export interface StepProps {
+ title: string
+ badge?: string
+ blog?: string
+ docs?: string
+ description?: string
+ github?: string
+ hackernews?: string
+ product_hunt?: string
+ thumb?: string
+ url?: string
+ video?: string
+ twitter_spaces?: string
+ className?: string
+ hideInBlog?: boolean
+ bg_layers?: {
+ img?: string
+ mobileImg?: string
+ className?: string
+ }[]
+ steps: StepProps[] | []
+}
+
+export interface WeekDayProps {
+ id: string
+ title: string
+ shipped: boolean
+ date: string
+ published_at: string
+ isToday?: boolean
+ hasCountdown?: boolean
+ description: string | ReactNode
+ d: number
+ dd: string
+ links?: StepLink[]
+ videoThumbnail?: string
+ blog?: string
+ steps: StepProps[] | []
+}
+
+export const endOfLW8 = '2023-12-15T23:59:59.999-08:00'
+
+const days: WeekDayProps[] = [
+ {
+ id: 'day-1',
+ title: 'Read Replicas',
+ shipped: false,
+ // isToday: true,
+ blog: '',
+ hasCountdown: true,
+ date: '11 Dec',
+ published_at: '2023-12-11T08:00:00.000-08:00',
+ description: null,
+ d: 1,
+ dd: 'Mon',
+ links: [
+ {
+ type: 'productHunt',
+ href: 'https://www.producthunt.com/',
+ },
+ {
+ type: 'video',
+ href: 'https://www.youtube.com/',
+ },
+ {
+ type: 'xSpace',
+ href: 'https://twitter.com/home',
+ },
+ {
+ type: 'docs',
+ href: 'https://supabase.com/docs',
+ },
+ ],
+ steps: [
+ {
+ title: "Why we'll stay remote",
+ blog: '/blog/why-supabase-remote',
+ // bg_layers: [{ img: images['00-stay-remote'] }],
+ steps: [],
+ },
+ ],
+ },
+ {
+ id: 'day-2',
+ title: '',
+ shipped: false,
+ blog: '',
+ hasCountdown: false,
+ date: '12 Dec',
+ published_at: '2023-12-12T08:00:00.000-08:00',
+ description: '',
+ d: 2,
+ dd: 'Tue',
+ steps: [],
+ },
+ {
+ id: 'day-3',
+ title: '',
+ shipped: false,
+ blog: '',
+ date: '13 Dec',
+ published_at: '2023-12-13T08:00:00.000-08:00',
+ description: '',
+ d: 3,
+ dd: 'Wed',
+ steps: [],
+ },
+ {
+ id: 'day-4',
+ title: '',
+ shipped: false,
+ blog: '',
+ date: '14 Dec',
+ published_at: '2023-12-14T08:00:00.000-08:00',
+ description: '',
+ d: 4,
+ dd: 'Thu',
+ steps: [],
+ },
+ {
+ id: 'day-5',
+ title: '',
+ shipped: false,
+ blog: '',
+ date: '15 Dec',
+ published_at: '2023-12-15T08:00:00.000-08:00',
+ description: '',
+ d: 5,
+ dd: 'Fri',
+ steps: [],
+ },
+]
+
+export default days
diff --git a/apps/www/components/LaunchWeek/X/Releases/index.tsx b/apps/www/components/LaunchWeek/X/Releases/index.tsx
deleted file mode 100644
index e90f9c76c6e..00000000000
--- a/apps/www/components/LaunchWeek/X/Releases/index.tsx
+++ /dev/null
@@ -1,599 +0,0 @@
-import Image from 'next/image'
-import Link from 'next/link'
-import { Accordion } from 'ui'
-import { useBreakpoint } from 'common/hooks/useBreakpoint'
-
-import {
- AccordionHeader,
- CartTitle,
- CheckCircleSolidIcon,
- MultistepSectionHeader,
- SectionButtons,
-} from './components'
-import SectionContainer from '~/components/Layouts/SectionContainer'
-import days, { WeekDayProps } from './lw8_data'
-
-export default function LW8Releases() {
- const [preRelease, day1, day2, day3, day4, day5] = days
- const isTablet = useBreakpoint(1023)
- const isDesktop = useBreakpoint(1280)
- const showAll = false
- const publishedSections =
- days
- .filter(
- (day: WeekDayProps) => Date.parse(day.publishedAt) <= Date.now() || day.shipped || showAll
- )
- .map((day: WeekDayProps) => day.d.toString()) ?? []
-
- return (
- <>
-
-
-
-
- }
- key={preRelease.dd}
- className="h-[79px]"
- id={preRelease.d.toString()}
- >
- {preRelease.steps.length > 0 && (
-
-
-
-
-
{preRelease.steps[0].title}
-
{preRelease.steps[0]?.description}
-
-
- {preRelease.steps[0]?.bg_layers &&
- preRelease.steps[0]?.bg_layers?.map(
- (layer, i) =>
- !!layer.img && (
-
-
-
- )
- )}
-
-
-
-
-
{preRelease.steps[1].title}
-
{preRelease.steps[1]?.description}
-
-
- {preRelease.steps[1]?.bg_layers &&
- preRelease.steps[1]?.bg_layers?.map(
- (layer, i) =>
- !!layer.img && (
-
-
-
- )
- )}
-
-
- {' '}
-
-
-
{preRelease.steps[2].title}
-
{preRelease.steps[2]?.description}
-
-
- {preRelease.steps[2]?.bg_layers &&
- preRelease.steps[2]?.bg_layers?.map(
- (layer, i) =>
- !!layer.img && (
-
-
-
- )
- )}
-
-
- )}
-
-
-
-
-
- {day1.steps.length > 0 && (
-
-
-
-
-
-
{day1.steps[0].title}
-
-
{day1.steps[0]?.description}
-
-
- {day1.steps[0]?.bg_layers &&
- day1.steps[0]?.bg_layers?.map(
- (layer, i) =>
- !!layer.img && (
-
-
-
- )
- )}
-
-
- )}
-
-
-
-
- {day2.steps.length > 0 && (
-
-
-
-
-
-
{day2.steps[0].title}
-
-
{day2.steps[0]?.description}
-
-
- {day2.steps[0]?.bg_layers &&
- day2.steps[0]?.bg_layers?.map(
- (layer, i) =>
- !!layer.img && (
-
-
-
- )
- )}
-
-
- )}
-
-
-
-
- {day3.steps.length > 0 && (
-
-
-
-
-
-
{day3.steps[0].title}
-
-
{day3.steps[0]?.description}
-
-
- AI SQL Editor
-
-
- Schema Diagrams
-
-
- Wrappers
-
-
-
-
- {day3.steps[0]?.bg_layers &&
- day3.steps[0]?.bg_layers?.map(
- (layer, i) =>
- !!layer.img && (
-
-
-
- )
- )}
-
-
- )}
-
-
-
-
- {day4.steps.length > 0 && (
-
-
-
-
-
-
{day4.steps[0].title}
-
-
{day4.steps[0]?.description}
-
-
- {day4.steps[0]?.bg_layers &&
- day4.steps[0]?.bg_layers?.map(
- (layer, i) =>
- !!layer.img && (
-
-
-
- )
- )}
-
-
-
-
-
-
{day4.steps[1].title}
-
-
{day4.steps[1]?.description}
-
-
- {day4.steps[1]?.bg_layers &&
- day4.steps[1]?.bg_layers?.map(
- (layer, i) =>
- !!layer.img && (
-
-
-
- )
- )}
-
-
- )}
-
-
-
-
- {day5.steps.length > 0 && (
-
-
-
-
-
-
{day5.steps[0].title}
-
-
{day5.steps[0]?.description}
-
-
- {day5.steps[0]?.bg_layers &&
- day5.steps[0]?.bg_layers?.map(
- (layer, i) =>
- !!layer.img && (
-
-
-
- )
- )}
-
-
-
-
-
-
-
{day5.steps[1].title}
-
-
{day5.steps[1]?.description}
-
-
- {day5.steps[1]?.bg_layers &&
- day5.steps[1]?.bg_layers?.map(
- (layer, i) =>
- !!layer.img && (
-
-
-
- )
- )}
-
-
-
-
-
-
-
{day5.steps[2].title}
-
-
{day5.steps[2]?.description}
-
-
- {day5.steps[2]?.bg_layers &&
- day5.steps[2]?.bg_layers?.map(
- (layer, i) =>
- !!layer.img && (
-
-
-
- )
- )}
-
-
- )}
-
-
-
- >
- )
-}
diff --git a/apps/www/components/LaunchWeek/X/Releases/lw8_data.ts b/apps/www/components/LaunchWeek/X/Releases/lw8_data.ts
deleted file mode 100644
index eb1a074e26c..00000000000
--- a/apps/www/components/LaunchWeek/X/Releases/lw8_data.ts
+++ /dev/null
@@ -1,237 +0,0 @@
-const images = {
- yt_thumbnail: '/images/launchweek/8/lw8-yt-thumb.jpg',
- day_1_thumb: '/images/launchweek/8/day1/yt_d1.jpg',
- day_2_thumb: '/images/launchweek/8/day2/yt_d2.jpg',
- day_3_thumb: '/images/launchweek/8/day3/yt_d3.jpg',
- day_4_thumb: '/images/launchweek/8/day4/yt_d4.jpg',
- day_5_thumb: '/images/launchweek/8/day5/yt_d5.jpg',
- '00-stay-remote': '/images/launchweek/8/day0/remote.png',
- '00-pg-server': '/images/launchweek/8/day0/pg-server.png',
- '00-constellation': '/images/launchweek/8/day0/constellation.svg',
- '01-hugging': '/images/launchweek/8/day1/hugging.svg',
- '02-localdev': '/images/launchweek/8/day2/localdev.svg',
- '02-localdev-mobile': '/images/launchweek/8/day2/localdev-mobile.svg',
- '03-studio3': '/images/launchweek/8/day3/studio3.svg',
- '03-studio3-mobile': '/images/launchweek/8/day3/studio3-mobile.svg',
- '04-marketplace': '/images/launchweek/8/day4/marketplace.svg',
- '04-marketplace-mobile': '/images/launchweek/8/day4/marketplace-mobile.svg',
- '04-vercel': '/images/launchweek/8/day4/vercel-integration.svg',
- '05-supavisor': '/images/launchweek/8/day5/supavisor.svg',
- '05-community': '/images/launchweek/8/day5/community.svg',
- '05-compliant': '/images/launchweek/8/day5/compliant.svg',
- '05-supavisor-mobile': '/images/launchweek/8/day5/supavisor-mobile.svg',
- '05-community-mobile': '/images/launchweek/8/day5/community-mobile.svg',
- '05-compliant-mobile': '/images/launchweek/8/day5/compliant-mobile.svg',
-}
-
-export interface StepProps {
- title: string
- badge?: string
- break_thumb_title?: boolean
- blog?: string
- docs?: string
- description?: string
- github?: string
- hackernews?: string
- product_hunt?: string
- isNew?: boolean
- thumb?: string
- url?: string
- video?: string
- twitter_spaces?: string
- className?: string
- hideInBlog?: boolean
- bg_layers?: {
- lottie?: any
- img?: string
- mobileImg?: string
- }[]
- steps: StepProps[] | []
-}
-export interface WeekDayProps {
- title: string
- shipped: boolean
- date: string
- publishedAt: string
- description: string
- d: number
- dd: string
- youtube_id: string
- videoThumbnail?: string
- blogpost?: string
- docs?: string
- twitter_spaces?: string
- steps: StepProps[] | []
-}
-
-export const endOfLW8 = '2023-08-11T23:59:59.999-07:00'
-
-const days: WeekDayProps[] = [
- {
- title: '',
- shipped: true,
- date: '04 Aug',
- publishedAt: '2023-08-04T09:00:00.000-07:00',
- description: '',
- d: 0,
- dd: 'Pre-release',
- youtube_id: '',
- blogpost: '',
- docs: '',
- steps: [
- {
- title: "Why we'll stay remote",
- blog: '/blog/why-supabase-remote',
- bg_layers: [{ img: images['00-stay-remote'] }],
- steps: [],
- },
- {
- title: 'Postgres Language Server',
- github: 'https://github.com/supabase/postgres_lsp',
- hackernews: 'https://news.ycombinator.com/item?id=37020610',
- bg_layers: [{ img: images['00-pg-server'] }],
- steps: [],
- },
- {
- title: 'Coding an interactive constellation with Three.js and React Three Fiber',
- blog: '/blog/interactive-constellation-threejs-react-three-fiber',
- bg_layers: [{ img: images['00-constellation'] }],
- steps: [],
- },
- ],
- },
- {
- title: '',
- shipped: true,
- date: '07 Aug',
- publishedAt: '2023-08-07T09:00:00.000-07:00',
- description: '',
- d: 1,
- dd: 'Mon',
- youtube_id: 'RJccSbJ9Go4',
- videoThumbnail: images.day_1_thumb,
- twitter_spaces: 'https://twitter.com/i/spaces/1DXGyvjkeEeJM',
- steps: [
- {
- title: 'Hugging Face now supported in Supabase',
- blog: '/blog/hugging-face-supabase',
- hackernews: 'https://news.ycombinator.com/item?id=37035960',
- video: 'https://www.youtube.com/watch?v=RJccSbJ9Go4',
- twitter_spaces: 'https://twitter.com/i/spaces/1DXGyvjkeEeJM',
- bg_layers: [{ img: images['01-hugging'] }],
- steps: [],
- },
- ],
- },
- {
- title: '',
- shipped: true,
- date: '08 Aug',
- publishedAt: '2023-08-08T09:00:00.000-07:00',
- description: '',
- d: 2,
- dd: 'Tue',
- youtube_id: 'N0Wb85m3YMI',
- videoThumbnail: images.day_2_thumb,
- twitter_spaces: 'https://twitter.com/i/spaces/1vAxRAvNQyDJl?s=20',
- steps: [
- {
- title: 'Supabase Local Dev: Migrations, Branching, Observability',
- blog: '/blog/supabase-local-dev',
- hackernews: 'https://news.ycombinator.com/item?id=37059400',
- twitter_spaces: 'https://twitter.com/i/spaces/1vAxRAvNQyDJl?s=20',
- bg_layers: [{ img: images['02-localdev'], mobileImg: images['02-localdev-mobile'] }],
- steps: [],
- },
- ],
- },
- {
- title: '',
- shipped: true,
- date: '09 Aug',
- publishedAt: '2023-08-09T09:00:00.000-07:00',
- description: '',
- d: 3,
- dd: 'Wed',
- youtube_id: '51tCMQPiitQ',
- videoThumbnail: images.day_3_thumb,
- steps: [
- {
- title: 'Supabase Studio 3.0',
- blog: '/blog/supabase-studio-3-0',
- hackernews: '',
- video: '',
- product_hunt: 'https://www.producthunt.com/posts/ai-powered-sql-editor',
- twitter_spaces: 'https://twitter.com/i/spaces/1vAxRAvNQyDJl?s=20',
- bg_layers: [{ img: images['03-studio3'], mobileImg: images['03-studio3-mobile'] }],
- steps: [],
- },
- ],
- },
- {
- title: '',
- shipped: true,
- date: '10 Aug',
- publishedAt: '2023-08-10T09:00:00.000-07:00',
- description: '',
- d: 4,
- dd: 'Thu',
- youtube_id: 'gtJo1lTxHfs',
- videoThumbnail: images.day_4_thumb,
- twitter_spaces: 'https://twitter.com/supabase/status/1688544207571484672?s=20',
- steps: [
- {
- title: 'Supabase Integrations Marketplace',
- blog: '/blog/supabase-integrations-marketplace',
- bg_layers: [{ img: images['04-marketplace'], mobileImg: images['04-marketplace-mobile'] }],
- steps: [],
- },
- {
- title: 'Vercel integrations',
- blog: '/blog/using-supabase-with-vercel',
- bg_layers: [{ img: images['04-vercel'] }],
- steps: [],
- },
- ],
- },
- {
- title: '',
- shipped: true,
- date: '11 Aug',
- publishedAt: '2023-08-11T09:00:00.000-07:00',
- description: '',
- d: 5,
- dd: 'Fri',
- youtube_id: 'qzxzLSAJDfE',
- videoThumbnail: images.day_5_thumb,
- steps: [
- {
- title: 'Supabase Supavisor: 1M Postgres connections',
- blog: '/blog/supavisor-1-million',
- hackernews: '',
- video: '',
- twitter_spaces: '',
- bg_layers: [{ img: images['05-supavisor'], mobileImg: images['05-supavisor-mobile'] }],
- steps: [],
- },
- {
- title: 'Community day',
- blog: '/blog/launch-week-8-community-highlights',
- hackernews: '',
- video: '',
- twitter_spaces: '',
- bg_layers: [{ img: images['05-community'], mobileImg: images['05-community-mobile'] }],
- steps: [],
- },
- {
- title: 'SOC2 type 2 and HIPAA compliant',
- blog: '/blog/supabase-soc2-hipaa',
- hackernews: '',
- bg_layers: [{ img: images['05-compliant'], mobileImg: images['05-compliant-mobile'] }],
- steps: [],
- },
- ],
- },
-]
-
-export default days
diff --git a/apps/www/components/LaunchWeek/X/Releases/styles/launchWeek7.module.css b/apps/www/components/LaunchWeek/X/Releases/styles/launchWeek7.module.css
deleted file mode 100644
index 7a1417601cd..00000000000
--- a/apps/www/components/LaunchWeek/X/Releases/styles/launchWeek7.module.css
+++ /dev/null
@@ -1,29 +0,0 @@
-.mask {
- mask-image: radial-gradient(black, transparent);
-}
-
-.dark_community {
- background-image: radial-gradient(closest-side at 50% 50%, #132121, #132121db, #121212);
-}
-
-.community {
- background-image: radial-gradient(closest-side at 50% 50%, #d9eeef, #dbeef0, white);
-}
-
-.wrappers > span {
- left: -200px !important;
-}
-
-.community_wrappers > span {
- left: -400px !important;
-}
-
-@media (max-width: 768px) {
- .community_wrappers > span > img {
- object-fit: contain !important;
- }
-}
-
-.lw7-article-card-gradient {
- background: linear-gradient(90deg, #1c1c1c -20%, #20113d50 150%);
-}
diff --git a/apps/www/components/LaunchWeek/X/Releases/styles/utils7.module.css b/apps/www/components/LaunchWeek/X/Releases/styles/utils7.module.css
deleted file mode 100644
index c4aba2ab686..00000000000
--- a/apps/www/components/LaunchWeek/X/Releases/styles/utils7.module.css
+++ /dev/null
@@ -1,76 +0,0 @@
-.appear {
- opacity: 0;
- animation: appear 0.8s cubic-bezier(0.1, 0, 0.175, 1) forwards;
-}
-
-.appear-first {
- animation-delay: 0.4s;
-}
-
-.appear-second {
- animation-delay: 0.8s;
-}
-
-.appear-third {
- animation-delay: 1.2s;
-}
-
-.appear-fourth {
- animation-delay: 1.6s;
-}
-
-.appear-fifth {
- animation-delay: 2s;
-}
-
-.appear-sixth {
- animation-delay: 2.4s;
-}
-
-@keyframes appear {
- to {
- opacity: 1;
- }
-}
-
-@media (min-width: 1200px) {
- .hide-on-desktop {
- display: none;
- }
-}
-
-.show-on-mobile {
- display: block;
-}
-
-.hide-on-mobile {
- display: none;
-}
-
-@media (min-width: 768px) {
- .show-on-mobile {
- display: none;
- }
-
- .hide-on-mobile {
- display: block;
- }
-}
-
-.hide-on-tablet {
- display: block;
-}
-
-.show-on-tablet {
- display: none;
-}
-
-@media (max-width: 1199px) and (min-width: 768px) {
- .show-on-tablet {
- display: block;
- }
-
- .hide-on-tablet {
- display: none;
- }
-}
diff --git a/apps/www/components/LaunchWeek/X/Ticket/TicketDisclaimer.tsx b/apps/www/components/LaunchWeek/X/Ticket/TicketDisclaimer.tsx
deleted file mode 100644
index e23e77804e2..00000000000
--- a/apps/www/components/LaunchWeek/X/Ticket/TicketDisclaimer.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-const TicketDisclaimer = ({ className, children }: { className?: string; children?: any }) => (
-
- {children || 'By registering you accept to receive email updates on Supabase Launch Week.'}
-
-)
-
-export default TicketDisclaimer
diff --git a/apps/www/components/LaunchWeek/X/Ticket/ticket-copy.module.css b/apps/www/components/LaunchWeek/X/Ticket/ticket-copy.module.css
deleted file mode 100644
index 65007c67559..00000000000
--- a/apps/www/components/LaunchWeek/X/Ticket/ticket-copy.module.css
+++ /dev/null
@@ -1,190 +0,0 @@
-.wrapper {
- color: var(--lw-secondary-color);
- display: flex;
- align-items: center;
- justify-content: center;
- animation-delay: 2.6s;
- flex-direction: column;
-}
-
-:global(.ticket-generated) .wrapper {
- animation-delay: 1.2s;
-}
-
-.label {
- width: 100%;
- margin-bottom: var(--space-2x);
-}
-
-.label-wrapper {
- display: flex;
- align-items: center;
- max-width: 400px;
- width: 100%;
- justify-content: space-between;
-}
-
-@media (min-width: 768px) {
- .wrapper {
- flex-direction: row;
- }
-
- .label {
- width: auto;
- margin-right: 10px;
- margin-bottom: 0px;
- }
-
- .label-wrapper {
- width: auto;
- }
-}
-
-.field {
- position: relative;
- border-radius: var(--space-2x);
- overflow: hidden;
- background: var(--gray);
-}
-
-@media (min-width: 768px) {
- .field {
- padding-right: 50px;
- }
- .field.desktop-copy-disabled {
- padding-right: 0px;
- }
-}
-
-.mobile-copy {
- margin-bottom: 10px;
- display: flex;
-}
-
-.mobile-copy-disabled.mobile-copy-disabled {
- display: none;
-}
-
-.mobile-copy * {
- color: var(--lw-secondary-color);
- transition: color 0.2s ease;
-}
-
-.mobile-copy:hover * {
- color: #fff;
- transition: color 0.2s ease;
-}
-
-.field * {
- color: var(--lw-secondary-color);
- transition: color 0.2s ease;
-}
-
-.field:hover * {
- color: #fff;
- transition: color 0.2s ease;
-}
-
-.url {
- width: calc(100vw - 36px);
- user-select: all;
- overflow-x: scroll;
- white-space: nowrap;
- display: block;
-
- padding: var(--space-2x) 14px;
- -ms-overflow-style: none; /* IE and Edge */
- scrollbar-width: none; /* Firefox */
-}
-
-@media (min-width: 436px) {
- .url {
- width: 400px;
- }
-}
-
-@media (min-width: 768px) {
- .url {
- width: 400px;
- }
- .mobile-copy {
- margin-bottom: 0;
- display: none;
- }
-}
-
-.url::-webkit-scrollbar {
- display: none;
-}
-
-/* .fade {
- position: absolute;
- background: linear-gradient(90deg, rgba(37, 39, 41, 0%) 0%, #252729 100%);
- top: 0;
- bottom: 0;
- right: 0px;
- width: 50px;
- z-index: 1;
- display: block;
- border-radius: var(--space-2x);
- pointer-events: none;
-} */
-
-.desktop-copy.desktop-copy-disabled {
- display: none;
-}
-
-@media (min-width: 768px) {
- .fade {
- right: 50px;
- }
- .fade.desktop-copy-disabled {
- right: 0px;
- }
-}
-
-.copied {
- display: flex;
- z-index: 2;
- align-items: center;
- justify-content: flex-end;
- opacity: 0;
- transition: opacity 0.2s ease !important;
-}
-
-.copied.visible {
- opacity: 1;
-}
-
-.copy-button {
- background: none;
- outline: none;
- border: none;
- cursor: pointer;
- z-index: 2;
- border-radius: var(--space-2x);
- width: 40px;
- display: flex;
- align-items: center;
- justify-content: center;
- margin-right: -10px;
-}
-
-@media (min-width: 768px) {
- .copied {
- position: absolute;
- right: 50px;
- top: 0px;
- bottom: 0px;
- background: linear-gradient(90deg, rgba(37, 39, 41, 0%) 0px, #252729 40px);
- padding-left: 50px;
- }
- .copy-button {
- position: absolute;
- top: 0px;
- right: 0px;
- bottom: 0px;
- margin-right: 0px;
- width: 50px;
- }
-}
diff --git a/apps/www/components/LaunchWeek/X/Ticket/ticket-visual.module.css b/apps/www/components/LaunchWeek/X/Ticket/ticket-visual.module.css
deleted file mode 100644
index f399e967aa1..00000000000
--- a/apps/www/components/LaunchWeek/X/Ticket/ticket-visual.module.css
+++ /dev/null
@@ -1,70 +0,0 @@
-.visual {
- /* transform: translateZ(0); */
- background: linear-gradient(
- 30deg,
- hsla(274, 100%, 77%, 0.05) 0%,
- hsla(200, 43%, 1%, 0.2) 30%,
- hsla(200, 43%, 1%, 0.2) 70%,
- hsla(151, 50%, 53%, 0.1) 100%
- ),
- hsla(200, 43%, 1%, 0.8);
- /* background: hsla(200, 43%, 1%, 0.2); */
- box-shadow: 0px 1px 27px rgba(158, 68, 239, 0.06),
- /* 0 0 0 1px rgba(121, 89, 134, 0.25), */ 0 10px 20px 0px rgba(20, 17, 21, 0.8),
- inset 0 0.2px 1px 0.2px rgba(214, 210, 210, 0.4),
- inset -0.4px -0.4px 1px -0.3px rgba(74, 252, 175, 0.4);
- /* border: 1px solid rgba(0, 0, 0, 0.05); */
- /* border-radius: 16px; */
-
- -webkit-backdrop-filter: blur(2px);
- backdrop-filter: blur(2px);
-
- /* border: 1px solid #1c1c1c; */
- /* animation: 2s ease-in-out infinite alternate; */
-
- background-repeat: no-repeat;
- background-size: contain;
-}
-
-.visual--gold {
- background: radial-gradient(#fcdf9d50, #dbb33340);
-}
-
-.visual--gold::before {
- content: ' ';
- position: absolute;
- inset: 0;
- filter: drop-shadow(0 0 60px #fcdf9d);
- background: radial-gradient(#fcdf9d50, #dbb33320);
- /* border: 1px solid #dbb33320; */
-}
-
-@keyframes opacity-pulse {
- from {
- opacity: 0.5;
- }
-
- to {
- opacity: 1;
- }
-}
-
-@keyframes svg-shadow {
- from {
- filter: drop-shadow(0 0 2px #fff) drop-shadow(0 0 4px #d99f0c) drop-shadow(0 0 6px #d99f0c);
- }
-
- to {
- filter: drop-shadow(0 0 10px #fff) drop-shadow(0 0 6px #d99f0c) drop-shadow(0 0 9px #d99f0c);
- }
-}
-
-@keyframes blank-svg-shadow {
- from {
- filter: drop-shadow(0 0 2px #bada55) drop-shadow(0 0 2px #bada55) drop-shadow(0 0 2px #bada55);
- }
-
- to {
- filter: drop-shadow(0 0 3px #bada55) drop-shadow(0 0 2px #bada55) drop-shadow(0 0 2px #bada55);
- }
-}
diff --git a/apps/www/components/LaunchWeek/X/Ticket/ticket.module.css b/apps/www/components/LaunchWeek/X/Ticket/ticket.module.css
deleted file mode 100644
index 66abf10d905..00000000000
--- a/apps/www/components/LaunchWeek/X/Ticket/ticket.module.css
+++ /dev/null
@@ -1,141 +0,0 @@
-.ticket-hero {
- background: linear-gradient(137.46deg, rgba(125, 196, 176, 0.04) 0%, rgba(255, 255, 255, 0) 100%),
- linear-gradient(137.46deg, rgba(255, 255, 255, 0) 6.19%, rgba(255, 255, 255, 0) 103.29%);
- z-index: 10;
- box-shadow: 0 1px 1px rgba(131, 6, 184, 0.1), 0 1px 1px rgba(128, 6, 184, 0.1),
- 0 20px 30px -30px rgba(76, 195, 138, 0.05), 0 80px 40px -40px rgba(128, 6, 184, 0.04),
- inset 0.25px 0.3px 0px 0.3px rgba(209, 243, 227, 0.1),
- inset 0.25px 0.3px 0px 0.3px rgba(76, 195, 138, 0.02),
- inset 0 -3px 0 -2px rgba(255, 255, 255, 0.08), 0px 4px 20px rgba(118, 7, 170, 0.1);
-}
-
-.hero {
- line-height: 1.15;
- letter-spacing: -0.05em;
- font-weight: 400;
- margin: 0;
- text-align: center;
-}
-
-@media (min-width: 768px) {
- .hero {
- line-height: 1;
- }
-}
-
-.description {
- font-size: 20px;
- line-height: 1.4;
- color: var(--lw-secondary-color);
- text-align: center;
- margin: 30px auto;
- max-width: 350px;
-}
-
-@media (min-width: 768px) {
- .description {
- font-size: 24px;
- max-width: 415px;
- }
-}
-
-.ticket-text {
- margin-bottom: 30px;
-}
-
-.ticket-layout {
- display: grid;
- grid-template-columns: 1fr;
- gap: 45px;
- margin: auto;
- padding: var(--space-4x);
- padding-top: 64px;
- padding-bottom: 64px;
-}
-
-@media (min-width: 1200px) {
- .ticket-layout {
- padding-top: 0;
- padding-bottom: 0;
- }
-}
-
-.ticket-share-layout {
- align-items: center;
- margin-bottom: auto;
-}
-
-.ticket-visual:before {
- left: 50%;
- top: -7.5%;
- transform: translateZ(0) translateX(-50%) rotate(90deg);
-}
-
-.ticket-visual:after {
- left: 50%;
- bottom: -7.5%;
- transform: translateZ(0) translateX(-50%) rotate(90deg);
-}
-
-@media (min-width: 768px) {
- .ticket-visual:before {
- top: 50%;
- left: -7%;
- transform: translateZ(0) translateY(-50%);
- }
-
- .ticket-visual:after {
- top: 50%;
- left: 96%;
- transform: translateZ(0) translateY(-50%);
- }
-}
-
-.ticket-actions {
- margin-top: 70px;
- display: flex;
- align-items: center;
- justify-content: center;
- flex-direction: column;
-}
-
-.ticket-copy {
- margin-top: 30px;
-}
-
-.ticket-actions-placeholder {
- height: 280px;
-}
-
-@media (min-width: 768px) {
- .ticket-actions {
- flex-direction: row;
- }
- .ticket-actions-placeholder {
- height: 157px;
- }
-}
-
-@media (min-width: 1200px) {
- .ticket-layout {
- grid-template-columns: 1fr 1fr;
- }
- .hero {
- text-align: left;
- }
- .description {
- text-align: left;
- margin: 30px 0;
- }
-}
-
-.gold-text {
- color: #f4cf72;
- text-shadow: 0 0 1px rgba(0, 0, 0, 0.5), 0 0 4px rgba(0, 0, 0, 0.1);
-}
-
-@media (min-width: 768px) {
- .gold-text {
- color: #e4b641;
- }
-}
diff --git a/apps/www/components/Layouts/Default.tsx b/apps/www/components/Layouts/Default.tsx
index 79df05a3083..2b602970a0a 100644
--- a/apps/www/components/Layouts/Default.tsx
+++ b/apps/www/components/Layouts/Default.tsx
@@ -22,7 +22,7 @@ const DefaultLayout = (props: Props) => {
return (
<>
{!hideHeader && }
- {children}
+ {children}
{!hideFooter && }
>
)
diff --git a/apps/www/components/Nav/index.tsx b/apps/www/components/Nav/index.tsx
index 9ad3ff3d2ed..db3a6178d73 100644
--- a/apps/www/components/Nav/index.tsx
+++ b/apps/www/components/Nav/index.tsx
@@ -35,6 +35,7 @@ const Nav = () => {
const isHomePage = router.pathname === '/'
const isLaunchWeekPage = router.pathname.includes('launch-week')
+ const isLaunchWeekXPage = router.pathname === '/launch-week'
const showLaunchWeekNavMode = isLaunchWeekPage && !open
React.useEffect(() => {
@@ -74,7 +75,10 @@ const Nav = () => {
-
+
{
/>
- {isLaunchWeekPage && (
+ {isLaunchWeekPage && !isLaunchWeekXPage && (
-
-
+
+
+
+
+ {/* */}
+
diff --git a/apps/www/public/images/launchweek/lwx/lwx_header.png b/apps/www/public/images/launchweek/lwx/lwx_header.png
new file mode 100644
index 00000000000..2acd596005d
Binary files /dev/null and b/apps/www/public/images/launchweek/lwx/lwx_header.png differ
diff --git a/apps/www/public/images/launchweek/lwx/lwx_header.svg b/apps/www/public/images/launchweek/lwx/lwx_header.svg
new file mode 100644
index 00000000000..0c44a1513ec
--- /dev/null
+++ b/apps/www/public/images/launchweek/lwx/lwx_header.svg
@@ -0,0 +1,266 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/ui/index.tsx b/packages/ui/index.tsx
index e41302b8c91..5f315a796b6 100644
--- a/packages/ui/index.tsx
+++ b/packages/ui/index.tsx
@@ -371,8 +371,9 @@ export * from './src/components/Icon/icons/IconMeh'
export * from './src/components/Icon/icons/IconMenu'
export * from './src/components/Icon/icons/IconMessageCircle'
export * from './src/components/Icon/icons/IconMessageSquare'
-export * from './src/components/Icon/icons/IconMicOff'
export * from './src/components/Icon/icons/IconMic'
+export * from './src/components/Icon/icons/IconMicOff'
+export * from './src/components/Icon/icons/IconMicSolid'
export * from './src/components/Icon/icons/IconMinimize2'
export * from './src/components/Icon/icons/IconMinimize'
export * from './src/components/Icon/icons/IconMinusCircle'
@@ -412,6 +413,7 @@ export * from './src/components/Icon/icons/IconPocket'
export * from './src/components/Icon/icons/IconPower'
export * from './src/components/Icon/icons/IconPrinter'
export * from './src/components/Icon/icons/IconPresence'
+export * from './src/components/Icon/icons/IconProductHunt'
export * from './src/components/Icon/icons/IconRadio'
export * from './src/components/Icon/icons/IconRefreshCcw'
export * from './src/components/Icon/icons/IconRefreshCw'
diff --git a/packages/ui/internals/icons.js b/packages/ui/internals/icons.js
index 1cde50bfbd9..be1e44fa708 100644
--- a/packages/ui/internals/icons.js
+++ b/packages/ui/internals/icons.js
@@ -158,8 +158,9 @@ export default {
IconMenu: 'src/components/Icon/icons/IconMenu/index.tsx',
IconMessageCircle: 'src/components/Icon/icons/IconMessageCircle/index.tsx',
IconMessageSquare: 'src/components/Icon/icons/IconMessageSquare/index.tsx',
- IconMicOff: 'src/components/Icon/icons/IconMicOff/index.tsx',
IconMic: 'src/components/Icon/icons/IconMic/index.tsx',
+ IconMicOff: 'src/components/Icon/icons/IconMicOff/index.tsx',
+ IconMicSolid: 'src/components/Icon/icons/IconMicSolid/index.tsx',
IconMinimize2: 'src/components/Icon/icons/IconMinimize2/index.tsx',
IconMinimize: 'src/components/Icon/icons/IconMinimize/index.tsx',
IconMinusCircle: 'src/components/Icon/icons/IconMinusCircle/index.tsx',
@@ -197,6 +198,7 @@ export default {
IconPocket: 'src/components/Icon/icons/IconPocket/index.tsx',
IconPower: 'src/components/Icon/icons/IconPower/index.tsx',
IconPrinter: 'src/components/Icon/icons/IconPrinter/index.tsx',
+ IconProductHunt: 'src/components/Icon/icons/IconProductHunt/index.tsx',
IconRadio: 'src/components/Icon/icons/IconRadio/index.tsx',
IconRefreshCcw: 'src/components/Icon/icons/IconRefreshCcw/index.tsx',
IconRefreshCw: 'src/components/Icon/icons/IconRefreshCw/index.tsx',
diff --git a/packages/ui/src/components/Icon/icons/IconMicSolid/IconMicSolid.tsx b/packages/ui/src/components/Icon/icons/IconMicSolid/IconMicSolid.tsx
new file mode 100644
index 00000000000..2463beded4a
--- /dev/null
+++ b/packages/ui/src/components/Icon/icons/IconMicSolid/IconMicSolid.tsx
@@ -0,0 +1,18 @@
+// @ts-ignore
+import IconBase from '../../IconBase'
+
+// Import icon path from svg with viewbox of 16x16px
+const src = (
+
+)
+
+function IconMicSolid(props: any) {
+ return
+}
+
+export default IconMicSolid
diff --git a/packages/ui/src/components/Icon/icons/IconMicSolid/index.tsx b/packages/ui/src/components/Icon/icons/IconMicSolid/index.tsx
new file mode 100644
index 00000000000..e19fe571f94
--- /dev/null
+++ b/packages/ui/src/components/Icon/icons/IconMicSolid/index.tsx
@@ -0,0 +1 @@
+export { default as IconMicSolid } from './IconMicSolid'
diff --git a/packages/ui/src/components/Icon/icons/IconProductHunt/IconProductHunt.tsx b/packages/ui/src/components/Icon/icons/IconProductHunt/IconProductHunt.tsx
new file mode 100644
index 00000000000..01b21d58feb
--- /dev/null
+++ b/packages/ui/src/components/Icon/icons/IconProductHunt/IconProductHunt.tsx
@@ -0,0 +1,16 @@
+// @ts-ignore
+import IconBase from '../../IconBase'
+
+// Import icon path from svg with viewbox of 16x16px
+const src = (
+
+)
+
+function IconProductHunt(props: any) {
+ return
+}
+
+export default IconProductHunt
diff --git a/packages/ui/src/components/Icon/icons/IconProductHunt/index.tsx b/packages/ui/src/components/Icon/icons/IconProductHunt/index.tsx
new file mode 100644
index 00000000000..3fe5ccddc1b
--- /dev/null
+++ b/packages/ui/src/components/Icon/icons/IconProductHunt/index.tsx
@@ -0,0 +1 @@
+export { default as IconProductHunt } from './IconProductHunt'
diff --git a/packages/ui/src/components/Icon/icons/index.tsx b/packages/ui/src/components/Icon/icons/index.tsx
index e12f7534453..55e919f73c9 100644
--- a/packages/ui/src/components/Icon/icons/index.tsx
+++ b/packages/ui/src/components/Icon/icons/index.tsx
@@ -168,8 +168,9 @@ export * as IconMeh from './IconMeh'
export * as IconMenu from './IconMenu'
export * as IconMessageCircle from './IconMessageCircle'
export * as IconMessageSquare from './IconMessageSquare'
-export * as IconMicOff from './IconMicOff'
export * as IconMic from './IconMic'
+export * as IconMicOff from './IconMicOff'
+export * as IconMicSolid from './IconMicSolid'
export * as IconMinimize2 from './IconMinimize2'
export * as IconMinimize from './IconMinimize'
export * as IconMinusCircle from './IconMinusCircle'