'use client'; import { FC, ReactNode, useCallback, useState } from 'react'; import { ComponentParameter, UniformText } from '@uniformdev/next-app-router/component'; import BaseIconLabel from '@/components/ui/IconLabel'; import BaseImage from '@/components/ui/Image'; import { ReplaceFieldsWithAssets } from '@/types/cskTypes'; import { cn, resolveViewPort } from '@/utils/styling'; import { withFlattenParameters } from '@/utils/withFlattenParameters'; import { NavigationGroupParameters, NavigationGroupProps } from '.'; import { NavigationGroupDesktopContent } from './desktop'; import { NavigationGroupMobileContent } from './mobile'; import { getButtonClasses, getCaretClasses } from './style-utils'; type NavigationGroupClientProps = NavigationGroupProps & Omit, 'icon'> & { icon: ReactNode | null; }; const NavigationGroupClient: FC = ({ icon, caretIcon, backgroundColor, border, size, tag, color, weight, font, transform, decoration, letterSpacing, alignment, component, context, slots, hoverEffect = '', className, parameters, }) => { const [isOpen, setIsOpen] = useState(false); const openFlyout = useCallback(() => setIsOpen(true), []); const closeFlyout = useCallback(() => setIsOpen(false), []); const actionClassName = cn('transition-all duration-150', { [resolveViewPort(hoverEffect, 'group-hover:{value}')]: !!hoverEffect, }); const [resolvedCaretIcon] = caretIcon || []; const { url: caretUrl, title: caretTitle = '' } = resolvedCaretIcon || {}; const buttonClasses = getButtonClasses({ color }); return (
); }; export default withFlattenParameters(NavigationGroupClient);