import { motion } from 'framer-motion'; import { useFuelTheme, useStyles } from '~/hooks'; import { Components } from '~/utils/components-list'; import { _unstable_createComponent, _unstable_createEl } from '../../utils'; import { Icon } from '../Icon'; import { useNavMobileProps } from './NavMobile'; import type { NavThemeToggleDef } from './defs'; import { styles } from './styles'; export const NavThemeToggle = _unstable_createComponent( Components.NavThemeToggle, ({ whenOpened = 'hide', ...props }) => { const { current, setTheme } = useFuelTheme(); const mobileProps = useNavMobileProps(); const classes = useStyles(styles, props, ['themeToggle']); const Root = 'span'; const handleChange = async () => { const next = current === 'dark' ? 'light' : 'dark'; setTheme(next); }; const content = ( ); if (!mobileProps?.onOpenChange || whenOpened === 'no-effect') { return content; } const animContent = ( {content} ); return ( <> {!mobileProps.isOpen && whenOpened === 'hide' && animContent} {mobileProps.isOpen && whenOpened === 'show' && animContent} ); }, ); NavThemeToggle.id = 'NavThemeToggle';