mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-13 15:09:13 +00:00
部分组件统一;magzine页脚微调
This commit is contained in:
18
components/AnalyticsBusuanzi.js
Normal file
18
components/AnalyticsBusuanzi.js
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* 不蒜子统计 访客和阅读量
|
||||
* @returns
|
||||
*/
|
||||
export default function AnalyticsBusuanzi() {
|
||||
return (
|
||||
<div className='flex gap-x-1'>
|
||||
<span className='hidden busuanzi_container_site_pv whitespace-nowrap'>
|
||||
<i className='fas fa-eye' />
|
||||
<span className='px-1 busuanzi_value_site_pv'> </span>
|
||||
</span>
|
||||
<span className='hidden busuanzi_container_site_uv whitespace-nowrap'>
|
||||
<i className='fas fa-users' />
|
||||
<span className='px-1 busuanzi_value_site_uv'> </span>
|
||||
</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import LazyImage from './LazyImage'
|
||||
* 公安备案号组件
|
||||
* @returns
|
||||
*/
|
||||
export const GongAnBeiAn = () => {
|
||||
export const BeiAnGongAn = props => {
|
||||
const BEI_AN_GONGAN = siteConfig('BEI_AN_GONGAN')
|
||||
// 从BEI_AN_GONGAN 字段中利用正则匹配提取出纯数字部分
|
||||
const codeMatch = BEI_AN_GONGAN?.match(/\d+/) // 匹配纯数字
|
||||
@@ -17,9 +17,9 @@ export const GongAnBeiAn = () => {
|
||||
return null
|
||||
}
|
||||
return (
|
||||
<div className='flex flex-nowrap items-center gap-1 justify-center'>
|
||||
<div className={`${props.className}`}>
|
||||
<LazyImage src='/images/gongan.png' width={15} height={15} />
|
||||
<a href={href} target='_blank' rel='noopener noreferrer'>
|
||||
<a href={href} target='_blank' rel='noopener noreferrer' className='ml-1'>
|
||||
{BEI_AN_GONGAN}
|
||||
</a>
|
||||
</div>
|
||||
21
components/BeiAnSite.js
Normal file
21
components/BeiAnSite.js
Normal file
@@ -0,0 +1,21 @@
|
||||
import { siteConfig } from '@/lib/config'
|
||||
|
||||
/**
|
||||
* 站点域名备案
|
||||
* @returns
|
||||
*/
|
||||
export default function BeiAnSite() {
|
||||
const beian = siteConfig('BEI_AN')
|
||||
if (!beian) {
|
||||
return null
|
||||
}
|
||||
return (
|
||||
<span>
|
||||
<i className='fas fa-shield-alt' />
|
||||
<a href='https://beian.miit.gov.cn/' className='mx-1'>
|
||||
{siteConfig('BEI_AN')}
|
||||
</a>
|
||||
<br />
|
||||
</span>
|
||||
)
|
||||
}
|
||||
26
components/CopyRightDate.js
Normal file
26
components/CopyRightDate.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import { siteConfig } from '@/lib/config'
|
||||
|
||||
/**
|
||||
* 网站版权日期
|
||||
* 示例: 2021-2024
|
||||
* @returns
|
||||
*/
|
||||
export default function CopyRightDate() {
|
||||
const d = new Date()
|
||||
const currentYear = d.getFullYear()
|
||||
const since = siteConfig('SINCE')
|
||||
const copyrightDate =
|
||||
parseInt(since) < currentYear ? since + '-' + currentYear : currentYear
|
||||
|
||||
return (
|
||||
<span className='whitespace-nowrap flex items-center gap-x-1'>
|
||||
<i className='fas fa-copyright' />
|
||||
<span>{copyrightDate}</span>
|
||||
<a
|
||||
href={siteConfig('LINK')}
|
||||
className='underline font-semibold dark:text-gray-300 '>
|
||||
{siteConfig('AUTHOR')}
|
||||
</a>
|
||||
</span>
|
||||
)
|
||||
}
|
||||
20
components/PoweredBy.js
Normal file
20
components/PoweredBy.js
Normal file
@@ -0,0 +1,20 @@
|
||||
import { siteConfig } from '@/lib/config'
|
||||
|
||||
/**
|
||||
* 驱动版权
|
||||
* @returns
|
||||
*/
|
||||
export default function PoweredBy(props) {
|
||||
return (
|
||||
<div
|
||||
className={`gap-x-1 flex flex-wrap text-sm font-serif ${props.className}`}>
|
||||
<span>Powered by</span>
|
||||
<a
|
||||
href='https://github.com/tangly1024/NotionNext'
|
||||
className='underline justify-start'>
|
||||
NotionNext {siteConfig('VERSION')}
|
||||
</a>
|
||||
.
|
||||
</div>
|
||||
)
|
||||
}
|
||||
1
public/svg/zhishixingqiu-white.svg
Normal file
1
public/svg/zhishixingqiu-white.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg t="1717576376677" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5034" width="200" height="200"><path d="M511.061333 801.92a291.157333 291.157333 0 0 1-290.858666-290.858667 291.157333 291.157333 0 0 1 338.517333-286.933333 26.752 26.752 0 0 1-8.704 52.736 237.653333 237.653333 0 0 0-276.309333 234.24 237.653333 237.653333 0 0 0 237.354666 237.354667 237.653333 237.653333 0 0 0 233.258667-281.770667 26.709333 26.709333 0 1 1 52.48-9.941333 291.157333 291.157333 0 0 1-285.781333 345.173333M694.613333 275.328a53.333333 53.333333 0 1 1 0 106.666667 53.333333 53.333333 0 0 1 0-106.666667M511.061333 0C228.821333 0 0 228.821333 0 511.061333c0 282.24 228.821333 511.061333 511.061333 511.061334 282.24 0 511.061333-228.821333 511.061334-511.061334C1022.122667 228.821333 793.301333 0 511.061333 0" fill="#ffffff" p-id="5035"></path></svg>
|
||||
|
After Width: | Height: | Size: 889 B |
@@ -1,4 +1,6 @@
|
||||
import { GongAnBeiAn } from '@/components/GongAnBeiAn'
|
||||
import { BeiAnGongAn } from '@/components/BeiAnGongAn'
|
||||
import BeiAnSite from '@/components/BeiAnSite'
|
||||
import CopyRightDate from '@/components/CopyRightDate'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
import Link from 'next/link'
|
||||
import CONFIG from '../config'
|
||||
@@ -186,14 +188,7 @@ const Footer = props => {
|
||||
<div className='text-start space-y-1'>
|
||||
{/* 网站所有者 */}
|
||||
<div>
|
||||
{' '}
|
||||
Copyright <i className='fas fa-copyright' /> {`${copyrightDate}`}{' '}
|
||||
<a
|
||||
href={siteConfig('LINK')}
|
||||
className='underline font-bold dark:text-gray-300 '>
|
||||
{siteConfig('AUTHOR')}
|
||||
</a>{' '}
|
||||
All Rights Reserved.
|
||||
<CopyRightDate />
|
||||
</div>
|
||||
|
||||
{/* 技术支持 */}
|
||||
@@ -227,15 +222,10 @@ const Footer = props => {
|
||||
</h1>
|
||||
<h2> {siteConfig('DESCRIPTION')}</h2>
|
||||
{/* 可选备案信息 */}
|
||||
{siteConfig('BEI_AN') && (
|
||||
<>
|
||||
<i className='fas fa-shield-alt' />{' '}
|
||||
<a href='https://beian.miit.gov.cn/' className='mr-2'>
|
||||
{siteConfig('BEI_AN')}
|
||||
</a>
|
||||
</>
|
||||
)}
|
||||
<GongAnBeiAn />
|
||||
<div className='flex flex-wrap'>
|
||||
<BeiAnSite />
|
||||
<BeiAnGongAn />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,44 +1,25 @@
|
||||
import { BeiAnGongAn } from '@/components/BeiAnGongAn'
|
||||
import BeiAnSite from '@/components/BeiAnSite'
|
||||
import CopyRightDate from '@/components/CopyRightDate'
|
||||
import DarkModeButton from '@/components/DarkModeButton'
|
||||
import { GongAnBeiAn } from '@/components/GongAnBeiAn'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
import PoweredBy from '@/components/PoweredBy'
|
||||
|
||||
export const Footer = props => {
|
||||
const d = new Date()
|
||||
const currentYear = d.getFullYear()
|
||||
const since = siteConfig('SINCE')
|
||||
const copyrightDate =
|
||||
parseInt(since) < currentYear ? since + '-' + currentYear : currentYear
|
||||
|
||||
return (
|
||||
<footer className='z-10 relative w-full bg-white px-6 border-t dark:border-hexo-black-gray dark:bg-hexo-black-gray '>
|
||||
<footer className='z-10 relative w-full bg-white px-6 space-y-1 border-t dark:border-hexo-black-gray dark:bg-hexo-black-gray '>
|
||||
<DarkModeButton className='text-center pt-4' />
|
||||
|
||||
<div className='container mx-auto max-w-4xl py-6 md:flex flex-wrap md:flex-no-wrap md:justify-between items-center text-sm'>
|
||||
<div className='text-center'>
|
||||
{' '}
|
||||
©{`${copyrightDate}`} {siteConfig('AUTHOR')}. All rights
|
||||
reserved.
|
||||
</div>
|
||||
<CopyRightDate />
|
||||
<div className='md:p-0 text-center md:text-right text-xs'>
|
||||
{/* 右侧链接 */}
|
||||
{/* <a href="#" className="text-black no-underline hover:underline">Privacy Policy</a> */}
|
||||
{siteConfig('BEI_AN') && (
|
||||
<a
|
||||
href='https://beian.miit.gov.cn/'
|
||||
className='text-black dark:text-gray-200 no-underline hover:underline ml-4'>
|
||||
{siteConfig('BEI_AN')}{' '}
|
||||
</a>
|
||||
)}
|
||||
<GongAnBeiAn />
|
||||
<span className='dark:text-gray-200 no-underline ml-4'>
|
||||
Powered by
|
||||
<a
|
||||
href='https://github.com/tangly1024/NotionNext'
|
||||
className=' hover:underline'>
|
||||
{' '}
|
||||
NotionNext {siteConfig('VERSION')}{' '}
|
||||
</a>
|
||||
</span>
|
||||
<div className='flex flex-wrap'>
|
||||
{' '}
|
||||
<BeiAnSite />
|
||||
<BeiAnGongAn />
|
||||
</div>
|
||||
<PoweredBy />
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { GongAnBeiAn } from '@/components/GongAnBeiAn'
|
||||
import { BeiAnGongAn } from '@/components/BeiAnGongAn'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
|
||||
function SiteInfo({ title }) {
|
||||
@@ -28,7 +28,7 @@ function SiteInfo({ title }) {
|
||||
<br />
|
||||
</>
|
||||
)}
|
||||
<GongAnBeiAn />
|
||||
<BeiAnGongAn />
|
||||
<span className='hidden busuanzi_container_site_pv'>
|
||||
<i className='fas fa-eye' />
|
||||
<span className='px-1 busuanzi_value_site_pv'> </span>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { GongAnBeiAn } from '@/components/GongAnBeiAn'
|
||||
import { BeiAnGongAn } from '@/components/BeiAnGongAn'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
import SocialButton from './SocialButton'
|
||||
/**
|
||||
@@ -36,7 +36,7 @@ const Footer = ({ siteInfo }) => {
|
||||
<a href='https://beian.miit.gov.cn/' className='mr-2'>
|
||||
{siteConfig('BEI_AN')}
|
||||
</a>
|
||||
<GongAnBeiAn />
|
||||
<BeiAnGongAn />
|
||||
<br />
|
||||
</>
|
||||
)}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { GongAnBeiAn } from '@/components/GongAnBeiAn'
|
||||
import { BeiAnGongAn } from '@/components/BeiAnGongAn'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
import SocialButton from './SocialButton'
|
||||
|
||||
@@ -48,7 +48,7 @@ const Footer = ({ title }) => {
|
||||
</a>
|
||||
</>
|
||||
)}
|
||||
<GongAnBeiAn />
|
||||
<BeiAnGongAn />
|
||||
|
||||
<span className='hidden busuanzi_container_site_pv'>
|
||||
<i className='fas fa-eye' />
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { GongAnBeiAn } from '@/components/GongAnBeiAn'
|
||||
import { BeiAnGongAn } from '@/components/BeiAnGongAn'
|
||||
import BeiAnSite from '@/components/BeiAnSite'
|
||||
import PoweredBy from '@/components/PoweredBy'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
|
||||
const Footer = ({ title }) => {
|
||||
@@ -20,16 +22,8 @@ const Footer = ({ title }) => {
|
||||
{siteConfig('AUTHOR')}
|
||||
</a>
|
||||
.<br />
|
||||
{siteConfig('BEI_AN') && (
|
||||
<>
|
||||
<i className='fas fa-shield-alt' />
|
||||
<a href='https://beian.miit.gov.cn/' className='mr-2'>
|
||||
{siteConfig('BEI_AN')}
|
||||
</a>
|
||||
<br />
|
||||
</>
|
||||
)}
|
||||
<GongAnBeiAn />
|
||||
<BeiAnSite />
|
||||
<BeiAnGongAn />
|
||||
<span className='hidden busuanzi_container_site_pv'>
|
||||
<i className='fas fa-eye' />
|
||||
<span className='px-1 busuanzi_value_site_pv'> </span>
|
||||
@@ -41,15 +35,7 @@ const Footer = ({ title }) => {
|
||||
<h1 className='text-xs pt-4 text-light-400 dark:text-gray-400'>
|
||||
{title} {siteConfig('BIO') && <>|</>} {siteConfig('BIO')}
|
||||
</h1>
|
||||
<p className='text-xs pt-2 text-light-500 dark:text-gray-500'>
|
||||
Powered by
|
||||
<a
|
||||
href='https://github.com/tangly1024/NotionNext'
|
||||
className='dark:text-gray-300'>
|
||||
NotionNext {siteConfig('VERSION')}
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
<PoweredBy />
|
||||
</span>
|
||||
<br />
|
||||
</footer>
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
import AnalyticsBusuanzi from '@/components/AnalyticsBusuanzi'
|
||||
import { BeiAnGongAn } from '@/components/BeiAnGongAn'
|
||||
import BeiAnSite from '@/components/BeiAnSite'
|
||||
import CopyRightDate from '@/components/CopyRightDate'
|
||||
import DarkModeButton from '@/components/DarkModeButton'
|
||||
import { GongAnBeiAn } from '@/components/GongAnBeiAn'
|
||||
import LazyImage from '@/components/LazyImage'
|
||||
import PoweredBy from '@/components/PoweredBy'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
import { useGlobal } from '@/lib/global'
|
||||
import Link from 'next/link'
|
||||
@@ -10,11 +14,6 @@ import SocialButton from './SocialButton'
|
||||
* 网页底脚
|
||||
*/
|
||||
const Footer = ({ title }) => {
|
||||
const d = new Date()
|
||||
const currentYear = d.getFullYear()
|
||||
const since = siteConfig('SINCE')
|
||||
const copyrightDate =
|
||||
parseInt(since) < currentYear ? since + '-' + currentYear : currentYear
|
||||
const { siteInfo } = useGlobal()
|
||||
const MAGZINE_FOOTER_LINKS = siteConfig('MAGZINE_FOOTER_LINKS', [])
|
||||
|
||||
@@ -71,49 +70,26 @@ const Footer = ({ title }) => {
|
||||
|
||||
{/* 页脚 */}
|
||||
<div className='py-4 flex flex-col lg:flex-row justify-between items-center border-t border-gray-400'>
|
||||
<div className='flex gap-x-2 justify-between items-center'>
|
||||
<span className='whitespace-nowrap'>{`${copyrightDate}`}</span>
|
||||
|
||||
{siteConfig('BEI_AN') && (
|
||||
<>
|
||||
<i className='fas fa-shield-alt' />
|
||||
<a href='https://beian.miit.gov.cn/' className='mr-2'>
|
||||
{siteConfig('BEI_AN')}
|
||||
</a>
|
||||
<br />
|
||||
</>
|
||||
)}
|
||||
<GongAnBeiAn />
|
||||
|
||||
<div className='text-sm font-serif'>
|
||||
Powered by
|
||||
<a
|
||||
href='https://github.com/tangly1024/NotionNext'
|
||||
className='underline justify-start text-white'>
|
||||
NotionNext {siteConfig('VERSION')}
|
||||
</a>
|
||||
.
|
||||
</div>
|
||||
<div className='flex gap-x-2 flex-wrap justify-between items-center'>
|
||||
<CopyRightDate />
|
||||
<PoweredBy />
|
||||
</div>
|
||||
|
||||
<DarkModeButton className='text-white' />
|
||||
|
||||
<div className='flex justify-between items-center gap-x-2'>
|
||||
<div className='flex items-center gap-x-4'>
|
||||
<div>
|
||||
<span className='hidden busuanzi_container_site_pv'>
|
||||
<i className='fas fa-eye' />
|
||||
<span className='px-1 busuanzi_value_site_pv'> </span>
|
||||
</span>
|
||||
<span className='pl-2 hidden busuanzi_container_site_uv'>
|
||||
<i className='fas fa-users' />
|
||||
<span className='px-1 busuanzi_value_site_uv'> </span>
|
||||
</span>
|
||||
</div>
|
||||
<AnalyticsBusuanzi />
|
||||
<SocialButton />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 备案 */}
|
||||
<div className='w-full text-center flex flex-wrap items-center justify-center gap-x-2'>
|
||||
<BeiAnSite />
|
||||
<BeiAnGongAn />
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
)
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import QrCode from '@/components/QrCode'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
import { useState } from 'react'
|
||||
|
||||
/**
|
||||
* 社交联系方式按钮组
|
||||
@@ -6,98 +8,175 @@ import { siteConfig } from '@/lib/config'
|
||||
* @constructor
|
||||
*/
|
||||
const SocialButton = () => {
|
||||
const CONTACT_GITHUB = siteConfig('CONTACT_GITHUB')
|
||||
const CONTACT_TWITTER = siteConfig('CONTACT_TWITTER')
|
||||
const CONTACT_TELEGRAM = siteConfig('CONTACT_TELEGRAM')
|
||||
|
||||
const CONTACT_LINKEDIN = siteConfig('CONTACT_LINKEDIN')
|
||||
const CONTACT_WEIBO = siteConfig('CONTACT_WEIBO')
|
||||
const CONTACT_INSTAGRAM = siteConfig('CONTACT_INSTAGRAM')
|
||||
const CONTACT_EMAIL = siteConfig('CONTACT_EMAIL')
|
||||
const ENABLE_RSS = siteConfig('ENABLE_RSS')
|
||||
const CONTACT_BILIBILI = siteConfig('CONTACT_BILIBILI')
|
||||
const CONTACT_YOUTUBE = siteConfig('CONTACT_YOUTUBE')
|
||||
|
||||
const CONTACT_XIAOHONGSHU = siteConfig('CONTACT_XIAOHONGSHU')
|
||||
const CONTACT_ZHISHIXINGQIU = siteConfig('CONTACT_ZHISHIXINGQIU')
|
||||
const CONTACT_WEHCHAT_PUBLIC = siteConfig('CONTACT_WEHCHAT_PUBLIC')
|
||||
const [qrCodeShow, setQrCodeShow] = useState(false)
|
||||
const openPopover = () => {
|
||||
setQrCodeShow(true)
|
||||
}
|
||||
const closePopover = () => {
|
||||
setQrCodeShow(false)
|
||||
}
|
||||
|
||||
return (
|
||||
<div className='space-x-3 text-xl text-white flex-wrap flex justify-start '>
|
||||
{siteConfig('CONTACT_GITHUB') && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'github'}
|
||||
href={siteConfig('CONTACT_GITHUB')}>
|
||||
<i className='fab fa-github transform hover:scale-125 duration-150 hover:text-gray-100' />
|
||||
</a>
|
||||
)}
|
||||
{siteConfig('CONTACT_TWITTER') && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'twitter'}
|
||||
href={siteConfig('CONTACT_TWITTER')}>
|
||||
<i className='fab fa-twitter transform hover:scale-125 duration-150 hover:text-gray-100' />
|
||||
</a>
|
||||
)}
|
||||
{siteConfig('CONTACT_TELEGRAM') && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
href={siteConfig('CONTACT_TELEGRAM')}
|
||||
title={'telegram'}>
|
||||
<i className='fab fa-telegram transform hover:scale-125 duration-150 hover:text-gray-100' />
|
||||
</a>
|
||||
)}
|
||||
{siteConfig('CONTACT_LINKEDIN') && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
href={siteConfig('CONTACT_LINKEDIN')}
|
||||
title={'linkedIn'}>
|
||||
<i className='transform hover:scale-125 duration-150 fab fa-linkedin dark:hover:text-indigo-400 hover:text-indigo-600' />
|
||||
</a>
|
||||
)}
|
||||
{siteConfig('CONTACT_WEIBO') && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'weibo'}
|
||||
href={siteConfig('CONTACT_WEIBO')}>
|
||||
<i className='fab fa-weibo transform hover:scale-125 duration-150 hover:text-gray-100' />
|
||||
</a>
|
||||
)}
|
||||
{siteConfig('CONTACT_INSTAGRAM') && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'instagram'}
|
||||
href={siteConfig('CONTACT_INSTAGRAM')}>
|
||||
<i className='fab fa-instagram transform hover:scale-125 duration-150 hover:text-gray-100' />
|
||||
</a>
|
||||
)}
|
||||
{siteConfig('CONTACT_EMAIL') && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'email'}
|
||||
href={`mailto:${siteConfig('CONTACT_EMAIL')}`}>
|
||||
<i className='fas fa-envelope transform hover:scale-125 duration-150 hover:text-gray-100' />
|
||||
</a>
|
||||
)}
|
||||
{JSON.parse(siteConfig('ENABLE_RSS')) && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'RSS'}
|
||||
href={'/rss/feed.xml'}>
|
||||
<i className='fas fa-rss transform hover:scale-125 duration-150 hover:text-gray-100' />
|
||||
</a>
|
||||
)}
|
||||
{siteConfig('CONTACT_BILIBILI') && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'bilibili'}
|
||||
href={siteConfig('CONTACT_BILIBILI')}>
|
||||
<i className='fab fa-bilibili transform hover:scale-125 duration-150 hover:text-gray-100' />
|
||||
</a>
|
||||
)}
|
||||
{siteConfig('CONTACT_YOUTUBE') && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'youtube'}
|
||||
href={siteConfig('CONTACT_YOUTUBE')}>
|
||||
<i className='fab fa-youtube transform hover:scale-125 duration-150 hover:text-gray-100' />
|
||||
</a>
|
||||
)}
|
||||
<div className='w-full justify-center flex-wrap flex'>
|
||||
<div className='space-x-3 text-xl flex items-center text-white dark:text-gray-300 '>
|
||||
{CONTACT_GITHUB && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'github'}
|
||||
href={CONTACT_GITHUB}>
|
||||
<i className='transform hover:scale-125 duration-150 fab fa-github dark:hover:text-green-400 hover:text-green-600' />
|
||||
</a>
|
||||
)}
|
||||
{CONTACT_TWITTER && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'twitter'}
|
||||
href={CONTACT_TWITTER}>
|
||||
<i className='transform hover:scale-125 duration-150 fab fa-twitter dark:hover:text-green-400 hover:text-green-600' />
|
||||
</a>
|
||||
)}
|
||||
{CONTACT_TELEGRAM && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
href={CONTACT_TELEGRAM}
|
||||
title={'telegram'}>
|
||||
<i className='transform hover:scale-125 duration-150 fab fa-telegram dark:hover:text-green-400 hover:text-green-600' />
|
||||
</a>
|
||||
)}
|
||||
{CONTACT_LINKEDIN && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
href={CONTACT_LINKEDIN}
|
||||
title={'linkIn'}>
|
||||
<i className='transform hover:scale-125 duration-150 fab fa-linkedin dark:hover:text-green-400 hover:text-green-600' />
|
||||
</a>
|
||||
)}
|
||||
{CONTACT_WEIBO && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'weibo'}
|
||||
href={CONTACT_WEIBO}>
|
||||
<i className='transform hover:scale-125 duration-150 fab fa-weibo dark:hover:text-green-400 hover:text-green-600' />
|
||||
</a>
|
||||
)}
|
||||
{CONTACT_INSTAGRAM && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'instagram'}
|
||||
href={CONTACT_INSTAGRAM}>
|
||||
<i className='transform hover:scale-125 duration-150 fab fa-instagram dark:hover:text-green-400 hover:text-green-600' />
|
||||
</a>
|
||||
)}
|
||||
{CONTACT_EMAIL && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'email'}
|
||||
href={`mailto:${CONTACT_EMAIL}`}>
|
||||
<i className='transform hover:scale-125 duration-150 fas fa-envelope dark:hover:text-green-400 hover:text-green-600' />
|
||||
</a>
|
||||
)}
|
||||
{ENABLE_RSS && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'RSS'}
|
||||
href={'/rss/feed.xml'}>
|
||||
<i className='transform hover:scale-125 duration-150 fas fa-rss dark:hover:text-green-400 hover:text-green-600' />
|
||||
</a>
|
||||
)}
|
||||
{CONTACT_BILIBILI && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'bilibili'}
|
||||
href={CONTACT_BILIBILI}>
|
||||
<i className='transform hover:scale-125 duration-150 dark:hover:text-green-400 hover:text-green-600 fab fa-bilibili' />
|
||||
</a>
|
||||
)}
|
||||
{CONTACT_YOUTUBE && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'youtube'}
|
||||
href={CONTACT_YOUTUBE}>
|
||||
<i className='transform hover:scale-125 duration-150 fab fa-youtube dark:hover:text-green-400 hover:text-green-600' />
|
||||
</a>
|
||||
)}
|
||||
{CONTACT_XIAOHONGSHU && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'小红书'}
|
||||
href={CONTACT_XIAOHONGSHU}>
|
||||
{/* eslint-disable-next-line @next/next/no-img-element */}
|
||||
<img
|
||||
className='transform hover:scale-125 duration-150 w-6'
|
||||
src='/svg/xiaohongshu.svg'
|
||||
alt='小红书'
|
||||
/>
|
||||
</a>
|
||||
)}
|
||||
{CONTACT_ZHISHIXINGQIU && (
|
||||
<a
|
||||
target='_blank'
|
||||
rel='noreferrer'
|
||||
title={'知识星球'}
|
||||
className='flex justify-center items-center'
|
||||
href={CONTACT_ZHISHIXINGQIU}>
|
||||
{/* eslint-disable-next-line @next/next/no-img-element */}
|
||||
<img
|
||||
className='transform hover:scale-125 duration-150 w-6'
|
||||
src='/svg/zhishixingqiu-white.svg'
|
||||
alt='知识星球'
|
||||
/>{' '}
|
||||
</a>
|
||||
)}
|
||||
{CONTACT_WEHCHAT_PUBLIC && (
|
||||
<button
|
||||
onMouseEnter={openPopover}
|
||||
onMouseLeave={closePopover}
|
||||
aria-label={'微信公众号'}>
|
||||
<div id='wechat-button'>
|
||||
<i className='transform scale-105 hover:scale-125 duration-150 fab fa-weixin dark:hover:text-green-400 hover:text-green-600' />
|
||||
</div>
|
||||
{/* 二维码弹框 */}
|
||||
<div className='absolute'>
|
||||
<div
|
||||
id='pop'
|
||||
className={
|
||||
(qrCodeShow ? 'opacity-100 ' : ' invisible opacity-0') +
|
||||
' z-40 absolute bottom-10 -left-10 bg-white shadow-xl transition-all duration-200 text-center'
|
||||
}>
|
||||
<div className='p-2 mt-1 w-28 h-28'>
|
||||
{qrCodeShow && <QrCode value={CONTACT_WEHCHAT_PUBLIC} />}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -276,10 +276,12 @@ const LayoutSlug = props => {
|
||||
{/* 广告醒图 */}
|
||||
<BannerFullWidth />
|
||||
{/* 推荐关联文章 */}
|
||||
<PostSimpleListHorizontal
|
||||
title={locale.COMMON.RELATE_POSTS}
|
||||
posts={recommendPosts}
|
||||
/>
|
||||
{recommendPosts && recommendPosts.length > 0 && (
|
||||
<PostSimpleListHorizontal
|
||||
title={locale.COMMON.RELATE_POSTS}
|
||||
posts={recommendPosts}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { GongAnBeiAn } from '@/components/GongAnBeiAn'
|
||||
import { BeiAnGongAn } from '@/components/BeiAnGongAn'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
|
||||
const Footer = ({ title }) => {
|
||||
@@ -37,7 +37,7 @@ const Footer = ({ title }) => {
|
||||
<br />
|
||||
</>
|
||||
)}
|
||||
<GongAnBeiAn />
|
||||
<BeiAnGongAn />
|
||||
<span className='hidden busuanzi_container_site_pv'>
|
||||
<i className='fas fa-eye' />
|
||||
<span className='px-1 busuanzi_value_site_pv'> </span>{' '}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { BeiAnGongAn } from '@/components/BeiAnGongAn'
|
||||
import DarkModeButton from '@/components/DarkModeButton'
|
||||
import { GongAnBeiAn } from '@/components/GongAnBeiAn'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
|
||||
const Footer = ({ title }) => {
|
||||
@@ -30,7 +30,7 @@ const Footer = ({ title }) => {
|
||||
<br />
|
||||
</>
|
||||
)}
|
||||
<GongAnBeiAn />
|
||||
<BeiAnGongAn />
|
||||
<span className='hidden busuanzi_container_site_pv'>
|
||||
<i className='fas fa-eye' />
|
||||
<span className='px-1 busuanzi_value_site_pv'> </span>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { BeiAnGongAn } from '@/components/BeiAnGongAn'
|
||||
import DarkModeButton from '@/components/DarkModeButton'
|
||||
import { GongAnBeiAn } from '@/components/GongAnBeiAn'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
/**
|
||||
* 页脚
|
||||
@@ -32,7 +32,7 @@ export const Footer = props => {
|
||||
{siteConfig('BEI_AN')}
|
||||
</a>
|
||||
)}
|
||||
<GongAnBeiAn />
|
||||
<BeiAnGongAn />
|
||||
<span className='dark:text-gray-200 no-underline ml-4'>
|
||||
Powered by
|
||||
<a
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { GongAnBeiAn } from '@/components/GongAnBeiAn'
|
||||
import { BeiAnGongAn } from '@/components/BeiAnGongAn'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
|
||||
const Footer = ({ siteInfo }) => {
|
||||
@@ -43,7 +43,7 @@ const Footer = ({ siteInfo }) => {
|
||||
<br />
|
||||
</>
|
||||
)}
|
||||
<GongAnBeiAn />
|
||||
<BeiAnGongAn />
|
||||
|
||||
<span className='hidden busuanzi_container_site_pv'>
|
||||
<i className='text-xs fas fa-eye' />
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { BeiAnGongAn } from '@/components/BeiAnGongAn'
|
||||
import DarkModeButton from '@/components/DarkModeButton'
|
||||
import { GongAnBeiAn } from '@/components/GongAnBeiAn'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
|
||||
const Footer = ({ title }) => {
|
||||
@@ -30,7 +30,7 @@ const Footer = ({ title }) => {
|
||||
<br />
|
||||
</>
|
||||
)}
|
||||
<GongAnBeiAn />
|
||||
<BeiAnGongAn />
|
||||
<span className='hidden busuanzi_container_site_pv'>
|
||||
<i className='fas fa-eye' />
|
||||
<span className='px-1 busuanzi_value_site_pv'> </span>{' '}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { BeiAnGongAn } from '@/components/BeiAnGongAn'
|
||||
import DarkModeButton from '@/components/DarkModeButton'
|
||||
import { GongAnBeiAn } from '@/components/GongAnBeiAn'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
|
||||
/**
|
||||
@@ -33,7 +33,7 @@ export default function Footer(props) {
|
||||
{siteConfig('BEI_AN')}
|
||||
</a>
|
||||
)}
|
||||
<GongAnBeiAn />
|
||||
<BeiAnGongAn />
|
||||
<span className='no-underline ml-4'>
|
||||
Powered by
|
||||
<a
|
||||
|
||||
Reference in New Issue
Block a user