import React, { useEffect, useState } from 'react' import { useStore } from '@nanostores/react' import { panda, Stack } from '../../styled-system/jsx' import { availableThemes } from '../lib/panda-context' import { currentThemeStore } from '../lib/theme-store' const titleCase = (str: string) => str.replace(/[-_]/g, ' ').replace(/\b\w/g, (char) => char.toUpperCase()) export function ThemeSelector() { const currentTheme = useStore(currentThemeStore) const [isHydrated, setIsHydrated] = useState(false) useEffect(() => { setIsHydrated(true) }, []) // Only show theme selector when themes are defined in the configuration if (availableThemes.length === 0) { return null } const handleChange = (e: React.ChangeEvent) => { const value = e.target.value currentThemeStore.set(value || undefined) } // Show a simple fallback until hydrated to prevent hydration mismatch if (!isHydrated) { return ( THEME ) } return ( THEME {availableThemes.map((theme) => ( ))} ) }