| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| import React from 'react';
|
| import { Link } from 'react-router-dom';
|
| import SkeletonWrapper from '../components/SkeletonWrapper';
|
|
|
| const Navigation = ({
|
| mainNavLinks,
|
| isMobile,
|
| isLoading,
|
| userState,
|
| pricingRequireAuth,
|
| }) => {
|
| const renderNavLinks = () => {
|
| const baseClasses =
|
| 'flex-shrink-0 flex items-center gap-1 font-semibold rounded-md transition-all duration-200 ease-in-out';
|
| const hoverClasses = 'hover:text-semi-color-primary';
|
| const spacingClasses = isMobile ? 'p-1' : 'p-2';
|
|
|
| const commonLinkClasses = `${baseClasses} ${spacingClasses} ${hoverClasses}`;
|
|
|
| return mainNavLinks.map((link) => {
|
| const linkContent = <span>{link.text}</span>;
|
|
|
| if (link.isExternal) {
|
| return (
|
| <a
|
| key={link.itemKey}
|
| href={link.externalLink}
|
| target='_blank'
|
| rel='noopener noreferrer'
|
| className={commonLinkClasses}
|
| >
|
| {linkContent}
|
| </a>
|
| );
|
| }
|
|
|
| let targetPath = link.to;
|
| if (link.itemKey === 'console' && !userState.user) {
|
| targetPath = '/login';
|
| }
|
| if (link.itemKey === 'pricing' && pricingRequireAuth && !userState.user) {
|
| targetPath = '/login';
|
| }
|
|
|
| return (
|
| <Link key={link.itemKey} to={targetPath} className={commonLinkClasses}>
|
| {linkContent}
|
| </Link>
|
| );
|
| });
|
| };
|
|
|
| return (
|
| <nav className='flex flex-1 items-center gap-1 lg:gap-2 mx-2 md:mx-4 overflow-x-auto whitespace-nowrap scrollbar-hide'>
|
| <SkeletonWrapper
|
| loading={isLoading}
|
| type='navigation'
|
| count={4}
|
| width={60}
|
| height={16}
|
| isMobile={isMobile}
|
| >
|
| {renderNavLinks()}
|
| </SkeletonWrapper>
|
| </nav>
|
| );
|
| };
|
|
|
| export default Navigation;
|
|
|