'use client'; import { Logo } from '@/components/blocks/logo/logo'; import { ThemeToggle } from '@/components/blocks/theme/theme-toggle'; import { Button } from '@/components/ui/button'; import { NavigationMenu, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, navigationMenuTriggerStyle, } from '@/components/ui/navigation-menu'; import { cn } from '@/lib/utils'; import { useTheme } from 'next-themes'; import Image, { type StaticImageData } from 'next/image'; import Link from 'next/link'; import * as React from 'react'; import HeroDark from './assets/hero-dark.png'; import HeroLight from './assets/hero-light.png'; interface HeroSectionProps extends React.HTMLAttributes { title?: string; subtitle?: { regular: string; gradient: string; }; description?: string; ctaText?: string; ctaHref?: string; bottomImage?: { light: string; dark: string; }; buttons?: { main: { text: string; href: string; }; secondary: { text: string; href: string; }; tertiary: { text: string; href: string; }; }; footerLinks?: { href: string; label: string; }[]; } const ThemeImage = React.memo(function ThemeImage({ light, dark, }: { light: string | StaticImageData; dark: string | StaticImageData; }) { const { resolvedTheme } = useTheme(); const [mounted, setMounted] = React.useState(false); React.useEffect(() => { setMounted(true); }, []); // During SSR and before mounting, render both images with opacity-0 if (!mounted) { return (
Dashboard preview Dashboard preview
); } return (
Dashboard preview Dashboard preview
); }); const HeroSection = React.forwardRef( ( { className, title, subtitle = { regular: 'Unlock the power of ', gradient: 'Asset Tokenization.', }, description = 'This kit is pre-configured to leverage your SettleMint application and provide an easy way to get started with your own asset tokenization solution.', ctaText = 'bunx @settlemint/sdk-cli@latest create', ctaHref = 'https://github.com/settlemint/starterkit-asset-tokenization', bottomImage = { light: HeroLight, dark: HeroDark, }, buttons = { main: { text: 'My Portfolio', href: '/portfolio', }, secondary: { text: 'Issuer Portal', href: '/admin', }, tertiary: { text: 'Documentation', href: 'https://console.settlemint.com/documentation', }, }, footerLinks = [ { href: 'https://console.settlemint.com/documentation/docs/terms-and-policies/terms-of-service/', label: 'Terms of Service', }, { href: 'https://console.settlemint.com/documentation/docs/terms-and-policies/privacy-policy/', label: 'Privacy Policy', }, { href: 'https://console.settlemint.com/documentation/docs/terms-and-policies/cookie-policy/', label: 'Cookie Policy', }, ], ...props }, ref ) => { return (

{subtitle.regular}
{subtitle.gradient}

{description}

{ctaText}
{bottomImage && (
)}
); } ); HeroSection.displayName = 'HeroSection'; export { HeroSection };