import { cloneElement, ReactElement, ReactNode, Ref, useContext } from 'react'; import classNames from 'classnames'; import { CompositeItem } from 'reakit/Composite'; import { forwardRefWithAs, PropsWithAs } from '../utils'; import { SidenavCompositeContext } from './context'; export interface SidenavItemProps { children: ReactNode; className?: string; icon?: ReactNode; active?: boolean; } function SidenavItemComponent( { as: Type = 'a', children, className, icon, active, ...props }: PropsWithAs, ref: Ref ) { let iconEl = null; const state = useContext(SidenavCompositeContext); if (icon) { iconEl = cloneElement(icon as ReactElement, { className: 'w-5 h-5 mr-5', }); } return (
  • {iconEl} {children}
  • ); } export const SidenavItem = forwardRefWithAs( SidenavItemComponent );