'use client' import { Prompt, PromptContent, PromptCopy, PromptPanel, PromptTitle, } from '~/features/ui/PromptPanel' import { isFeatureEnabled, useBreakpoint } from 'common' import { Sparkles, Terminal } from 'lucide-react' import { useTheme } from 'next-themes' import Link from 'next/link' import { useEffect, useState, type ReactNode } from 'react' import { IconPanel } from 'ui-patterns/IconPanel' import { getCustomContent } from '../lib/custom-content/getCustomContent' import DocsCoverLogo from './DocsCoverLogo' import { setupCommand, setupCommands, setupPrompt } from './HomePageCover.constants' const { sdkDart: sdkDartEnabled, sdkKotlin: sdkKotlinEnabled, sdkSwift: sdkSwiftEnabled, } = isFeatureEnabled(['sdk:dart', 'sdk:kotlin', 'sdk:swift']) const fullGettingStartedEnabled = isFeatureEnabled('docs:full_getting_started') function SetupPrompt({ cliCode }: { cliCode: ReactNode }) { return ( }>AI Prompt {setupPrompt} Help me get set up with Supabase. Do the following: 1. Install the Supabase CLI globally with{' '} {setupCommand.installCli} . 2. Install the Supabase Plugin with{' '} {setupCommand.installPlugin} . 3. Review my project and determine whether Supabase is already initialized. If it is not initialized, run{' '} {setupCommand.initialize} . 4. Suggest the most relevant next steps. }>CLI {setupCommands} {cliCode} ) } const frameworks = [ { tooltip: 'ReactJS', icon: '/docs/img/icons/react-icon', href: '/guides/getting-started/quickstarts/reactjs', hasLightIcon: false, }, { tooltip: 'Next.js', icon: '/docs/img/icons/nextjs-icon', href: '/guides/getting-started/quickstarts/nextjs', hasLightIcon: false, }, { tooltip: 'TanStack Start', icon: '/docs/img/icons/tanstack-icon', href: '/guides/getting-started/quickstarts/tanstack', hasLightIcon: true, }, { tooltip: 'Astro.js', icon: '/docs/img/icons/astro-icon', href: '/guides/getting-started/quickstarts/astrojs', hasLightIcon: true, }, { tooltip: 'Vue', icon: '/docs/img/icons/vuejs-icon', href: '/guides/getting-started/quickstarts/vue', hasLightIcon: false, }, { tooltip: 'Nuxt', icon: '/docs/img/icons/nuxt-icon', href: '/guides/getting-started/quickstarts/nuxtjs', hasLightIcon: false, }, { tooltip: 'iOS Swift', icon: '/docs/img/icons/swift-icon-orange', href: '/guides/getting-started/quickstarts/ios-swiftui', enabled: sdkSwiftEnabled, hasLightIcon: false, }, { tooltip: 'Android Kotlin', icon: '/docs/img/icons/kotlin-icon', href: '/guides/getting-started/quickstarts/kotlin', enabled: sdkKotlinEnabled, hasLightIcon: false, }, { tooltip: 'Expo React Native', icon: '/docs/img/icons/expo-icon', href: '/guides/getting-started/quickstarts/expo-react-native', hasLightIcon: true, }, { tooltip: 'Flutter', icon: '/docs/img/icons/flutter-icon', href: '/guides/getting-started/quickstarts/flutter', enabled: sdkDartEnabled, hasLightIcon: false, }, { tooltip: 'Python', icon: '/docs/img/icons/python-icon', href: '/guides/getting-started/quickstarts/flask', hasLightIcon: false, }, ] export function FrameworkQuickstarts() { const isXs = useBreakpoint(639) const iconSize = isXs ? 'sm' : 'lg' const { resolvedTheme } = useTheme() const [isMounted, setIsMounted] = useState(false) const isLightMode = isMounted && resolvedTheme === 'light' useEffect(() => setIsMounted(true), []) return (
{frameworks .filter((framework) => framework.enabled !== false) .map((framework) => { const iconToUse = framework.hasLightIcon && isLightMode ? `${framework.icon}-light` : framework.icon return ( ) })}
) } const HomePageCover = ({ title, cliCode }: { title: string; cliCode: ReactNode }) => { const { homepageHeading } = getCustomContent(['homepage:heading']) return (
{fullGettingStartedEnabled && (
)}
) } export default HomePageCover