diff --git a/lib/components/sidebar/active-link.tsx b/lib/components/sidebar/active-link.tsx index b7fd1d1..968a61b 100644 --- a/lib/components/sidebar/active-link.tsx +++ b/lib/components/sidebar/active-link.tsx @@ -1,25 +1,74 @@ -import React, { Children } from 'react' +import React, { useMemo } from 'react' import Link from 'next/link' import { useRouter } from 'next/router' +import { useTheme } from 'components' export interface Props { onAcitve?: Function href: string + text: string } -const ActiveLink: React.FC> = React.memo( - ({ children, href }) => { - const { pathname } = useRouter() - const isActive = pathname === href - const child = Children.only(children) +const ActiveLink: React.FC = React.memo(({ + href, text, +}) => { + const theme = useTheme() + const { pathname } = useRouter() + const [title, subtitle] = useMemo(() => { + if (!/[\u4E00-\u9FA5]/.test(text)) return [text, null] + if (/zeit|ui|ZEIT|UI/.test(text)) return [text, null] + return [ + text.replace(/[^\u4E00-\u9FA5]/g, ''), + text.replace(/[^a-zA-Z]/g, ''), + ] + }, [text]) + const isActive = pathname === href - return ( + return ( +
- {React.cloneElement(child as React.ReactElement, { - className: isActive ? 'active' : null, - })} + + {title}{subtitle &&  {subtitle}} + - ) - }) + +
+ ) +}) export default ActiveLink diff --git a/lib/components/sidebar/side-item.tsx b/lib/components/sidebar/side-item.tsx index 292a830..490f173 100644 --- a/lib/components/sidebar/side-item.tsx +++ b/lib/components/sidebar/side-item.tsx @@ -24,14 +24,8 @@ const SideItem: React.FC> = React.memo(({ {sides.map((side, index) => { return (
- {!side.url && } - {side.url && ( - - )} + {!side.url && } + {side.url && } {side.children &&
{React.cloneElement(children as ReactElement, { @@ -46,29 +40,6 @@ const SideItem: React.FC> = React.memo(({ width: 100%; } - .link { - width: 100%; - color: ${theme.palette.accents_5}; - display: flex; - height: 2.25rem; - align-items: center; - justify-content: flex-start; - cursor: pointer; - text-transform: capitalize; - } - - .link :global(a) { - color: ${theme.palette.accents_7}; - font-size: 1rem; - transition: all 200ms ease; - font-weight: 400; - } - - .link :global(a.active) { - color: ${theme.palette.success}; - font-weight: 600; - } - .children { display: flex; justify-content: center;