index.tsx 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. 'use client'
  2. // 引入react-i18next库,用于翻译
  3. import { useTranslation } from 'react-i18next'
  4. // 引入Link组件,用于页面跳转
  5. import Link from 'next/link'
  6. // 引入next/navigation库,用于获取当前选中的布局片段
  7. import { useSelectedLayoutSegment } from 'next/navigation'
  8. // 引入RiPlanetFill和RiPlanetLine图标
  9. import {
  10. RiPlanetFill,
  11. RiPlanetLine,
  12. } from '@remixicon/react'
  13. // 引入classNames函数,用于处理类名
  14. import classNames from '@/utils/classnames'
  15. // 定义ExploreNav组件的props类型
  16. type ExploreNavProps = {
  17. className?: string
  18. }
  19. // 定义ExploreNav组件
  20. const ExploreNav = ({
  21. className,
  22. }: ExploreNavProps) => {
  23. // 使用useTranslation钩子,获取翻译函数t
  24. const { t } = useTranslation()
  25. // 使用useSelectedLayoutSegment钩子,获取当前选中的布局片段
  26. const selectedSegment = useSelectedLayoutSegment()
  27. // 判断当前选中的布局片段是否为explore
  28. const activated = selectedSegment === 'explore'
  29. // 返回Link组件,用于页面跳转
  30. return (
  31. <Link href="/explore/apps" className={classNames(
  32. className, 'group',
  33. // 如果当前选中的布局片段为explore,则添加bg-components-main-nav-nav-button-bg-active和shadow-md类名
  34. activated && 'bg-components-main-nav-nav-button-bg-active shadow-md',
  35. // 如果当前选中的布局片段为explore,则添加text-components-main-nav-nav-button-text-active类名,否则添加text-components-main-nav-nav-button-text和hover:bg-components-main-nav-nav-button-bg-hover类名
  36. activated ? 'text-components-main-nav-nav-button-text-active' : 'text-components-main-nav-nav-button-text hover:bg-components-main-nav-nav-button-bg-hover',
  37. )}>
  38. {
  39. // 如果当前选中的布局片段为explore,则显示RiPlanetFill图标,否则显示RiPlanetLine图标
  40. activated
  41. ? <RiPlanetFill className='mr-2 w-4 h-4' />
  42. : <RiPlanetLine className='mr-2 w-4 h-4' />
  43. }
  44. {/* // 显示翻译后的文本 */}
  45. {t('common.menus.explore')}
  46. </Link>
  47. )
  48. }
  49. // 导出ExploreNav组件
  50. export default ExploreNav