| 7 | import type { NavItemProps } from "../types"; |
| 8 | |
| 9 | export const NavRootItem = (item: NavItemProps) => { |
| 10 | const { t } = useLocale(); |
| 11 | const content = ( |
| 12 | <> |
| 13 | {/* Caption */} |
| 14 | {item.caption && ( |
| 15 | <TooltipProvider> |
| 16 | <Tooltip> |
| 17 | <TooltipTrigger> |
| 18 | <Icon icon="solar:info-circle-linear" size={16} className="absolute left-1 top-2" /> |
| 19 | </TooltipTrigger> |
| 20 | <TooltipContent side="right">{t(item.caption)}</TooltipContent> |
| 21 | </Tooltip> |
| 22 | </TooltipProvider> |
| 23 | )} |
| 24 | |
| 25 | {/* Icon */} |
| 26 | <span style={navItemStyles.icon}> |
| 27 | {item.icon && typeof item.icon === "string" ? <Icon icon={item.icon} /> : item.icon} |
| 28 | </span> |
| 29 | |
| 30 | {/* Arrow */} |
| 31 | {item.hasChild && ( |
| 32 | <Icon icon="eva:arrow-ios-forward-fill" className="absolute right-1 top-2" style={navItemStyles.arrow} /> |
| 33 | )} |
| 34 | |
| 35 | {/* Title */} |
| 36 | <span style={navItemStyles.title} className="text-center! text-xs! mt-1"> |
| 37 | {t(item.title)} |
| 38 | </span> |
| 39 | </> |
| 40 | ); |
| 41 | |
| 42 | const itemClassName = cn( |
| 43 | navItemClasses.base, |
| 44 | navItemClasses.hover, |
| 45 | "relative flex-col min-h-12 px-1 pt-2 pb-1.5", |
| 46 | item.active && item.depth === 1 && navItemClasses.active, |
| 47 | item.active && item.depth !== 1 && "bg-action-hover!", |
| 48 | item.disabled && navItemClasses.disabled, |
| 49 | ); |
| 50 | |
| 51 | return ( |
| 52 | <NavItemRenderer item={item} className={itemClassName}> |
| 53 | {content} |
| 54 | </NavItemRenderer> |
| 55 | ); |
| 56 | }; |