diff --git a/ui/src/components/template/HorizontalMenuContent/HorizontalMenuContent.tsx b/ui/src/components/template/HorizontalMenuContent/HorizontalMenuContent.tsx index 47290821..d2c4e8dc 100644 --- a/ui/src/components/template/HorizontalMenuContent/HorizontalMenuContent.tsx +++ b/ui/src/components/template/HorizontalMenuContent/HorizontalMenuContent.tsx @@ -10,6 +10,7 @@ import { useStoreState } from '@/store' import { useTranslation } from 'react-i18next' import HorizontalMenuDropdownItem from './HorizontalMenuDropdownItem' import HorizontalMenuItem from './HorizontalMenuItem' +import HorizontalMenuIcon from './HorizontalMenuIcon' type HorizontalMenuContentProps = { manuVariant: NavMode @@ -37,7 +38,16 @@ const HorizontalMenuContent = ({ manuVariant }: HorizontalMenuContentProps) => { permissions={secondarySubNav.authority} > {secondarySubNav.subMenu.length > 0 ? ( - + + + + {t(secondarySubNav.translateKey, secondarySubNav.title)} + + + } + > {secondarySubNav.subMenu.map((tertiarySubNav) => ( { - const { title, translateKey, path, key, isExternalLink } = nav + const { title, translateKey, path, key, isExternalLink, icon } = nav const { t } = useTranslation() @@ -26,19 +26,20 @@ const HorizontalMenuDropdownItem = ({ nav }: HorizontalMenuItemProps) => { eventKey={key} className={ classNames( - path && 'px-1' + path ) - } + } > {path ? ( {itemTitle} diff --git a/ui/src/components/template/HorizontalMenuContent/HorizontalMenuIcon.tsx b/ui/src/components/template/HorizontalMenuContent/HorizontalMenuIcon.tsx new file mode 100644 index 00000000..ca1169d0 --- /dev/null +++ b/ui/src/components/template/HorizontalMenuContent/HorizontalMenuIcon.tsx @@ -0,0 +1,26 @@ +import navigationIcon from '@/configs/navigation-icon.config' +import type { ElementType, ComponentPropsWithRef } from 'react' + +type HorizontalMenuIconProps = { + icon: string +} + +export const Icon = ({ + component, + ...props +}: { + header: T +} & ComponentPropsWithRef) => { + const Component = component + return +} + +const HorizontalMenuIcon = ({ icon }: HorizontalMenuIconProps) => { + if (typeof icon !== 'string' && !icon) { + return <> + } + + return {navigationIcon[icon]} +} + +export default HorizontalMenuIcon diff --git a/ui/src/components/template/HorizontalMenuContent/HorizontalMenuNavLink.tsx b/ui/src/components/template/HorizontalMenuContent/HorizontalMenuNavLink.tsx index a90b664d..c44ef839 100644 --- a/ui/src/components/template/HorizontalMenuContent/HorizontalMenuNavLink.tsx +++ b/ui/src/components/template/HorizontalMenuContent/HorizontalMenuNavLink.tsx @@ -1,32 +1,34 @@ import { Link } from 'react-router-dom' import classNames from 'classnames' import type { PropsWithChildren } from 'react' +import HorizontalMenuIcon from './HorizontalMenuIcon' export type HorizontalMenuNavLinkProps = PropsWithChildren<{ - path: string - isExternalLink?: boolean - className?: string + path: string + isExternalLink?: boolean + className?: string + icon?: string }> const HorizontalMenuNavLink = ({ - path, - children, - isExternalLink, - className + path, + children, + isExternalLink, + className, + icon, }: HorizontalMenuNavLinkProps) => { - return ( - - {children} - - ) + return ( +
+ + + {children} + +
+ ) } export default HorizontalMenuNavLink