diff --git a/apps/docs/pages/_app.tsx b/apps/docs/pages/_app.tsx index 043fdeb0f83..27caa65f6e1 100644 --- a/apps/docs/pages/_app.tsx +++ b/apps/docs/pages/_app.tsx @@ -11,7 +11,7 @@ import { AuthProvider, ThemeProvider, useTelemetryProps, useThemeSandbox } from import Head from 'next/head' import { useRouter } from 'next/router' import { useCallback, useEffect, useState, type PropsWithChildren } from 'react' -import { PortalToast, TabsProvider } from 'ui' +import { PortalToast, PromoToast, TabsProvider } from 'ui' import { CommandMenuProvider } from 'ui-patterns/Cmdk' import { useConsent } from 'ui-patterns/ConsentToast' @@ -229,6 +229,7 @@ function MyApp({ Component, pageProps }: AppPropsWithLayout) {
{step.description}
+Supabase is ready for production use.
+{step.description}
++ Celebrate{' '} + + Supabase Special Announcement + {' '} + at our live community-driven meetups. Network with the community, listen to tech talks and + grab some swag. +
++ August 7th–11th, 2023 +
+A week of announcing new features has come to an end.
+Thanks to everyone who participated.
+Generate your ticket for a chance to win.
+Win AirPods Max
++ Secure your ticket to enter our random prize pool, and amplify your odds by + sharing. Or if you don't leave anything up for chance - join our Hackathon and + showcase your creations. With luck or skill, you could snag these top-tier + headphones! +
+Supabase T-shirts
+Supabase Pins
++ Join us in this major milestone and explore all the features that come with it. +
+{day.description}
+Our products are now ready for production use.
{' '} ++ Confidently leverage the full power of Supabase to build scalable, high-performance + applications with ease. +
+ > + ), + steps: [ + { + icon: products.database.icon[16], + title: 'Database', + description: 'Fully portable Postgres Database', + links: [ + // { + // type: 'podcast', + // href: '#', + // }, + { + type: 'docs', + href: 'https://supabase.com/docs/guides/database/overview', + }, + ], + }, + { + icon: products.authentication.icon[16], + title: 'Auth', + description: 'User management out of the box', + links: [ + // { + // type: 'podcast', + // href: '#', + // }, + { + type: 'docs', + href: 'https://supabase.com/docs/guides/auth', + }, + ], + }, + { + icon: products.storage.icon[16], + title: 'Storage', + description: 'Serverless storage for any media', + links: [ + // { + // type: 'podcast', + // href: '#', + // }, + { + type: 'docs', + href: 'https://supabase.com/docs/guides/storage', + }, + ], + }, + { + icon: products.functions.icon[16], + title: 'Edge Functions', + description: 'Deploy code globally on the edge', + links: [ + // { + // type: 'podcast', + // href: '#', + // }, + { + type: 'docs', + href: 'https://supabase.com/docs/guides/functions', + }, + ], + }, + { + icon: products.realtime.icon[16], + title: 'Realtime', + description: 'Syncronize and broadcast events', + links: [ + // { + // type: 'podcast', + // href: '#', + // }, + { + type: 'docs', + href: 'https://supabase.com/docs/guides/realtime', + }, + ], + }, + { + icon: products.vector.icon[16], + title: 'Vector', + description: 'AI toolkit to manage embeddings', + links: [ + // { + // type: 'podcast', + // href: '#', + // }, + { + type: 'docs', + href: 'https://supabase.com/docs/guides/ai', + }, + ], + }, + ], + }, + { + id: 'day-2', + d: 2, + dd: 'Tue', + title: '', + shipped: false, + hasCountdown: false, + blog: '#', + date: '16 April', + published_at: '2024-04-16T08:00:00.000-08:00', + description: <>TBD>, + links: [ + // { + // type: 'blog', + // href: '#', + // }, + // { + // type: 'video', + // href: 'eCbiywoDORw', + // }, + // { + // type: 'xSpace', + // href: '#', + // }, + ], + steps: [ + { + title: '', + blog: '#', + bg_layers: [ + { + img: '/images/launchweek/lwx/day2/d2_edge.svg', + mobileImg: '/images/launchweek/lwx/day2/d2_edge_mobile.svg', + }, + ], + steps: [], + }, + ], + }, + { + id: 'day-3', + d: 3, + dd: 'Wed', + title: '', + shipped: false, + hasCountdown: false, + blog: '#', + date: '17 April', + published_at: '2024-04-17T08:00:00.000-08:00', + description: <>TBD>, + links: [ + // { + // type: 'blog', + // href: '#', + // }, + // { + // type: 'video', + // href: '', + // }, + // { + // type: 'xSpace', + // href: '#', + // }, + ], + steps: [], + }, + { + id: 'day-4', + d: 4, + dd: 'Thu', + title: '', + shipped: false, + hasCountdown: false, + blog: '#', + date: '18 April', + published_at: '2024-04-18T08:00:00.000-08:00', + description: <>TBD>, + links: [ + // { + // type: 'blog', + // href: '#', + // }, + // { + // type: 'video', + // href: '', + // }, + // { + // type: 'xSpace', + // href: '#', + // }, + ], + steps: [], + }, + { + id: 'day-5', + d: 5, + dd: 'Fri', + title: '', + shipped: false, + hasCountdown: false, + blog: '#', + date: '19 April', + published_at: '2024-04-19T08:00:00.000-08:00', + description: <>TBD>, + links: [ + // { + // type: 'blog', + // href: '#', + // }, + // { + // type: 'video', + // href: '', + // }, + // { + // type: 'xSpace', + // href: '#', + // }, + ], + steps: [], + }, +] + +export default days diff --git a/apps/www/components/LaunchWeek/11/Ticket/LW11Game.tsx b/apps/www/components/LaunchWeek/11/Ticket/LW11Game.tsx new file mode 100644 index 00000000000..4e5c3950e7c --- /dev/null +++ b/apps/www/components/LaunchWeek/11/Ticket/LW11Game.tsx @@ -0,0 +1,240 @@ +import { Dispatch, SetStateAction, useEffect, useMemo, useRef, useState } from 'react' +import { Button, cn } from 'ui' +import { SITE_ORIGIN } from '~/lib/constants' +import useConfData from '~/components/LaunchWeek/hooks/use-conf-data' +import { VALID_KEYS } from '~/components/LaunchWeek/hooks/useLwGame' +import { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot } from 'ui' + +const REGEXP_ONLY_CHARS = '^[a-zA-Z]+$' + +const COMPLIMENTS = [ + 'Congratulations!', + 'You won!', + 'Hurray!', + 'Great job!', + 'Nice job!', + "That's right!", +] + +interface Props { + setIsGameMode: Dispatch{name || username || 'Your Name'}
+ {HAS_NO_META && username && ( ++ @{username} +
+ )} ++ Celebrate a major milestone with us and explore all the features that come + with it. +
+{LW11_DATE}
++ Share again to boost your chance of winning! +
+ ) : ( +Thanks for sharing!
+ )} ++ Join on April 15-19 to celebrate a major milestone with us and explore + all the features that come with it. +
+@{userData.username}, you're in!
+ )} ++ Now share your ticket to have a chance of winning AirPods Max and other + limited swag. +
+@{userData.username}, almost there!
++ Keep sharing to max out your chances of winning AirPods Max and other + limited swag. +
+5 sets
+Win AirPods Max
++ Grow your chances of winning limited edition swag by sharing on{' '} + X and{' '} + Linkedin. +
+