'use client' import classNames from 'classnames' import { ForwardedRef, forwardRef } from 'react' import { Representing, User, UserMenuItem } from '../header/types' import { PktIcon } from '../icon/Icon' import { PktLink } from '../link/Link' // Internal type for rendering links/buttons (supports both href and onClick) interface IInternalMenuItemBase { title: string iconName?: string } interface InternalMenuLink extends IInternalMenuItemBase { href: string } interface InternalMenuButton extends IInternalMenuItemBase { onClick: () => void } type TInternalMenuItem = InternalMenuLink | InternalMenuButton // Helper to convert UserMenuItem (with target) to internal format const convertUserMenuItem = (item: UserMenuItem): TInternalMenuItem => { if (typeof item.target === 'string') { return { title: item.title, iconName: item.iconName, href: item.target } } return { title: item.title, iconName: item.iconName, onClick: item.target } } export interface IPktHeaderUserMenu { user: User formattedLastLoggedIn?: string representing?: Representing userMenu?: UserMenuItem[] canChangeRepresentation?: boolean changeRepresentation?: () => void logoutOnClick?: () => void } const LinkOrButtonComponent = ({ item, className }: { item: TInternalMenuItem; className?: string }) => { const isLink = 'href' in item return isLink ? ( ) : ( ) } const LinkSection = ({ links }: { links: TInternalMenuItem[] }) => { return (