From b0ee510624731fac45e625e03f7865eb2301e243 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Mon, 17 Jun 2024 17:03:42 +0800 Subject: [PATCH 001/290] =?UTF-8?q?=E7=99=BB=E5=BD=95-clerk=E6=96=B9?= =?UTF-8?q?=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog.config.js | 4 +- lib/global.js | 2 +- middleware.ts | 40 ++++ next-env.d.ts | 5 + package.json | 3 + pages/_app.js | 17 +- pages/api/user.ts | 18 ++ pages/{signin.js => sign-in/[[...index]].js} | 13 ++ pages/{signup.js => sign-up/[[...index]].js} | 11 + themes/starter/components/NavBar.js | 112 ++++++----- themes/starter/config.js | 4 +- themes/starter/index.js | 47 +++-- tsconfig.json | 39 ++++ yarn.lock | 199 +++++++++++++++++-- 14 files changed, 421 insertions(+), 93 deletions(-) create mode 100644 middleware.ts create mode 100644 next-env.d.ts create mode 100644 pages/api/user.ts rename pages/{signin.js => sign-in/[[...index]].js} (79%) rename pages/{signup.js => sign-up/[[...index]].js} (86%) create mode 100644 tsconfig.json diff --git a/blog.config.js b/blog.config.js index bd1bb579..f234bd56 100644 --- a/blog.config.js +++ b/blog.config.js @@ -125,8 +125,8 @@ const BLOG = { '/[prefix]': 'LayoutSlug', '/[prefix]/[slug]': 'LayoutSlug', '/[prefix]/[slug]/[...suffix]': 'LayoutSlug', - '/signin': 'LayoutSignIn', - '/signup': 'LayoutSignUp' + '/sign-in/[[...index]]': 'LayoutSignIn', + '/sign-up/[[...index]]': 'LayoutSignUp' }, CAN_COPY: process.env.NEXT_PUBLIC_CAN_COPY || true, // 是否允许复制页面内容 默认允许,如果设置为false、则全栈禁止复制内容。 diff --git a/lib/global.js b/lib/global.js index 71f2a74f..728414a8 100644 --- a/lib/global.js +++ b/lib/global.js @@ -1,9 +1,9 @@ +import { APPEARANCE, LANG, NOTION_PAGE_ID, THEME } from '@/blog.config' import { THEMES, initDarkMode, saveDarkModeToLocalStorage } from '@/themes/theme' -import { APPEARANCE, LANG, NOTION_PAGE_ID, THEME } from 'blog.config' import { useRouter } from 'next/router' import { createContext, useContext, useEffect, useState } from 'react' import { diff --git a/middleware.ts b/middleware.ts new file mode 100644 index 00000000..f01d943c --- /dev/null +++ b/middleware.ts @@ -0,0 +1,40 @@ +import { clerkMiddleware, createRouteMatcher } from '@clerk/nextjs/server' + +/** + * clerk 身份验证中间件 + */ +export const config = { + // 这里设置白名单,防止静态资源被拦截 + matcher: ['/((?!.*\\..*|_next|/sign-in).*)', '/', '/(api|trpc)(.*)'] +} + +// 被保护的路由 + +const isTenantRoute = createRouteMatcher([ + '/user/organization-selector(.*)', + '/user/orgid/(.*)' +]) + +// 被限制权限的路由 +const isTenantAdminRoute = createRouteMatcher([ + '/admin/(.*)/memberships', + '/admin/(.*)/domain' +]) + +// 路由登录及权限检查 +export default clerkMiddleware( + (auth, req) => { + // Restrict admin routes to users with specific permissions + if (isTenantAdminRoute(req)) { + auth().protect(has => { + return ( + has({ permission: 'org:sys_memberships:manage' }) || + has({ permission: 'org:sys_domains_manage' }) + ) + }) + } + // Restrict organization routes to signed in users + if (isTenantRoute(req)) auth().protect() + } + // { debug: process.env.npm_lifecycle_event === 'dev' } // 开发调试模式打印日志 +) diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 00000000..4f11a03d --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/package.json b/package.json index 69523c55..05e9096a 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "build-all-in-dev": "cross-env VERCEL_ENV=production next build" }, "dependencies": { + "@clerk/nextjs": "^5.1.5", "@headlessui/react": "^1.7.15", "@next/bundle-analyzer": "^12.1.1", "@vercel/analytics": "^1.0.0", @@ -42,6 +43,7 @@ "react-tweet-embed": "~2.0.0" }, "devDependencies": { + "@types/react": "^18.3.3", "@waline/client": "^2.5.1", "autoprefixer": "^10.4.13", "cross-env": "^7.0.3", @@ -59,6 +61,7 @@ "postcss": "^8.4.31", "prettier": "3.2.5", "tailwindcss": "^3.3.2", + "typescript": "^5.4.5", "webpack-bundle-analyzer": "^4.5.0" }, "resolutions": { diff --git a/pages/_app.js b/pages/_app.js index f2fe635a..e052af34 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -17,6 +17,7 @@ import { getQueryParam } from '../lib/utils' import BLOG from '@/blog.config' import ExternalPlugins from '@/components/ExternalPlugins' import GlobalHead from '@/components/GlobalHead' +import { ClerkProvider } from '@clerk/nextjs' /** * App挂载DOM 入口文件 @@ -47,13 +48,15 @@ const MyApp = ({ Component, pageProps }) => { ) return ( - - - - - - - + + + + + + + + + ) } diff --git a/pages/api/user.ts b/pages/api/user.ts new file mode 100644 index 00000000..f60905c0 --- /dev/null +++ b/pages/api/user.ts @@ -0,0 +1,18 @@ +import { getAuth } from '@clerk/nextjs/server' +import type { NextApiRequest, NextApiResponse } from 'next' +/** + * clerk身份测试 + * @param req + * @param res + * @returns + */ +export default function handler(req: NextApiRequest, res: NextApiResponse) { + const user = getAuth(req) + const { userId } = user + if (!userId) { + return res.status(401).json({ error: 'Unauthorized' }) + } + + // retrieve data from your database + res.status(200).json({ userId }) +} diff --git a/pages/signin.js b/pages/sign-in/[[...index]].js similarity index 79% rename from pages/signin.js rename to pages/sign-in/[[...index]].js index fbf618a4..de668283 100644 --- a/pages/signin.js +++ b/pages/sign-in/[[...index]].js @@ -1,6 +1,8 @@ +// import BLOG from '@/blog.config' import BLOG from '@/blog.config' import { siteConfig } from '@/lib/config' import { getGlobalData } from '@/lib/db/getSiteData' +// import { getGlobalData } from '@/lib/db/getSiteData' import { getLayoutByTheme } from '@/themes/theme' import { useRouter } from 'next/router' @@ -37,4 +39,15 @@ export async function getStaticProps(req) { } } +/** + * catch-all route for clerk + * @returns + */ +export async function getStaticPaths() { + return { + paths: [], + fallback: true + } +} + export default SignIn diff --git a/pages/signup.js b/pages/sign-up/[[...index]].js similarity index 86% rename from pages/signup.js rename to pages/sign-up/[[...index]].js index bbe38129..f2dc9281 100644 --- a/pages/signup.js +++ b/pages/sign-up/[[...index]].js @@ -37,4 +37,15 @@ export async function getStaticProps(req) { } } +/** + * catch-all route for clerk + * @returns + */ +export async function getStaticPaths() { + return { + paths: [], + fallback: true + } +} + export default SignUp diff --git a/themes/starter/components/NavBar.js b/themes/starter/components/NavBar.js index 2d4fda41..f5b1d7af 100644 --- a/themes/starter/components/NavBar.js +++ b/themes/starter/components/NavBar.js @@ -1,21 +1,24 @@ /* eslint-disable no-unreachable */ -import throttle from 'lodash.throttle'; +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import { SignedIn, SignedOut, UserButton } from '@clerk/nextjs' +import throttle from 'lodash.throttle' +import { useRouter } from 'next/router' import { useCallback, useEffect, useState } from 'react' -import { MenuList } from './MenuList'; -import { DarkModeButton } from './DarkModeButton'; -import { Logo } from './Logo'; -import { useRouter } from 'next/router'; -import { siteConfig } from '@/lib/config'; -import CONFIG from '../config'; -import { useGlobal } from '@/lib/global'; +import CONFIG from '../config' +import { DarkModeButton } from './DarkModeButton' +import { Logo } from './Logo' +import { MenuList } from './MenuList' /** * 顶部导航栏 */ -export const NavBar = (props) => { +export const NavBar = props => { const router = useRouter() const { isDarkMode } = useGlobal() - const [buttonTextColor, setColor] = useState(router.route === '/' ? 'text-white' : '') + const [buttonTextColor, setColor] = useState( + router.route === '/' ? 'text-white' : '' + ) useEffect(() => { if (isDarkMode || router.route === '/') { setColor('text-white') @@ -33,59 +36,70 @@ export const NavBar = (props) => { const throttleMs = 200 const navBarScollListener = useCallback( throttle(() => { - // eslint-disable-next-line camelcase - const ud_header = document.querySelector('.ud-header'); - const scrollY = window.scrollY; + // eslint-disable-next-line camelcase + const ud_header = document.querySelector('.ud-header') + const scrollY = window.scrollY // 控制台输出当前滚动位置和 sticky 值 if (scrollY > 0) { - ud_header?.classList?.add('sticky'); + ud_header?.classList?.add('sticky') } else { - ud_header?.classList?.remove('sticky'); + ud_header?.classList?.remove('sticky') } }, throttleMs) ) - return <> - {/* */} -
+ return ( + <> + {/* */} +
+
+
+ {/* Logo */} + -
+
+ {/* 中间菜单 */} + -
+ {/* 右侧功能 */} +
+ {/* 深色模式切换 */} + - {/* Logo */} - + {/* 注册登录功能 */} +
+ + + {siteConfig('STARTER_NAV_BUTTON_1_TEXT', null, CONFIG)} + + {/* */} + -
- - {/* 中间菜单 */} - - - {/* 右侧功能 */} - + + + + {/* + {siteConfig('STARTER_NAV_BUTTON_2_TEXT', null, CONFIG)} + */}
+
+
-
- {/* */} +
+ {/* */} + ) } diff --git a/themes/starter/config.js b/themes/starter/config.js index 09321df1..7501141a 100644 --- a/themes/starter/config.js +++ b/themes/starter/config.js @@ -24,10 +24,10 @@ const CONFIG = { // 顶部右侧导航暗流 STARTER_NAV_BUTTON_1_TEXT: 'Sign In', - STARTER_NAV_BUTTON_1_URL: '/signin', + STARTER_NAV_BUTTON_1_URL: '/sign-in', STARTER_NAV_BUTTON_2_TEXT: 'Sign Up', - STARTER_NAV_BUTTON_2_URL: '/signup', + STARTER_NAV_BUTTON_2_URL: '/sign-up', // 特性区块 STARTER_FEATURE_ENABLE: true, // 特性区块开关 diff --git a/themes/starter/index.js b/themes/starter/index.js index 195b7d0f..25c9222d 100644 --- a/themes/starter/index.js +++ b/themes/starter/index.js @@ -33,12 +33,12 @@ import { Style } from './style' // import { MadeWithButton } from './components/MadeWithButton' import BLOG from '@/blog.config' import { loadWowJS } from '@/lib/plugins/wow' +import { SignIn, SignUp } from '@clerk/nextjs' import Link from 'next/link' import { Banner } from './components/Banner' import { SignInForm } from './components/SignInForm' import { SignUpForm } from './components/SignUpForm' import { SVG404 } from './components/svg/SVG404' - /** * 布局框架 * Landing-2 主题用作产品落地页展示 @@ -225,6 +225,7 @@ const LayoutTagIndex = props => <> * @returns */ const LayoutSignIn = props => { + const enableClerk = process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY return ( <>
@@ -232,7 +233,15 @@ const LayoutSignIn = props => { title='登录' description='这里是演示页面,NotionNext目前不提供会员登录功能' /> - + {/* clerk预置表单 */} + {enableClerk && ( +
+ +
+ )} + + {/* 自定义登录表单 */} + {!enableClerk && }
) @@ -243,17 +252,29 @@ const LayoutSignIn = props => { * @param {*} props * @returns */ -const LayoutSignUp = props => ( - <> -
- - -
- -) +const LayoutSignUp = props => { + const enableClerk = process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY + return ( + <> +
+ + + {/* clerk预置表单 */} + {enableClerk && ( +
+ +
+ )} + + {/* 自定义登录表单 */} + {!enableClerk && } +
+ + ) +} export { Layout404, diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..89d479ab --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,39 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./*"], + "@/components/*": ["components/*"], + "@/theme/*": ["theme/*"], + "@/data/*": ["data/*"], + "@/lib/*": ["lib/*"], + "@/styles/*": ["styles/*"] + }, + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "strict": false, + "noEmit": true, + "incremental": true, + "module": "esnext", + "esModuleInterop": true, + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve" + }, + "include": [ + "next-env.d.ts", + "**/*.js", + "**/*.ts", + "**/*.tsx", + "**/*.jsx" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/yarn.lock b/yarn.lock index c3b330c4..da84d3ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -149,6 +149,57 @@ dependencies: regenerator-runtime "^0.14.0" +"@clerk/backend@1.2.3": + version "1.2.3" + resolved "https://r.cnpmjs.org/@clerk/backend/-/backend-1.2.3.tgz#b943c3a986da763342eba157469b11bf0ef83c41" + integrity sha512-tj812eTTn2ewXMgr4jwFjpqoXZRF2LMw9UBT+Nat0lmXw55sDA5ou2McLZ67e62WNZwbrCUa51MGKSBhrWnZcA== + dependencies: + "@clerk/shared" "2.3.0" + "@clerk/types" "4.6.0" + cookie "0.5.0" + snakecase-keys "5.4.4" + tslib "2.4.1" + +"@clerk/clerk-react@5.2.4": + version "5.2.4" + resolved "https://r.cnpmjs.org/@clerk/clerk-react/-/clerk-react-5.2.4.tgz#e3b45af2eb5c9650d21522cef2fb132f4e71ee4f" + integrity sha512-TaSjf3pdxUKQIDmwi6JkJDVGwHbs7pTeiwEr2/JksMrQnW6zMIutsEhJfW10dY1hOwJeDoSxGCkHw+7Br2rktw== + dependencies: + "@clerk/shared" "2.3.0" + "@clerk/types" "4.6.0" + tslib "2.4.1" + +"@clerk/nextjs@^5.1.5": + version "5.1.5" + resolved "https://r.cnpmjs.org/@clerk/nextjs/-/nextjs-5.1.5.tgz#559473a0e61af61d43e4e4a3242794db65b0ebfc" + integrity sha512-q/4PvWrIt4cO9dwgUyJ/gN/fWbS2GnfKK7j32cn6LBObVqUIiQ+J5Q+lp75q+tzIHyxFJx+MNNTnFif2OrvV6A== + dependencies: + "@clerk/backend" "1.2.3" + "@clerk/clerk-react" "5.2.4" + "@clerk/shared" "2.3.0" + "@clerk/types" "4.6.0" + crypto-js "4.2.0" + path-to-regexp "6.2.2" + tslib "2.4.1" + +"@clerk/shared@2.3.0": + version "2.3.0" + resolved "https://r.cnpmjs.org/@clerk/shared/-/shared-2.3.0.tgz#5340503948d4e770ef170e64488c1613441fc1d5" + integrity sha512-V/49MoOrALzpu0BbhYDCcKQYIjrHnhRa7QFho9+4wm94oCJgc9j3N5wxndJwj3Ur/fmIyBnjwMzDAT2nZZj47g== + dependencies: + "@clerk/types" "4.6.0" + glob-to-regexp "0.4.1" + js-cookie "3.0.5" + std-env "^3.7.0" + swr "^2.2.0" + +"@clerk/types@4.6.0": + version "4.6.0" + resolved "https://r.cnpmjs.org/@clerk/types/-/types-4.6.0.tgz#2dd88a3ee603f4577606ad8ad1a46ae8c70401ec" + integrity sha512-kowqVGqLfu0Zl2Pteum70MfkGHqBUoHHeR+u2+yWVl1lKHLCiyY1u8ntYBEIolAylBaQNDuRzxyMIDPSxjPE8g== + dependencies: + csstype "3.1.1" + "@corex/deepmerge@^2.6.148": version "2.6.148" resolved "https://registry.yarnpkg.com/@corex/deepmerge/-/deepmerge-2.6.148.tgz#8fa825d53ffd1cbcafce1b6a830eefd3dcc09dd5" @@ -436,6 +487,19 @@ dependencies: undici-types "~5.26.4" +"@types/prop-types@*": + version "15.7.12" + resolved "https://r.cnpmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" + integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== + +"@types/react@^18.3.3": + version "18.3.3" + resolved "https://r.cnpmjs.org/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" + integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + "@types/responselike@^1.0.0": version "1.0.3" resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" @@ -1118,6 +1182,11 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +cookie@0.5.0: + version "0.5.0" + resolved "https://r.cnpmjs.org/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + copy-to-clipboard@^3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" @@ -1141,6 +1210,11 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" +crypto-js@4.2.0: + version "4.2.0" + resolved "https://r.cnpmjs.org/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== + css-in-js-utils@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz#640ae6a33646d401fc720c54fc61c42cd76ae2bb" @@ -1161,7 +1235,12 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -csstype@^3.1.2, csstype@^3.1.3: +csstype@3.1.1: + version "3.1.1" + resolved "https://r.cnpmjs.org/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" + integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== + +csstype@^3.0.2, csstype@^3.1.2, csstype@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== @@ -1273,6 +1352,14 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dot-case@^3.0.4: + version "3.0.4" + resolved "https://r2.cnpmjs.org/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -1952,6 +2039,11 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob-to-regexp@0.4.1: + version "0.4.1" + resolved "https://r2.cnpmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob@7.1.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -2404,6 +2496,11 @@ jiti@^1.19.1: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== +js-cookie@3.0.5: + version "3.0.5" + resolved "https://r.cnpmjs.org/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" + integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== + js-cookie@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" @@ -2561,6 +2658,13 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lower-case@^2.0.2: + version "2.0.2" + resolved "https://r2.cnpmjs.org/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + lowercase-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" @@ -2602,6 +2706,11 @@ map-age-cleaner@^0.1.3: dependencies: p-defer "^1.0.0" +map-obj@^4.1.0: + version "4.3.0" + resolved "https://r2.cnpmjs.org/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + marked@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" @@ -2788,6 +2897,14 @@ next@14.2.4: "@next/swc-win32-ia32-msvc" "14.2.4" "@next/swc-win32-x64-msvc" "14.2.4" +no-case@^3.0.4: + version "3.0.4" + resolved "https://r2.cnpmjs.org/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + node-releases@^2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" @@ -3009,6 +3126,11 @@ path-scurry@^1.10.1: lru-cache "^9.1.1 || ^10.0.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" +path-to-regexp@6.2.2: + version "6.2.2" + resolved "https://r.cnpmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz#324377a83e5049cbecadc5554d6a63a9a4866b36" + integrity sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw== + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -3594,6 +3716,23 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +snake-case@^3.0.4: + version "3.0.4" + resolved "https://r2.cnpmjs.org/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +snakecase-keys@5.4.4: + version "5.4.4" + resolved "https://r.cnpmjs.org/snakecase-keys/-/snakecase-keys-5.4.4.tgz#28745b0175863ffc292ad97d96fe4e8e288a87a2" + integrity sha512-YTywJG93yxwHLgrYLZjlC75moVEX04LZM4FHfihjHe1FCXm+QaLOFfSf535aXOAd0ArVQMWUAe8ZPm4VtWyXaA== + dependencies: + map-obj "^4.1.0" + snake-case "^3.0.4" + type-fest "^2.5.2" + source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -3648,21 +3787,17 @@ stacktrace-js@^2.0.2: stack-generator "^2.0.5" stacktrace-gps "^3.0.4" +std-env@^3.7.0: + version "3.7.0" + resolved "https://r.cnpmjs.org/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" + integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== + streamsearch@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -3722,14 +3857,7 @@ string.prototype.trimstart@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -3797,6 +3925,14 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +swr@^2.2.0: + version "2.2.5" + resolved "https://r.cnpmjs.org/swr/-/swr-2.2.5.tgz#063eea0e9939f947227d5ca760cc53696f46446b" + integrity sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg== + dependencies: + client-only "^0.0.1" + use-sync-external-store "^1.2.0" + synckit@^0.8.6: version "0.8.8" resolved "https://r.cnpmjs.org/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" @@ -3930,6 +4066,16 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" +tslib@2.4.1: + version "2.4.1" + resolved "https://r.cnpmjs.org/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + +tslib@^2.0.3: + version "2.6.3" + resolved "https://r.cnpmjs.org/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + tslib@^2.1.0, tslib@^2.4.0, tslib@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" @@ -3947,6 +4093,11 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +type-fest@^2.5.2: + version "2.19.0" + resolved "https://r.cnpmjs.org/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + typed-array-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" @@ -3986,6 +4137,11 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" +typescript@^5.4.5: + version "5.4.5" + resolved "https://r.cnpmjs.org/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== + unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -4021,6 +4177,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +use-sync-external-store@^1.2.0: + version "1.2.2" + resolved "https://r.cnpmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz#c3b6390f3a30eba13200d2302dcdf1e7b57b2ef9" + integrity sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw== + util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" From 55ee4325924378a34fe68526aa15b43ad6ac2f29 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Mon, 17 Jun 2024 17:39:04 +0800 Subject: [PATCH 002/290] fix build --- next.config.js | 3 +++ pages/api/user.ts | 22 ++++++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/next.config.js b/next.config.js index ce46d750..b586de22 100644 --- a/next.config.js +++ b/next.config.js @@ -58,6 +58,9 @@ function scanSubdirectories(directory) { */ const nextConfig = { + eslint: { + ignoreDuringBuilds: true + }, output: process.env.EXPORT ? 'export' : undefined, // 多语言, 在export时禁用 i18n: process.env.EXPORT diff --git a/pages/api/user.ts b/pages/api/user.ts index f60905c0..13fb3026 100644 --- a/pages/api/user.ts +++ b/pages/api/user.ts @@ -1,18 +1,24 @@ import { getAuth } from '@clerk/nextjs/server' import type { NextApiRequest, NextApiResponse } from 'next' + /** - * clerk身份测试 + * Clerk 身份测试 * @param req * @param res * @returns */ export default function handler(req: NextApiRequest, res: NextApiResponse) { - const user = getAuth(req) - const { userId } = user - if (!userId) { - return res.status(401).json({ error: 'Unauthorized' }) - } + try { + const { userId } = getAuth(req) - // retrieve data from your database - res.status(200).json({ userId }) + if (!userId) { + return res.status(401).json({ error: 'Unauthorized' }) + } + + // Retrieve data from your database + res.status(200).json({ userId }) + } catch (error) { + console.error(error) + res.status(500).json({ error: 'Internal Server Error' }) + } } From af32458a55683d12ac48c88ccc8c66218b1ce424 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Mon, 17 Jun 2024 17:54:36 +0800 Subject: [PATCH 003/290] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=B8=BAmodal?= =?UTF-8?q?=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/_app.js | 20 ++++++++++---------- themes/starter/components/NavBar.js | 11 ++++++----- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/pages/_app.js b/pages/_app.js index e052af34..b29b8022 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -47,17 +47,17 @@ const MyApp = ({ Component, pageProps }) => { [queryParam] ) - return ( - - - - - - - - - + const enableClerk = process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY + const content = ( + + + + + + + ) + return <>{enableClerk ? {content} : content} } export default MyApp diff --git a/themes/starter/components/NavBar.js b/themes/starter/components/NavBar.js index f5b1d7af..52425829 100644 --- a/themes/starter/components/NavBar.js +++ b/themes/starter/components/NavBar.js @@ -1,11 +1,9 @@ /* eslint-disable no-unreachable */ -import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' -import { SignedIn, SignedOut, UserButton } from '@clerk/nextjs' +import { SignInButton, SignedIn, SignedOut, UserButton } from '@clerk/nextjs' import throttle from 'lodash.throttle' import { useRouter } from 'next/router' import { useCallback, useEffect, useState } from 'react' -import CONFIG from '../config' import { DarkModeButton } from './DarkModeButton' import { Logo } from './Logo' import { MenuList } from './MenuList' @@ -69,7 +67,7 @@ export const NavBar = props => { {/* 注册登录功能 */}
- { )} className={`loginBtn ${buttonTextColor} px-[22px] py-2 text-base font-medium hover:opacity-70`}> {siteConfig('STARTER_NAV_BUTTON_1_TEXT', null, CONFIG)} - + */} + + + {/*
+
+ ) : null +} diff --git a/components/LoadingProgress.js b/components/LoadingProgress.js index f217765f..81b98b84 100644 --- a/components/LoadingProgress.js +++ b/components/LoadingProgress.js @@ -3,7 +3,8 @@ import { useRouter } from 'next/router' import { useEffect, useState } from 'react' /** - * 出现页面加载进度条 + * 加载进度条 + * NProgress实现 */ export default function LoadingProgress() { const router = useRouter() diff --git a/lib/global.js b/lib/global.js index 1dcd0c9f..6aac3b3b 100644 --- a/lib/global.js +++ b/lib/global.js @@ -15,12 +15,6 @@ import { } from './lang' const GlobalContext = createContext() -/** - * 定义全局变量,包括语言、主题、深色模式、加载状态 - * @param children - * @returns {JSX.Element} - * @constructor - */ export function GlobalContextProvider(props) { const { post, @@ -40,7 +34,7 @@ export function GlobalContextProvider(props) { const defaultDarkMode = NOTION_CONFIG?.APPEARANCE || APPEARANCE const [isDarkMode, updateDarkMode] = useState(defaultDarkMode === 'dark') // 默认深色模式 - const [onLoading, setOnLoading] = useState(false) // 抓取文章数据 + const [onLoading, setOnLoading] = useState(true) // 抓取文章数据 const router = useRouter() // 是否全屏 @@ -74,10 +68,6 @@ export function GlobalContextProvider(props) { htmlElement.classList?.add(newStatus ? 'dark' : 'light') } - /** - * 更新语言 - * 这里是代码级别的多语言,整个站点和文章内容的多语言不在此处理 - */ function changeLang(lang) { if (lang) { saveLangToLocalStorage(lang) @@ -89,13 +79,12 @@ export function GlobalContextProvider(props) { useEffect(() => { initDarkMode(updateDarkMode, defaultDarkMode) initLocale(lang, locale, updateLang, updateLocale) - // 可以 if (NOTION_CONFIG?.REDIRECT_LANG) { redirectUserLang(NOTION_PAGE_ID) } + setOnLoading(false) }, []) - // 加载进度条 useEffect(() => { const handleStart = url => { const { theme } = router.query @@ -103,10 +92,15 @@ export function GlobalContextProvider(props) { const newUrl = `${url}${url.includes('?') ? '&' : '?'}theme=${theme}` router.push(newUrl) } - setOnLoading(true) + if (!onLoading) { + setOnLoading(true) + } } + const handleStop = () => { - setOnLoading(false) + if (onLoading) { + setOnLoading(false) + } } const currentTheme = router?.query?.theme || theme @@ -120,7 +114,7 @@ export function GlobalContextProvider(props) { router.events.off('routeChangeComplete', handleStop) router.events.off('routeChangeError', handleStop) } - }, [router]) + }, [router, onLoading]) return ( -
- -
-
- ) -} diff --git a/themes/heo/config.js b/themes/heo/config.js index b3a830a3..436ad33d 100644 --- a/themes/heo/config.js +++ b/themes/heo/config.js @@ -1,5 +1,6 @@ const CONFIG = { HEO_HOME_POST_TWO_COLS: true, // 首页博客两列显示,若为false则只显示一列 + HEO_LOADING_COVER: true, // 页面加载的遮罩动画 HEO_HOME_BANNER_ENABLE: true, diff --git a/themes/heo/index.js b/themes/heo/index.js index 33f88f27..b496ef20 100644 --- a/themes/heo/index.js +++ b/themes/heo/index.js @@ -10,6 +10,7 @@ import Comment from '@/components/Comment' import { AdSlot } from '@/components/GoogleAdsense' import { HashTag } from '@/components/HeroIcons' import LazyImage from '@/components/LazyImage' +import LoadingCover from '@/components/LoadingCover' import replaceSearchResult from '@/components/Mark' import NotionPage from '@/components/NotionPage' import ShareBar from '@/components/ShareBar' @@ -82,6 +83,7 @@ const LayoutBase = props => { false, CONFIG ) + const HEO_LOADING_COVER = siteConfig('HEO_LOADING_COVER', true, CONFIG) // 加载wow动画 useEffect(() => { @@ -121,6 +123,8 @@ const LayoutBase = props => { {/* 页脚 */}
+ + {HEO_LOADING_COVER && }
) } From 053fc6576be00c09360a91ad29bbd74aaf9632b9 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Thu, 29 Aug 2024 13:42:52 +0800 Subject: [PATCH 009/290] sitemap.xml --- pages/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pages/index.js b/pages/index.js index 43f5b114..a84c9b3b 100644 --- a/pages/index.js +++ b/pages/index.js @@ -3,6 +3,7 @@ import { siteConfig } from '@/lib/config' import { getGlobalData, getPostBlocks } from '@/lib/db/getSiteData' import { generateRobotsTxt } from '@/lib/robots.txt' import { generateRss } from '@/lib/rss' +import { generateSitemapXml } from '@/lib/sitemap.xml' import { getLayoutByTheme } from '@/themes/theme' import { useRouter } from 'next/router' @@ -62,6 +63,8 @@ export async function getStaticProps(req) { generateRobotsTxt(props) // 生成Feed订阅 generateRss(props) + // 生成 + generateSitemapXml(props) // 生成全文索引 - 仅在 yarn build 时执行 && process.env.npm_lifecycle_event === 'build' From ffa8511439d3dab582ee4241383529a53353d6f3 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Fri, 30 Aug 2024 18:15:23 +0800 Subject: [PATCH 010/290] =?UTF-8?q?heo=20=E5=8A=A8=E7=94=BB=E5=BE=AE?= =?UTF-8?q?=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/LoadingCover.js | 4 +-- themes/heo/components/Announcement.js | 16 +++++---- themes/heo/components/CategoryBar.js | 4 +-- themes/heo/components/InfoCard.js | 7 ++-- themes/heo/components/SideRight.js | 10 +++--- themes/heo/components/TouchMeCard.js | 49 ++++++++++++++++----------- 6 files changed, 51 insertions(+), 39 deletions(-) diff --git a/components/LoadingCover.js b/components/LoadingCover.js index ca0198f2..b53fa36c 100644 --- a/components/LoadingCover.js +++ b/components/LoadingCover.js @@ -13,7 +13,7 @@ export default function LoadingCover() { if (onLoading) { setIsVisible(true) } else { - const timeout = setTimeout(() => setIsVisible(false), 1000) // 等待淡出动画结束 + const timeout = setTimeout(() => setIsVisible(false), 1500) // 等待淡出动画结束 return () => clearTimeout(timeout) } }, [onLoading]) @@ -30,7 +30,7 @@ export default function LoadingCover() {
diff --git a/themes/heo/components/Announcement.js b/themes/heo/components/Announcement.js index 6c3feb2a..04955554 100644 --- a/themes/heo/components/Announcement.js +++ b/themes/heo/components/Announcement.js @@ -4,13 +4,15 @@ const NotionPage = dynamic(() => import('@/components/NotionPage')) const Announcement = ({ post, className }) => { if (post?.blockMap) { - return
- {post && ( -
- -
- )} -
+ return ( +
+ {post && ( +
+ +
+ )} +
+ ) } else { return <> } diff --git a/themes/heo/components/CategoryBar.js b/themes/heo/components/CategoryBar.js index 9879d8a7..d5548f9d 100644 --- a/themes/heo/components/CategoryBar.js +++ b/themes/heo/components/CategoryBar.js @@ -32,8 +32,8 @@ export default function CategoryBar(props) { return (
+ className={`wow fadeInUp flex flex-nowrap justify-between items-center h-12 mb-4 space-x-2 w-full lg:bg-white dark:lg:bg-[#1e1e1e] + ${border ? 'lg:border lg:hover:border dark:lg:border-gray-800 hover:border-indigo-600 dark:hover:border-yellow-600 ' : ''} py-2 lg:px-2 rounded-xl transition-colors duration-200`}>
+ {/* 信息卡牌第一行 */}
{/* 问候语 */} + {/* 头像 */}
{siteConfig('AUTHOR')} {/* 公告栏 */} -
- -
+
diff --git a/themes/heo/components/SideRight.js b/themes/heo/components/SideRight.js index c4dbffd7..464e2081 100644 --- a/themes/heo/components/SideRight.js +++ b/themes/heo/components/SideRight.js @@ -34,23 +34,25 @@ export default function SideRight(props) { return (
- +
{/* 文章页显示目录 */} {post && post.toc && post.toc.length > 0 && ( - + )} {/* 联系交流群 */} - +
+ +
{/* 最新文章列表 */} diff --git a/themes/heo/components/TouchMeCard.js b/themes/heo/components/TouchMeCard.js index 2388a9a5..42129ae0 100644 --- a/themes/heo/components/TouchMeCard.js +++ b/themes/heo/components/TouchMeCard.js @@ -1,8 +1,7 @@ - import FlipCard from '@/components/FlipCard' +import { siteConfig } from '@/lib/config' import Link from 'next/link' import CONFIG from '../config' -import { siteConfig } from '@/lib/config' /** * 交流频道 @@ -13,23 +12,33 @@ export default function TouchMeCard() { return <> } return ( -
- - -

{siteConfig('HEO_SOCIAL_CARD_TITLE_1', null, CONFIG)}

-

{siteConfig('HEO_SOCIAL_CARD_TITLE_2', null, CONFIG)}

-
-
} - backContent={ -
- {siteConfig('HEO_SOCIAL_CARD_TITLE_3', null, CONFIG)} -
- } - /> - -
+
+ +

+ {siteConfig('HEO_SOCIAL_CARD_TITLE_1', null, CONFIG)} +

+

+ {siteConfig('HEO_SOCIAL_CARD_TITLE_2', null, CONFIG)} +

+
+
+ } + backContent={ + +
+ {siteConfig('HEO_SOCIAL_CARD_TITLE_3', null, CONFIG)} +
+ + } + /> +
) } From 107a55a2408780014db898aeb67ab72f4558f6a5 Mon Sep 17 00:00:00 2001 From: tangly1024 Date: Sun, 1 Sep 2024 11:41:13 +0800 Subject: [PATCH 011/290] =?UTF-8?q?heo=E4=B8=BB=E9=A2=98=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/heo/components/BlogPostCard.js | 32 ++++++++------------- themes/heo/components/BlogPostListPage.js | 11 +++---- themes/heo/components/BlogPostListScroll.js | 8 ++---- 3 files changed, 18 insertions(+), 33 deletions(-) diff --git a/themes/heo/components/BlogPostCard.js b/themes/heo/components/BlogPostCard.js index c015be17..b954241a 100644 --- a/themes/heo/components/BlogPostCard.js +++ b/themes/heo/components/BlogPostCard.js @@ -1,14 +1,11 @@ import LazyImage from '@/components/LazyImage' import NotionIcon from '@/components/NotionIcon' import { siteConfig } from '@/lib/config' -import { useGlobal } from '@/lib/global' import Link from 'next/link' import CONFIG from '../config' import TagItemMini from './TagItemMini' const BlogPostCard = ({ index, post, showSummary, siteInfo }) => { - const { NOTION_CONFIG } = useGlobal() - const showPreview = siteConfig('HEO_POST_LIST_PREVIEW', null, CONFIG) && post.blockMap if ( @@ -23,32 +20,29 @@ const BlogPostCard = ({ index, post, showSummary, siteInfo }) => { post?.pageCoverThumbnail && !showPreview - const POST_TWO_COLS = siteConfig( - 'HEO_HOME_POST_TWO_COLS', - null, - NOTION_CONFIG + const POST_TWO_COLS = siteConfig('HEO_HOME_POST_TWO_COLS', true, CONFIG) + const COVER_HOVER_ENLARGE = siteConfig( + 'HEO_POST_LIST_COVER_HOVER_ENLARGE', + true, + CONFIG ) return (
+ className={` ${COVER_HOVER_ENLARGE} ? ' hover:scale-110 transition-all duration-150' : ''}`}>
{/* 图片封面 */} {showPageCover && (
{ {/* 文字区块 */}
{/* 分类 */} diff --git a/themes/heo/components/BlogPostListPage.js b/themes/heo/components/BlogPostListPage.js index e7629837..9c33a694 100644 --- a/themes/heo/components/BlogPostListPage.js +++ b/themes/heo/components/BlogPostListPage.js @@ -1,5 +1,6 @@ import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' +import CONFIG from '../config' import BlogPostCard from './BlogPostCard' import BlogPostListEmpty from './BlogPostListEmpty' import PaginationNumber from './PaginationNumber' @@ -14,14 +15,10 @@ import PaginationNumber from './PaginationNumber' */ const BlogPostListPage = ({ page = 1, posts = [], postCount, siteInfo }) => { const { NOTION_CONFIG } = useGlobal() - const POSTS_PER_PAGE = siteConfig('POSTS_PER_PAGE', null, NOTION_CONFIG) + const POSTS_PER_PAGE = siteConfig('POSTS_PER_PAGE', 12, NOTION_CONFIG) const totalPage = Math.ceil(postCount / POSTS_PER_PAGE) const showPagination = postCount >= POSTS_PER_PAGE - const POST_TWO_COLS = siteConfig( - 'HEO_HOME_POST_TWO_COLS', - null, - NOTION_CONFIG - ) + const POST_TWO_COLS = siteConfig('HEO_HOME_POST_TWO_COLS', true, CONFIG) if (!posts || posts.length === 0 || page > totalPage) { return } else { @@ -29,7 +26,7 @@ const BlogPostListPage = ({ page = 1, posts = [], postCount, siteInfo }) => {
{/* 文章列表 */}
+ className={`${POST_TWO_COLS && '2xl:grid 2xl:grid-cols-2'} grid-cols-1 gap-5`}> {posts?.map(post => ( } else { @@ -71,7 +67,7 @@ const BlogPostListScroll = ({
{/* 文章列表 */}
+ className={`${POST_TWO_COLS && '2xl:grid 2xl:grid-cols-2'} grid-cols-1 gap-5`}> {' '} {postsToShow.map(post => ( Date: Sun, 1 Sep 2024 14:10:04 +0800 Subject: [PATCH 012/290] Update README.md --- README.md | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 33be50b7..aafe0918 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,16 @@ +# 免费安装使用教程 + +点此链接访问帮助:[NotionNext帮助手册 - (完全免费)](https://docs.tangly1024.com/) + +## 权利声明 + +本项目教程为免费、公开资源,仅限个人学习使用。严禁任何个人或组织将本教程用于商业用途,包括但不限于直接售卖、间接收费、或其他变相盈利行为。转载、复制或介绍本教程内容时,须保留作者信息并明确注明来源。 + +本项目仅提供由作者团队授权的付费咨询服务,请注意辨别,谨防诈骗行为。任何未经授权的收费服务均可能存在法律风险。 + +只需几分钟即可搭建您的个人站点,以下是我的免费教程链接: + + # NotionNext

@@ -31,20 +44,6 @@ |--|--|--|--| | [预览NEXT](https://preview.tangly1024.com/?theme=next) | [预览MEDIUM](https://preview.tangly1024.com/?theme=medium) | [预览HEXO](https://preview.tangly1024.com/?theme=hexo) | [预览FUKASAWA](https://preview.tangly1024.com/?theme=fukasawa) | -## 我要如何开始? - -只需几分钟即可搭建您的个人站点: - -- [部署教程 (支持多方案)](https://docs.tangly1024.com/) - -- [配置手册 - (自定义插件)](https://docs.tangly1024.com/article/notion-next-guide) - -- [二次开发 - (开发手册)](https://docs.tangly1024.com/article/notion-next-secondary-menu) - -- [更新指南 - (升级您的代码)](https://docs.tangly1024.com/article/how-to-update-notionnext) - -- [版本汇总 - (查询变动功能)](https://docs.tangly1024.com/article/notion-next-changelogs) - ## 致谢 感谢Craig Hart发起的Nobelium项目 From 562a08eab38012f872ad3b5f38f1207dafa87529 Mon Sep 17 00:00:00 2001 From: tangly1024 Date: Sun, 1 Sep 2024 14:12:37 +0800 Subject: [PATCH 013/290] Update README_EN.md --- README_EN.md | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/README_EN.md b/README_EN.md index dd4063e5..488565ac 100644 --- a/README_EN.md +++ b/README_EN.md @@ -1,3 +1,15 @@ +# Free Installation and Usage Guide + +Click here to access the help documentation: NotionNext Help Manual - (Completely Free) + +## Rights Statement + +This project's tutorial is a free and open resource intended solely for personal learning use. It is strictly prohibited for any individual or organization to use this tutorial for commercial purposes, including but not limited to direct sales, indirect charges, or any other forms of profit. When reproducing, copying, or sharing this tutorial, the author's information must be retained, and the source clearly cited. + +This project only offers paid consultation services authorized by the author's team. Please be vigilant against fraud. Any unauthorized paid services may be subject to legal risks. + +You can set up your personal website in just a few minutes. Here is the link to my free tutorial: + # NotionNext

@@ -31,20 +43,6 @@ Live Demo:[https://preview.tangly1024.com/](https://preview.tangly1024.com/) |--|--|--|--| | [NEXT](https://preview.tangly1024.com/?theme=next) | [MEDIUM](https://preview.tangly1024.com/?theme=medium) | [HEXO](https://preview.tangly1024.com/?theme=hexo) | [FUKASAWA](https://preview.tangly1024.com/?theme=fukasawa) | -## Get Start! - -It only takes a few minutes to set up your personal site: - -- [Quick Deployment Tutorial - Multiple Options Available](https://docs.tangly1024.com/article/vercel-deploy-notion-next) - -- [Customization Guide - How to Configure Feature Plugins](https://docs.tangly1024.com/article/how-to-config-notion-next) - -- [Development Guide - How to Conduct Local Development](https://docs.tangly1024.com/article/how-to-develop-with-notion-next) - -- [Update Guide - How to Get the Latest Upgrade Patch](https://docs.tangly1024.com/article/how-to-update-notionnext) - -- [Version History - Check Feature Highlights for Each Version](https://docs.tangly1024.com/article/latest) - ## Acknowledgements Special thanks to Craig Hart for initiating the Nobelium project. From 27170a1664f74bced283cc20d219fece2bf733fb Mon Sep 17 00:00:00 2001 From: tangly1024 Date: Wed, 4 Sep 2024 13:38:24 +0800 Subject: [PATCH 014/290] Update README.md --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index aafe0918..f7d93703 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,10 @@ 点此链接访问帮助:[NotionNext帮助手册 - (完全免费)](https://docs.tangly1024.com/) -## 权利声明 - 本项目教程为免费、公开资源,仅限个人学习使用。严禁任何个人或组织将本教程用于商业用途,包括但不限于直接售卖、间接收费、或其他变相盈利行为。转载、复制或介绍本教程内容时,须保留作者信息并明确注明来源。 本项目仅提供由作者团队授权的付费咨询服务,请注意辨别,谨防诈骗行为。任何未经授权的收费服务均可能存在法律风险。 -只需几分钟即可搭建您的个人站点,以下是我的免费教程链接: - # NotionNext From 608dc60f2148749b2cd74dce09712ed85b289337 Mon Sep 17 00:00:00 2001 From: tangly1024 Date: Wed, 4 Sep 2024 16:24:04 +0800 Subject: [PATCH 015/290] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f7d93703..35f4d1c3 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ -# 免费安装使用教程 +# 免费使用教程 -点此链接访问帮助:[NotionNext帮助手册 - (完全免费)](https://docs.tangly1024.com/) +点此链接访问帮助:[NotionNext帮助手册](https://docs.tangly1024.com/) 本项目教程为免费、公开资源,仅限个人学习使用。严禁任何个人或组织将本教程用于商业用途,包括但不限于直接售卖、间接收费、或其他变相盈利行为。转载、复制或介绍本教程内容时,须保留作者信息并明确注明来源。 本项目仅提供由作者团队授权的付费咨询服务,请注意辨别,谨防诈骗行为。任何未经授权的收费服务均可能存在法律风险。 +> Notion是一个能让效率暴涨的生产力引擎,可以帮你书写文档、管理笔记,搭建知识库,甚至可以为你规划项目、时间管理、组织团队、提高生产力、还有当前最强大的AI技术加持。 +> 如果希望进一步探索Notion的功能,可以尝试《[Notion笔记从入门到精通进阶课程](https://docs.tangly1024.com/article/notion-tutorial)》 # NotionNext From 57160f3199673b9ccb56a26e0e7df84e48b749f0 Mon Sep 17 00:00:00 2001 From: tangly1024 Date: Wed, 4 Sep 2024 16:25:18 +0800 Subject: [PATCH 016/290] Update README.md --- README.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 35f4d1c3..e857ab54 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,12 @@ -# 免费使用教程 +# 帮助教程 -点此链接访问帮助:[NotionNext帮助手册](https://docs.tangly1024.com/) +访问帮助:[NotionNext帮助手册](https://docs.tangly1024.com/) -本项目教程为免费、公开资源,仅限个人学习使用。严禁任何个人或组织将本教程用于商业用途,包括但不限于直接售卖、间接收费、或其他变相盈利行为。转载、复制或介绍本教程内容时,须保留作者信息并明确注明来源。 +> 本项目教程为免费、公开资源,仅限个人学习使用。严禁任何个人或组织将本教程用于商业用途,包括但不限于直接售卖、间接收费、或其他变相盈利行为。转载、复制或介绍本教程内容时,须保留作者信息并明确注明来源。 +> 本项目仅提供由作者团队授权的付费咨询服务,请注意辨别,谨防诈骗行为。任何未经授权的收费服务均可能存在法律风险。 -本项目仅提供由作者团队授权的付费咨询服务,请注意辨别,谨防诈骗行为。任何未经授权的收费服务均可能存在法律风险。 - -> Notion是一个能让效率暴涨的生产力引擎,可以帮你书写文档、管理笔记,搭建知识库,甚至可以为你规划项目、时间管理、组织团队、提高生产力、还有当前最强大的AI技术加持。 -> 如果希望进一步探索Notion的功能,可以尝试《[Notion笔记从入门到精通进阶课程](https://docs.tangly1024.com/article/notion-tutorial)》 +Notion是一个能让效率暴涨的生产力引擎,可以帮你书写文档、管理笔记,搭建知识库,甚至可以为你规划项目、时间管理、组织团队、提高生产力、还有当前最强大的AI技术加持。 +> 如果希望进一步探索Notion的功能,欢迎购买《[Notion笔记从入门到精通进阶课程](https://docs.tangly1024.com/article/notion-tutorial)》 # NotionNext From 6c4dd0c77b019d948fb6c2c7b6103c56412a11fe Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Wed, 4 Sep 2024 16:54:49 +0800 Subject: [PATCH 017/290] =?UTF-8?q?gitbook=20=E4=B8=BB=E9=A2=98=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0loadingcover?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/gitbook/components/LoadingCover.js | 7 ------- themes/gitbook/index.js | 8 ++++++++ 2 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 themes/gitbook/components/LoadingCover.js diff --git a/themes/gitbook/components/LoadingCover.js b/themes/gitbook/components/LoadingCover.js deleted file mode 100644 index f74757ef..00000000 --- a/themes/gitbook/components/LoadingCover.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function LoadingCover() { - return

-
- -
-
-} diff --git a/themes/gitbook/index.js b/themes/gitbook/index.js index 5d4255e1..ca82dd52 100644 --- a/themes/gitbook/index.js +++ b/themes/gitbook/index.js @@ -3,6 +3,7 @@ import Comment from '@/components/Comment' import { AdSlot } from '@/components/GoogleAdsense' import Live2D from '@/components/Live2D' +import LoadingCover from '@/components/LoadingCover' import NotionIcon from '@/components/NotionIcon' import NotionPage from '@/components/NotionPage' import ShareBar from '@/components/ShareBar' @@ -113,6 +114,11 @@ const LayoutBase = props => { setFilteredNavPages(getNavPagesWithLatest(allNavPages, latestPosts, post)) }, [router]) + const GITBOOK_LOADING_COVER = siteConfig( + 'GITBOOK_LOADING_COVER', + true, + CONFIG + ) return ( { )} + {GITBOOK_LOADING_COVER && } + {/* 移动端导航抽屉 */} From b5863172fc3349119f90ce5545a9c82433d7d635 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Wed, 4 Sep 2024 16:57:13 +0800 Subject: [PATCH 018/290] =?UTF-8?q?gitbook=E5=BA=95=E6=A0=8F=E6=B7=B1?= =?UTF-8?q?=E8=89=B2=E6=A8=A1=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/gitbook/components/BottomMenuBar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/gitbook/components/BottomMenuBar.js b/themes/gitbook/components/BottomMenuBar.js index 52e095d4..79b498ea 100644 --- a/themes/gitbook/components/BottomMenuBar.js +++ b/themes/gitbook/components/BottomMenuBar.js @@ -12,7 +12,7 @@ export default function BottomMenuBar({ post, className }) { return ( <> {/* 移动端底部导航按钮 */} -
+
From d0a4acd5c34ee0e78ef507ff784d046bcb7c1fb4 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Wed, 4 Sep 2024 17:36:00 +0800 Subject: [PATCH 019/290] =?UTF-8?q?Dockerfile=E5=85=A5=E5=8F=82=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E5=8F=98=E9=87=8F=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index a0311720..12650294 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,6 @@ ARG NOTION_PAGE_ID +ARG NEXT_PUBLIC_THEME + # Install dependencies only when needed FROM node:18-alpine3.18 AS deps # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. From c2dc5ba47c5f0b3392fa87267c1a2008b0d1cb9e Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Thu, 5 Sep 2024 11:28:13 +0800 Subject: [PATCH 020/290] =?UTF-8?q?OPEN=5FWRITE=E5=AF=BC=E6=B5=81=E6=8F=92?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- components/OpenWrite.js | 60 +++++++++++++++++++++++++++++++++++++++++ lib/utils/index.js | 2 +- pages/[prefix]/index.js | 7 ++++- styles/globals.css | 4 +++ 5 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 components/OpenWrite.js diff --git a/.gitignore b/.gitignore index 42744c4b..b400f485 100644 --- a/.gitignore +++ b/.gitignore @@ -45,7 +45,7 @@ yarn-error.log* /public/robots.txt /public/sitemap.xml /public/rss/* - +/sitemap.xml # yarn package-lock.json diff --git a/components/OpenWrite.js b/components/OpenWrite.js new file mode 100644 index 00000000..f199e50e --- /dev/null +++ b/components/OpenWrite.js @@ -0,0 +1,60 @@ +import { siteConfig } from '@/lib/config' +import { isBrowser, loadExternalResource } from '@/lib/utils' +import { useRouter } from 'next/router' +import { useEffect, useRef } from 'react' +/** + * OpenWrite公众号导流插件 + * 使用介绍:https://openwrite.cn/guide/readmore/readmore.html#%E4%BA%8C%E3%80%81%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8 + * 登录后台配置你的博客:https://readmore.openwrite.cn/ + * @returns + */ +const OpenWrite = () => { + const router = useRouter() + const qrcode = siteConfig('OPEN_WRITE_QRCODE', '请配置公众号二维码') + const blogId = siteConfig('OPEN_WRITE_BLOG_ID') + const name = siteConfig('OPEN_WRITE_NAME', '请配置公众号名') + const id = 'article-wrapper' + const keyword = siteConfig('OPEN_WRITE_KEYWORD', '请配置公众号关键词') + const btnText = siteConfig( + 'OPEN_WRITE_BTN_TEXT', + '原创不易,完成人机检测,阅读全文' + ) + + const hasLoaded = useRef(false) + + const loadOpenWrite = async () => { + try { + await loadExternalResource( + 'https://readmore.openwrite.cn/js/readmore-2.0.js', + 'js' + ) + const BTWPlugin = window?.BTWPlugin + + if (BTWPlugin) { + const btw = new BTWPlugin() + window.btw = btw + btw.init({ + qrcode, + id, + name, + btnText, + keyword, + blogId + }) + } + } catch (error) { + console.error('OpenWrite 加载异常', error) + } + } + + useEffect(() => { + if (isBrowser && blogId && !hasLoaded.current) { + loadOpenWrite() + hasLoaded.current = true + } + }, [router]) + + return <> +} + +export default OpenWrite diff --git a/lib/utils/index.js b/lib/utils/index.js index 27a6494f..7817ed74 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -146,7 +146,7 @@ export function getLastPartOfUrl(url) { * @param type js 或 css * @returns {Promise} */ -export function loadExternalResource(url, type) { +export function loadExternalResource(url, type = 'js') { // 检查是否已存在 const elements = type === 'js' diff --git a/pages/[prefix]/index.js b/pages/[prefix]/index.js index dc480fcc..2bb175b6 100644 --- a/pages/[prefix]/index.js +++ b/pages/[prefix]/index.js @@ -1,5 +1,6 @@ import BLOG from '@/blog.config' import useNotification from '@/components/Notification' +import OpenWrite from '@/components/OpenWrite' import { siteConfig } from '@/lib/config' import { getGlobalData, getPost, getPostBlocks } from '@/lib/db/getSiteData' import { useGlobal } from '@/lib/global' @@ -95,8 +96,12 @@ const Slug = props => { }) return ( <> + {/* 文章布局 */} + {/* 解锁密码提示框 */} {post?.password && post?.password !== '' && !lock && } + {/* 导流工具 */} + ) } @@ -129,7 +134,7 @@ export async function getStaticProps({ params: { prefix }, locale }) { fullSlug += '.html' } } - + // 在列表内查找文章 props.post = props?.allPages?.find(p => { return ( diff --git a/styles/globals.css b/styles/globals.css index bdc13fe9..c3a4818e 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -272,3 +272,7 @@ a.avatar-wrapper { margin-right: 20px; } } + +img { + display: unset; +} From 218d1fa37e421bdab08f1dd131f13dcc819d3b3b Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Thu, 5 Sep 2024 11:35:02 +0800 Subject: [PATCH 021/290] 4.7.0 --- .env.local | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.local b/.env.local index f2327cf8..4d4824d5 100644 --- a/.env.local +++ b/.env.local @@ -1,5 +1,5 @@ # 环境变量 @see https://www.nextjs.cn/docs/basic-features/environment-variables -NEXT_PUBLIC_VERSION=4.6.2 +NEXT_PUBLIC_VERSION=4.7.0 # 可在此添加环境变量,去掉最左边的(# )注释即可 diff --git a/package.json b/package.json index 8d1c195f..2e523fbc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "notion-next", - "version": "4.6.2", + "version": "4.7.0", "homepage": "https://github.com/tangly1024/NotionNext.git", "license": "MIT", "repository": { From c351b76c139955bb26436c2bcd1ddee76a15a1a3 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Thu, 5 Sep 2024 12:13:07 +0800 Subject: [PATCH 022/290] =?UTF-8?q?OpenWrite=E9=80=82=E9=85=8D=E6=89=80?= =?UTF-8?q?=E6=9C=89=E4=B8=BB=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/OpenWrite.js | 9 +- themes/example/index.js | 8 +- themes/gitbook/index.js | 6 +- themes/heo/index.js | 9 +- themes/hexo/index.js | 5 +- themes/landing/index.js | 163 +++++---- themes/matery/index.js | 6 +- themes/medium/index.js | 458 +++++++++++++----------- themes/nav/index.js | 6 +- themes/next/components/ArticleDetail.js | 6 +- themes/next/index.js | 404 ++++++++++++--------- themes/nobelium/index.js | 331 +++++++++-------- themes/plog/index.js | 285 ++++++++------- themes/simple/index.js | 10 +- themes/starter/index.js | 4 +- 15 files changed, 953 insertions(+), 757 deletions(-) diff --git a/components/OpenWrite.js b/components/OpenWrite.js index f199e50e..00d001a9 100644 --- a/components/OpenWrite.js +++ b/components/OpenWrite.js @@ -1,7 +1,7 @@ import { siteConfig } from '@/lib/config' import { isBrowser, loadExternalResource } from '@/lib/utils' import { useRouter } from 'next/router' -import { useEffect, useRef } from 'react' +import { useEffect } from 'react' /** * OpenWrite公众号导流插件 * 使用介绍:https://openwrite.cn/guide/readmore/readmore.html#%E4%BA%8C%E3%80%81%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8 @@ -20,8 +20,6 @@ const OpenWrite = () => { '原创不易,完成人机检测,阅读全文' ) - const hasLoaded = useRef(false) - const loadOpenWrite = async () => { try { await loadExternalResource( @@ -48,11 +46,10 @@ const OpenWrite = () => { } useEffect(() => { - if (isBrowser && blogId && !hasLoaded.current) { + if (isBrowser && blogId) { loadOpenWrite() - hasLoaded.current = true } - }, [router]) + }) return <> } diff --git a/themes/example/index.js b/themes/example/index.js index 90580a24..60b896c1 100644 --- a/themes/example/index.js +++ b/themes/example/index.js @@ -179,10 +179,12 @@ const LayoutSlug = props => { {lock ? ( ) : ( -
+
- - +
+ + +
)} diff --git a/themes/gitbook/index.js b/themes/gitbook/index.js index ca82dd52..ceef6df4 100644 --- a/themes/gitbook/index.js +++ b/themes/gitbook/index.js @@ -341,8 +341,10 @@ const LayoutSlug = props => { {/* Notion文章主体 */} {post && ( -
- +
+
+ +
{/* 分享 */} diff --git a/themes/heo/index.js b/themes/heo/index.js index b496ef20..9bab5daf 100644 --- a/themes/heo/index.js +++ b/themes/heo/index.js @@ -288,14 +288,17 @@ const LayoutSlug = props => { return ( <>
+ className={`article h-full w-full ${fullWidth ? '' : 'xl:max-w-5xl'} ${hasCode ? 'xl:w-[73.15vw]' : ''} bg-white dark:bg-[#18171d] dark:border-gray-600 lg:hover:shadow lg:border rounded-2xl lg:px-2 lg:py-4 `}> {/* 文章锁 */} {lock && } {!lock && ( -
+
{/* 文章主体 */} -
+
{/* Notion文章主体 */}
{ {lock && } {!lock && ( -
+
diff --git a/themes/landing/index.js b/themes/landing/index.js index d7301d4c..62d8f9db 100644 --- a/themes/landing/index.js +++ b/themes/landing/index.js @@ -1,4 +1,3 @@ - 'use client' /** @@ -7,21 +6,21 @@ * 2. 内容大部分是在此文件中写死,notion数据从props参数中传进来 * 3. 您可在此网站找到更多喜欢的组件 https://www.tailwind-kit.com/ */ +import Loading from '@/components/Loading' import NotionPage from '@/components/NotionPage' -import Header from './components/Header' -import Footer from './components/Footer' -import Hero from './components/Hero' +import { siteConfig } from '@/lib/config' +import { isBrowser } from '@/lib/utils' +import { useRouter } from 'next/router' +import { useEffect } from 'react' import Features from './components/Features' import FeaturesBlocks from './components/FeaturesBlocks' -import Testimonials from './components/Testimonials' +import Footer from './components/Footer' +import Header from './components/Header' +import Hero from './components/Hero' import Newsletter from './components/Newsletter' -import { useRouter } from 'next/router' -import CONFIG from './config' -import Loading from '@/components/Loading' -import { isBrowser } from '@/lib/utils' -import { siteConfig } from '@/lib/config' import { Pricing } from './components/Pricing' -import { useEffect } from 'react' +import Testimonials from './components/Testimonials' +import CONFIG from './config' /** * 布局框架 @@ -30,22 +29,23 @@ import { useEffect } from 'react' * @param {*} props * @returns */ -const LayoutBase = (props) => { +const LayoutBase = props => { const { children } = props - return
+ return ( +
+ {/* 顶部导航栏 */} +
- {/* 顶部导航栏 */} -
+ {/* 内容 */} +
{children}
- {/* 内容 */} -
- {children} -
- - {/* 底部页脚 */} -
+ {/* 底部页脚 */} +
+ ) } /** @@ -53,16 +53,16 @@ const LayoutBase = (props) => { * @param {*} props * @returns */ -const LayoutIndex = (props) => { +const LayoutIndex = props => { return ( - <> - - - - - - - + <> + + + + + + + ) } @@ -71,7 +71,7 @@ const LayoutIndex = (props) => { * @param {*} props * @returns */ -const LayoutSlug = (props) => { +const LayoutSlug = props => { const { post } = props // 如果 是 /article/[slug] 的文章路径则进行重定向到另一个域名 @@ -79,49 +79,90 @@ const LayoutSlug = (props) => { useEffect(() => { // 404 if (!post) { - setTimeout(() => { - if (isBrowser) { - const article = document.getElementById('notion-article') - if (!article) { - router.push('/404').then(() => { - console.warn('找不到页面', router.asPath) - }) + setTimeout( + () => { + if (isBrowser) { + const article = document.getElementById('notion-article') + if (!article) { + router.push('/404').then(() => { + console.warn('找不到页面', router.asPath) + }) + } } - } - }, siteConfig('POST_WAITING_TIME_FOR_404') * 1000) + }, + siteConfig('POST_WAITING_TIME_FOR_404') * 1000 + ) } }, [post]) - if (JSON.parse(siteConfig('LANDING_POST_REDIRECT_ENABLE', null, CONFIG)) && isBrowser && router.route === '/[prefix]/[slug]') { - const redirectUrl = siteConfig('LANDING_POST_REDIRECT_URL', null, CONFIG) + router.asPath.replace('?theme=landing', '') + if ( + JSON.parse(siteConfig('LANDING_POST_REDIRECT_ENABLE', null, CONFIG)) && + isBrowser && + router.route === '/[prefix]/[slug]' + ) { + const redirectUrl = + siteConfig('LANDING_POST_REDIRECT_URL', null, CONFIG) + + router.asPath.replace('?theme=landing', '') router.push(redirectUrl) - return
+ return ( +
+ +
+ ) } - return <> -
- + return ( + <> +
+
+
+
+ ) } // 其他布局暂时留空 -const LayoutSearch = (props) => <> -const LayoutArchive = (props) => <> -const Layout404 = (props) => <> -const LayoutCategoryIndex = (props) => <> -const LayoutPostList = (props) => <> -const LayoutTagIndex = (props) => <> +const LayoutSearch = props => ( + <> + + +) +const LayoutArchive = props => ( + <> + + +) +const Layout404 = props => ( + <> + + +) +const LayoutCategoryIndex = props => ( + <> + + +) +const LayoutPostList = props => ( + <> + + +) +const LayoutTagIndex = props => ( + <> + + +) export { - CONFIG as THEME_CONFIG, - LayoutBase, - LayoutIndex, - LayoutSearch, - LayoutArchive, - LayoutSlug, Layout404, - LayoutPostList, + LayoutArchive, + LayoutBase, LayoutCategoryIndex, - LayoutTagIndex + LayoutIndex, + LayoutPostList, + LayoutSearch, + LayoutSlug, + LayoutTagIndex, + CONFIG as THEME_CONFIG } diff --git a/themes/matery/index.js b/themes/matery/index.js index 9f642cab..7cbcad19 100644 --- a/themes/matery/index.js +++ b/themes/matery/index.js @@ -254,9 +254,7 @@ const LayoutSlug = props => { {lock && } {!lock && ( -
+
{/* 文章信息 */} {post?.type && post?.type === 'Post' && ( <> @@ -268,7 +266,7 @@ const LayoutSlug = props => { )}
-
+
{/* Notion文章主体 */}
{ const router = useRouter() const [tocVisible, changeTocVisible] = useState(false) const { onLoading, fullWidth } = useGlobal() - const [slotRight, setSlotRight] = useState(null); + const [slotRight, setSlotRight] = useState(null) - useEffect(()=> { + useEffect(() => { if (post?.toc?.length > 0) { setSlotRight(
- ); + ) } else { - setSlotRight(null); + setSlotRight(null) } - },[post]) + }, [post]) const slotTop = return ( - - {/* CSS样式 */} - +} + +export { Style } From 625b08b787f7a9f9fe2e8ae74ddbd6077f751bf2 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Fri, 13 Sep 2024 12:54:25 +0800 Subject: [PATCH 039/290] =?UTF-8?q?magzine=E5=9F=BA=E6=9C=AC=E7=BB=84?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- styles/notion.css | 3 +- themes/magzine/components/Announcement.js | 2 +- .../{BlogArchiveItem.js => ArchiveItem.js} | 2 +- themes/magzine/components/ArticleInfo.js | 2 +- themes/magzine/components/ArticleLock.js | 2 +- .../magzine/components/BlogPostListEmpty.js | 14 --- themes/magzine/components/Catalog.js | 2 +- themes/magzine/components/CategoryItem.js | 8 +- themes/magzine/components/Footer.js | 58 ++++++--- themes/magzine/components/Header.js | 96 ++++++++++++--- themes/magzine/components/Hero.js | 62 ++++++++++ themes/magzine/components/InfoCard.js | 10 +- themes/magzine/components/JumpToTopButton.js | 23 ++-- themes/magzine/components/LogoBar.js | 4 +- themes/magzine/components/MenuBarMobile.js | 6 +- themes/magzine/components/MenuItemDrop.js | 16 +-- .../{BlogPostCard.js => PostItemCard.js} | 14 +-- .../magzine/components/PostItemCardSimple.js | 45 +++++++ ...{BlogPostCardTop.js => PostItemCardTop.js} | 22 ++-- ...tCardHorizontal.js => PostItemCardWide.js} | 47 ++++---- themes/magzine/components/PostListEmpty.js | 19 +++ .../magzine/components/PostListHorizontal.js | 38 ++++++ .../{BlogPostListPage.js => PostListPage.js} | 12 +- ...logPostListScroll.js => PostListScroll.js} | 12 +- .../components/PostListSimpleHorizontal.js | 37 ++++++ .../{BlogPostBar.js => PostListSlotBar.js} | 2 +- themes/magzine/components/SearchInput.js | 69 ++++++----- themes/magzine/components/TagItemMini.js | 15 ++- themes/magzine/components/TopNavBar.js | 8 +- themes/magzine/config.js | 37 ++++-- themes/magzine/index.js | 112 ++++++++++++------ 31 files changed, 572 insertions(+), 227 deletions(-) rename themes/magzine/components/{BlogArchiveItem.js => ArchiveItem.js} (93%) delete mode 100644 themes/magzine/components/BlogPostListEmpty.js create mode 100644 themes/magzine/components/Hero.js rename themes/magzine/components/{BlogPostCard.js => PostItemCard.js} (88%) create mode 100644 themes/magzine/components/PostItemCardSimple.js rename themes/magzine/components/{BlogPostCardTop.js => PostItemCardTop.js} (77%) rename themes/magzine/components/{BlogPostCardHorizontal.js => PostItemCardWide.js} (77%) create mode 100644 themes/magzine/components/PostListEmpty.js create mode 100644 themes/magzine/components/PostListHorizontal.js rename themes/magzine/components/{BlogPostListPage.js => PostListPage.js} (73%) rename themes/magzine/components/{BlogPostListScroll.js => PostListScroll.js} (89%) create mode 100644 themes/magzine/components/PostListSimpleHorizontal.js rename themes/magzine/components/{BlogPostBar.js => PostListSlotBar.js} (92%) diff --git a/styles/notion.css b/styles/notion.css index ba794f88..92c990fb 100644 --- a/styles/notion.css +++ b/styles/notion.css @@ -1664,9 +1664,8 @@ code[class*='language-'] { } /* NOTION CSS OVERRIDE */ - .notion { - @apply dark:text-gray-300; + @apply dark:text-gray-100; overflow-wrap: break-word; } .notion, diff --git a/themes/magzine/components/Announcement.js b/themes/magzine/components/Announcement.js index 4796f991..522f0784 100644 --- a/themes/magzine/components/Announcement.js +++ b/themes/magzine/components/Announcement.js @@ -10,7 +10,7 @@ const Announcement = ({ post, className }) => {
+ className='dark:text-gray-300 rounded-xl px-2'> {/*
{locale.COMMON.ANNOUNCEMENT}
*/} {post && (
diff --git a/themes/magzine/components/BlogArchiveItem.js b/themes/magzine/components/ArchiveItem.js similarity index 93% rename from themes/magzine/components/BlogArchiveItem.js rename to themes/magzine/components/ArchiveItem.js index 7d7b5a1c..2dafd34c 100644 --- a/themes/magzine/components/BlogArchiveItem.js +++ b/themes/magzine/components/ArchiveItem.js @@ -5,7 +5,7 @@ import Link from 'next/link' * @param {*} param0 * @returns */ -export default function BlogArchiveItem({ archiveTitle, archivePosts }) { +export default function ArchiveItem({ archiveTitle, archivePosts }) { return (
diff --git a/themes/magzine/components/ArticleInfo.js b/themes/magzine/components/ArticleInfo.js index b5a71d26..e2f79ea3 100644 --- a/themes/magzine/components/ArticleInfo.js +++ b/themes/magzine/components/ArticleInfo.js @@ -32,7 +32,7 @@ export default function ArticleInfo(props) { {post?.lastEditedDay} -
+
diff --git a/themes/magzine/components/ArticleLock.js b/themes/magzine/components/ArticleLock.js index 6f2ca8cd..3047e7d2 100644 --- a/themes/magzine/components/ArticleLock.js +++ b/themes/magzine/components/ArticleLock.js @@ -45,7 +45,7 @@ export const ArticleLock = props => { } }} ref={passwordInputRef} // 绑定ref到passwordInputRef变量 - className='outline-none w-full text-sm pl-5 rounded-l transition focus:shadow-lg dark:text-gray-300 font-light leading-10 text-black bg-gray-100 dark:bg-gray-500'> + className='outline-none w-full text-sm pl-5 rounded-l transition focus:shadow-lg dark:text-gray-300 leading-10 text-black bg-gray-100 dark:bg-gray-500'>
diff --git a/themes/magzine/components/BlogPostListEmpty.js b/themes/magzine/components/BlogPostListEmpty.js deleted file mode 100644 index a26cf292..00000000 --- a/themes/magzine/components/BlogPostListEmpty.js +++ /dev/null @@ -1,14 +0,0 @@ -import { useGlobal } from '@/lib/global' - -/** - * 空白博客 列表 - * @returns {JSX.Element} - * @constructor - */ -const BlogPostListEmpty = ({ currentSearch }) => { - const { locale } = useGlobal() - return
-

{locale.COMMON.NO_RESULTS_FOUND} {(currentSearch &&

{currentSearch}
)}

-
-} -export default BlogPostListEmpty diff --git a/themes/magzine/components/Catalog.js b/themes/magzine/components/Catalog.js index b390e686..4ee2c282 100644 --- a/themes/magzine/components/Catalog.js +++ b/themes/magzine/components/Catalog.js @@ -77,7 +77,7 @@ const Catalog = ({ toc }) => {
- + /> */} {category} {categoryCount && `(${categoryCount})`}
diff --git a/themes/magzine/components/Footer.js b/themes/magzine/components/Footer.js index 0c5a9211..aaf801f8 100644 --- a/themes/magzine/components/Footer.js +++ b/themes/magzine/components/Footer.js @@ -1,28 +1,56 @@ import DarkModeButton from '@/components/DarkModeButton' import { siteConfig } from '@/lib/config' +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 copyrightDate = + parseInt(since) < currentYear ? since + '-' + currentYear : currentYear return ( -
- - {`${copyrightDate}`} {siteConfig('AUTHOR')}.
- - {siteConfig('BEI_AN') && <> {siteConfig('BEI_AN')}
} - - - - - -
+ ) } diff --git a/themes/magzine/components/Header.js b/themes/magzine/components/Header.js index b4a8fd22..23985074 100644 --- a/themes/magzine/components/Header.js +++ b/themes/magzine/components/Header.js @@ -17,6 +17,7 @@ export default function Header(props) { const { customNav, customMenu } = props const [isOpen, changeShow] = useState(false) const collapseRef = useRef(null) + const lastScrollY = useRef(0) // 用于存储上一次的滚动位置 const { locale } = useGlobal() @@ -66,16 +67,39 @@ export default function Header(props) { const scrollTrigger = throttle(() => { const scrollS = window.scrollY - const nav = document.querySelector('#top-navbar') + if (scrollS === lastScrollY.current) return // 如果滚动位置没有变化,则不做任何操作 - const narrowNav = scrollS > 50 + const nav = document.querySelector('#top-navbar') + const narrowNav = scrollS > 60 if (narrowNav) { nav && nav.classList.replace('h-20', 'h-14') } else { nav && nav.classList.replace('h-14', 'h-20') } + + lastScrollY.current = scrollS // 更新上一次的滚动位置 }, throttleMs) + const [showSearchInput, changeShowSearchInput] = useState(false) + + // 展示搜索框 + const toggleShowSearchInput = () => { + if (siteConfig('ALGOLIA_APP_ID')) { + searchModal.current.openSearch() + } else { + changeShowSearchInput(!showSearchInput) + } + } + + const onKeyUp = e => { + if (e.keyCode === 13) { + const search = document.getElementById('simple-search').value + if (search) { + router.push({ pathname: '/search/' + search }) + } + } + } + // 如果 开启自定义菜单,则覆盖Page生成的菜单 if (siteConfig('CUSTOM_MENU')) { links = customMenu @@ -94,25 +118,61 @@ export default function Header(props) { {/* 导航栏菜单内容 */}
- {/* 左侧图标Logo */} - + className='flex w-full mx-auto max-w-7xl h-20 transition-all duration-200 items-center justify-between'> + {/* 搜索栏 */} + {showSearchInput && ( + + )} - {/* 移动端折叠按钮 */} -
-
- {isOpen ? ( - - ) : ( - - )} + {/* 默认菜单 */} + {!showSearchInput && ( + <> + {/* 左侧图标Logo */} +
+ + {/* 桌面端顶部菜单 */} +
+ {links && + links?.map(link => ( + + ))} +
+
+ + )} + + {/* 右侧移动端折叠按钮 */} +
+
+
+ {isOpen ? ( + + ) : ( + + )} +
-
- {/* 桌面端顶部菜单 */} -
- {links && - links?.map(link => )} + {/* 搜索按钮 */} +
+ +
diff --git a/themes/magzine/components/Hero.js b/themes/magzine/components/Hero.js new file mode 100644 index 00000000..590c9484 --- /dev/null +++ b/themes/magzine/components/Hero.js @@ -0,0 +1,62 @@ +// import { useGlobal } from '@/lib/global' +import { siteConfig } from '@/lib/config' +import Link from 'next/link' +import PostItemCardTop from './PostItemCardTop' +import PostItemCardWide from './PostItemCardWide' + +/** + * 首页主宣传 + * @param {*} param0 + * @returns + */ +const Hero = ({ posts }) => { + // 获取置顶文章与次要文章 + const postTop = posts[0] + const post1 = posts[1] + const post2 = posts[2] + // 首屏信息栏按钮文字 + const banner = siteConfig('MAGZINE_HOME_BANNER_ENABLE') + const button = siteConfig('MAGZINE_HOME_BUTTON') + const text = siteConfig('MAGZINE_HOME_BUTTON_TEXT') + const url = siteConfig('MAGZINE_HOME_BUTTON_URL') + const title = siteConfig('MAGZINE_HOME_TITLE') + const description = siteConfig('MAGZINE_HOME_DESCRIPTION') + const tips = siteConfig('MAGZINE_HOME_TIPS') + + return ( + <> +
+ {/* 左侧一篇主要置顶文章 */} +
+ +
+ {/* 右侧 */} +
+ {/* 首屏介绍 */} + {banner && ( +
+ {/* 首屏导航按钮 */} +

{title}

+

{description}

+ {button && ( +
+ {text} +
+ )} + {tips} +
+ )} + + {/* 两篇次要文章 */} +
+
+ +
+ +
+
+
+ + ) +} +export default Hero diff --git a/themes/magzine/components/InfoCard.js b/themes/magzine/components/InfoCard.js index abdc8862..50729664 100644 --- a/themes/magzine/components/InfoCard.js +++ b/themes/magzine/components/InfoCard.js @@ -1,7 +1,5 @@ import LazyImage from '@/components/LazyImage' import { siteConfig } from '@/lib/config' -import Router from 'next/router' -import SocialButton from './SocialButton' /** * 用户信息卡 @@ -10,8 +8,9 @@ import SocialButton from './SocialButton' */ const InfoCard = props => { const { siteInfo } = props + return ( -
+
{ alt={siteConfig('AUTHOR')} />
-
+
{siteConfig('AUTHOR')}
-
+
{siteConfig('BIO')}
-
) diff --git a/themes/magzine/components/JumpToTopButton.js b/themes/magzine/components/JumpToTopButton.js index 6342bf78..1c30373b 100644 --- a/themes/magzine/components/JumpToTopButton.js +++ b/themes/magzine/components/JumpToTopButton.js @@ -1,5 +1,5 @@ -import CONFIG from '../config' import { siteConfig } from '@/lib/config' +import CONFIG from '../config' /** * 跳转到网页顶部 @@ -10,18 +10,23 @@ import { siteConfig } from '@/lib/config' * @constructor */ const JumpToTopButton = ({ showPercent = false, percent, className }) => { - if (!siteConfig('MEDIUM_WIDGET_TO_TOP', null, CONFIG)) { + if (!siteConfig('MAGZINE_WIDGET_TO_TOP', null, CONFIG)) { return <> } return (
- { window.scrollTo({ top: 0, behavior: 'smooth' }) }} /> + id='jump-to-top' + data-aos='fade-up' + data-aos-duration='300' + data-aos-once='false' + data-aos-anchor-placement='top-center' + className='fixed xl:right-80 right-2 mr-10 bottom-24 z-20'> + { + window.scrollTo({ top: 0, behavior: 'smooth' }) + }} + />
) } diff --git a/themes/magzine/components/LogoBar.js b/themes/magzine/components/LogoBar.js index dfe01f9a..c484f34a 100644 --- a/themes/magzine/components/LogoBar.js +++ b/themes/magzine/components/LogoBar.js @@ -5,7 +5,9 @@ export default function LogoBar(props) { const { siteInfo } = props return (
- + {/* { { name: locale.COMMON.CATEGORY, href: '/category', - show: siteConfig('MEDIUM_MENU_CATEGORY', null, CONFIG) + show: siteConfig('MAGZINE_MENU_CATEGORY', null, CONFIG) }, { name: locale.COMMON.TAGS, href: '/tag', - show: siteConfig('MEDIUM_MENU_TAG', null, CONFIG) + show: siteConfig('MAGZINE_MENU_TAG', null, CONFIG) }, { name: locale.NAV.ARCHIVE, href: '/archive', - show: siteConfig('MEDIUM_MENU_ARCHIVE', null, CONFIG) + show: siteConfig('MAGZINE_MENU_ARCHIVE', null, CONFIG) } // { name: locale.NAV.SEARCH, href: '/search', show: siteConfig('MENU_SEARCH', null, CONFIG) } ] diff --git a/themes/magzine/components/MenuItemDrop.js b/themes/magzine/components/MenuItemDrop.js index 38484029..1a629248 100644 --- a/themes/magzine/components/MenuItemDrop.js +++ b/themes/magzine/components/MenuItemDrop.js @@ -16,22 +16,22 @@ export const MenuItemDrop = ({ link }) => { return (
  • changeShow(true)} onMouseOut={() => changeShow(false)}> {hasSubMenu && (
    -
    +
    {link?.icon && } {link?.name} {hasSubMenu && ( + className={`px-1 fas fa-chevron-down duration-500 transition-all ${show ? ' rotate-180' : ''}`}> )}
    @@ -40,7 +40,7 @@ export const MenuItemDrop = ({ link }) => { {!hasSubMenu && (
    { {/* 子菜单 */} {hasSubMenu && (
      + className={`${show ? 'visible opacity-100 top-14 ' : 'invisible opacity-0 top-10 '} absolute border bg-white dark:bg-black dark:border-gray-800 transition-all duration-300 z-20 block rounded-lg drop-shadow-lg p-4 `}> {link?.subMenus?.map(sLink => { return (
    • + className='text-gray-700 dark:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-900 tracking-widest transition-all duration-200 dark:border-gray-800 py-3 pr-6 pl-3'> - + {link?.icon &&   } {sLink.title} diff --git a/themes/magzine/components/BlogPostCard.js b/themes/magzine/components/PostItemCard.js similarity index 88% rename from themes/magzine/components/BlogPostCard.js rename to themes/magzine/components/PostItemCard.js index ac82bcc1..228db9a6 100644 --- a/themes/magzine/components/BlogPostCard.js +++ b/themes/magzine/components/PostItemCard.js @@ -9,9 +9,9 @@ import CONFIG from '../config' import CategoryItem from './CategoryItem' import TagItemMini from './TagItemMini' -const BlogPostCard = ({ post, showSummary }) => { +const PostItemCard = ({ post, showSummary }) => { const showPreview = - siteConfig('MEDIUM_POST_LIST_PREVIEW', null, CONFIG) && post.blockMap + siteConfig('MAGZINE_POST_LIST_PREVIEW', null, CONFIG) && post.blockMap const { locale } = useGlobal() return (
      { 'cursor-pointer font-bold hover:underline text-3xl leading-tight text-gray-700 dark:text-gray-300 hover:text-gray-500 dark:hover:text-gray-400' }>

      - {siteConfig('MEDIUM_POST_LIST_COVER', null, CONFIG) && ( + {siteConfig('MAGZINE_POST_LIST_COVER', null, CONFIG) && (
      { 'flex mt-2 items-center justify-start flex-wrap space-x-3 text-gray-400' }>
      {post.date?.start_date}
      - {siteConfig('MEDIUM_POST_LIST_CATEGORY', null, CONFIG) && ( + {siteConfig('MAGZINE_POST_LIST_CATEGORY', null, CONFIG) && ( )} - {siteConfig('MEDIUM_POST_LIST_TAG', null, CONFIG) && + {siteConfig('MAGZINE_POST_LIST_TAG', null, CONFIG) && post?.tagItems?.map(tag => ( ))} @@ -63,7 +63,7 @@ const BlogPostCard = ({ post, showSummary }) => {
      {(!showPreview || showSummary) && ( -
      +
      {post.summary}
      )} @@ -89,4 +89,4 @@ const BlogPostCard = ({ post, showSummary }) => { ) } -export default BlogPostCard +export default PostItemCard diff --git a/themes/magzine/components/PostItemCardSimple.js b/themes/magzine/components/PostItemCardSimple.js new file mode 100644 index 00000000..69ef5556 --- /dev/null +++ b/themes/magzine/components/PostItemCardSimple.js @@ -0,0 +1,45 @@ +import NotionIcon from '@/components/NotionIcon' +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import Link from 'next/link' +import CONFIG from '../config' +import CategoryItem from './CategoryItem' + +/** + * 不带图片 + * @param {*} param0 + * @returns + */ +const PostItemCardSimple = ({ post, showSummary }) => { + const showPreview = + siteConfig('MAGZINE_POST_LIST_PREVIEW', null, CONFIG) && post.blockMap + const { locale } = useGlobal() + return ( +
      +
      + {siteConfig('MAGZINE_POST_LIST_CATEGORY', null, CONFIG) && ( + + )} +
      + + {/* 文章标题 */} + +

      + {siteConfig('POST_TITLE_ICON') && } + {post.title} +

      + + +
      {post.date?.start_date}
      +
      + ) +} + +export default PostItemCardSimple diff --git a/themes/magzine/components/BlogPostCardTop.js b/themes/magzine/components/PostItemCardTop.js similarity index 77% rename from themes/magzine/components/BlogPostCardTop.js rename to themes/magzine/components/PostItemCardTop.js index 2c02d02e..b9d5756a 100644 --- a/themes/magzine/components/BlogPostCardTop.js +++ b/themes/magzine/components/PostItemCardTop.js @@ -13,9 +13,9 @@ import TagItemMini from './TagItemMini' * @param {*} param0 * @returns */ -const BlogPostCardTop = ({ post, showSummary }) => { +const PostItemCardTop = ({ post, showSummary }) => { const showPreview = - siteConfig('MEDIUM_POST_LIST_PREVIEW', null, CONFIG) && post.blockMap + siteConfig('MAGZINE_POST_LIST_PREVIEW', null, CONFIG) && post.blockMap const { locale } = useGlobal() return (
      { data-aos-anchor-placement='top-bottom' className='mb-6 max-w-7xl '>
      - {siteConfig('MEDIUM_POST_LIST_COVER', null, CONFIG) && ( + {siteConfig('MAGZINE_POST_LIST_COVER', null, CONFIG) && (
      { )} -
      - {siteConfig('MEDIUM_POST_LIST_CATEGORY', null, CONFIG) && ( +
      + {siteConfig('MAGZINE_POST_LIST_CATEGORY', null, CONFIG) && ( )}
      - {siteConfig('MEDIUM_POST_LIST_TAG', null, CONFIG) && + {siteConfig('MAGZINE_POST_LIST_TAG', null, CONFIG) && post?.tagItems?.map(tag => ( ))} @@ -62,9 +62,9 @@ const BlogPostCardTop = ({ post, showSummary }) => { href={post?.href} passHref className={ - 'cursor-pointer hover:underline font-bold text-3xl leading-tight dark:text-gray-300 dark:hover:text-gray-400' + 'cursor-pointer hover:underline leading-tight dark:text-gray-300 dark:hover:text-gray-400' }> -

      +

      {siteConfig('POST_TITLE_ICON') && ( )} @@ -75,7 +75,7 @@ const BlogPostCardTop = ({ post, showSummary }) => {
      {(!showPreview || showSummary) && ( -
      +
      {post.summary}
      )} @@ -103,4 +103,4 @@ const BlogPostCardTop = ({ post, showSummary }) => { ) } -export default BlogPostCardTop +export default PostItemCardTop diff --git a/themes/magzine/components/BlogPostCardHorizontal.js b/themes/magzine/components/PostItemCardWide.js similarity index 77% rename from themes/magzine/components/BlogPostCardHorizontal.js rename to themes/magzine/components/PostItemCardWide.js index 076b2d89..0b250850 100644 --- a/themes/magzine/components/BlogPostCardHorizontal.js +++ b/themes/magzine/components/PostItemCardWide.js @@ -8,21 +8,24 @@ import CONFIG from '../config' import CategoryItem from './CategoryItem' import TagItemMini from './TagItemMini' -const BlogPostCardHorizontal = ({ post, showSummary }) => { +/** + * 水平左右布局的博客卡片 + * @param {*} param0 + * @returns + */ +const PostItemCardWide = ({ post, showSummary }) => { const showPreview = - siteConfig('MEDIUM_POST_LIST_PREVIEW', null, CONFIG) && post.blockMap + siteConfig('MAGZINE_POST_LIST_PREVIEW', null, CONFIG) && post.blockMap const { locale } = useGlobal() return ( -
      +
      {/* 卡牌左侧 */}

      {siteConfig('POST_TITLE_ICON') && ( @@ -32,22 +35,8 @@ const BlogPostCardHorizontal = ({ post, showSummary }) => {

      -
      -
      {post.date?.start_date}
      - {siteConfig('MEDIUM_POST_LIST_CATEGORY', null, CONFIG) && ( - - )} - {siteConfig('MEDIUM_POST_LIST_TAG', null, CONFIG) && - post?.tagItems?.map(tag => ( - - ))} -
      - {(!showPreview || showSummary) && ( -
      +
      {post.summary}
      )} @@ -68,6 +57,20 @@ const BlogPostCardHorizontal = ({ post, showSummary }) => {
      )} + +
      + {siteConfig('MAGZINE_POST_LIST_CATEGORY', null, CONFIG) && ( + + )} + {siteConfig('MAGZINE_POST_LIST_TAG', null, CONFIG) && + post?.tagItems?.map(tag => ( + + ))} +
      {post.date?.start_date}
      +
      {/* 卡牌右侧图片 */} @@ -82,4 +85,4 @@ const BlogPostCardHorizontal = ({ post, showSummary }) => { ) } -export default BlogPostCardHorizontal +export default PostItemCardWide diff --git a/themes/magzine/components/PostListEmpty.js b/themes/magzine/components/PostListEmpty.js new file mode 100644 index 00000000..cc037cea --- /dev/null +++ b/themes/magzine/components/PostListEmpty.js @@ -0,0 +1,19 @@ +import { useGlobal } from '@/lib/global' + +/** + * 空白博客 列表 + * @returns {JSX.Element} + * @constructor + */ +const PostListEmpty = ({ currentSearch }) => { + const { locale } = useGlobal() + return ( +
      +

      + {locale.COMMON.NO_RESULTS_FOUND}{' '} + {currentSearch &&

      {currentSearch}
      } +

      +
      + ) +} +export default PostListEmpty diff --git a/themes/magzine/components/PostListHorizontal.js b/themes/magzine/components/PostListHorizontal.js new file mode 100644 index 00000000..41ef905d --- /dev/null +++ b/themes/magzine/components/PostListHorizontal.js @@ -0,0 +1,38 @@ +import Link from 'next/link' +import PostItemCardSimple from './PostItemCardSimple' +import PostListEmpty from './PostListEmpty' + +/** + * 博文水平列表 + * 含封面 + * @returns {JSX.Element} + * @constructor + */ +const PostListHorizontal = ({ title, href, posts }) => { + if (!posts || posts.length === 0) { + return + } + + return ( +
      +
      + {/* 标题 */} +
      +

      {title}

      + + 查看全部 + + +
      + {/* 列表 */} +
        + {posts?.map(p => { + return + })} +
      +
      +
      + ) +} + +export default PostListHorizontal diff --git a/themes/magzine/components/BlogPostListPage.js b/themes/magzine/components/PostListPage.js similarity index 73% rename from themes/magzine/components/BlogPostListPage.js rename to themes/magzine/components/PostListPage.js index 79e031dd..9486f6ec 100644 --- a/themes/magzine/components/BlogPostListPage.js +++ b/themes/magzine/components/PostListPage.js @@ -1,8 +1,8 @@ import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' -import BlogPostCard from './BlogPostCard' -import BlogPostListEmpty from './BlogPostListEmpty' import PaginationSimple from './PaginationSimple' +import PostItemCard from './PostItemCard' +import PostListEmpty from './PostListEmpty' /** * 文章列表分页表格 @@ -12,13 +12,13 @@ import PaginationSimple from './PaginationSimple' * @returns {JSX.Element} * @constructor */ -const BlogPostListPage = ({ page = 1, posts = [], postCount }) => { +const PostListPage = ({ page = 1, posts = [], postCount }) => { const { NOTION_CONFIG } = useGlobal() const POSTS_PER_PAGE = siteConfig('POSTS_PER_PAGE', null, NOTION_CONFIG) const totalPage = Math.ceil(postCount / POSTS_PER_PAGE) if (!posts || posts.length === 0) { - return + return } return ( @@ -26,7 +26,7 @@ const BlogPostListPage = ({ page = 1, posts = [], postCount }) => {
      {/* 文章列表 */} {posts?.map(post => ( - + ))}
      @@ -34,4 +34,4 @@ const BlogPostListPage = ({ page = 1, posts = [], postCount }) => { ) } -export default BlogPostListPage +export default PostListPage diff --git a/themes/magzine/components/BlogPostListScroll.js b/themes/magzine/components/PostListScroll.js similarity index 89% rename from themes/magzine/components/BlogPostListScroll.js rename to themes/magzine/components/PostListScroll.js index 22960779..a33aa1e9 100644 --- a/themes/magzine/components/BlogPostListScroll.js +++ b/themes/magzine/components/PostListScroll.js @@ -3,8 +3,8 @@ import { useGlobal } from '@/lib/global' import throttle from 'lodash.throttle' import { useRouter } from 'next/router' import { useCallback, useEffect, useRef, useState } from 'react' -import BlogPostCard from './BlogPostCard' -import BlogPostListEmpty from './BlogPostListEmpty' +import PostItemCard from './PostItemCard' +import PostListEmpty from './PostListEmpty' /** * 博客列表滚动分页 @@ -13,7 +13,7 @@ import BlogPostListEmpty from './BlogPostListEmpty' * @returns {JSX.Element} * @constructor */ -const BlogPostListScroll = ({ posts = [], currentSearch }) => { +const PostListScroll = ({ posts = [], currentSearch }) => { const { NOTION_CONFIG } = useGlobal() const POSTS_PER_PAGE = siteConfig('POSTS_PER_PAGE', null, NOTION_CONFIG) const [page, updatePage] = useState(1) @@ -67,14 +67,14 @@ const BlogPostListScroll = ({ posts = [], currentSearch }) => { const { locale } = useGlobal() if (!postsToShow || postsToShow.length === 0) { - return + return } else { return (
      {/* 文章列表 */}
      {postsToShow?.map(post => ( - + ))}
      @@ -104,4 +104,4 @@ const getPostByPage = function (page, totalPosts, POSTS_PER_PAGE) { return totalPosts.slice(0, POSTS_PER_PAGE * page) } -export default BlogPostListScroll +export default PostListScroll diff --git a/themes/magzine/components/PostListSimpleHorizontal.js b/themes/magzine/components/PostListSimpleHorizontal.js new file mode 100644 index 00000000..5add570c --- /dev/null +++ b/themes/magzine/components/PostListSimpleHorizontal.js @@ -0,0 +1,37 @@ +import Link from 'next/link' +import PostItemCardSimple from './PostItemCardSimple' +import PostListEmpty from './PostListEmpty' + +/** + * 博文水平列表;不带封面图 + * @returns {JSX.Element} + * @constructor + */ +const PostSimpleListHorizontal = ({ title, href, posts }) => { + if (!posts || posts.length === 0) { + return + } + + return ( +
      +
      + {/* 标题 */} +
      +

      {title}

      + + 查看全部 + + +
      + {/* 列表 */} +
        + {posts?.map(p => { + return + })} +
      +
      +
      + ) +} + +export default PostSimpleListHorizontal diff --git a/themes/magzine/components/BlogPostBar.js b/themes/magzine/components/PostListSlotBar.js similarity index 92% rename from themes/magzine/components/BlogPostBar.js rename to themes/magzine/components/PostListSlotBar.js index 9f34aca5..228d1f3c 100644 --- a/themes/magzine/components/BlogPostBar.js +++ b/themes/magzine/components/PostListSlotBar.js @@ -5,7 +5,7 @@ import { useGlobal } from '@/lib/global' * @param {*} props * @returns */ -export default function BlogPostBar(props) { +export default function PostListSlotBar(props) { const { tag, category } = props const { locale } = useGlobal() diff --git a/themes/magzine/components/SearchInput.js b/themes/magzine/components/SearchInput.js index f6c84d9c..4ebcade0 100644 --- a/themes/magzine/components/SearchInput.js +++ b/themes/magzine/components/SearchInput.js @@ -21,14 +21,15 @@ const SearchInput = ({ currentTag, currentSearch, cRef, className }) => { setLoadingState(true) location.href = '/search/' + key } else { - router.push({ pathname: '/' }).then(r => { - }) + router.push({ pathname: '/' }).then(r => {}) } } - const handleKeyUp = (e) => { - if (e.keyCode === 13) { // 回车 + const handleKeyUp = e => { + if (e.keyCode === 13) { + // 回车 handleSearch(searchInputRef.current.value) - } else if (e.keyCode === 27) { // ESC + } else if (e.keyCode === 27) { + // ESC cleanSearch() } } @@ -37,7 +38,7 @@ const SearchInput = ({ currentTag, currentSearch, cRef, className }) => { } const [showClean, setShowClean] = useState(false) - const updateSearchKey = (val) => { + const updateSearchKey = val => { if (lock) { return } @@ -49,38 +50,48 @@ const SearchInput = ({ currentTag, currentSearch, cRef, className }) => { setShowClean(false) } } - function lockSearchInput () { + function lockSearchInput() { lock = true } - function unLockSearchInput () { + function unLockSearchInput() { lock = false } - return
      - updateSearchKey(e.target.value)} - defaultValue={currentSearch} - /> + return ( +
      + updateSearchKey(e.target.value)} + defaultValue={currentSearch} + /> -
      - -
      - - {(showClean && -
      - +
      +
      + + {showClean && ( +
      + +
      )} -
      +
      + ) } export default SearchInput diff --git a/themes/magzine/components/TagItemMini.js b/themes/magzine/components/TagItemMini.js index 9922a069..c08b33f1 100644 --- a/themes/magzine/components/TagItemMini.js +++ b/themes/magzine/components/TagItemMini.js @@ -8,12 +8,15 @@ const TagItemMini = ({ tag, selected = false }) => { passHref className={`cursor-pointer inline-block rounded hover:bg-gray-500 hover:text-white duration-200 mr-2 py-1 px-2 text-xs whitespace-nowrap dark:hover:text-white - ${selected - ? 'text-white dark:text-gray-300 bg-black dark:bg-black dark:hover:bg-gray-900' - : `text-gray-600 hover:shadow-xl dark:border-gray-400 notion-${tag.color}_background dark:bg-gray-800`}` }> - -
      {selected && } {tag.name + (tag.count ? `(${tag.count})` : '')}
      - + ${ + selected + ? 'text-white dark:text-gray-300 dark:hover:bg-gray-900' + : `text-gray-900 hover:shadow-xl dark:border-gray-400 dark:bg-gray-800` + }`}> +
      + {/* {selected && } */}# + {tag.name + (tag.count ? `(${tag.count})` : '')}{' '} +
      ) } diff --git a/themes/magzine/components/TopNavBar.js b/themes/magzine/components/TopNavBar.js index 244a02d7..ef22aa2d 100644 --- a/themes/magzine/components/TopNavBar.js +++ b/themes/magzine/components/TopNavBar.js @@ -24,25 +24,25 @@ export default function TopNavBar(props) { icon: 'fas fa-th', name: locale.COMMON.CATEGORY, href: '/category', - show: siteConfig('MEDIUM_MENU_CATEGORY', null, CONFIG) + show: siteConfig('MAGZINE_MENU_CATEGORY', null, CONFIG) }, { icon: 'fas fa-tag', name: locale.COMMON.TAGS, href: '/tag', - show: siteConfig('MEDIUM_MENU_TAG', null, CONFIG) + show: siteConfig('MAGZINE_MENU_TAG', null, CONFIG) }, { icon: 'fas fa-archive', name: locale.NAV.ARCHIVE, href: '/archive', - show: siteConfig('MEDIUM_MENU_ARCHIVE', null, CONFIG) + show: siteConfig('MAGZINE_MENU_ARCHIVE', null, CONFIG) }, { icon: 'fas fa-search', name: locale.NAV.SEARCH, href: '/search', - show: siteConfig('MEDIUM_MENU_SEARCH', null, CONFIG) + show: siteConfig('MAGZINE_MENU_SEARCH', null, CONFIG) } ] diff --git a/themes/magzine/config.js b/themes/magzine/config.js index c29a2ef2..6ef5e66e 100644 --- a/themes/magzine/config.js +++ b/themes/magzine/config.js @@ -1,24 +1,35 @@ const CONFIG = { + // 首屏信息栏按钮文字 + MAGZINE_HOME_BANNER_ENABLE: true, // 首屏右上角的宣传位 + MAGZINE_HOME_BUTTON: true, + MAGZINE_HOME_BUTTON_URL: '/about', + MAGZINE_HOME_BUTTON_TEXT: '了解更多', + + MAGZINE_HOME_TITLE: '立即开创您的在线业务。完全免费。', + MAGZINE_HOME_DESCRIPTION: + '借助NotionNext,获得助您开创、经营和扩展业务所需的全部工具和帮助。', + MAGZINE_HOME_TIPS: 'AI时代来临,这是属于超级个体的狂欢盛宴!', // Style - MEDIUM_RIGHT_PANEL_DARK: process.env.NEXT_PUBLIC_MEDIUM_RIGHT_DARK || false, // 右侧面板深色模式 + MAGZINE_RIGHT_PANEL_DARK: process.env.NEXT_PUBLIC_MAGZINE_RIGHT_DARK || false, // 右侧面板深色模式 - MEDIUM_POST_LIST_COVER: true, // 文章列表显示图片封面 - MEDIUM_POST_LIST_PREVIEW: true, // 列表显示文章预览 - MEDIUM_POST_LIST_CATEGORY: true, // 列表显示文章分类 - MEDIUM_POST_LIST_TAG: true, // 列表显示文章标签 + MAGZINE_POST_LIST_COVER: true, // 文章列表显示图片封面 + MAGZINE_POST_LIST_PREVIEW: true, // 列表显示文章预览 + MAGZINE_POST_LIST_CATEGORY: true, // 列表显示文章分类 + MAGZINE_POST_LIST_TAG: true, // 列表显示文章标签 - MEDIUM_POST_DETAIL_CATEGORY: true, // 文章显示分类 - MEDIUM_POST_DETAIL_TAG: true, // 文章显示标签 + MAGZINE_POST_DETAIL_CATEGORY: true, // 文章显示分类 + MAGZINE_POST_DETAIL_TAG: true, // 文章显示标签 // 菜单 - MEDIUM_MENU_CATEGORY: true, // 显示分类 - MEDIUM_MENU_TAG: true, // 显示标签 - MEDIUM_MENU_ARCHIVE: true, // 显示归档 - MEDIUM_MENU_SEARCH: true, // 显示搜索 + MAGZINE_MENU_CATEGORY: true, // 显示分类 + MAGZINE_MENU_TAG: true, // 显示标签 + MAGZINE_MENU_ARCHIVE: true, // 显示归档 + MAGZINE_MENU_SEARCH: true, // 显示搜索 // Widget - MEDIUM_WIDGET_REVOLVER_MAPS: process.env.NEXT_PUBLIC_WIDGET_REVOLVER_MAPS || 'false', // 地图插件 - MEDIUM_WIDGET_TO_TOP: true // 跳回顶部 + MAGZINE_WIDGET_REVOLVER_MAPS: + process.env.NEXT_PUBLIC_WIDGET_REVOLVER_MAPS || 'false', // 地图插件 + MAGZINE_WIDGET_TO_TOP: true // 跳回顶部 } export default CONFIG diff --git a/themes/magzine/index.js b/themes/magzine/index.js index db46d13e..5845e01c 100644 --- a/themes/magzine/index.js +++ b/themes/magzine/index.js @@ -8,21 +8,20 @@ import { isBrowser } from '@/lib/utils' import Link from 'next/link' import { useRouter } from 'next/router' import { createContext, useContext, useEffect, useState } from 'react' -import Announcement from './components/Announcement' +import ArchiveItem from './components/ArchiveItem' import ArticleAround from './components/ArticleAround' import ArticleInfo from './components/ArticleInfo' import { ArticleLock } from './components/ArticleLock' -import BlogArchiveItem from './components/BlogArchiveItem' -import BlogPostCardHorizontal from './components/BlogPostCardHorizontal' -import BlogPostCardTop from './components/BlogPostCardTop' -import BlogPostListPage from './components/BlogPostListPage' -import BlogPostListScroll from './components/BlogPostListScroll' import Catalog from './components/Catalog' import CategoryGroup from './components/CategoryGroup' import CategoryItem from './components/CategoryItem' import Footer from './components/Footer' import Header from './components/Header' -import InfoCard from './components/InfoCard' +import Hero from './components/Hero' +import PostListHorizontal from './components/PostListHorizontal' +import PostListPage from './components/PostListPage' +import PostListScroll from './components/PostListScroll' +import PostSimpleListHorizontal from './components/PostListSimpleHorizontal' import SearchInput from './components/SearchInput' import TagGroups from './components/TagGroups' import TagItemMini from './components/TagItemMini' @@ -81,33 +80,72 @@ const LayoutBase = props => { * @returns */ const LayoutIndex = props => { - const { posts, notice } = props - const top = posts[0] - const post1 = posts[1] - const post2 = posts[2] - return ( -
      - {/* 首屏文章 */} + const { posts, allNavPages } = props + // 最新文章 从第4个元素开始截取出4个 + const newPosts = posts.slice(3, 7) -
      -
      - -
      -
      -
      - - -
      - {/* 两篇主要文章 */} -
      - - -
      -
      -
      + // 按分类将文章分组成文件夹 + const categoryFolders = groupArticles(allNavPages.slice(8)) + + return ( +
      + {/* 首屏宣传区块 */} + + + {/* 最新文章区块 */} + + + {/* 不同的分类文章列表 */} + {categoryFolders?.map((categoryGroup, index) => { + if ( + !categoryGroup || + !categoryGroup.items || + categoryGroup.items.length < 1 + ) { + return null + } + + return ( + + ) + })}
      ) } +// 按照分类将文章分组成文件夹 +function groupArticles(allPosts) { + if (!allPosts) { + return [] + } + const groups = [] + + for (let i = 0; i < allPosts.length; i++) { + const item = allPosts[i] + const categoryName = item?.category ? item?.category : '' // 将 category 转换为字符串 + + let existingGroup = groups.find(group => group.category === categoryName) // 搜索同名的最后一个分组 + + if (existingGroup && existingGroup.category === categoryName) { + // 如果分组已存在,并且该分组中的文章数量小于4,添加文章 + if (existingGroup.items.length < 4) { + existingGroup.items.push(item) + } + } else { + // 新建分组,并添加当前文章 + groups.push({ category: categoryName, items: [item] }) + } + } + + return groups +} /** * 博客列表 @@ -117,9 +155,9 @@ const LayoutPostList = props => { return ( <> {siteConfig('POST_LIST_STYLE') === 'page' ? ( - + ) : ( - + )} ) @@ -180,10 +218,10 @@ const LayoutSlug = props => { {/* 文章分类和标签信息 */}
      - {siteConfig('MEDIUM_POST_DETAIL_CATEGORY', null, CONFIG) && + {siteConfig('MAGZINE_POST_DETAIL_CATEGORY', null, CONFIG) && post?.category && }
      - {siteConfig('MEDIUM_POST_DETAIL_TAG', null, CONFIG) && + {siteConfig('MAGZINE_POST_DETAIL_TAG', null, CONFIG) && post?.tagItems?.map(tag => ( ))} @@ -245,9 +283,9 @@ const LayoutSearch = props => { {currentSearch && (
      {siteConfig('POST_LIST_STYLE') === 'page' ? ( - + ) : ( - + )}
      )} @@ -266,7 +304,7 @@ const LayoutArchive = props => { <>
      {Object.keys(archivePosts)?.map(archiveTitle => ( - Date: Fri, 13 Sep 2024 15:12:28 +0800 Subject: [PATCH 040/290] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E4=B8=80=E7=BA=A7?= =?UTF-8?q?=E6=A0=87=E9=A2=98=E4=B8=8B=E5=88=92=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- styles/notion.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/styles/notion.css b/styles/notion.css index 92c990fb..0685e304 100644 --- a/styles/notion.css +++ b/styles/notion.css @@ -403,7 +403,8 @@ summary > .notion-h { .notion-h1 { font-size: 1.575em; margin-top: 1.08em; - @apply border-b w-full; + @apply w-full; + /* @apply border-b w-full; */ } .notion-h2 { @apply w-full; @@ -554,7 +555,7 @@ summary > .notion-h { width: 100%; margin: 6px 0; padding: 0; - border-bottom-width: 1px; + /* border-bottom-width: 1px; */ } .notion-link { From 0dae01f5470d72c127b6f0815f189a776adbbeda Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Fri, 13 Sep 2024 17:07:09 +0800 Subject: [PATCH 041/290] =?UTF-8?q?Magzine=E4=B8=BB=E9=A2=98=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ExternalPlugins.js | 3 +- components/OpenWrite.js | 5 +- lib/cache/cache_manager.js | 2 +- themes/magzine/components/Announcement.js | 3 + themes/magzine/components/ArticleInfo.js | 43 +++++- themes/magzine/components/Footer.js | 137 +++++++++++++----- themes/magzine/components/Header.js | 2 +- themes/magzine/components/Hero.js | 2 +- themes/magzine/components/JumpToTopButton.js | 3 +- themes/magzine/components/LoadingCover.js | 7 - themes/magzine/components/MenuBarMobile.js | 9 +- .../components/PostBannerGroupByCategory.js | 87 +++++++++++ themes/magzine/components/PostItemCard.js | 96 ++++-------- .../magzine/components/PostItemCardSimple.js | 8 +- themes/magzine/components/PostItemCardTop.js | 12 +- themes/magzine/components/PostItemCardWide.js | 8 +- .../magzine/components/PostListHorizontal.js | 15 +- .../magzine/components/PostListRecommend.js | 79 ++++++++++ .../components/PostListSimpleHorizontal.js | 2 +- themes/magzine/components/SocialButton.js | 20 +-- themes/magzine/components/TopNavBar.js | 9 +- themes/magzine/config.js | 96 +++++++++++- themes/magzine/index.js | 80 +++------- 23 files changed, 499 insertions(+), 229 deletions(-) delete mode 100644 themes/magzine/components/LoadingCover.js create mode 100644 themes/magzine/components/PostBannerGroupByCategory.js create mode 100644 themes/magzine/components/PostListRecommend.js diff --git a/components/ExternalPlugins.js b/components/ExternalPlugins.js index ce0b5e63..d798a940 100644 --- a/components/ExternalPlugins.js +++ b/components/ExternalPlugins.js @@ -63,7 +63,8 @@ const ExternalPlugin = props => { const MOUSE_FOLLOW = siteConfig('MOUSE_FOLLOW') const CUSTOM_EXTERNAL_CSS = siteConfig('CUSTOM_EXTERNAL_CSS') const CUSTOM_EXTERNAL_JS = siteConfig('CUSTOM_EXTERNAL_JS') - const ENABLE_NPROGRSS = siteConfig('ENABLE_NPROGRSS', true) + // 默认关闭NProgress + const ENABLE_NPROGRSS = siteConfig('ENABLE_NPROGRSS', false) // 自定义样式css和js引入 if (isBrowser) { diff --git a/components/OpenWrite.js b/components/OpenWrite.js index 973931a8..5caf5d7b 100644 --- a/components/OpenWrite.js +++ b/components/OpenWrite.js @@ -73,8 +73,11 @@ const OpenWrite = () => { console.error('OpenWrite 加载异常', error) } } - useEffect(() => { + if (process.env.NODE_ENV === 'development') { + console.log('开发环境:屏蔽OpenWrite') + return + } if (isBrowser && blogId) { // Check if the element with id 'read-more-wrap' already exists const readMoreWrap = document.getElementById('read-more-wrap') diff --git a/lib/cache/cache_manager.js b/lib/cache/cache_manager.js index 6070958c..bbfbfdac 100644 --- a/lib/cache/cache_manager.js +++ b/lib/cache/cache_manager.js @@ -8,7 +8,7 @@ import MemoryCache from './memory_cache' * @returns */ export async function getDataFromCache(key, force) { - if (JSON.parse(BLOG.ENABLE_CACHE) || force) { + if (BLOG.ENABLE_CACHE || force) { const dataFromCache = await getApi().getCache(key) if (JSON.stringify(dataFromCache) === '[]') { return null diff --git a/themes/magzine/components/Announcement.js b/themes/magzine/components/Announcement.js index 522f0784..62ab01d0 100644 --- a/themes/magzine/components/Announcement.js +++ b/themes/magzine/components/Announcement.js @@ -3,6 +3,9 @@ import dynamic from 'next/dynamic' const NotionPage = dynamic(() => import('@/components/NotionPage')) +/** + * Magzine主题的公告 + */ const Announcement = ({ post, className }) => { // const { locale } = useGlobal() if (post?.blockMap) { diff --git a/themes/magzine/components/ArticleInfo.js b/themes/magzine/components/ArticleInfo.js index e2f79ea3..02461b8d 100644 --- a/themes/magzine/components/ArticleInfo.js +++ b/themes/magzine/components/ArticleInfo.js @@ -2,6 +2,8 @@ import LazyImage from '@/components/LazyImage' import NotionIcon from '@/components/NotionIcon' import { siteConfig } from '@/lib/config' import Link from 'next/link' +import CategoryItem from './CategoryItem' +import TagItemMini from './TagItemMini' /** * 文章详情页介绍 @@ -13,11 +15,42 @@ export default function ArticleInfo(props) { return ( <> - {/* title */} -

      - {siteConfig('POST_TITLE_ICON') && } - {post?.title} -

      +
      +
      + {siteConfig('MAGZINE_POST_LIST_CATEGORY') && ( + + )} +
      + {siteConfig('MAGZINE_POST_LIST_TAG') && + post?.tagItems?.map(tag => ( + + ))} +
      +
      + + {/* title */} +

      + {siteConfig('POST_TITLE_ICON') && ( + + )} + {post?.title} +

      + +
      {post?.summary}
      +
      + + {post?.type && !post?.type !== 'Page' && post?.pageCover && ( +
      + +
      + )} {/* meta */}
      diff --git a/themes/magzine/components/Footer.js b/themes/magzine/components/Footer.js index aaf801f8..b3672dda 100644 --- a/themes/magzine/components/Footer.js +++ b/themes/magzine/components/Footer.js @@ -1,56 +1,113 @@ import DarkModeButton from '@/components/DarkModeButton' +import LazyImage from '@/components/LazyImage' import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import Link from 'next/link' 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', []) + console.log('菜单', MAGZINE_FOOTER_LINKS) return ( -
      - - {`${copyrightDate}`}{' '} - - {' '} - - {siteConfig('AUTHOR')} - - .
      - {siteConfig('BEI_AN') && ( - <> - {' '} - - {siteConfig('BEI_AN')} + ) } diff --git a/themes/magzine/components/Header.js b/themes/magzine/components/Header.js index 23985074..1b44f9cc 100644 --- a/themes/magzine/components/Header.js +++ b/themes/magzine/components/Header.js @@ -118,7 +118,7 @@ export default function Header(props) { {/* 导航栏菜单内容 */}
      + className='flex w-full mx-auto max-w-screen-2xl h-20 transition-all duration-200 items-center justify-between'> {/* 搜索栏 */} {showSearchInput && ( { return ( <> -
      +
      {/* 左侧一篇主要置顶文章 */}
      diff --git a/themes/magzine/components/JumpToTopButton.js b/themes/magzine/components/JumpToTopButton.js index 1c30373b..5e8a5418 100644 --- a/themes/magzine/components/JumpToTopButton.js +++ b/themes/magzine/components/JumpToTopButton.js @@ -1,5 +1,4 @@ import { siteConfig } from '@/lib/config' -import CONFIG from '../config' /** * 跳转到网页顶部 @@ -10,7 +9,7 @@ import CONFIG from '../config' * @constructor */ const JumpToTopButton = ({ showPercent = false, percent, className }) => { - if (!siteConfig('MAGZINE_WIDGET_TO_TOP', null, CONFIG)) { + if (!siteConfig('MAGZINE_WIDGET_TO_TOP')) { return <> } return ( diff --git a/themes/magzine/components/LoadingCover.js b/themes/magzine/components/LoadingCover.js deleted file mode 100644 index 4d8fa828..00000000 --- a/themes/magzine/components/LoadingCover.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function LoadingCover() { - return
      -
      - -
      -
      -} diff --git a/themes/magzine/components/MenuBarMobile.js b/themes/magzine/components/MenuBarMobile.js index 1322190b..9e32e9f5 100644 --- a/themes/magzine/components/MenuBarMobile.js +++ b/themes/magzine/components/MenuBarMobile.js @@ -1,6 +1,5 @@ import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' -import CONFIG from '../config' import { MenuItemCollapse } from './MenuItemCollapse' export const MenuBarMobile = props => { @@ -12,19 +11,19 @@ export const MenuBarMobile = props => { { name: locale.COMMON.CATEGORY, href: '/category', - show: siteConfig('MAGZINE_MENU_CATEGORY', null, CONFIG) + show: siteConfig('MAGZINE_MENU_CATEGORY') }, { name: locale.COMMON.TAGS, href: '/tag', - show: siteConfig('MAGZINE_MENU_TAG', null, CONFIG) + show: siteConfig('MAGZINE_MENU_TAG') }, { name: locale.NAV.ARCHIVE, href: '/archive', - show: siteConfig('MAGZINE_MENU_ARCHIVE', null, CONFIG) + show: siteConfig('MAGZINE_MENU_ARCHIVE') } - // { name: locale.NAV.SEARCH, href: '/search', show: siteConfig('MENU_SEARCH', null, CONFIG) } + // { name: locale.NAV.SEARCH, href: '/search', show: siteConfig('MENU_SEARCH', ) } ] if (customNav) { diff --git a/themes/magzine/components/PostBannerGroupByCategory.js b/themes/magzine/components/PostBannerGroupByCategory.js new file mode 100644 index 00000000..ee16008c --- /dev/null +++ b/themes/magzine/components/PostBannerGroupByCategory.js @@ -0,0 +1,87 @@ +import { siteConfig } from '@/lib/config' +import PostListHorizontal from './PostListHorizontal' + +/** + * 按文章类别分组的文章列表区块 + * @returns {JSX.Element} + * @constructor + */ +const PostBannerGroupByCategory = props => { + const { posts, categoryOptions, allNavPages, latestPosts } = props + if (!posts || posts.length === 0) { + return null + } + + // 按分类将文章分组成文件夹 + const categoryFolders = groupArticles(categoryOptions, allNavPages.slice(8)) + + return ( + <> + {/* 不同的分类文章列表 */} + {categoryFolders?.map((categoryGroup, index) => { + if ( + !categoryGroup || + !categoryGroup.items || + categoryGroup.items.length < 1 + ) { + return null + } + + return ( + + ) + })} + + ) +} + +// 按照分类将文章分组成文件夹 +function groupArticles(categoryOptions, allPosts) { + if (!allPosts) { + return [] + } + const groups = [] + + for (let i = 0; i < allPosts.length; i++) { + const item = allPosts[i] + const categoryName = item?.category ? item?.category : '' // 将 category 转换为字符串 + + let existingGroup = groups.find(group => group.category === categoryName) // 搜索同名的最后一个分组 + + if (existingGroup && existingGroup.category === categoryName) { + // 如果分组已存在,并且该分组中的文章数量小于4,添加文章 + if (existingGroup.items.length < 4) { + existingGroup.items.push(item) + } + } else { + // 新建分组,并添加当前文章 + groups.push({ category: categoryName, items: [item] }) + } + } + const hiddenCategory = siteConfig('MAGZINE_HOME_HIDDEN_CATEGORY') + // 按照 categoryOptions 的顺序排序 groups + const sortedGroups = [] + for (let i = 0; i < categoryOptions.length; i++) { + const option = categoryOptions[i] + const matchingGroup = groups.find(group => group.category === option.name) + + if (matchingGroup) { + if ( + hiddenCategory && + hiddenCategory.indexOf(matchingGroup.category) >= 0 + ) { + continue + } + sortedGroups.push(matchingGroup) + } + } + return sortedGroups +} + +export default PostBannerGroupByCategory diff --git a/themes/magzine/components/PostItemCard.js b/themes/magzine/components/PostItemCard.js index 228db9a6..bac91ab0 100644 --- a/themes/magzine/components/PostItemCard.js +++ b/themes/magzine/components/PostItemCard.js @@ -1,43 +1,47 @@ import LazyImage from '@/components/LazyImage' import NotionIcon from '@/components/NotionIcon' -import NotionPage from '@/components/NotionPage' -import TwikooCommentCount from '@/components/TwikooCommentCount' import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' import Link from 'next/link' -import CONFIG from '../config' import CategoryItem from './CategoryItem' -import TagItemMini from './TagItemMini' +/** + * 普通的博客卡牌 + * 带封面图 + */ const PostItemCard = ({ post, showSummary }) => { - const showPreview = - siteConfig('MAGZINE_POST_LIST_PREVIEW', null, CONFIG) && post.blockMap - const { locale } = useGlobal() + const { siteInfo } = useGlobal() + const cover = post?.pageCoverThumbnail || siteInfo?.pageCover return ( -
      -
      +
      +
      + {siteConfig('MAGZINE_POST_LIST_COVER') && ( + +
      + +
      + + )} + {siteConfig('MAGZINE_POST_LIST_CATEGORY') && ( + + )} +

      - {siteConfig('MAGZINE_POST_LIST_COVER', null, CONFIG) && ( -
      - -
      - )} {siteConfig('POST_TITLE_ICON') && ( )} @@ -45,46 +49,8 @@ const PostItemCard = ({ post, showSummary }) => {

      -
      -
      {post.date?.start_date}
      - {siteConfig('MAGZINE_POST_LIST_CATEGORY', null, CONFIG) && ( - - )} - {siteConfig('MAGZINE_POST_LIST_TAG', null, CONFIG) && - post?.tagItems?.map(tag => ( - - ))} - -
      - -
      - - {(!showPreview || showSummary) && ( -
      - {post.summary} -
      - )} - - {showPreview && ( -
      - -
      -
      - - {locale.COMMON.ARTICLE_DETAIL} - - -
      -
      -
      - )} -
      +
      {post.date?.start_date}
      +
      ) } diff --git a/themes/magzine/components/PostItemCardSimple.js b/themes/magzine/components/PostItemCardSimple.js index 69ef5556..61d69465 100644 --- a/themes/magzine/components/PostItemCardSimple.js +++ b/themes/magzine/components/PostItemCardSimple.js @@ -2,7 +2,6 @@ import NotionIcon from '@/components/NotionIcon' import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' import Link from 'next/link' -import CONFIG from '../config' import CategoryItem from './CategoryItem' /** @@ -11,15 +10,14 @@ import CategoryItem from './CategoryItem' * @returns */ const PostItemCardSimple = ({ post, showSummary }) => { - const showPreview = - siteConfig('MAGZINE_POST_LIST_PREVIEW', null, CONFIG) && post.blockMap + const showPreview = siteConfig('MAGZINE_POST_LIST_PREVIEW') && post.blockMap const { locale } = useGlobal() return (
      + className='mb-6 max-w-screen-2xl border-t mr-8 py-2 gap-y-4 flex flex-col dark:border-gray-800 '>
      - {siteConfig('MAGZINE_POST_LIST_CATEGORY', null, CONFIG) && ( + {siteConfig('MAGZINE_POST_LIST_CATEGORY') && ( )}
      diff --git a/themes/magzine/components/PostItemCardTop.js b/themes/magzine/components/PostItemCardTop.js index b9d5756a..24f2a00d 100644 --- a/themes/magzine/components/PostItemCardTop.js +++ b/themes/magzine/components/PostItemCardTop.js @@ -4,7 +4,6 @@ import NotionPage from '@/components/NotionPage' import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' import Link from 'next/link' -import CONFIG from '../config' import CategoryItem from './CategoryItem' import TagItemMini from './TagItemMini' @@ -14,8 +13,7 @@ import TagItemMini from './TagItemMini' * @returns */ const PostItemCardTop = ({ post, showSummary }) => { - const showPreview = - siteConfig('MAGZINE_POST_LIST_PREVIEW', null, CONFIG) && post.blockMap + const showPreview = siteConfig('MAGZINE_POST_LIST_PREVIEW') && post.blockMap const { locale } = useGlobal() return (
      { data-aos-duration='300' data-aos-once='false' data-aos-anchor-placement='top-bottom' - className='mb-6 max-w-7xl '> + className='mb-6 max-w-screen-2xl '>
      - {siteConfig('MAGZINE_POST_LIST_COVER', null, CONFIG) && ( + {siteConfig('MAGZINE_POST_LIST_COVER') && ( { )}
      - {siteConfig('MAGZINE_POST_LIST_CATEGORY', null, CONFIG) && ( + {siteConfig('MAGZINE_POST_LIST_CATEGORY') && ( )}
      - {siteConfig('MAGZINE_POST_LIST_TAG', null, CONFIG) && + {siteConfig('MAGZINE_POST_LIST_TAG') && post?.tagItems?.map(tag => ( ))} diff --git a/themes/magzine/components/PostItemCardWide.js b/themes/magzine/components/PostItemCardWide.js index 0b250850..11487e7f 100644 --- a/themes/magzine/components/PostItemCardWide.js +++ b/themes/magzine/components/PostItemCardWide.js @@ -4,7 +4,6 @@ import NotionPage from '@/components/NotionPage' import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' import Link from 'next/link' -import CONFIG from '../config' import CategoryItem from './CategoryItem' import TagItemMini from './TagItemMini' @@ -14,8 +13,7 @@ import TagItemMini from './TagItemMini' * @returns */ const PostItemCardWide = ({ post, showSummary }) => { - const showPreview = - siteConfig('MAGZINE_POST_LIST_PREVIEW', null, CONFIG) && post.blockMap + const showPreview = siteConfig('MAGZINE_POST_LIST_PREVIEW') && post.blockMap const { locale } = useGlobal() return (
      @@ -62,10 +60,10 @@ const PostItemCardWide = ({ post, showSummary }) => { className={ 'flex mt-2 items-center justify-start flex-wrap space-x-3 text-gray-400' }> - {siteConfig('MAGZINE_POST_LIST_CATEGORY', null, CONFIG) && ( + {siteConfig('MAGZINE_POST_LIST_CATEGORY') && ( )} - {siteConfig('MAGZINE_POST_LIST_TAG', null, CONFIG) && + {siteConfig('MAGZINE_POST_LIST_TAG') && post?.tagItems?.map(tag => ( ))} diff --git a/themes/magzine/components/PostListHorizontal.js b/themes/magzine/components/PostListHorizontal.js index 41ef905d..0976033b 100644 --- a/themes/magzine/components/PostListHorizontal.js +++ b/themes/magzine/components/PostListHorizontal.js @@ -1,21 +1,22 @@ import Link from 'next/link' -import PostItemCardSimple from './PostItemCardSimple' +import PostItemCard from './PostItemCard' import PostListEmpty from './PostListEmpty' /** * 博文水平列表 * 含封面 + * 可以指定是否有模块背景色 * @returns {JSX.Element} * @constructor */ -const PostListHorizontal = ({ title, href, posts }) => { +const PostListHorizontal = ({ title, href, posts, hasBg }) => { if (!posts || posts.length === 0) { return } return ( -
      -
      +
      +
      {/* 标题 */}

      {title}

      @@ -25,9 +26,9 @@ const PostListHorizontal = ({ title, href, posts }) => {
      {/* 列表 */} -
        - {posts?.map(p => { - return +
          + {posts?.map((p, index) => { + return })}
      diff --git a/themes/magzine/components/PostListRecommend.js b/themes/magzine/components/PostListRecommend.js new file mode 100644 index 00000000..4335b579 --- /dev/null +++ b/themes/magzine/components/PostListRecommend.js @@ -0,0 +1,79 @@ +import { siteConfig } from '@/lib/config' +import PostItemCard from './PostItemCard' +import PostListEmpty from './PostListEmpty' + +/** + * 博文水平列表 + * 含封面 + * 可以指定是否有模块背景色 + * @returns {JSX.Element} + * @constructor + */ +const PostListRecommend = ({ latestPosts, allNavPages }) => { + // 获取推荐文章 + const recommendPosts = getTopPosts({ latestPosts, allNavPages }) + if (!recommendPosts || recommendPosts.length === 0) { + return + } + const title = siteConfig('MAGZINE_RECOMMEND_POST_TITLE') + + return ( +
      +
      + {/* 标题 */} +
      +

      {title}

      +
      + {/* 列表 */} +
        + {recommendPosts?.map(p => { + return + })} +
      +
      +
      + ) +} + +/** + * 获取推荐置顶文章 + */ +function getTopPosts({ latestPosts, allNavPages }) { + // 默认展示最近更新 + if ( + !siteConfig('MAGZINE_RECOMMEND_POST_TAG') || + siteConfig('MAGZINE_RECOMMEND_POST_TAG') === '' + ) { + return latestPosts + } + + // 显示包含‘推荐’标签的文章 + let sortPosts = [] + + // 排序方式 + if (siteConfig('MAGZINE_RECOMMEND_POST_SORT_BY_UPDATE_TIME')) { + sortPosts = Object.create(allNavPages).sort((a, b) => { + const dateA = new Date(a?.lastEditedDate) + const dateB = new Date(b?.lastEditedDate) + return dateB - dateA + }) + } else { + sortPosts = Object.create(allNavPages) + } + + const count = siteConfig('MAGZINE_RECOMMEND_POST_COUNT', 6) + // 只取前4篇 + const topPosts = [] + for (const post of sortPosts) { + if (topPosts.length === count) { + break + } + // 查找标签 + if (post?.tags?.indexOf(siteConfig('MAGZINE_RECOMMEND_POST_TAG')) >= 0) { + topPosts.push(post) + } + } + return topPosts +} + +export default PostListRecommend diff --git a/themes/magzine/components/PostListSimpleHorizontal.js b/themes/magzine/components/PostListSimpleHorizontal.js index 5add570c..62303ec3 100644 --- a/themes/magzine/components/PostListSimpleHorizontal.js +++ b/themes/magzine/components/PostListSimpleHorizontal.js @@ -14,7 +14,7 @@ const PostSimpleListHorizontal = ({ title, href, posts }) => { return (
      -
      +
      {/* 标题 */}

      {title}

      diff --git a/themes/magzine/components/SocialButton.js b/themes/magzine/components/SocialButton.js index 97aa6824..5ef31889 100644 --- a/themes/magzine/components/SocialButton.js +++ b/themes/magzine/components/SocialButton.js @@ -7,14 +7,14 @@ import { siteConfig } from '@/lib/config' */ const SocialButton = () => { return ( -
      +
      {siteConfig('CONTACT_GITHUB') && ( - + )} {siteConfig('CONTACT_TWITTER') && ( @@ -23,7 +23,7 @@ const SocialButton = () => { rel='noreferrer' title={'twitter'} href={siteConfig('CONTACT_TWITTER')}> - + )} {siteConfig('CONTACT_TELEGRAM') && ( @@ -32,7 +32,7 @@ const SocialButton = () => { rel='noreferrer' href={siteConfig('CONTACT_TELEGRAM')} title={'telegram'}> - + )} {siteConfig('CONTACT_LINKEDIN') && ( @@ -50,7 +50,7 @@ const SocialButton = () => { rel='noreferrer' title={'weibo'} href={siteConfig('CONTACT_WEIBO')}> - + )} {siteConfig('CONTACT_INSTAGRAM') && ( @@ -59,7 +59,7 @@ const SocialButton = () => { rel='noreferrer' title={'instagram'} href={siteConfig('CONTACT_INSTAGRAM')}> - + )} {siteConfig('CONTACT_EMAIL') && ( @@ -68,7 +68,7 @@ const SocialButton = () => { rel='noreferrer' title={'email'} href={`mailto:${siteConfig('CONTACT_EMAIL')}`}> - + )} {JSON.parse(siteConfig('ENABLE_RSS')) && ( @@ -77,7 +77,7 @@ const SocialButton = () => { rel='noreferrer' title={'RSS'} href={'/rss/feed.xml'}> - + )} {siteConfig('CONTACT_BILIBILI') && ( @@ -86,7 +86,7 @@ const SocialButton = () => { rel='noreferrer' title={'bilibili'} href={siteConfig('CONTACT_BILIBILI')}> - + )} {siteConfig('CONTACT_YOUTUBE') && ( @@ -95,7 +95,7 @@ const SocialButton = () => { rel='noreferrer' title={'youtube'} href={siteConfig('CONTACT_YOUTUBE')}> - + )}
      diff --git a/themes/magzine/components/TopNavBar.js b/themes/magzine/components/TopNavBar.js index ef22aa2d..370e542a 100644 --- a/themes/magzine/components/TopNavBar.js +++ b/themes/magzine/components/TopNavBar.js @@ -2,7 +2,6 @@ import Collapse from '@/components/Collapse' import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' import { useRef, useState } from 'react' -import CONFIG from '../config' import LogoBar from './LogoBar' import { MenuBarMobile } from './MenuBarMobile' import { MenuItemDrop } from './MenuItemDrop' @@ -24,25 +23,25 @@ export default function TopNavBar(props) { icon: 'fas fa-th', name: locale.COMMON.CATEGORY, href: '/category', - show: siteConfig('MAGZINE_MENU_CATEGORY', null, CONFIG) + show: siteConfig('MAGZINE_MENU_CATEGORY') }, { icon: 'fas fa-tag', name: locale.COMMON.TAGS, href: '/tag', - show: siteConfig('MAGZINE_MENU_TAG', null, CONFIG) + show: siteConfig('MAGZINE_MENU_TAG') }, { icon: 'fas fa-archive', name: locale.NAV.ARCHIVE, href: '/archive', - show: siteConfig('MAGZINE_MENU_ARCHIVE', null, CONFIG) + show: siteConfig('MAGZINE_MENU_ARCHIVE') }, { icon: 'fas fa-search', name: locale.NAV.SEARCH, href: '/search', - show: siteConfig('MAGZINE_MENU_SEARCH', null, CONFIG) + show: siteConfig('MAGZINE_MENU_SEARCH') } ] diff --git a/themes/magzine/config.js b/themes/magzine/config.js index 6ef5e66e..201d2a18 100644 --- a/themes/magzine/config.js +++ b/themes/magzine/config.js @@ -5,11 +5,19 @@ const CONFIG = { MAGZINE_HOME_BUTTON_URL: '/about', MAGZINE_HOME_BUTTON_TEXT: '了解更多', + MAGZINE_HOME_HIDDEN_CATEGORY: '分享杂文', //不希望在首页展示的文章分类,用英文逗号隔开 + MAGZINE_HOME_TITLE: '立即开创您的在线业务。完全免费。', MAGZINE_HOME_DESCRIPTION: '借助NotionNext,获得助您开创、经营和扩展业务所需的全部工具和帮助。', MAGZINE_HOME_TIPS: 'AI时代来临,这是属于超级个体的狂欢盛宴!', + // 首页底部推荐文章标签, 例如 [推荐] , 最多六篇文章; 若留空白'',则推荐最近更新文章 + MAGZINE_RECOMMEND_POST_TAG: '推荐', + MAGZINE_RECOMMEND_POST_COUNT: 6, + MAGZINE_RECOMMEND_POST_TITLE: '推荐文章', + MAGZINE_RECOMMEND_POST_SORT_BY_UPDATE_TIME: false, // 推荐文章排序,为`true`时将强制按最后修改时间倒序 + // Style MAGZINE_RIGHT_PANEL_DARK: process.env.NEXT_PUBLIC_MAGZINE_RIGHT_DARK || false, // 右侧面板深色模式 @@ -21,15 +29,95 @@ const CONFIG = { MAGZINE_POST_DETAIL_CATEGORY: true, // 文章显示分类 MAGZINE_POST_DETAIL_TAG: true, // 文章显示标签 - // 菜单 + // 页脚菜单 + MAGZINE_FOOTER_LINKS: [ + { + name: '友情链接', + menus: [ + { title: '尘世の歌', href: 'https://chenge.ink' }, + { + title: '设计狮网址导航', + href: 'https://ct.ued.cat/' + }, + { + title: '积极的长腿怪', + href: 'https://jjdctg.com' + }, + { + title: '自动驾驶小白说', + href: 'https://www.helloxiaobai.cn/about' + }, + { + title: 'AI-皇帝', + href: 'https://www.ai-hd.com/' + }, + { + title: 'Andy`s Pro', + href: 'https://tw.andys.pro/' + }, + { title: 'LUCEN', href: 'https://www.lucenczz.top/' } + ] + }, + { + name: '开发者', + menus: [ + { title: 'Github', href: 'https://github.com/tangly1024/NotionNext' }, + { + title: '开发帮助', + href: 'https://docs.tangly1024.com/article/how-to-develop-with-notion-next' + }, + { + title: '功能反馈', + href: 'https://github.com/tangly1024/NotionNext/issues/new/choose' + }, + { + title: '技术讨论', + href: 'https://github.com/tangly1024/NotionNext/discussions' + }, + { + title: '关于作者', + href: 'https://blog.tangly1024.com/about' + } + ] + }, + + { + name: '支持', + menus: [ + { + title: '站长社群', + href: 'https://docs.tangly1024.com/article/chat-community' + }, + { + title: '咨询与定制', + href: 'https://docs.tangly1024.com/article/my-service' + }, + { + title: '升级手册', + href: 'https://docs.tangly1024.com/article/my-service' + }, + { + title: '安装教程', + href: 'https://docs.tangly1024.com/article/how-to-update-notionnext' + }, + { title: 'SEO推广', href: 'https://seo.tangly1024.com/' } + ] + }, + { + name: '解决方案', + menus: [ + { title: '建站工具', href: 'https://www.tangly1024.com/' }, + { title: 'NotionNext', href: 'https://docs.tangly1024.com/about' } + ] + } + ], + + // 旧版本顶部菜单 MAGZINE_MENU_CATEGORY: true, // 显示分类 MAGZINE_MENU_TAG: true, // 显示标签 MAGZINE_MENU_ARCHIVE: true, // 显示归档 MAGZINE_MENU_SEARCH: true, // 显示搜索 - // Widget - MAGZINE_WIDGET_REVOLVER_MAPS: - process.env.NEXT_PUBLIC_WIDGET_REVOLVER_MAPS || 'false', // 地图插件 MAGZINE_WIDGET_TO_TOP: true // 跳回顶部 } export default CONFIG diff --git a/themes/magzine/index.js b/themes/magzine/index.js index 5845e01c..14b737e1 100644 --- a/themes/magzine/index.js +++ b/themes/magzine/index.js @@ -1,4 +1,5 @@ import Comment from '@/components/Comment' +import LoadingCover from '@/components/LoadingCover' import replaceSearchResult from '@/components/Mark' import NotionPage from '@/components/NotionPage' import ShareBar from '@/components/ShareBar' @@ -8,6 +9,7 @@ import { isBrowser } from '@/lib/utils' import Link from 'next/link' import { useRouter } from 'next/router' import { createContext, useContext, useEffect, useState } from 'react' +import Announcement from './components/Announcement' import ArchiveItem from './components/ArchiveItem' import ArticleAround from './components/ArticleAround' import ArticleInfo from './components/ArticleInfo' @@ -18,8 +20,9 @@ import CategoryItem from './components/CategoryItem' import Footer from './components/Footer' import Header from './components/Header' import Hero from './components/Hero' -import PostListHorizontal from './components/PostListHorizontal' +import PostBannerGroupByCategory from './components/PostBannerGroupByCategory' import PostListPage from './components/PostListPage' +import PostListRecommend from './components/PostListRecommend' import PostListScroll from './components/PostListScroll' import PostSimpleListHorizontal from './components/PostListSimpleHorizontal' import SearchInput from './components/SearchInput' @@ -40,7 +43,7 @@ export const useMagzineGlobal = () => useContext(ThemeGlobalMagzine) * @constructor */ const LayoutBase = props => { - const { children, showInfoCard = true, post, notice } = props + const { children, notice, showInfoCard = true, post } = props const { locale } = useGlobal() const router = useRouter() const [tocVisible, changeTocVisible] = useState(false) @@ -65,9 +68,14 @@ const LayoutBase = props => { {children}
      {/* 底部 */} +
      +

      ) @@ -80,15 +88,12 @@ const LayoutBase = props => { * @returns */ const LayoutIndex = props => { - const { posts, allNavPages } = props + const { posts, categoryOptions, allNavPages, latestPosts } = props // 最新文章 从第4个元素开始截取出4个 const newPosts = posts.slice(3, 7) - // 按分类将文章分组成文件夹 - const categoryFolders = groupArticles(allNavPages.slice(8)) - return ( -
      +
      {/* 首屏宣传区块 */} @@ -99,53 +104,14 @@ const LayoutIndex = props => { posts={newPosts} /> - {/* 不同的分类文章列表 */} - {categoryFolders?.map((categoryGroup, index) => { - if ( - !categoryGroup || - !categoryGroup.items || - categoryGroup.items.length < 1 - ) { - return null - } + {/* 文章分类陈列区 */} + - return ( - - ) - })} + {/* 文章推荐 */} +
      ) } -// 按照分类将文章分组成文件夹 -function groupArticles(allPosts) { - if (!allPosts) { - return [] - } - const groups = [] - - for (let i = 0; i < allPosts.length; i++) { - const item = allPosts[i] - const categoryName = item?.category ? item?.category : '' // 将 category 转换为字符串 - - let existingGroup = groups.find(group => group.category === categoryName) // 搜索同名的最后一个分组 - - if (existingGroup && existingGroup.category === categoryName) { - // 如果分组已存在,并且该分组中的文章数量小于4,添加文章 - if (existingGroup.items.length < 4) { - existingGroup.items.push(item) - } - } else { - // 新建分组,并添加当前文章 - groups.push({ category: categoryName, items: [item] }) - } - } - - return groups -} /** * 博客列表 @@ -171,13 +137,14 @@ const LayoutPostList = props => { const LayoutSlug = props => { const { post, prev, next, lock, validPassword } = props const { locale } = useGlobal() + const router = useRouter() const slotRight = post?.toc && post?.toc?.length >= 3 && (
      ) + console.log('post-文章', post) - const router = useRouter() useEffect(() => { // 404 if (!post) { @@ -198,7 +165,7 @@ const LayoutSlug = props => { }, [post]) return ( -
      +
      {/* 文章锁 */} {lock && } @@ -209,7 +176,7 @@ const LayoutSlug = props => { {/* Notion文章主体 */}
      - {post && } +
      {/* 文章底部区域 */} @@ -218,10 +185,11 @@ const LayoutSlug = props => { {/* 文章分类和标签信息 */}
      - {siteConfig('MAGZINE_POST_DETAIL_CATEGORY', null, CONFIG) && - post?.category && } + {siteConfig('MAGZINE_POST_DETAIL_CATEGORY') && post?.category && ( + + )}
      - {siteConfig('MAGZINE_POST_DETAIL_TAG', null, CONFIG) && + {siteConfig('MAGZINE_POST_DETAIL_TAG') && post?.tagItems?.map(tag => ( ))} From d01cffb63bacb3604bc90643c5b0d37ccea33891 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Fri, 13 Sep 2024 19:05:21 +0800 Subject: [PATCH 042/290] =?UTF-8?q?Magzine=E4=B8=BB=E9=A2=98=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ShareBar.js | 20 +- themes/magzine/components/ArchiveItem.js | 36 ---- themes/magzine/components/ArticleInfo.js | 41 +--- themes/magzine/components/BannerFullWidth.js | 30 +++ themes/magzine/components/BannerItem.js | 35 ++++ themes/magzine/components/Catalog.js | 4 +- themes/magzine/components/CategoryGroup.js | 7 +- themes/magzine/components/CategoryItem.js | 5 +- themes/magzine/components/Footer.js | 11 +- themes/magzine/components/Header.js | 28 +-- themes/magzine/components/Hero.js | 32 +--- themes/magzine/components/InfoCard.js | 3 +- themes/magzine/components/PostGroupArchive.js | 34 ++++ themes/magzine/components/PostGroupLates.js | 66 +++++++ themes/magzine/components/PostItemCard.js | 4 +- .../magzine/components/PostItemCardSimple.js | 2 +- .../magzine/components/PostListHorizontal.js | 4 +- themes/magzine/components/PostListPage.js | 10 +- .../magzine/components/PostListRecommend.js | 4 +- .../components/PostListSimpleHorizontal.js | 4 +- themes/magzine/components/TouchMeCard.js | 39 ++++ themes/magzine/config.js | 7 + themes/magzine/index.js | 179 ++++++++++++------ 23 files changed, 391 insertions(+), 214 deletions(-) delete mode 100644 themes/magzine/components/ArchiveItem.js create mode 100644 themes/magzine/components/BannerFullWidth.js create mode 100644 themes/magzine/components/BannerItem.js create mode 100644 themes/magzine/components/PostGroupArchive.js create mode 100644 themes/magzine/components/PostGroupLates.js create mode 100644 themes/magzine/components/TouchMeCard.js diff --git a/components/ShareBar.js b/components/ShareBar.js index 334a5f12..1acbef4e 100644 --- a/components/ShareBar.js +++ b/components/ShareBar.js @@ -1,7 +1,9 @@ import { siteConfig } from '@/lib/config' import dynamic from 'next/dynamic' -const ShareButtons = dynamic(() => import('@/components/ShareButtons'), { ssr: false }) +const ShareButtons = dynamic(() => import('@/components/ShareButtons'), { + ssr: false +}) /** * 分享栏 @@ -9,14 +11,20 @@ const ShareButtons = dynamic(() => import('@/components/ShareButtons'), { ssr: f * @returns */ const ShareBar = ({ post }) => { - if (!JSON.parse(siteConfig('POST_SHARE_BAR_ENABLE')) || !post || post?.type !== 'Post') { + if ( + !JSON.parse(siteConfig('POST_SHARE_BAR_ENABLE')) || + !post || + post?.type !== 'Post' + ) { return <> } - return
      -
      - -
      + return ( +
      +
      + +
      + ) } export default ShareBar diff --git a/themes/magzine/components/ArchiveItem.js b/themes/magzine/components/ArchiveItem.js deleted file mode 100644 index 2dafd34c..00000000 --- a/themes/magzine/components/ArchiveItem.js +++ /dev/null @@ -1,36 +0,0 @@ -import Link from 'next/link' - -/** - * 归档分组 - * @param {*} param0 - * @returns - */ -export default function ArchiveItem({ archiveTitle, archivePosts }) { - return ( -
      -
      - {archiveTitle} -
      -
        - {archivePosts[archiveTitle]?.map(post => { - return ( -
      • -
        - {post.date?.start_date}{' '} -   - - {post.title} - -
        -
      • - ) - })} -
      -
      - ) -} diff --git a/themes/magzine/components/ArticleInfo.js b/themes/magzine/components/ArticleInfo.js index 02461b8d..5bedfbec 100644 --- a/themes/magzine/components/ArticleInfo.js +++ b/themes/magzine/components/ArticleInfo.js @@ -1,7 +1,6 @@ import LazyImage from '@/components/LazyImage' import NotionIcon from '@/components/NotionIcon' import { siteConfig } from '@/lib/config' -import Link from 'next/link' import CategoryItem from './CategoryItem' import TagItemMini from './TagItemMini' @@ -15,8 +14,8 @@ export default function ArticleInfo(props) { return ( <> -
      -
      +
      +
      {siteConfig('MAGZINE_POST_LIST_CATEGORY') && ( )} @@ -32,7 +31,7 @@ export default function ArticleInfo(props) {
      {/* title */} -

      +

      {siteConfig('POST_TITLE_ICON') && ( )} @@ -51,40 +50,6 @@ export default function ArticleInfo(props) { />

      )} - - {/* meta */} -
      -
      - - {' '} - - {post?.publishDay} - - | - - - {post?.lastEditedDay} - -
      - - -
      -
      - -
      - - -
      - {siteConfig('AUTHOR')} -
      -
      - -
      ) } diff --git a/themes/magzine/components/BannerFullWidth.js b/themes/magzine/components/BannerFullWidth.js new file mode 100644 index 00000000..fadebaa6 --- /dev/null +++ b/themes/magzine/components/BannerFullWidth.js @@ -0,0 +1,30 @@ +import LazyImage from '@/components/LazyImage' +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import BannerItem from './BannerItem' + +/** + * 全宽 + * @param {*} props + * @returns + */ +export default function BannerFullWidth() { + const { siteInfo } = useGlobal() + const banner = siteConfig('MAGZINE_HOME_BANNER_ENABLE') + if (!banner) { + return null + } + return ( +
      + + +
      + +
      +
      + ) +} diff --git a/themes/magzine/components/BannerItem.js b/themes/magzine/components/BannerItem.js new file mode 100644 index 00000000..3e77271a --- /dev/null +++ b/themes/magzine/components/BannerItem.js @@ -0,0 +1,35 @@ +import { siteConfig } from '@/lib/config' +import Link from 'next/link' + +/** + * 文字广告Banner + * @param {*} props + * @returns + */ +export default function BannerItem() { + // 首屏信息栏按钮文字 + const banner = siteConfig('MAGZINE_HOME_BANNER_ENABLE') + const button = siteConfig('MAGZINE_HOME_BUTTON') + const text = siteConfig('MAGZINE_HOME_BUTTON_TEXT') + const url = siteConfig('MAGZINE_HOME_BUTTON_URL') + const title = siteConfig('MAGZINE_HOME_TITLE') + const description = siteConfig('MAGZINE_HOME_DESCRIPTION') + const tips = siteConfig('MAGZINE_HOME_TIPS') + if (!banner) { + return null + } + + return ( +
      + {/* 首屏导航按钮 */} +

      {title}

      +

      {description}

      + {button && ( +
      + {text} +
      + )} + {tips} +
      + ) +} diff --git a/themes/magzine/components/Catalog.js b/themes/magzine/components/Catalog.js index 4ee2c282..b127d24a 100644 --- a/themes/magzine/components/Catalog.js +++ b/themes/magzine/components/Catalog.js @@ -9,7 +9,7 @@ import Progress from './Progress' * @returns {JSX.Element} * @constructor */ -const Catalog = ({ toc }) => { +const Catalog = ({ toc, className }) => { const tocIds = [] // 目录自动滚动 @@ -62,7 +62,7 @@ const Catalog = ({ toc }) => { } return ( -
      +
      diff --git a/themes/magzine/components/CategoryGroup.js b/themes/magzine/components/CategoryGroup.js index 3fd6b67d..063eb58c 100644 --- a/themes/magzine/components/CategoryGroup.js +++ b/themes/magzine/components/CategoryGroup.js @@ -13,11 +13,8 @@ const CategoryGroup = ({ currentCategory, categoryOptions }) => { } return (
      -
      - - {locale.COMMON.CATEGORY} -
      -
      +
      {locale.COMMON.CATEGORY}
      +
      {categoryOptions?.map(category => { const selected = currentCategory === category.name return ( diff --git a/themes/magzine/components/CategoryItem.js b/themes/magzine/components/CategoryItem.js index 1286d35e..44fd3845 100644 --- a/themes/magzine/components/CategoryItem.js +++ b/themes/magzine/components/CategoryItem.js @@ -9,12 +9,9 @@ export default function CategoryItem({ selected, category, categoryCount }) { (selected ? ' bg-gray-600 text-white ' : 'dark:text-gray-400 text-gray-900 ') + - ' hover:underline flex text-sm items-center duration-300 cursor-pointer py-1 whitespace-nowrap' + 'text-sm hover:underline flex text-md items-center duration-300 cursor-pointer py-1 whitespace-nowrap' }>
      - {/* */} {category} {categoryCount && `(${categoryCount})`}
      diff --git a/themes/magzine/components/Footer.js b/themes/magzine/components/Footer.js index b3672dda..4d20657d 100644 --- a/themes/magzine/components/Footer.js +++ b/themes/magzine/components/Footer.js @@ -16,14 +16,13 @@ const Footer = ({ title }) => { parseInt(since) < currentYear ? since + '-' + currentYear : currentYear const { siteInfo } = useGlobal() const MAGZINE_FOOTER_LINKS = siteConfig('MAGZINE_FOOTER_LINKS', []) - console.log('菜单', MAGZINE_FOOTER_LINKS) return (
      -
      +
      {/* 信息与链接区块 */} -
      -
      +
      +
      {/* 站长信息 */} {
      {/* 右侧链接区块 */} -
      +
      {MAGZINE_FOOTER_LINKS?.map((group, index) => { return (
      -
      +
      {group.name}
      diff --git a/themes/magzine/components/Header.js b/themes/magzine/components/Header.js index 1b44f9cc..73a3627b 100644 --- a/themes/magzine/components/Header.js +++ b/themes/magzine/components/Header.js @@ -2,6 +2,7 @@ import Collapse from '@/components/Collapse' import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' import throttle from 'lodash.throttle' +import { useRouter } from 'next/router' import { useEffect, useRef, useState } from 'react' import CONFIG from '../config' import LogoBar from './LogoBar' @@ -18,8 +19,8 @@ export default function Header(props) { const [isOpen, changeShow] = useState(false) const collapseRef = useRef(null) const lastScrollY = useRef(0) // 用于存储上一次的滚动位置 - const { locale } = useGlobal() + const router = useRouter() const defaultLinks = [ { @@ -118,7 +119,7 @@ export default function Header(props) { {/* 导航栏菜单内容 */}
      + className='px-2 lg:px-0 flex w-full mx-auto max-w-screen-2xl h-20 transition-all duration-200 items-center justify-between'> {/* 搜索栏 */} {showSearchInput && ( {/* 桌面端顶部菜单 */} -
      +
      {links && links?.map(link => ( @@ -153,6 +154,16 @@ export default function Header(props) { {/* 右侧移动端折叠按钮 */}
      + {/* 搜索按钮 */} +
      + +
      {isOpen ? ( @@ -162,17 +173,6 @@ export default function Header(props) { )}
      - - {/* 搜索按钮 */} -
      - -
      diff --git a/themes/magzine/components/Hero.js b/themes/magzine/components/Hero.js index 18e8ff3d..2e463a61 100644 --- a/themes/magzine/components/Hero.js +++ b/themes/magzine/components/Hero.js @@ -1,6 +1,5 @@ // import { useGlobal } from '@/lib/global' -import { siteConfig } from '@/lib/config' -import Link from 'next/link' +import BannerItem from './BannerItem' import PostItemCardTop from './PostItemCardTop' import PostItemCardWide from './PostItemCardWide' @@ -14,41 +13,20 @@ const Hero = ({ posts }) => { const postTop = posts[0] const post1 = posts[1] const post2 = posts[2] - // 首屏信息栏按钮文字 - const banner = siteConfig('MAGZINE_HOME_BANNER_ENABLE') - const button = siteConfig('MAGZINE_HOME_BUTTON') - const text = siteConfig('MAGZINE_HOME_BUTTON_TEXT') - const url = siteConfig('MAGZINE_HOME_BUTTON_URL') - const title = siteConfig('MAGZINE_HOME_TITLE') - const description = siteConfig('MAGZINE_HOME_DESCRIPTION') - const tips = siteConfig('MAGZINE_HOME_TIPS') - return ( <> -
      +
      {/* 左侧一篇主要置顶文章 */} -
      +
      {/* 右侧 */}
      {/* 首屏介绍 */} - {banner && ( -
      - {/* 首屏导航按钮 */} -

      {title}

      -

      {description}

      - {button && ( -
      - {text} -
      - )} - {tips} -
      - )} + {/* 两篇次要文章 */} -
      +


      diff --git a/themes/magzine/components/InfoCard.js b/themes/magzine/components/InfoCard.js index 50729664..e6009de1 100644 --- a/themes/magzine/components/InfoCard.js +++ b/themes/magzine/components/InfoCard.js @@ -1,5 +1,6 @@ import LazyImage from '@/components/LazyImage' import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' /** * 用户信息卡 @@ -7,7 +8,7 @@ import { siteConfig } from '@/lib/config' * @returns */ const InfoCard = props => { - const { siteInfo } = props + const { siteInfo } = useGlobal() return (
      diff --git a/themes/magzine/components/PostGroupArchive.js b/themes/magzine/components/PostGroupArchive.js new file mode 100644 index 00000000..c4369e9a --- /dev/null +++ b/themes/magzine/components/PostGroupArchive.js @@ -0,0 +1,34 @@ +import PostItemCard from './PostItemCard' + +/** + * 博客归档列表 + * @param posts 所有文章 + * @param archiveTitle 归档标题 + * @returns {JSX.Element} + * @constructor + */ +const PostGroupArchive = ({ posts = [], archiveTitle }) => { + if (!posts || posts.length === 0) { + return <> + } + + return ( +
      + {/* 分组标题 */} +
      + {archiveTitle} +
      + + {/* 列表 */} +
        + {posts?.map((p, index) => { + return + })} +
      +
      + ) +} + +export default PostGroupArchive diff --git a/themes/magzine/components/PostGroupLates.js b/themes/magzine/components/PostGroupLates.js new file mode 100644 index 00000000..397de795 --- /dev/null +++ b/themes/magzine/components/PostGroupLates.js @@ -0,0 +1,66 @@ +import LazyImage from '@/components/LazyImage' +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +// import Image from 'next/image' +import Link from 'next/link' +import { useRouter } from 'next/router' + +/** + * 最新文章列表 + * @param posts 所有文章数据 + * @param sliceCount 截取展示的数量 默认6 + * @constructor + */ +const PostGroupLatest = props => { + const { latestPosts } = props + // 获取当前路径 + const currentPath = useRouter().asPath + const { locale, siteInfo } = useGlobal() + if (!latestPosts) { + return <> + } + + return ( + <> +
      +
      {locale.COMMON.LATEST_POSTS}
      +
      + {latestPosts.map(post => { + const selected = + currentPath === `${siteConfig('SUB_PATH', '')}/${post.slug}` + + const headerImage = post?.pageCoverThumbnail + ? post.pageCoverThumbnail + : siteInfo?.pageCover + + return ( + +
      + +
      +
      +
      +
      {post.title}
      +
      {post.lastEditedDay}
      +
      +
      + + ) + })} + + ) +} +export default PostGroupLatest diff --git a/themes/magzine/components/PostItemCard.js b/themes/magzine/components/PostItemCard.js index bac91ab0..6b4f811a 100644 --- a/themes/magzine/components/PostItemCard.js +++ b/themes/magzine/components/PostItemCard.js @@ -9,12 +9,12 @@ import CategoryItem from './CategoryItem' * 普通的博客卡牌 * 带封面图 */ -const PostItemCard = ({ post, showSummary }) => { +const PostItemCard = ({ post }) => { const { siteInfo } = useGlobal() const cover = post?.pageCoverThumbnail || siteInfo?.pageCover return (
      -
      +
      {siteConfig('MAGZINE_POST_LIST_COVER') && ( { return (
      + className='lg:mb-6 max-w-screen-2xl border-t mr-8 py-2 gap-y-4 flex flex-col dark:border-gray-800 '>
      {siteConfig('MAGZINE_POST_LIST_CATEGORY') && ( diff --git a/themes/magzine/components/PostListHorizontal.js b/themes/magzine/components/PostListHorizontal.js index 0976033b..a857af61 100644 --- a/themes/magzine/components/PostListHorizontal.js +++ b/themes/magzine/components/PostListHorizontal.js @@ -15,7 +15,7 @@ const PostListHorizontal = ({ title, href, posts, hasBg }) => { } return ( -
      +
      {/* 标题 */}
      @@ -26,7 +26,7 @@ const PostListHorizontal = ({ title, href, posts, hasBg }) => {
      {/* 列表 */} -
        +
          {posts?.map((p, index) => { return })} diff --git a/themes/magzine/components/PostListPage.js b/themes/magzine/components/PostListPage.js index 9486f6ec..ba35d0d5 100644 --- a/themes/magzine/components/PostListPage.js +++ b/themes/magzine/components/PostListPage.js @@ -24,10 +24,12 @@ const PostListPage = ({ page = 1, posts = [], postCount }) => { return (
          - {/* 文章列表 */} - {posts?.map(post => ( - - ))} + {/* 列表 */} +
            + {posts?.map((p, index) => { + return + })} +
          diff --git a/themes/magzine/components/PostListRecommend.js b/themes/magzine/components/PostListRecommend.js index 4335b579..84025732 100644 --- a/themes/magzine/components/PostListRecommend.js +++ b/themes/magzine/components/PostListRecommend.js @@ -18,14 +18,14 @@ const PostListRecommend = ({ latestPosts, allNavPages }) => { const title = siteConfig('MAGZINE_RECOMMEND_POST_TITLE') return ( -
          +
          {/* 标题 */}

          {title}

          {/* 列表 */} -
            +
              {recommendPosts?.map(p => { return })} diff --git a/themes/magzine/components/PostListSimpleHorizontal.js b/themes/magzine/components/PostListSimpleHorizontal.js index 62303ec3..e611f4b7 100644 --- a/themes/magzine/components/PostListSimpleHorizontal.js +++ b/themes/magzine/components/PostListSimpleHorizontal.js @@ -14,7 +14,7 @@ const PostSimpleListHorizontal = ({ title, href, posts }) => { return (
              -
              +
              {/* 标题 */}

              {title}

              @@ -24,7 +24,7 @@ const PostSimpleListHorizontal = ({ title, href, posts }) => {
              {/* 列表 */} -
                +
                  {posts?.map(p => { return })} diff --git a/themes/magzine/components/TouchMeCard.js b/themes/magzine/components/TouchMeCard.js new file mode 100644 index 00000000..767ccf4e --- /dev/null +++ b/themes/magzine/components/TouchMeCard.js @@ -0,0 +1,39 @@ +import FlipCard from '@/components/FlipCard' +import { siteConfig } from '@/lib/config' +import Link from 'next/link' + +/** + * 交流频道 + * @returns + */ +export default function TouchMeCard() { + // 开关 + if (!siteConfig('MAGZINE_SOCIAL_CARD', null)) { + return <> + } + + return ( +
                  + +

                  + {siteConfig('MAGZINE_SOCIAL_CARD_TITLE_1')} +

                  +

                  + {siteConfig('MAGZINE_SOCIAL_CARD_TITLE_2')} +

                  +
                  + } + backContent={ + +
                  + {siteConfig('MAGZINE_SOCIAL_CARD_TITLE_3')} +
                  + + } + /> +
              + ) +} diff --git a/themes/magzine/config.js b/themes/magzine/config.js index 201d2a18..f49dc000 100644 --- a/themes/magzine/config.js +++ b/themes/magzine/config.js @@ -29,6 +29,13 @@ const CONFIG = { MAGZINE_POST_DETAIL_CATEGORY: true, // 文章显示分类 MAGZINE_POST_DETAIL_TAG: true, // 文章显示标签 + // 文章页面联系卡 + MAGZINE_SOCIAL_CARD: true, // 是否显示右侧,点击加入社群按钮 + MAGZINE_SOCIAL_CARD_TITLE_1: '交流频道', + MAGZINE_SOCIAL_CARD_TITLE_2: '加入社群讨论分享', + MAGZINE_SOCIAL_CARD_TITLE_3: '点击加入社群', + MAGZINE_SOCIAL_CARD_URL: 'https://docs.tangly1024.com/article/chat-community', + // 页脚菜单 MAGZINE_FOOTER_LINKS: [ { diff --git a/themes/magzine/index.js b/themes/magzine/index.js index 14b737e1..65ec10cd 100644 --- a/themes/magzine/index.js +++ b/themes/magzine/index.js @@ -10,10 +10,9 @@ import Link from 'next/link' import { useRouter } from 'next/router' import { createContext, useContext, useEffect, useState } from 'react' import Announcement from './components/Announcement' -import ArchiveItem from './components/ArchiveItem' -import ArticleAround from './components/ArticleAround' import ArticleInfo from './components/ArticleInfo' import { ArticleLock } from './components/ArticleLock' +import BannerFullWidth from './components/BannerFullWidth' import Catalog from './components/Catalog' import CategoryGroup from './components/CategoryGroup' import CategoryItem from './components/CategoryItem' @@ -21,14 +20,16 @@ import Footer from './components/Footer' import Header from './components/Header' import Hero from './components/Hero' import PostBannerGroupByCategory from './components/PostBannerGroupByCategory' +import PostGroupArchive from './components/PostGroupArchive' +import PostGroupLatest from './components/PostGroupLates' import PostListPage from './components/PostListPage' import PostListRecommend from './components/PostListRecommend' import PostListScroll from './components/PostListScroll' import PostSimpleListHorizontal from './components/PostListSimpleHorizontal' -import SearchInput from './components/SearchInput' import TagGroups from './components/TagGroups' import TagItemMini from './components/TagItemMini' import TocDrawer from './components/TocDrawer' +import TouchMeCard from './components/TouchMeCard' import CONFIG from './config' import { Style } from './style' @@ -118,14 +119,20 @@ const LayoutIndex = props => { * @returns */ const LayoutPostList = props => { + // 当前筛选的分类或标签 + const { category, tag } = props + return ( - <> +
              + {/* 一个顶部条 */} +

              {category || tag}

              + {siteConfig('POST_LIST_STYLE') === 'page' ? ( ) : ( )} - +
              ) } @@ -135,15 +142,9 @@ const LayoutPostList = props => { * @returns */ const LayoutSlug = props => { - const { post, prev, next, lock, validPassword } = props + const { post, recommendPosts, prev, next, lock, validPassword } = props const { locale } = useGlobal() const router = useRouter() - const slotRight = post?.toc && post?.toc?.length >= 3 && ( -
              - -
              - ) - console.log('post-文章', post) useEffect(() => { // 404 @@ -165,47 +166,102 @@ const LayoutSlug = props => { }, [post]) return ( -
              - {/* 文章锁 */} - {lock && } + <> +
              + {/* 文章锁 */} + {lock && } - {!lock && ( -
              - {/* 文章信息 */} - + {!lock && ( +
              + {/* 文章信息 */} + - {/* Notion文章主体 */} -
              - -
              + {/* 文章区块分为三列 */} +
              +
              + +
              - {/* 文章底部区域 */} -
              - {/* 分享 */} - - {/* 文章分类和标签信息 */} -
              - {siteConfig('MAGZINE_POST_DETAIL_CATEGORY') && post?.category && ( - - )} -
              - {siteConfig('MAGZINE_POST_DETAIL_TAG') && - post?.tagItems?.map(tag => ( - - ))} + {/* Notion文章主体 */} +
              + + + {/* 文章底部区域 */} +
              + {/* 分享 */} + + {/* 文章分类和标签信息 */} +
              + {siteConfig('MAGZINE_POST_DETAIL_CATEGORY') && + post?.category && ( + + )} +
              + {siteConfig('MAGZINE_POST_DETAIL_TAG') && + post?.tagItems?.map(tag => ( + + ))} +
              +
              + {/* 评论区 */} + +
              +
              + +
              + {/* meta信息 */} +
              +
              + {/*
              + + {post?.publishDay} +
              */} +
              + + {post?.lastEditedDay} +
              +
              + + +
              +
              +
              + + {/* 最新文章区块 */} +
              + +
              + + {/* 文章分类区块 */} +
              + +
              + +
              + +
              + + {/* 底部留白 */} +
              - {/* 上一篇下一篇文章 */} - {post?.type === 'Post' && } - {/* 评论区 */} - -
              - {/* 移动端目录 */} - -
              - )} -
              + {/* 移动端目录 */} + +
              + )} +
              + {/* 广告醒图 */} + + {/* 最新文章区块 */} + + ) } @@ -234,11 +290,10 @@ const LayoutSearch = props => { }, []) return ( - <> +
              {/* 搜索导航栏 */}
              {locale.NAV.SEARCH}
              - {!currentSearch && ( <> @@ -257,7 +312,7 @@ const LayoutSearch = props => { )}
              )} - +
              ) } @@ -270,12 +325,12 @@ const LayoutArchive = props => { const { archivePosts } = props return ( <> -
              +
              {Object.keys(archivePosts)?.map(archiveTitle => ( - ))}
              @@ -307,10 +362,10 @@ const LayoutCategoryIndex = props => { const { categoryOptions } = props const { locale } = useGlobal() return ( - <> +
              -
              - +
              + {/* */} {locale.COMMON.CATEGORY}:
              @@ -325,7 +380,7 @@ const LayoutCategoryIndex = props => { className={ 'hover:text-black dark:hover:text-white dark:text-gray-300 dark:hover:bg-gray-600 px-5 cursor-pointer py-2 hover:bg-gray-100' }> - + {/* */} {category.name}({category.count})
              @@ -333,7 +388,7 @@ const LayoutCategoryIndex = props => { })}
              - +
              ) } @@ -346,10 +401,10 @@ const LayoutTagIndex = props => { const { tagOptions } = props const { locale } = useGlobal() return ( - <> +
              -
              - +
              + {/* */} {locale.COMMON.TAGS}:
              @@ -362,7 +417,7 @@ const LayoutTagIndex = props => { })}
              - +
              ) } From c24d38eaef17affe0a0ae761d9364e56fe236346 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Fri, 13 Sep 2024 19:05:28 +0800 Subject: [PATCH 043/290] 4.7.1 --- .env.local | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.local b/.env.local index 4d4824d5..63ecde97 100644 --- a/.env.local +++ b/.env.local @@ -1,5 +1,5 @@ # 环境变量 @see https://www.nextjs.cn/docs/basic-features/environment-variables -NEXT_PUBLIC_VERSION=4.7.0 +NEXT_PUBLIC_VERSION=4.7.1 # 可在此添加环境变量,去掉最左边的(# )注释即可 diff --git a/package.json b/package.json index 2e523fbc..cb5c337f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "notion-next", - "version": "4.7.0", + "version": "4.7.1", "homepage": "https://github.com/tangly1024/NotionNext.git", "license": "MIT", "repository": { From e32ca96bdbd3fe4d321fd2aa6989bf9632ed607e Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Fri, 13 Sep 2024 19:17:22 +0800 Subject: [PATCH 044/290] =?UTF-8?q?Magzine=20=E6=A0=B7=E5=BC=8F=E5=BE=AE?= =?UTF-8?q?=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/magzine/components/ArticleInfo.js | 2 +- themes/magzine/components/Header.js | 4 +- themes/magzine/components/PostGroupLates.js | 66 ----------------- themes/magzine/components/PostGroupLatest.js | 71 +++++++++++++++++++ .../components/PostListSimpleHorizontal.js | 2 +- themes/magzine/index.js | 8 +-- 6 files changed, 79 insertions(+), 74 deletions(-) delete mode 100644 themes/magzine/components/PostGroupLates.js create mode 100644 themes/magzine/components/PostGroupLatest.js diff --git a/themes/magzine/components/ArticleInfo.js b/themes/magzine/components/ArticleInfo.js index 5bedfbec..f41654b0 100644 --- a/themes/magzine/components/ArticleInfo.js +++ b/themes/magzine/components/ArticleInfo.js @@ -14,7 +14,7 @@ export default function ArticleInfo(props) { return ( <> -
              +
              {siteConfig('MAGZINE_POST_LIST_CATEGORY') && ( diff --git a/themes/magzine/components/Header.js b/themes/magzine/components/Header.js index 73a3627b..a7c4afde 100644 --- a/themes/magzine/components/Header.js +++ b/themes/magzine/components/Header.js @@ -144,8 +144,8 @@ export default function Header(props) { {/* 桌面端顶部菜单 */}
              {links && - links?.map(link => ( - + links?.map((link, index) => ( + ))}
              diff --git a/themes/magzine/components/PostGroupLates.js b/themes/magzine/components/PostGroupLates.js deleted file mode 100644 index 397de795..00000000 --- a/themes/magzine/components/PostGroupLates.js +++ /dev/null @@ -1,66 +0,0 @@ -import LazyImage from '@/components/LazyImage' -import { siteConfig } from '@/lib/config' -import { useGlobal } from '@/lib/global' -// import Image from 'next/image' -import Link from 'next/link' -import { useRouter } from 'next/router' - -/** - * 最新文章列表 - * @param posts 所有文章数据 - * @param sliceCount 截取展示的数量 默认6 - * @constructor - */ -const PostGroupLatest = props => { - const { latestPosts } = props - // 获取当前路径 - const currentPath = useRouter().asPath - const { locale, siteInfo } = useGlobal() - if (!latestPosts) { - return <> - } - - return ( - <> -
              -
              {locale.COMMON.LATEST_POSTS}
              -
              - {latestPosts.map(post => { - const selected = - currentPath === `${siteConfig('SUB_PATH', '')}/${post.slug}` - - const headerImage = post?.pageCoverThumbnail - ? post.pageCoverThumbnail - : siteInfo?.pageCover - - return ( - -
              - -
              -
              -
              -
              {post.title}
              -
              {post.lastEditedDay}
              -
              -
              - - ) - })} - - ) -} -export default PostGroupLatest diff --git a/themes/magzine/components/PostGroupLatest.js b/themes/magzine/components/PostGroupLatest.js new file mode 100644 index 00000000..8731e7d6 --- /dev/null +++ b/themes/magzine/components/PostGroupLatest.js @@ -0,0 +1,71 @@ +import LazyImage from '@/components/LazyImage' +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +// import Image from 'next/image' +import Link from 'next/link' +import { useRouter } from 'next/router' + +/** + * 最新文章列表 + * @param posts 所有文章数据 + * @param sliceCount 截取展示的数量 默认6 + * @constructor + */ +const PostGroupLatest = props => { + const { latestPosts } = props + // 获取当前路径 + const currentPath = useRouter().asPath + const { locale, siteInfo } = useGlobal() + if (!latestPosts) { + return <> + } + + return ( + <> + {/* 标题 */} +
              +
              {locale.COMMON.LATEST_POSTS}
              +
              + + {/* 文章列表 */} +
              + {latestPosts.map(post => { + const selected = + currentPath === `${siteConfig('SUB_PATH', '')}/${post.slug}` + + const headerImage = post?.pageCoverThumbnail + ? post.pageCoverThumbnail + : siteInfo?.pageCover + + return ( + +
              + +
              +
              +
              +
              {post.title}
              +
              {post.lastEditedDay}
              +
              +
              + + ) + })} +
              + + ) +} +export default PostGroupLatest diff --git a/themes/magzine/components/PostListSimpleHorizontal.js b/themes/magzine/components/PostListSimpleHorizontal.js index e611f4b7..af1ece3a 100644 --- a/themes/magzine/components/PostListSimpleHorizontal.js +++ b/themes/magzine/components/PostListSimpleHorizontal.js @@ -24,7 +24,7 @@ const PostSimpleListHorizontal = ({ title, href, posts }) => {
              {/* 列表 */} -
                +
                  {posts?.map(p => { return })} diff --git a/themes/magzine/index.js b/themes/magzine/index.js index 65ec10cd..431f8ca8 100644 --- a/themes/magzine/index.js +++ b/themes/magzine/index.js @@ -21,7 +21,7 @@ import Header from './components/Header' import Hero from './components/Hero' import PostBannerGroupByCategory from './components/PostBannerGroupByCategory' import PostGroupArchive from './components/PostGroupArchive' -import PostGroupLatest from './components/PostGroupLates' +import PostGroupLatest from './components/PostGroupLatest' import PostListPage from './components/PostListPage' import PostListRecommend from './components/PostListRecommend' import PostListScroll from './components/PostListScroll' @@ -178,14 +178,14 @@ const LayoutSlug = props => { {/* 文章区块分为三列 */}
                  -
                  +
                  {/* Notion文章主体 */}
                  + className='max-w-3xl lg:col-span-3 w-full mx-auto px-2 lg:px-0'> {/* 文章底部区域 */} @@ -210,7 +210,7 @@ const LayoutSlug = props => {

  • -
    +
    {/* meta信息 */}
    From 79b02047f05a0b6d5da2a13b7d4787b56e23eca6 Mon Sep 17 00:00:00 2001 From: tangly1024 Date: Fri, 13 Sep 2024 20:49:49 +0800 Subject: [PATCH 045/290] =?UTF-8?q?magzine=20=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/magzine/components/Announcement.js | 4 +- themes/magzine/components/BannerFullWidth.js | 4 +- themes/magzine/components/CategoryGroup.js | 2 +- themes/magzine/components/Footer.js | 2 +- themes/magzine/components/Header.js | 8 ++-- .../components/PostBannerGroupByCategory.js | 4 +- themes/magzine/components/PostItemCard.js | 2 +- .../magzine/components/PostListHorizontal.js | 2 +- .../magzine/components/PostListRecommend.js | 2 +- .../components/PostListSimpleHorizontal.js | 2 +- themes/magzine/index.js | 40 +++++++++---------- 11 files changed, 37 insertions(+), 35 deletions(-) diff --git a/themes/magzine/components/Announcement.js b/themes/magzine/components/Announcement.js index 62ab01d0..2a72cea0 100644 --- a/themes/magzine/components/Announcement.js +++ b/themes/magzine/components/Announcement.js @@ -13,11 +13,11 @@ const Announcement = ({ post, className }) => {
    + className='rounded-xl px-2'> {/*
    {locale.COMMON.ANNOUNCEMENT}
    */} {post && (
    - +
    )}
    diff --git a/themes/magzine/components/BannerFullWidth.js b/themes/magzine/components/BannerFullWidth.js index fadebaa6..a0cf6dd9 100644 --- a/themes/magzine/components/BannerFullWidth.js +++ b/themes/magzine/components/BannerFullWidth.js @@ -15,11 +15,11 @@ export default function BannerFullWidth() { return null } return ( -
    +
    diff --git a/themes/magzine/components/CategoryGroup.js b/themes/magzine/components/CategoryGroup.js index 063eb58c..b0592db0 100644 --- a/themes/magzine/components/CategoryGroup.js +++ b/themes/magzine/components/CategoryGroup.js @@ -13,7 +13,7 @@ const CategoryGroup = ({ currentCategory, categoryOptions }) => { } return (
    -
    {locale.COMMON.CATEGORY}
    +
    {locale.COMMON.CATEGORY}
    {categoryOptions?.map(category => { const selected = currentCategory === category.name diff --git a/themes/magzine/components/Footer.js b/themes/magzine/components/Footer.js index 4d20657d..37d935bf 100644 --- a/themes/magzine/components/Footer.js +++ b/themes/magzine/components/Footer.js @@ -46,7 +46,7 @@ const Footer = ({ title }) => { {MAGZINE_FOOTER_LINKS?.map((group, index) => { return (
    -
    +
    {group.name}
    diff --git a/themes/magzine/components/Header.js b/themes/magzine/components/Header.js index a7c4afde..d93317d1 100644 --- a/themes/magzine/components/Header.js +++ b/themes/magzine/components/Header.js @@ -8,6 +8,7 @@ import CONFIG from '../config' import LogoBar from './LogoBar' import { MenuBarMobile } from './MenuBarMobile' import { MenuItemDrop } from './MenuItemDrop' +import { useMagzineGlobal } from '..' /** * 顶部导航栏 + 菜单 @@ -21,6 +22,7 @@ export default function Header(props) { const lastScrollY = useRef(0) // 用于存储上一次的滚动位置 const { locale } = useGlobal() const router = useRouter() + const {searchModal} = useMagzineGlobal() const defaultLinks = [ { @@ -119,14 +121,14 @@ export default function Header(props) { {/* 导航栏菜单内容 */}
    + className='px-4 lg:px-0 flex w-full mx-auto max-w-screen-2xl h-20 transition-all duration-200 items-center justify-between'> {/* 搜索栏 */} {showSearchInput && ( +
    {/* 搜索按钮 */}
    { - const { posts, categoryOptions, allNavPages, latestPosts } = props + const { posts, categoryOptions, allNavPages } = props if (!posts || posts.length === 0) { return null } @@ -52,7 +52,7 @@ function groupArticles(categoryOptions, allPosts) { const item = allPosts[i] const categoryName = item?.category ? item?.category : '' // 将 category 转换为字符串 - let existingGroup = groups.find(group => group.category === categoryName) // 搜索同名的最后一个分组 + const existingGroup = groups.find(group => group.category === categoryName) // 搜索同名的最后一个分组 if (existingGroup && existingGroup.category === categoryName) { // 如果分组已存在,并且该分组中的文章数量小于4,添加文章 diff --git a/themes/magzine/components/PostItemCard.js b/themes/magzine/components/PostItemCard.js index 6b4f811a..f25874d3 100644 --- a/themes/magzine/components/PostItemCard.js +++ b/themes/magzine/components/PostItemCard.js @@ -39,7 +39,7 @@ const PostItemCard = ({ post }) => { href={post?.href} passHref className={ - 'cursor-pointer hover:underline leading-tight text-gray-700 dark:text-gray-300 hover:text-gray-500 dark:hover:text-gray-400' + 'text-lg cursor-pointer hover:underline leading-tight text-gray-700 dark:text-gray-300 hover:text-gray-500 dark:hover:text-gray-400' }>

    {siteConfig('POST_TITLE_ICON') && ( diff --git a/themes/magzine/components/PostListHorizontal.js b/themes/magzine/components/PostListHorizontal.js index a857af61..5318cf3e 100644 --- a/themes/magzine/components/PostListHorizontal.js +++ b/themes/magzine/components/PostListHorizontal.js @@ -15,7 +15,7 @@ const PostListHorizontal = ({ title, href, posts, hasBg }) => { } return ( -
    +
    {/* 标题 */}
    diff --git a/themes/magzine/components/PostListRecommend.js b/themes/magzine/components/PostListRecommend.js index 84025732..04a4f811 100644 --- a/themes/magzine/components/PostListRecommend.js +++ b/themes/magzine/components/PostListRecommend.js @@ -18,7 +18,7 @@ const PostListRecommend = ({ latestPosts, allNavPages }) => { const title = siteConfig('MAGZINE_RECOMMEND_POST_TITLE') return ( -
    +
    {/* 标题 */}
    diff --git a/themes/magzine/components/PostListSimpleHorizontal.js b/themes/magzine/components/PostListSimpleHorizontal.js index af1ece3a..8568bfe4 100644 --- a/themes/magzine/components/PostListSimpleHorizontal.js +++ b/themes/magzine/components/PostListSimpleHorizontal.js @@ -13,7 +13,7 @@ const PostSimpleListHorizontal = ({ title, href, posts }) => { } return ( -
    +
    {/* 标题 */}
    diff --git a/themes/magzine/index.js b/themes/magzine/index.js index 431f8ca8..139617c9 100644 --- a/themes/magzine/index.js +++ b/themes/magzine/index.js @@ -8,7 +8,7 @@ import { useGlobal } from '@/lib/global' import { isBrowser } from '@/lib/utils' import Link from 'next/link' import { useRouter } from 'next/router' -import { createContext, useContext, useEffect, useState } from 'react' +import { createContext, useContext, useEffect, useRef, useState } from 'react' import Announcement from './components/Announcement' import ArticleInfo from './components/ArticleInfo' import { ArticleLock } from './components/ArticleLock' @@ -44,15 +44,12 @@ export const useMagzineGlobal = () => useContext(ThemeGlobalMagzine) * @constructor */ const LayoutBase = props => { - const { children, notice, showInfoCard = true, post } = props - const { locale } = useGlobal() - const router = useRouter() + const { children, notice } = props const [tocVisible, changeTocVisible] = useState(false) - const { onLoading, fullWidth } = useGlobal() - const [slotRight, setSlotRight] = useState(null) + const searchModal = useRef(null) return ( - + {/* CSS样式 */} ) diff --git a/themes/magzine/style.js b/themes/magzine/style.js index 5e8eaa5a..1d8025e5 100644 --- a/themes/magzine/style.js +++ b/themes/magzine/style.js @@ -5,14 +5,27 @@ * @returns */ const Style = () => { - return + /* 自定义滚动条样式(适用于 Chrome、Safari 和 Edge) */ + html::-webkit-scrollbar { + width: 12px; + } + + html::-webkit-scrollbar-track { + background-color: transparent; + } + + html::-webkit-scrollbar-thumb { + background: #4e4e4e; + } + `} + ) } export { Style } From da2cdac0a31744ac18887de878f3f95907817f27 Mon Sep 17 00:00:00 2001 From: tangly1024 Date: Thu, 31 Oct 2024 20:43:19 +0800 Subject: [PATCH 149/290] =?UTF-8?q?=E6=B7=B1=E8=89=B2=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ThemeSwitch.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/components/ThemeSwitch.js b/components/ThemeSwitch.js index 9675f63e..dde3e7c6 100644 --- a/components/ThemeSwitch.js +++ b/components/ThemeSwitch.js @@ -30,7 +30,7 @@ const ThemeSwitch = () => {
    {/* 主题切换按钮 */} @@ -64,16 +64,16 @@ const ThemeSwitch = () => { { setSideBarVisible(false) }}> {/* 开关 */} -
    +
    {/* 深色模式切换 */} -
    +
    {
    -
    +
    点击下方主题进行切换.
    Click below to switch the theme.
    From 9e85f4d1c2984aa515035559b27708976bc4d7ad Mon Sep 17 00:00:00 2001 From: tangly1024 Date: Thu, 31 Oct 2024 20:57:34 +0800 Subject: [PATCH 150/290] =?UTF-8?q?Starter=E4=B8=BB=E9=A2=98=E6=BB=9A?= =?UTF-8?q?=E5=8A=A8=E6=8C=89=E9=92=AEbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/starter/components/BackToTopButton.js | 60 ++++++++++---------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/themes/starter/components/BackToTopButton.js b/themes/starter/components/BackToTopButton.js index 340b5b31..f6876021 100644 --- a/themes/starter/components/BackToTopButton.js +++ b/themes/starter/components/BackToTopButton.js @@ -7,40 +7,12 @@ import { useCallback, useEffect } from 'react' */ export const BackToTopButton = () => { useEffect(() => { - // ====== scroll top js - function scrollTo(element, to = 0, duration = 500) { - const start = element.scrollTop - const change = to - start - const increment = 20 - let currentTime = 0 - - const animateScroll = () => { - currentTime += increment - - const val = Math.easeInOutQuad(currentTime, start, change, duration) - - element.scrollTop = val - - if (currentTime < duration) { - setTimeout(animateScroll, increment) - } - } - - animateScroll() - } - Math.easeInOutQuad = function (t, b, c, d) { t /= d / 2 if (t < 1) return (c / 2) * t * t + b t-- return (-c / 2) * (t * (t - 2) - 1) + b } - const backToTop = document.querySelector('.back-to-top') - if (backToTop) { - backToTop.onclick = () => { - scrollTo(document.documentElement) - } - } window.addEventListener('scroll', navBarScollListener) return () => { @@ -61,10 +33,40 @@ export const BackToTopButton = () => { }, throttleMs) ) + // ====== scroll top js + function scrollTo(element, to = 0, duration = 500) { + const start = element.scrollTop + const change = to - start + const increment = 20 + let currentTime = 0 + + const animateScroll = () => { + currentTime += increment + + const val = Math.easeInOutQuad(currentTime, start, change, duration) + + element.scrollTop = val + + if (currentTime < duration) { + setTimeout(animateScroll, increment) + } + } + + animateScroll() + } + + function scrollTop() { + if (document) { + scrollTo(document.documentElement) + } + } + return ( <> {/* */} - + {/* */} From de4d7cf896b1e7247e2aa50c374bf1482bd2f27f Mon Sep 17 00:00:00 2001 From: tangly1024 Date: Thu, 31 Oct 2024 21:22:10 +0800 Subject: [PATCH 151/290] =?UTF-8?q?starter=20=E9=81=AE=E7=BD=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/LoadingCover.js | 62 +++++++++++++---------- themes/starter/components/Testimonials.js | 2 +- themes/starter/index.js | 2 + 3 files changed, 37 insertions(+), 29 deletions(-) diff --git a/components/LoadingCover.js b/components/LoadingCover.js index b53fa36c..9e24e255 100644 --- a/components/LoadingCover.js +++ b/components/LoadingCover.js @@ -13,7 +13,7 @@ export default function LoadingCover() { if (onLoading) { setIsVisible(true) } else { - const timeout = setTimeout(() => setIsVisible(false), 1500) // 等待淡出动画结束 + const timeout = setTimeout(() => setIsVisible(false), 1800) // 等待淡出动画结束 return () => clearTimeout(timeout) } }, [onLoading]) @@ -36,33 +36,39 @@ export default function LoadingCover() {
    diff --git a/themes/starter/components/Testimonials.js b/themes/starter/components/Testimonials.js index f1b6f3b3..faf87513 100644 --- a/themes/starter/components/Testimonials.js +++ b/themes/starter/components/Testimonials.js @@ -87,7 +87,7 @@ export const Testimonials = () => {
    {/* 用户评价卡牌 */} - {STARTER_TESTIMONIALS_ITEMS.map((item, index) => { + {STARTER_TESTIMONIALS_ITEMS?.map((item, index) => { return (
    diff --git a/themes/starter/index.js b/themes/starter/index.js index 922c05fe..49b99bac 100644 --- a/themes/starter/index.js +++ b/themes/starter/index.js @@ -25,6 +25,7 @@ import CONFIG from './config' import { Style } from './style' // import { MadeWithButton } from './components/MadeWithButton' import Comment from '@/components/Comment' +import LoadingCover from '@/components/LoadingCover' import ShareBar from '@/components/ShareBar' import { useGlobal } from '@/lib/global' import { loadWowJS } from '@/lib/plugins/wow' @@ -84,6 +85,7 @@ const LayoutIndex = props => { const posts = props?.allNavPages ? props.allNavPages.slice(0, count) : [] return ( <> + {/* 英雄区 */} {siteConfig('STARTER_HERO_ENABLE') && } {/* 合作伙伴 */} From 42d025f7646cc2026a789945aca7087ae69b6054 Mon Sep 17 00:00:00 2001 From: tangly1024 Date: Thu, 31 Oct 2024 21:35:57 +0800 Subject: [PATCH 152/290] =?UTF-8?q?starter=20=E5=8A=A0=E5=BF=AB=E9=A6=96?= =?UTF-8?q?=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/starter/components/Hero.js | 54 ++++++++++++++++++++++--------- themes/starter/index.js | 26 +++++++-------- 2 files changed, 51 insertions(+), 29 deletions(-) diff --git a/themes/starter/components/Hero.js b/themes/starter/components/Hero.js index b0fed7a9..00a43a06 100644 --- a/themes/starter/components/Hero.js +++ b/themes/starter/components/Hero.js @@ -4,7 +4,8 @@ import { siteConfig } from '@/lib/config' /** * 英雄大图区块 */ -export const Hero = () => { +export const Hero = props => { + const CONFIG = props?.NOTION_CONFIG || CONFIG return ( <> {/* */} @@ -19,37 +20,49 @@ export const Hero = () => { data-wow-delay='.2s'> {/* 主标题 */}

    - {siteConfig('STARTER_HERO_TITLE_1')} + {siteConfig('STARTER_HERO_TITLE_1', null, CONFIG)}

    {/* 次标题 */}

    - {siteConfig('STARTER_HERO_TITLE_2')} + {siteConfig('STARTER_HERO_TITLE_2', null, CONFIG)}

    {/* 按钮组 */}
    {/* 产品预览图片 */} - {siteConfig('STARTER_HERO_PREVIEW_IMAGE') && ( + {siteConfig('STARTER_HERO_PREVIEW_IMAGE', null, CONFIG) && (
    {
    {/* eslint-disable-next-line @next/next/no-img-element */} {siteConfig('TITLE')}
    @@ -87,11 +104,16 @@ export const Hero = () => {
    {/* 横幅图片 */} - {siteConfig('STARTER_HERO_BANNER_IMAGE') && ( + {siteConfig('STARTER_HERO_BANNER_IMAGE', null, CONFIG) && (
    + src={siteConfig( + 'STARTER_HERO_BANNER_IMAGE', + null, + CONFIG + )}>
    )} {/* */} diff --git a/themes/starter/index.js b/themes/starter/index.js index 49b99bac..da034ac5 100644 --- a/themes/starter/index.js +++ b/themes/starter/index.js @@ -25,7 +25,6 @@ import CONFIG from './config' import { Style } from './style' // import { MadeWithButton } from './components/MadeWithButton' import Comment from '@/components/Comment' -import LoadingCover from '@/components/LoadingCover' import ShareBar from '@/components/ShareBar' import { useGlobal } from '@/lib/global' import { loadWowJS } from '@/lib/plugins/wow' @@ -85,25 +84,26 @@ const LayoutIndex = props => { const posts = props?.allNavPages ? props.allNavPages.slice(0, count) : [] return ( <> - {/* 英雄区 */} - {siteConfig('STARTER_HERO_ENABLE') && } + {siteConfig('STARTER_HERO_ENABLE', true, CONFIG) && } {/* 合作伙伴 */} - {siteConfig('STARTER_BRANDS_ENABLE') && } + {siteConfig('STARTER_BRANDS_ENABLE', true, CONFIG) && } {/* 产品特性 */} - {siteConfig('STARTER_FEATURE_ENABLE') && } + {siteConfig('STARTER_FEATURE_ENABLE', true, CONFIG) && } {/* 关于 */} - {siteConfig('STARTER_ABOUT_ENABLE') && } + {siteConfig('STARTER_ABOUT_ENABLE', true, CONFIG) && } {/* 价格 */} - {siteConfig('STARTER_PRICING_ENABLE') && } + {siteConfig('STARTER_PRICING_ENABLE', true, CONFIG) && } {/* 评价展示 */} - {siteConfig('STARTER_TESTIMONIALS_ENABLE') && } + {siteConfig('STARTER_TESTIMONIALS_ENABLE', true, CONFIG) && ( + + )} {/* 常见问题 */} - {siteConfig('STARTER_FAQ_ENABLE') && } + {siteConfig('STARTER_FAQ_ENABLE', true, CONFIG) && } {/* 团队介绍 */} - {siteConfig('STARTER_TEAM_ENABLE') && } + {siteConfig('STARTER_TEAM_ENABLE', true, CONFIG) && } {/* 博文列表 */} - {siteConfig('STARTER_BLOG_ENABLE') && ( + {siteConfig('STARTER_BLOG_ENABLE', true, CONFIG) && ( <>
    @@ -115,10 +115,10 @@ const LayoutIndex = props => { )} {/* 联系方式 */} - {siteConfig('STARTER_CONTACT_ENABLE') && } + {siteConfig('STARTER_CONTACT_ENABLE', true, CONFIG) && } {/* 行动呼吁 */} - {siteConfig('STARTER_CTA_ENABLE') && } + {siteConfig('STARTER_CTA_ENABLE', true, CONFIG) && } ) } From 6b62cb0af5fff40e74333df8d20db91fd87eb45b Mon Sep 17 00:00:00 2001 From: tangly1024 Date: Mon, 4 Nov 2024 10:01:30 +0800 Subject: [PATCH 153/290] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 203ef0cd..b7463b5c 100644 --- a/README.md +++ b/README.md @@ -203,3 +203,8 @@ Notion是一个能让效率暴涨的生产力引擎,可以帮你书写文档 ## License The MIT License. + + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=tangly1024/NotionNext&type=Date)](https://star-history.com/#tangly1024/NotionNext&Date) From 56f94bf8f0dc0bec0ed659be23a70ace5dd72f2a Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Mon, 4 Nov 2024 10:57:09 +0800 Subject: [PATCH 154/290] =?UTF-8?q?photo-=E4=B8=BB=E9=A2=98=E6=A1=86?= =?UTF-8?q?=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/photo/components/Announcement.js | 22 + themes/photo/components/ArchiveDateList.js | 38 ++ themes/photo/components/ArticleFooter.js | 69 +++ themes/photo/components/ArticleInfo.js | 23 + themes/photo/components/ArticleLock.js | 52 ++ .../photo/components/BlogListGroupByDate.js | 36 ++ themes/photo/components/BlogListPage.js | 31 ++ themes/photo/components/BlogListScroll.js | 76 +++ themes/photo/components/BlogPostCard.js | 62 +++ themes/photo/components/BlogRecommend.js | 66 +++ themes/photo/components/CategoryGroup.js | 43 ++ themes/photo/components/CategoryItem.js | 20 + .../photo/components/ExampleRecentComments.js | 35 ++ themes/photo/components/Footer.js | 48 ++ themes/photo/components/Header.js | 27 + .../photo/components/HomeBackgroundImage.js | 21 + themes/photo/components/JumpToTopButton.js | 18 + themes/photo/components/LatestPostsGroup.js | 57 ++ themes/photo/components/LoadingCover.js | 8 + themes/photo/components/MenuHierarchical.js | 92 ++++ themes/photo/components/MenuItemCollapse.js | 83 +++ themes/photo/components/MenuItemDrop.js | 59 +++ themes/photo/components/NormalMenuItem.js | 20 + themes/photo/components/PaginationNumber.js | 214 ++++++++ themes/photo/components/PostItemCard.js | 57 ++ themes/photo/components/SearchInput.js | 87 +++ themes/photo/components/SideBar.js | 68 +++ themes/photo/components/SlotBar.js | 34 ++ themes/photo/components/Swiper.js | 111 ++++ themes/photo/components/TagGroups.js | 51 ++ themes/photo/components/TagItem.js | 23 + themes/photo/components/TagItemMini.js | 19 + themes/photo/components/Title.js | 20 + themes/photo/config.js | 18 + themes/photo/index.js | 494 ++++++++++++++++++ themes/photo/style.js | 52 ++ 36 files changed, 2254 insertions(+) create mode 100644 themes/photo/components/Announcement.js create mode 100644 themes/photo/components/ArchiveDateList.js create mode 100644 themes/photo/components/ArticleFooter.js create mode 100644 themes/photo/components/ArticleInfo.js create mode 100644 themes/photo/components/ArticleLock.js create mode 100644 themes/photo/components/BlogListGroupByDate.js create mode 100644 themes/photo/components/BlogListPage.js create mode 100644 themes/photo/components/BlogListScroll.js create mode 100644 themes/photo/components/BlogPostCard.js create mode 100644 themes/photo/components/BlogRecommend.js create mode 100644 themes/photo/components/CategoryGroup.js create mode 100644 themes/photo/components/CategoryItem.js create mode 100644 themes/photo/components/ExampleRecentComments.js create mode 100644 themes/photo/components/Footer.js create mode 100644 themes/photo/components/Header.js create mode 100644 themes/photo/components/HomeBackgroundImage.js create mode 100644 themes/photo/components/JumpToTopButton.js create mode 100644 themes/photo/components/LatestPostsGroup.js create mode 100644 themes/photo/components/LoadingCover.js create mode 100644 themes/photo/components/MenuHierarchical.js create mode 100644 themes/photo/components/MenuItemCollapse.js create mode 100644 themes/photo/components/MenuItemDrop.js create mode 100644 themes/photo/components/NormalMenuItem.js create mode 100644 themes/photo/components/PaginationNumber.js create mode 100644 themes/photo/components/PostItemCard.js create mode 100644 themes/photo/components/SearchInput.js create mode 100644 themes/photo/components/SideBar.js create mode 100644 themes/photo/components/SlotBar.js create mode 100644 themes/photo/components/Swiper.js create mode 100644 themes/photo/components/TagGroups.js create mode 100644 themes/photo/components/TagItem.js create mode 100644 themes/photo/components/TagItemMini.js create mode 100644 themes/photo/components/Title.js create mode 100644 themes/photo/config.js create mode 100644 themes/photo/index.js create mode 100644 themes/photo/style.js diff --git a/themes/photo/components/Announcement.js b/themes/photo/components/Announcement.js new file mode 100644 index 00000000..1f265417 --- /dev/null +++ b/themes/photo/components/Announcement.js @@ -0,0 +1,22 @@ +import { useGlobal } from '@/lib/global' +import dynamic from 'next/dynamic' + +const NotionPage = dynamic(() => import('@/components/NotionPage')) + +const Announcement = ({ post, className }) => { + const { locale } = useGlobal() + if (!post || Object.keys(post).length === 0) { + return <> + } + return +} +export default Announcement diff --git a/themes/photo/components/ArchiveDateList.js b/themes/photo/components/ArchiveDateList.js new file mode 100644 index 00000000..cd389028 --- /dev/null +++ b/themes/photo/components/ArchiveDateList.js @@ -0,0 +1,38 @@ +import { useGlobal } from '@/lib/global' +import { formatDateFmt } from '@/lib/utils/formatDate' +import Link from 'next/link' + +export default function ArchiveDateList(props) { + const postsSortByDate = Object.create(props.allNavPages) + const { locale } = useGlobal() + + postsSortByDate.sort((a, b) => { + return b?.publishDate - a?.publishDate + }) + + let dates = [] + postsSortByDate.forEach(post => { + const date = formatDateFmt(post.publishDate, 'yyyy-MM') + if (!dates[date]) { + dates.push(date) + } + }) + dates = dates.slice(0, 5) + return ( +
    +
    {locale.NAV.ARCHIVE}
    + {dates?.map((date, index) => { + return ( +
    + + {date} + +
    + ) + })} +
    + ) +} diff --git a/themes/photo/components/ArticleFooter.js b/themes/photo/components/ArticleFooter.js new file mode 100644 index 00000000..9a928cce --- /dev/null +++ b/themes/photo/components/ArticleFooter.js @@ -0,0 +1,69 @@ +import { useGlobal } from '@/lib/global' +import { formatDateFmt } from '@/lib/utils/formatDate' +import Link from 'next/link' + +/** + * 文章页脚 + * @param {*} props + * @returns + */ +export default function ArticleFooter(props) { + const { post } = props + const { locale } = useGlobal() + + return ( + <> + {/* 分类和标签部分 */} +
    + {/* 分类标签(如果文章不是“页面”类型) */} + {post?.type !== 'Page' && ( + <> + + {post?.category} + + + )} + + {/* 标签部分(若文章有标签) */} +
    + {post?.tags?.length > 0 && ( + <> + {locale.COMMON.TAGS} : + + )} + {/* 显示所有标签 */} + {post?.tags?.map(tag => { + return ( + + {tag} + + ) + })} +
    +
    + + {/* 发布日期信息 */} + {/* 将发布日期移至文章底部并设置样式 */} +
    + + {post?.publishDay} + +
    + + ) +} diff --git a/themes/photo/components/ArticleInfo.js b/themes/photo/components/ArticleInfo.js new file mode 100644 index 00000000..c0cd89e0 --- /dev/null +++ b/themes/photo/components/ArticleInfo.js @@ -0,0 +1,23 @@ +/** + * 文章页头 + * @param {*} props + * @returns + */ +export const ArticleHeader = props => { + const { post } = props + + return ( +
    + {/* 标题部分 */} + {/* 将标题字体大小设置为 16px,并将字体粗细设置为细体 */} +

    + {post?.title} +

    +
    + ) +} diff --git a/themes/photo/components/ArticleLock.js b/themes/photo/components/ArticleLock.js new file mode 100644 index 00000000..3744c183 --- /dev/null +++ b/themes/photo/components/ArticleLock.js @@ -0,0 +1,52 @@ +import { useGlobal } from '@/lib/global' +import { useEffect, useRef } from 'react' + +/** + * 加密文章校验组件 + * @param {password, validPassword} props + * @param password 正确的密码 + * @param validPassword(bool) 回调函数,校验正确回调入参为true + * @returns + */ +export const ArticleLock = props => { + const { validPassword } = props + const { locale } = useGlobal() + + const submitPassword = () => { + const p = document.getElementById('password') + if (!validPassword(p?.value)) { + const tips = document.getElementById('tips') + if (tips) { + tips.innerHTML = '' + tips.innerHTML = `
    ${locale.COMMON.PASSWORD_ERROR}
    ` + } + } + } + const passwordInputRef = useRef(null) + useEffect(() => { + // 选中密码输入框并将其聚焦 + passwordInputRef.current.focus() + }, []) + + return
    +
    +
    {locale.COMMON.ARTICLE_LOCK_TIPS}
    +
    + { + if (e.key === 'Enter') { + submitPassword() + } + }} + ref={passwordInputRef} // 绑定ref到passwordInputRef变量 + className='outline-none w-full text-sm pl-5 rounded-l transition focus:shadow-lg font-light leading-10 text-black dark:bg-gray-500 bg-gray-50' + > +
    +  {locale.COMMON.SUBMIT} +
    +
    +
    +
    +
    +
    +} diff --git a/themes/photo/components/BlogListGroupByDate.js b/themes/photo/components/BlogListGroupByDate.js new file mode 100644 index 00000000..ebc30aa5 --- /dev/null +++ b/themes/photo/components/BlogListGroupByDate.js @@ -0,0 +1,36 @@ +import Link from 'next/link' + +/** + * 按照日期将文章分组 + * 归档页面用到 + * @param {*} param0 + * @returns + */ +export default function BlogListGroupByDate({ archiveTitle, archivePosts }) { + return ( +
    +
    + {archiveTitle} +
    + +
      + {archivePosts[archiveTitle].map(post => { + return ( +
    • +
      + {post?.publishDay}   + + {post.title} + +
      +
    • + ) + })} +
    +
    + ) +} diff --git a/themes/photo/components/BlogListPage.js b/themes/photo/components/BlogListPage.js new file mode 100644 index 00000000..2a3126ca --- /dev/null +++ b/themes/photo/components/BlogListPage.js @@ -0,0 +1,31 @@ +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import CONFIG from '../config' +import BlogPostCard from './BlogPostCard' +import PaginationNumber from './PaginationNumber' + +export const BlogListPage = props => { + const { page = 1, posts, postCount } = props + const { NOTION_CONFIG } = useGlobal() + const POSTS_PER_PAGE = siteConfig('POSTS_PER_PAGE', null, NOTION_CONFIG) + const totalPage = Math.ceil(postCount / POSTS_PER_PAGE) + + const showPageCover = siteConfig('MOVIE_POST_LIST_COVER', null, CONFIG) + if (!posts || posts.length === 0) { + return null + } + + return ( +
    +
    + {posts?.map(post => ( + + ))} +
    + + +
    + ) +} diff --git a/themes/photo/components/BlogListScroll.js b/themes/photo/components/BlogListScroll.js new file mode 100644 index 00000000..aa1538c7 --- /dev/null +++ b/themes/photo/components/BlogListScroll.js @@ -0,0 +1,76 @@ +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import throttle from 'lodash.throttle' +import { useCallback, useEffect, useRef, useState } from 'react' +import CONFIG from '../config' +import BlogPostCard from './BlogPostCard' + +export const BlogListScroll = props => { + const { posts } = props + const { locale } = useGlobal() + + const [page, updatePage] = useState(1) + + let hasMore = false + const postsToShow = posts + ? Object.assign(posts).slice( + 0, + parseInt(siteConfig('POSTS_PER_PAGE', 12, props?.NOTION_CONFIG)) * page + ) + : [] + + if (posts) { + const totalCount = posts.length + hasMore = + page * parseInt(siteConfig('POSTS_PER_PAGE', 12, props?.NOTION_CONFIG)) < + totalCount + } + const handleGetMore = () => { + if (!hasMore) return + updatePage(page + 1) + } + + const targetRef = useRef(null) + + // 监听滚动自动分页加载 + const scrollTrigger = useCallback( + throttle(() => { + const scrollS = window.scrollY + window.outerHeight + const clientHeight = targetRef + ? targetRef.current + ? targetRef.current.clientHeight + : 0 + : 0 + if (scrollS > clientHeight + 100) { + handleGetMore() + } + }, 500) + ) + const showPageCover = siteConfig('MOVIE_POST_LIST_COVER', null, CONFIG) + + useEffect(() => { + window.addEventListener('scroll', scrollTrigger) + + return () => { + window.removeEventListener('scroll', scrollTrigger) + } + }) + + return ( +
    + {postsToShow?.map(post => ( + + ))} + +
    + {' '} + {hasMore ? locale.COMMON.MORE : `${locale.COMMON.NO_MORE} 😰`}{' '} +
    +
    + ) +} diff --git a/themes/photo/components/BlogPostCard.js b/themes/photo/components/BlogPostCard.js new file mode 100644 index 00000000..771f31b5 --- /dev/null +++ b/themes/photo/components/BlogPostCard.js @@ -0,0 +1,62 @@ +import LazyImage from '@/components/LazyImage' +import NotionIcon from '@/components/NotionIcon' +import { siteConfig } from '@/lib/config' +import Link from 'next/link' +import TagItemMini from './TagItemMini' + +const BlogPostCard = ({ index, post, showSummary, siteInfo }) => { + // 主题默认强制显示图片 + if (post && !post.pageCoverThumbnail) { + post.pageCoverThumbnail = + siteInfo?.pageCover || siteConfig('RANDOM_IMAGE_URL') + } + + return ( +
    + + {/* 固定高度 ,空白用图片拉升填充 */} +
    + {/* 图片 填充卡片 */} +
    + +
    + +
    + {post?.tagItems && post?.tagItems.length > 0 && ( + <> +
    + {post.tagItems.map(tag => ( + + ))} +
    + + )} +
    + {/* 阴影遮罩 */} +

    + {siteConfig('POST_TITLE_ICON') && ( + + )} + {post.title} +

    + +

    + {post?.summary} +

    + +
    +
    +
    +
    + +
    + ) +} + +export default BlogPostCard diff --git a/themes/photo/components/BlogRecommend.js b/themes/photo/components/BlogRecommend.js new file mode 100644 index 00000000..ef87030e --- /dev/null +++ b/themes/photo/components/BlogRecommend.js @@ -0,0 +1,66 @@ +import LazyImage from '@/components/LazyImage' +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import Link from 'next/link' +import CONFIG from '../config' + +/** + * 关联推荐文章 + * @param {prev,next} param0 + * @returns + */ +export default function BlogRecommend(props) { + const { recommendPosts, siteInfo } = props + const { locale } = useGlobal() + if ( + !siteConfig('MOVIE_ARTICLE_RECOMMEND', null, CONFIG) || + !recommendPosts || + recommendPosts.length === 0 + ) { + return <> + } + + return ( +
    +
    +
    + + {locale.COMMON.RELATE_POSTS} +
    +
    +
    + {recommendPosts.map(post => { + const headerImage = post?.pageCoverThumbnail + ? post.pageCoverThumbnail + : siteInfo?.pageCover + + return ( + +
    +
    +
    + {post.title} +
    +
    + {/* 卡片的阴影遮罩,为了凸显图片上的文字 */} +
    +
    +
    + + +
    + + ) + })} +
    +
    + ) +} diff --git a/themes/photo/components/CategoryGroup.js b/themes/photo/components/CategoryGroup.js new file mode 100644 index 00000000..63c3917c --- /dev/null +++ b/themes/photo/components/CategoryGroup.js @@ -0,0 +1,43 @@ +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import Link from 'next/link' + +const CategoryGroup = props => { + const { currentCategory, categoryOptions } = props + const { locale } = useGlobal() + if (!categoryOptions || categoryOptions.length === 0) return <> + const categoryCount = siteConfig('PREVIEW_CATEGORY_COUNT') + const categories = categoryOptions.slice(0, categoryCount) + return ( + <> +
    +

    {locale.COMMON.CATEGORY}

    +
    + {categories.map(category => { + const selected = currentCategory === category.name + return ( + + + {category.name}({category.count}) + + ) + })} +
    +
    + + ) +} + +export default CategoryGroup diff --git a/themes/photo/components/CategoryItem.js b/themes/photo/components/CategoryItem.js new file mode 100644 index 00000000..1190965b --- /dev/null +++ b/themes/photo/components/CategoryItem.js @@ -0,0 +1,20 @@ +import Link from 'next/link' + +/** + * 文章分类 + * @param {*} param0 + * @returns + */ +export default function CategoryItem({ category }) { + return ( + +
    + {category.name}({category.count}) +
    + + ) +} diff --git a/themes/photo/components/ExampleRecentComments.js b/themes/photo/components/ExampleRecentComments.js new file mode 100644 index 00000000..9dbdfa7f --- /dev/null +++ b/themes/photo/components/ExampleRecentComments.js @@ -0,0 +1,35 @@ +import { useEffect, useState } from 'react' +import { siteConfig } from '@/lib/config' +import Link from 'next/link' +import { RecentComments } from '@waline/client' + +/** + * @see https://waline.js.org/guide/get-started.html + * @param {*} props + * @returns + */ +const ExampleRecentComments = (props) => { + const [comments, updateComments] = useState([]) + const [onLoading, changeLoading] = useState(true) + useEffect(() => { + RecentComments({ + serverURL: siteConfig('COMMENT_WALINE_SERVER_URL'), + count: 5 + }).then(({ comments }) => { + changeLoading(false) + updateComments(comments) + }) + }, []) + + return <> + {onLoading &&
    Loading...
    } + {!onLoading && comments && comments.length === 0 &&
    No Comments
    } + {!onLoading && comments && comments.length > 0 && comments.map((comment) =>
    +
    +
    --{comment.nick}
    +
    )} + + +} + +export default ExampleRecentComments diff --git a/themes/photo/components/Footer.js b/themes/photo/components/Footer.js new file mode 100644 index 00000000..dc361e96 --- /dev/null +++ b/themes/photo/components/Footer.js @@ -0,0 +1,48 @@ +import { BeiAnGongAn } from '@/components/BeiAnGongAn' +import DarkModeButton from '@/components/DarkModeButton' +import { siteConfig } from '@/lib/config' +/** + * 页脚 + * @param {*} props + * @returns + */ +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 ( + + ) +} diff --git a/themes/photo/components/Header.js b/themes/photo/components/Header.js new file mode 100644 index 00000000..a6856db4 --- /dev/null +++ b/themes/photo/components/Header.js @@ -0,0 +1,27 @@ +import { siteConfig } from '@/lib/config' +import Link from 'next/link' +import MenuHierarchical from './MenuHierarchical' + +/** + * 网站顶部 + * @returns + */ +export const Header = props => { + return ( + <> +
    + {/* 左侧Logo */} + + {siteConfig('TITLE')} + + + {/* 右侧使用一个三级菜单 */} +
    + +
    +
    + + ) +} diff --git a/themes/photo/components/HomeBackgroundImage.js b/themes/photo/components/HomeBackgroundImage.js new file mode 100644 index 00000000..4cdb5056 --- /dev/null +++ b/themes/photo/components/HomeBackgroundImage.js @@ -0,0 +1,21 @@ +import LazyImage from '@/components/LazyImage' +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +/** + * 封面图 + * @param {*} props + * @returns + */ +export const HomeBackgroundImage = props => { + const { siteInfo } = useGlobal() + const background = siteConfig('MOVIE_HOME_BACKGROUND') + if (!background) { + return null + } + return ( + + ) +} diff --git a/themes/photo/components/JumpToTopButton.js b/themes/photo/components/JumpToTopButton.js new file mode 100644 index 00000000..f5e22b61 --- /dev/null +++ b/themes/photo/components/JumpToTopButton.js @@ -0,0 +1,18 @@ +import { useGlobal } from '@/lib/global' + +/** + * 跳转到网页顶部 + * 当屏幕下滑500像素后会出现该控件 + * @param targetRef 关联高度的目标html标签 + * @param showPercent 是否显示百分比 + * @returns {JSX.Element} + * @constructor + */ +const JumpToTopButton = () => { + const { locale } = useGlobal() + return
    window.scrollTo({ top: 0, behavior: 'smooth' })} + > +
    +} + +export default JumpToTopButton diff --git a/themes/photo/components/LatestPostsGroup.js b/themes/photo/components/LatestPostsGroup.js new file mode 100644 index 00000000..40366e37 --- /dev/null +++ b/themes/photo/components/LatestPostsGroup.js @@ -0,0 +1,57 @@ +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import Link from 'next/link' +import { useRouter } from 'next/router' + +/** + * 最新文章列表 + * @param posts 所有文章数据 + * @param sliceCount 截取展示的数量 默认6 + * @constructor + */ +const LatestPostsGroup = ({ latestPosts }) => { + // 获取当前路径 + const currentPath = useRouter().asPath + const { locale } = useGlobal() + + if (!latestPosts) { + return <> + } + + return ( +
    +
    +
    + + {locale.COMMON.LATEST_POSTS} +
    +
    + + {latestPosts.map(post => { + const selected = + currentPath === `${siteConfig('SUB_PATH', '')}/${post.slug}` + + return ( + +
    +
  • {post.title}
  • +
    + + ) + })} +
    + ) +} +export default LatestPostsGroup diff --git a/themes/photo/components/LoadingCover.js b/themes/photo/components/LoadingCover.js new file mode 100644 index 00000000..75976180 --- /dev/null +++ b/themes/photo/components/LoadingCover.js @@ -0,0 +1,8 @@ + +export default function LoadingCover() { + return
    +
    + +
    +
    +} diff --git a/themes/photo/components/MenuHierarchical.js b/themes/photo/components/MenuHierarchical.js new file mode 100644 index 00000000..978e262e --- /dev/null +++ b/themes/photo/components/MenuHierarchical.js @@ -0,0 +1,92 @@ +import Collapse from '@/components/Collapse' +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import { useRouter } from 'next/router' +import { useState } from 'react' +import { usePhotoGlobal } from '..' +import CONFIG from '../config' +import { MenuItemCollapse } from './MenuItemCollapse' + +/** + * 三级菜单 + */ +export default function MenuHierarchical(props) { + const router = useRouter() + const { customNav, customMenu } = props + const { locale } = useGlobal() + const [isOpen, setIsOpen] = useState(false) + const { collapseRef } = usePhotoGlobal() + + const toggleMenuOpen = () => { + setIsOpen(!isOpen) + } + let links = [ + { + id: 1, + icon: 'fa-solid fa-house', + name: locale.NAV.INDEX, + href: '/', + show: siteConfig('MOVIE_MENU_INDEX', null, CONFIG) + }, + { + id: 2, + icon: 'fas fa-search', + name: locale.NAV.SEARCH, + href: '/search', + show: siteConfig('MOVIE_MENU_SEARCH', null, CONFIG) + }, + { + id: 3, + icon: 'fas fa-archive', + name: locale.NAV.ARCHIVE, + href: '/archive', + show: siteConfig('MOVIE_MENU_ARCHIVE', null, CONFIG) + } + ] + + if (customNav) { + links = links.concat(customNav) + } + + for (let i = 0; i < links.length; i++) { + if (links[i].id !== i) { + links[i].id = i + } + } + + // 如果 开启自定义菜单,则覆盖Page生成的菜单 + if (siteConfig('CUSTOM_MENU')) { + links = customMenu + } + + return ( +
    + {/* 菜单按钮 */} +
    + {isOpen ? ( + + ) : ( + + )} +
    + + {/* 移动端菜单 */} + + {links?.map( + (link, index) => + link && + link.show && ( + + collapseRef.current?.updateCollapseHeight(param) + } + key={index} + link={link} + /> + ) + )} + + +
    + ) +} diff --git a/themes/photo/components/MenuItemCollapse.js b/themes/photo/components/MenuItemCollapse.js new file mode 100644 index 00000000..b11dbd57 --- /dev/null +++ b/themes/photo/components/MenuItemCollapse.js @@ -0,0 +1,83 @@ +import Collapse from '@/components/Collapse' +import Link from 'next/link' +import { useState } from 'react' + +/** + * 折叠菜单 + * @param {*} param0 + * @returns + */ +export const MenuItemCollapse = props => { + const { link } = props + const [show, changeShow] = useState(false) + const hasSubMenu = link?.subMenus?.length > 0 + + const [isOpen, changeIsOpen] = useState(false) + + const toggleShow = () => { + changeShow(!show) + } + + const toggleOpenSubMenu = () => { + changeIsOpen(!isOpen) + } + + if (!link || !link.show) { + return null + } + + return ( + <> +
    + {!hasSubMenu && ( + + + {link?.icon && } + {link?.name} + + + )} + {hasSubMenu && ( +
    + + {link?.icon && } + {link?.name} + + +
    + )} +
    + + {/* 折叠子菜单 */} + {hasSubMenu && ( + + {link.subMenus.map((sLink, index) => { + return ( +
    + + + {link?.icon && }{' '} + {sLink.title} + + +
    + ) + })} +
    + )} + + ) +} diff --git a/themes/photo/components/MenuItemDrop.js b/themes/photo/components/MenuItemDrop.js new file mode 100644 index 00000000..3b5cf813 --- /dev/null +++ b/themes/photo/components/MenuItemDrop.js @@ -0,0 +1,59 @@ +import Link from 'next/link' +import { useState } from 'react' + +export const MenuItemDrop = ({ link }) => { + const [show, changeShow] = useState(false) + const hasSubMenu = link?.subMenus?.length > 0 + + if (!link || !link.show) { + return null + } + + return ( +
    changeShow(true)} + onMouseOut={() => changeShow(false)}> + {!hasSubMenu && ( + + {link?.icon && } {link?.name} + {hasSubMenu && } + + )} + + {hasSubMenu && ( + <> +
    + {link?.icon && } {link?.name} + +
    + + )} + + {/* 子菜单 */} + {hasSubMenu && ( +
      + {link.subMenus.map((sLink, index) => { + return ( +
    • + + + {link?.icon &&   } + {sLink.title} + + +
    • + ) + })} +
    + )} +
    + ) +} diff --git a/themes/photo/components/NormalMenuItem.js b/themes/photo/components/NormalMenuItem.js new file mode 100644 index 00000000..2ed6f2e9 --- /dev/null +++ b/themes/photo/components/NormalMenuItem.js @@ -0,0 +1,20 @@ +import Link from 'next/link' + +/** + * 旧的普通菜单 + * @param {*} props + * @returns + */ +export const NormalMenuItem = props => { + const { link } = props + return ( + link?.show && ( + + {link.name} + + ) + ) +} diff --git a/themes/photo/components/PaginationNumber.js b/themes/photo/components/PaginationNumber.js new file mode 100644 index 00000000..64323b9c --- /dev/null +++ b/themes/photo/components/PaginationNumber.js @@ -0,0 +1,214 @@ +import { ChevronDoubleRight } from '@/components/HeroIcons' +import { useGlobal } from '@/lib/global' +import Link from 'next/link' +import { useRouter } from 'next/router' +import { useState } from 'react' + +/** + * 数字翻页插件 + * @param page 当前页码 + * @param showNext 是否有下一页 + * @returns {JSX.Element} + * @constructor + */ +const PaginationNumber = ({ page, totalPage }) => { + const router = useRouter() + const [value, setValue] = useState('') + const { locale } = useGlobal() + const currentPage = +page + const showNext = page < totalPage + const showPrev = currentPage !== 1 + const pagePrefix = router.asPath + .split('?')[0] + .replace(/\/page\/[1-9]\d*/, '') + .replace(/\/$/, '') + .replace('.html', '') + const pages = generatePages(pagePrefix, page, currentPage, totalPage) + if (pages?.length <= 1) { + return <> + } + + const handleInputChange = event => { + const newValue = event.target.value.replace(/[^0-9]/g, '') + setValue(newValue) + } + + /** + * 调到指定页 + */ + const jumpToPage = () => { + if (value) { + router.push( + value === 1 ? `${pagePrefix}/` : `${pagePrefix}/page/${value}` + ) + } + } + + return ( + <> + {/* pc端分页按钮 */} +
    + {/* 上一页 */} + +
    + +
    + {locale.PAGINATION.PREV} +
    +
    + + + {/* 分页 */} +
    + {pages} + + {/* 跳转页码 */} +
    + +
    + +
    +
    +
    + + {/* 下一页 */} + +
    + +
    + {locale.PAGINATION.NEXT} +
    +
    + +
    + + {/* 移动端分页 */} + +
    + {/* 上一页 */} + + {locale.PAGINATION.PREV} + + + {showPrev && showNext &&
    } + + {/* 下一页 */} + + {locale.PAGINATION.NEXT} + +
    + + ) +} + +/** + * 页码按钮 + * @param {*} page + * @param {*} currentPage + * @param {*} pagePrefix + * @returns + */ +function getPageElement(page, currentPage, pagePrefix) { + const selected = page + '' === currentPage + '' + if (!page) { + return <> + } + return ( + + {page} + + ) +} + +/** + * 获取所有页码 + * @param {*} pagePrefix + * @param {*} page + * @param {*} currentPage + * @param {*} totalPage + * @returns + */ +function generatePages(pagePrefix, page, currentPage, totalPage) { + const pages = [] + const groupCount = 7 // 最多显示页签数 + if (totalPage <= groupCount) { + for (let i = 1; i <= totalPage; i++) { + pages.push(getPageElement(i, page, pagePrefix)) + } + } else { + pages.push(getPageElement(1, page, pagePrefix)) + const dynamicGroupCount = groupCount - 2 + let startPage = currentPage - 2 + if (startPage <= 1) { + startPage = 2 + } + if (startPage + dynamicGroupCount > totalPage) { + startPage = totalPage - dynamicGroupCount + } + if (startPage > 2) { + pages.push( +
    + ...{' '} +
    + ) + } + + for (let i = 0; i < dynamicGroupCount; i++) { + if (startPage + i < totalPage) { + pages.push(getPageElement(startPage + i, page, pagePrefix)) + } + } + + if (startPage + dynamicGroupCount < totalPage) { + pages.push(
    ...
    ) + } + + pages.push(getPageElement(totalPage, page, pagePrefix)) + } + return pages +} +export default PaginationNumber diff --git a/themes/photo/components/PostItemCard.js b/themes/photo/components/PostItemCard.js new file mode 100644 index 00000000..c43854e1 --- /dev/null +++ b/themes/photo/components/PostItemCard.js @@ -0,0 +1,57 @@ +import LazyImage from '@/components/LazyImage' +import NotionIcon from '@/components/NotionIcon' +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import { formatDateFmt } from '@/lib/utils/formatDate' + +/** + * 普通的博客卡牌 + * 带封面图 + */ +const PostItemCard = ({ post }) => { + const { siteInfo } = useGlobal() + const cover = post?.pageCoverThumbnail || siteInfo?.pageCover + return ( +
    +
    + {/* */} +
    + +
    + {/* */} + +
    + {/* */} +

    + {siteConfig('POST_TITLE_ICON') && ( + + )} + {post.title} +

    + {/* */} + +
    + {formatDateFmt(post.publishDate, 'yyyy-MM')} +
    +
    +
    +
    + ) +} + +export default PostItemCard diff --git a/themes/photo/components/SearchInput.js b/themes/photo/components/SearchInput.js new file mode 100644 index 00000000..4f375d4e --- /dev/null +++ b/themes/photo/components/SearchInput.js @@ -0,0 +1,87 @@ +import { useRouter } from 'next/router' +import { useGlobal } from '@/lib/global' +import { useImperativeHandle, useRef, useState } from 'react' + +let lock = false + +const SearchInput = ({ currentTag, keyword, cRef }) => { + const { locale } = useGlobal() + const router = useRouter() + const searchInputRef = useRef(null) + useImperativeHandle(cRef, () => { + return { + focus: () => { + searchInputRef?.current?.focus() + } + } + }) + const handleSearch = () => { + const key = searchInputRef.current.value + if (key && key !== '') { + router.push({ pathname: '/search/' + key }).then(r => { + console.log('搜索', key) + }) + } else { + router.push({ pathname: '/' }).then(r => { + }) + } + } + const handleKeyUp = (e) => { + if (e.keyCode === 13) { // 回车 + handleSearch(searchInputRef.current.value) + } else if (e.keyCode === 27) { // ESC + cleanSearch() + } + } + const cleanSearch = () => { + searchInputRef.current.value = '' + setShowClean(false) + } + function lockSearchInput () { + lock = true + } + + function unLockSearchInput () { + lock = false + } + const [showClean, setShowClean] = useState(false) + const updateSearchKey = (val) => { + if (lock) { + return + } + searchInputRef.current.value = val + if (val) { + setShowClean(true) + } else { + setShowClean(false) + } + } + + return
    + updateSearchKey(e.target.value)} + defaultValue={keyword || ''} + /> + +
    + +
    + + {(showClean && +
    + +
    + )} +
    +} + +export default SearchInput diff --git a/themes/photo/components/SideBar.js b/themes/photo/components/SideBar.js new file mode 100644 index 00000000..ea0531b7 --- /dev/null +++ b/themes/photo/components/SideBar.js @@ -0,0 +1,68 @@ +import { siteConfig } from '@/lib/config' +import Live2D from '@/components/Live2D' +import { useGlobal } from '@/lib/global' +import Link from 'next/link' +import dynamic from 'next/dynamic' +import Announcement from './Announcement' +const ExampleRecentComments = dynamic(() => import('./ExampleRecentComments')) + +export const SideBar = (props) => { + const { locale } = useGlobal() + const { latestPosts, categoryOptions, notice } = props + return ( +
    + + + + + + + + {siteConfig('COMMENT_WALINE_SERVER_URL') && siteConfig('COMMENT_WALINE_RECENT') && } + + + +
    + ) +} diff --git a/themes/photo/components/SlotBar.js b/themes/photo/components/SlotBar.js new file mode 100644 index 00000000..e3bed727 --- /dev/null +++ b/themes/photo/components/SlotBar.js @@ -0,0 +1,34 @@ +import { useGlobal } from '@/lib/global' + +/** + * 博客列表上方嵌入条 + * @param {*} props + * @returns + */ +export default function SlotBar(props) { + const { tag, category } = props + const { locale } = useGlobal() + + if (tag) { + return ( +
    +
    +
    + {locale.COMMON.TAGS} : {tag}{' '} +
    +
    +
    +
    + ) + } else if (category) { + return ( +
    +
    + {locale.COMMON.CATEGORY} : {category} +
    +
    +
    + ) + } + return <> +} diff --git a/themes/photo/components/Swiper.js b/themes/photo/components/Swiper.js new file mode 100644 index 00000000..02b61da9 --- /dev/null +++ b/themes/photo/components/Swiper.js @@ -0,0 +1,111 @@ +import { useRef, useState } from 'react' +import PostItemCard from './PostItemCard' + +const Swiper = ({ posts }) => { + const [currentIndex, setCurrentIndex] = useState(0) + const containerRef = useRef(null) + + const touchStartPos = useRef({ x: 0, y: 0 }) + const isDragging = useRef(false) + const scrollStartLeft = useRef(0) // 记录拖拽开始时的滚动位置 + + // 处理鼠标和触摸开始事件 + const handleDragStart = e => { + const x = e.touches ? e.touches[0].clientX : e.clientX + touchStartPos.current = { x } + isDragging.current = true + scrollStartLeft.current = containerRef.current.scrollLeft + + // 更新鼠标样式 + containerRef.current.style.cursor = 'grabbing' + } + + // 处理鼠标和触摸移动事件 + const handleDragMove = e => { + if (!isDragging.current) return + + const x = e.touches ? e.touches[0].clientX : e.clientX + const deltaX = touchStartPos.current.x - x + + // 根据拖动的距离更新滚动位置 + containerRef.current.scrollLeft = scrollStartLeft.current + deltaX + } + + // 处理鼠标和触摸结束事件 + const handleDragEnd = () => { + isDragging.current = false + containerRef.current.style.cursor = 'grab' + } + + // 处理指示器点击事件 + const handleIndicatorClick = index => { + setCurrentIndex(index) + scrollToCard(index) + } + + // 滚动到特定卡片 + const scrollToCard = index => { + const container = containerRef.current + if (!container) return + const cardWidth = container.scrollWidth / posts.length + container.scrollTo({ + left: index * cardWidth - cardWidth / 6, // 调整位置以居中 + behavior: 'smooth' + }) + } + + return ( +
    +
    + handleIndicatorClick( + currentIndex === 0 ? posts.length - 1 : currentIndex - 1 + ) + }>
    + +
    + handleIndicatorClick( + currentIndex === posts.length - 1 ? 0 : currentIndex + 1 + ) + }>
    + +
    +
    + {posts.map((item, index) => ( +
    + +
    + ))} +
    +
    + +
    + {posts.map((_, index) => ( + + ))} +
    +
    + ) +} + +export default Swiper diff --git a/themes/photo/components/TagGroups.js b/themes/photo/components/TagGroups.js new file mode 100644 index 00000000..597cddc1 --- /dev/null +++ b/themes/photo/components/TagGroups.js @@ -0,0 +1,51 @@ +import { useGlobal } from '@/lib/global' +import Link from 'next/link' +import { useRouter } from 'next/router' + +/** + * 标签组 + * @param tags + * @param currentTag + * @returns {JSX.Element} + * @constructor + */ +const TagGroups = ({ tagOptions, className }) => { + const router = useRouter() + const { locale } = useGlobal() + const { tag: currentTag } = router.query + if (!tagOptions) return <> + + return ( +
    +
    {locale.COMMON.TAGS}
    +
    + {tagOptions.map((tag, index) => { + const selected = currentTag === tag.name + return ( + +
    +
    {tag.name}
    + {tag.count ? ( + {tag.count} + ) : ( + <> + )} +
    + + ) + })} +
    +
    + ) +} + +export default TagGroups diff --git a/themes/photo/components/TagItem.js b/themes/photo/components/TagItem.js new file mode 100644 index 00000000..c608c8cb --- /dev/null +++ b/themes/photo/components/TagItem.js @@ -0,0 +1,23 @@ +import Link from 'next/link' + +/** + * 标签 + * @param {*} param0 + * @returns + */ +export default function TagItem({ tag }) { + return ( +
    + +
    + {tag.name + (tag.count ? `(${tag.count})` : '')}{' '} +
    + +
    + ) +} diff --git a/themes/photo/components/TagItemMini.js b/themes/photo/components/TagItemMini.js new file mode 100644 index 00000000..a4b7da1c --- /dev/null +++ b/themes/photo/components/TagItemMini.js @@ -0,0 +1,19 @@ +import Link from 'next/link' + +const TagItemMini = ({ tag, selected = false }) => { + return ( + +
    + {selected && }{' '} + {tag.name + (tag.count ? `(${tag.count})` : '')}{' '} +
    + + ) +} + +export default TagItemMini diff --git a/themes/photo/components/Title.js b/themes/photo/components/Title.js new file mode 100644 index 00000000..a073f1cc --- /dev/null +++ b/themes/photo/components/Title.js @@ -0,0 +1,20 @@ +import NotionIcon from '@/components/NotionIcon' +import { siteConfig } from '@/lib/config' + +/** + * 标题栏 + * @param {*} props + * @returns + */ +export const Title = (props) => { + const { post } = props + const title = post?.title || siteConfig('TITLE') + const description = post?.description || siteConfig('AUTHOR') + + return
    +

    {siteConfig('POST_TITLE_ICON') && }{title}

    +

    + {description} +

    +
    +} diff --git a/themes/photo/config.js b/themes/photo/config.js new file mode 100644 index 00000000..b6b0bd9c --- /dev/null +++ b/themes/photo/config.js @@ -0,0 +1,18 @@ +/** + * 主题配置文件 + */ +const CONFIG = { + // 菜单配置 + MOVIE_MENU_CATEGORY: true, // 显示分类 + MOVIE_MENU_TAG: true, // 显示标签 + MOVIE_MENU_ARCHIVE: true, // 显示归档 + MOVIE_MENU_SEARCH: true, // 显示搜索 + MOVIE_HOME_BACKGROUND: false, // 首页是否显示背景图, 默认关闭 + + MOVIE_ARTICLE_RECOMMEND: true, // 推荐关联内容在文章底部 + MOVIE_VIDEO_COMBINE: true, // 聚合视频,开启后一篇文章内的多个含caption的视频会被合并到文章开头,并展示分集按钮 + MOVIE_VIDEO_COMBINE_SHOW_PAGE_FORCE: false, // 即使只有一集也显示集数切换按钮 + + MOVIE_POST_LIST_COVER: true // 列表显示文章封面 +} +export default CONFIG diff --git a/themes/photo/index.js b/themes/photo/index.js new file mode 100644 index 00000000..ea74aeb0 --- /dev/null +++ b/themes/photo/index.js @@ -0,0 +1,494 @@ +'use client' + +import AlgoliaSearchModal from '@/components/AlgoliaSearchModal' +import Comment from '@/components/Comment' +import replaceSearchResult from '@/components/Mark' +import NotionPage from '@/components/NotionPage' +import ShareBar from '@/components/ShareBar' +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import { loadWowJS } from '@/lib/plugins/wow' +import { isBrowser } from '@/lib/utils' +import { Transition } from '@headlessui/react' +import { useRouter } from 'next/router' +import { createContext, useContext, useEffect, useRef, useState } from 'react' +import ArchiveDateList from './components/ArchiveDateList' +import ArticleFooter from './components/ArticleFooter' +import { ArticleHeader } from './components/ArticleInfo' +import { ArticleLock } from './components/ArticleLock' +import BlogListGroupByDate from './components/BlogListGroupByDate' +import BlogRecommend from './components/BlogRecommend' +import CategoryGroup from './components/CategoryGroup' +import CategoryItem from './components/CategoryItem' +import { Footer } from './components/Footer' +import { Header } from './components/Header' +import { HomeBackgroundImage } from './components/HomeBackgroundImage' +import JumpToTopButton from './components/JumpToTopButton' +import LatestPostsGroup from './components/LatestPostsGroup' +import SlotBar from './components/SlotBar' +import Swiper from './components/Swiper' +import TagGroups from './components/TagGroups' +import TagItem from './components/TagItem' +import CONFIG from './config' +import { Style } from './style' + +// 主题全局状态 +const ThemeGlobalPhoto = createContext() +export const usePhotoGlobal = () => useContext(ThemeGlobalPhoto) + +/** + * 基础布局框架 + * 1.其它页面都嵌入在LayoutBase中 + * 2.采用左右两侧布局,移动端使用顶部导航栏 + * @returns {JSX.Element} + * @constructor + */ +const LayoutBase = props => { + const { children, slotTop } = props + const { onLoading, fullWidth } = useGlobal() + const collapseRef = useRef(null) + const router = useRouter() + const searchModal = useRef(null) + const [expandMenu, updateExpandMenu] = useState(false) + useEffect(() => { + loadWowJS() + }, []) + + // 首页背景图 + const headerSlot = + router.route === '/' && + siteConfig('MOVIE_HOME_BACKGROUND', null, CONFIG) ? ( + + ) : null + + return ( + +
    + + ) +} + +export { Style } From 26ccfad46b70797c9a8887bd33ab4beb6192bc17 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Mon, 4 Nov 2024 10:57:40 +0800 Subject: [PATCH 155/290] 4.7.6 --- .env.local | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.local b/.env.local index da1cb906..af3724bc 100644 --- a/.env.local +++ b/.env.local @@ -1,5 +1,5 @@ # 环境变量 @see https://www.nextjs.cn/docs/basic-features/environment-variables -NEXT_PUBLIC_VERSION=4.7.5 +NEXT_PUBLIC_VERSION=4.7.6 # 可在此添加环境变量,去掉最左边的(# )注释即可 diff --git a/package.json b/package.json index bf284e3b..76f6bf87 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "notion-next", - "version": "4.7.5", + "version": "4.7.6", "homepage": "https://github.com/tangly1024/NotionNext.git", "license": "MIT", "repository": { From 67019e9477cbe81f48aa7ccd09dd0e109c0518dd Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Mon, 4 Nov 2024 16:11:27 +0800 Subject: [PATCH 156/290] theme-photo --- lib/db/getSiteData.js | 4 +- styles/globals.css | 4 + themes/photo/components/Header.js | 4 +- themes/photo/components/MenuHierarchical.js | 42 +++-- themes/photo/components/MenuItemCollapse.js | 12 +- themes/photo/components/PostItemCard.js | 50 +++--- themes/photo/components/Swiper.js | 168 +++++++++----------- themes/photo/index.js | 25 ++- themes/photo/style.js | 40 ++--- 9 files changed, 169 insertions(+), 180 deletions(-) diff --git a/lib/db/getSiteData.js b/lib/db/getSiteData.js index 951bdaac..4d615824 100755 --- a/lib/db/getSiteData.js +++ b/lib/db/getSiteData.js @@ -65,8 +65,8 @@ export async function getNotionPageData({ pageId, from }) { const cacheKey = 'page_block_' + pageId let data = await getDataFromCache(cacheKey) if (data && data.pageIds?.length > 0) { - // console.log('[API<<--缓存]', `from:${from}`, `root-page-id:${pageId}`) - // return data + console.debug('[API<<--缓存]', `from:${from}`, `root-page-id:${pageId}`) + return data } else { // 从接口读取 data = await getDataBaseInfoByNotionAPI({ pageId, from }) diff --git a/styles/globals.css b/styles/globals.css index 7c215c46..5c86cecf 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -2,6 +2,10 @@ @tailwind components; @tailwind utilities; +html { + overflow-x: hidden; +} + .wrapper { min-height: 100vh; display: flex; diff --git a/themes/photo/components/Header.js b/themes/photo/components/Header.js index a6856db4..9a2c31ff 100644 --- a/themes/photo/components/Header.js +++ b/themes/photo/components/Header.js @@ -9,7 +9,7 @@ import MenuHierarchical from './MenuHierarchical' export const Header = props => { return ( <> -
    +
    {/* 左侧Logo */} { {/* 右侧使用一个三级菜单 */} -
    +
    diff --git a/themes/photo/components/MenuHierarchical.js b/themes/photo/components/MenuHierarchical.js index 978e262e..397bca4e 100644 --- a/themes/photo/components/MenuHierarchical.js +++ b/themes/photo/components/MenuHierarchical.js @@ -2,7 +2,7 @@ import Collapse from '@/components/Collapse' import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' import { useRouter } from 'next/router' -import { useState } from 'react' +import { useEffect, useState } from 'react' import { usePhotoGlobal } from '..' import CONFIG from '../config' import { MenuItemCollapse } from './MenuItemCollapse' @@ -20,6 +20,9 @@ export default function MenuHierarchical(props) { const toggleMenuOpen = () => { setIsOpen(!isOpen) } + const closeModal = () => { + setIsOpen(false) + } let links = [ { id: 1, @@ -59,19 +62,31 @@ export default function MenuHierarchical(props) { links = customMenu } + const [title, setTitle] = useState(siteConfig('BIO')) + + useEffect(() => { + const currentLink = links.find(link => link.href === router.pathname) + if (currentLink) { + setTitle(currentLink.name) + } + closeModal() + }, [router]) + return ( -
    +
    {/* 菜单按钮 */} -
    - {isOpen ? ( - - ) : ( - - )} +
    + {title}
    - + {/* 移动端菜单 */} - + {links?.map( (link, index) => link && @@ -87,6 +102,13 @@ export default function MenuHierarchical(props) { )} + {/* 遮罩 */} + {isOpen && ( +
    + )}
    ) } diff --git a/themes/photo/components/MenuItemCollapse.js b/themes/photo/components/MenuItemCollapse.js index b11dbd57..6778fecf 100644 --- a/themes/photo/components/MenuItemCollapse.js +++ b/themes/photo/components/MenuItemCollapse.js @@ -28,14 +28,12 @@ export const MenuItemCollapse = props => { return ( <> -
    +
    {!hasSubMenu && ( + className='flex justify-between dark:text-gray-200 no-underline tracking-widest'> {link?.icon && } {link?.name} @@ -45,7 +43,7 @@ export const MenuItemCollapse = props => { {hasSubMenu && (
    + className='flex items-center justify-between cursor-pointer dark:text-gray-200 no-underline tracking-widest'> {link?.icon && } {link?.name} @@ -66,9 +64,9 @@ export const MenuItemCollapse = props => { return (
    + className='dark:text-gray-200 text-left px-3 justify-start py-1 tracking-widest transition-all duration-200 pr-6'> - + {link?.icon && }{' '} {sLink.title} diff --git a/themes/photo/components/PostItemCard.js b/themes/photo/components/PostItemCard.js index c43854e1..41b57f5b 100644 --- a/themes/photo/components/PostItemCard.js +++ b/themes/photo/components/PostItemCard.js @@ -3,51 +3,49 @@ import NotionIcon from '@/components/NotionIcon' import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' import { formatDateFmt } from '@/lib/utils/formatDate' +import Link from 'next/link' /** * 普通的博客卡牌 * 带封面图 */ -const PostItemCard = ({ post }) => { +const PostItemCard = ({ post, className }) => { const { siteInfo } = useGlobal() const cover = post?.pageCoverThumbnail || siteInfo?.pageCover return ( -
    -
    - {/* */} -
    +
    +
    +
    - {/* */} -
    - {/* + */} -

    - {siteConfig('POST_TITLE_ICON') && ( - - )} - {post.title} -

    - {/* */} + 'cursor-pointer hover:underline leading-tight dark:text-gray-300 ' + }> +

    + {siteConfig('POST_TITLE_ICON') && ( + + )} + {post?.title} +

    + -
    - {formatDateFmt(post.publishDate, 'yyyy-MM')} -
    + {/* 发布日期 */} + + {formatDateFmt(post?.publishDate, 'yyyy-MM')} +
    diff --git a/themes/photo/components/Swiper.js b/themes/photo/components/Swiper.js index 02b61da9..381e00c8 100644 --- a/themes/photo/components/Swiper.js +++ b/themes/photo/components/Swiper.js @@ -1,111 +1,101 @@ -import { useRef, useState } from 'react' +import { useEffect, useRef, useState } from 'react' import PostItemCard from './PostItemCard' -const Swiper = ({ posts }) => { - const [currentIndex, setCurrentIndex] = useState(0) - const containerRef = useRef(null) +const InertiaCarousel = ({ posts }) => { + const carouselRef = useRef(null) + const [isDragging, setIsDragging] = useState(false) + const [startX, setStartX] = useState(0) + const [scrollLeft, setScrollLeft] = useState(0) + const [lastX, setLastX] = useState(0) // 上一次的位置 + const [velocity, setVelocity] = useState(0) + const animationRef = useRef(null) - const touchStartPos = useRef({ x: 0, y: 0 }) - const isDragging = useRef(false) - const scrollStartLeft = useRef(0) // 记录拖拽开始时的滚动位置 - - // 处理鼠标和触摸开始事件 - const handleDragStart = e => { - const x = e.touches ? e.touches[0].clientX : e.clientX - touchStartPos.current = { x } - isDragging.current = true - scrollStartLeft.current = containerRef.current.scrollLeft - - // 更新鼠标样式 - containerRef.current.style.cursor = 'grabbing' + // 开始拖拽事件 + const startDrag = e => { + e.preventDefault() + setIsDragging(true) + const startPosition = e.pageX || e.touches[0].pageX + setStartX(startPosition - carouselRef.current.offsetLeft) + setScrollLeft(carouselRef.current.scrollLeft) + setLastX(startPosition) // 初始化上一次的位置 + cancelInertiaScroll() // 停止任何正在进行的惯性动画 } - // 处理鼠标和触摸移动事件 - const handleDragMove = e => { - if (!isDragging.current) return + // 拖拽中事件 + const duringDrag = e => { + if (!isDragging) return + e.preventDefault() + const currentPosition = e.pageX || e.touches[0].pageX + const distance = currentPosition - startX + carouselRef.current.scrollLeft = scrollLeft - distance - const x = e.touches ? e.touches[0].clientX : e.clientX - const deltaX = touchStartPos.current.x - x - - // 根据拖动的距离更新滚动位置 - containerRef.current.scrollLeft = scrollStartLeft.current + deltaX + // 计算当前速度 + const deltaX = currentPosition - lastX + setVelocity(deltaX) // 更新速度 + setLastX(currentPosition) // 更新 lastX 为当前位置 } - // 处理鼠标和触摸结束事件 - const handleDragEnd = () => { - isDragging.current = false - containerRef.current.style.cursor = 'grab' + // 结束拖拽事件,启动惯性滚动 + const endDrag = () => { + setIsDragging(false) + startInertiaScroll(velocity) // 根据最终速度启动惯性滚动 } - // 处理指示器点击事件 - const handleIndicatorClick = index => { - setCurrentIndex(index) - scrollToCard(index) + // 惯性滚动函数 + const startInertiaScroll = initialVelocity => { + let currentVelocity = initialVelocity + const decay = 0.95 // 惯性衰减系数 + const animate = () => { + if (Math.abs(currentVelocity) > 0.5) { + // 仅当速度足够大时继续滚动 + carouselRef.current.scrollLeft -= currentVelocity + currentVelocity *= decay // 速度衰减 + animationRef.current = requestAnimationFrame(animate) + } else { + cancelAnimationFrame(animationRef.current) + } + } + animate() } - // 滚动到特定卡片 - const scrollToCard = index => { - const container = containerRef.current - if (!container) return - const cardWidth = container.scrollWidth / posts.length - container.scrollTo({ - left: index * cardWidth - cardWidth / 6, // 调整位置以居中 - behavior: 'smooth' - }) + // 取消惯性滚动 + const cancelInertiaScroll = () => { + if (animationRef.current) { + cancelAnimationFrame(animationRef.current) + } } + useEffect(() => { + return () => cancelInertiaScroll() // 清除动画 + }, []) + return ( -
    -
    - handleIndicatorClick( - currentIndex === 0 ? posts.length - 1 : currentIndex - 1 - ) - }>
    +
    + {/* Carousel items */} -
    - handleIndicatorClick( - currentIndex === posts.length - 1 ? 0 : currentIndex + 1 - ) - }>
    - -
    -
    - {posts.map((item, index) => ( -
    - -
    - ))} -
    -
    - -
    - {posts.map((_, index) => ( - + post={post} + /> ))} -
    ) } -export default Swiper +export default InertiaCarousel diff --git a/themes/photo/index.js b/themes/photo/index.js index ea74aeb0..190bac80 100644 --- a/themes/photo/index.js +++ b/themes/photo/index.js @@ -65,7 +65,7 @@ const LayoutBase = props => {
    ) From 92fbe668f98c7913d50041b89bf354e7f1ef96f0 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Mon, 4 Nov 2024 16:16:03 +0800 Subject: [PATCH 157/290] =?UTF-8?q?theme-photo=20=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/photo/components/Header.js | 2 +- themes/photo/components/MenuHierarchical.js | 2 +- themes/photo/components/MenuItemCollapse.js | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/themes/photo/components/Header.js b/themes/photo/components/Header.js index 9a2c31ff..29b7bee0 100644 --- a/themes/photo/components/Header.js +++ b/themes/photo/components/Header.js @@ -13,7 +13,7 @@ export const Header = props => { {/* 左侧Logo */} + className='logo whitespace-nowrap text-2xl md:text-3xl text-gray-dark no-underline flex items-center'> {siteConfig('TITLE')} diff --git a/themes/photo/components/MenuHierarchical.js b/themes/photo/components/MenuHierarchical.js index 397bca4e..979a6ca3 100644 --- a/themes/photo/components/MenuHierarchical.js +++ b/themes/photo/components/MenuHierarchical.js @@ -73,7 +73,7 @@ export default function MenuHierarchical(props) { }, [router]) return ( -
    +
    {/* 菜单按钮 */}
    { return ( <> -
    +
    {!hasSubMenu && ( + className='flex justify-between no-underline tracking-widest'> {link?.icon && } {link?.name} @@ -43,13 +43,13 @@ export const MenuItemCollapse = props => { {hasSubMenu && (
    + className='flex items-center justify-between cursor-pointer no-underline tracking-widest'> {link?.icon && } {link?.name} + className={`select-none px-2 fas fa-chevron-left transition-all duration-200 ${isOpen ? '-rotate-90' : ''} `}>
    )}
    From 2c750e4a946fcfb1215fae20861e932eb4e4b527 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Mon, 4 Nov 2024 16:42:40 +0800 Subject: [PATCH 158/290] =?UTF-8?q?photo-=E4=B8=BB=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E9=A6=96=E5=B1=8F=E5=8A=A0=E5=85=AC=E5=91=8A=EF=BC=9B=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E9=A2=84=E8=A7=88=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/images/themes-preview/photo.png | Bin 0 -> 214758 bytes themes/photo/components/Announcement.js | 31 ++++++++++++------------ themes/photo/components/Swiper.js | 13 +++++++--- themes/photo/index.js | 3 +++ 4 files changed, 28 insertions(+), 19 deletions(-) create mode 100644 public/images/themes-preview/photo.png diff --git a/public/images/themes-preview/photo.png b/public/images/themes-preview/photo.png new file mode 100644 index 0000000000000000000000000000000000000000..f196fcaea120b8fdee9a499362e04c5061a1bc0d GIT binary patch literal 214758 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�$~=h%Ood;yF?`yi*l}$6OQ^ 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%0AO$e~8D8Tb-*)z>GM^q-< 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

    2XVVhkmLNl?BeG5nBXr}Q4${Rq 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 n&h3zJQcgKywDNM(qB-_MZv7_?!PPt}$a7 literal 0 HcmV?d00001 diff --git a/themes/photo/components/Announcement.js b/themes/photo/components/Announcement.js index 1f265417..38b701a5 100644 --- a/themes/photo/components/Announcement.js +++ b/themes/photo/components/Announcement.js @@ -1,22 +1,23 @@ -import { useGlobal } from '@/lib/global' import dynamic from 'next/dynamic' const NotionPage = dynamic(() => import('@/components/NotionPage')) - -const Announcement = ({ post, className }) => { - const { locale } = useGlobal() - if (!post || Object.keys(post).length === 0) { +/** + * 公告 + * @param {*} param0 + * @returns + */ +const Announcement = ({ notice, className }) => { + if (!notice || Object.keys(notice).length === 0) { return <> } - return

    + return ( + + ) } export default Announcement diff --git a/themes/photo/components/Swiper.js b/themes/photo/components/Swiper.js index 381e00c8..6917c465 100644 --- a/themes/photo/components/Swiper.js +++ b/themes/photo/components/Swiper.js @@ -1,6 +1,11 @@ import { useEffect, useRef, useState } from 'react' import PostItemCard from './PostItemCard' +/** + * 滑动走马灯 + * @param {*} param0 + * @returns + */ const InertiaCarousel = ({ posts }) => { const carouselRef = useRef(null) const [isDragging, setIsDragging] = useState(false) @@ -14,7 +19,7 @@ const InertiaCarousel = ({ posts }) => { const startDrag = e => { e.preventDefault() setIsDragging(true) - const startPosition = e.pageX || e.touches[0].pageX + const startPosition = e.pageX || e.touches?.[0].pageX setStartX(startPosition - carouselRef.current.offsetLeft) setScrollLeft(carouselRef.current.scrollLeft) setLastX(startPosition) // 初始化上一次的位置 @@ -72,7 +77,7 @@ const InertiaCarousel = ({ posts }) => { return (
    { style={{ scrollbarWidth: 'none', msOverflowStyle: 'none' }}> {/* Carousel items */} -
    +
    {posts && posts?.map((post, index) => ( diff --git a/themes/photo/index.js b/themes/photo/index.js index 190bac80..f369e6fb 100644 --- a/themes/photo/index.js +++ b/themes/photo/index.js @@ -12,6 +12,7 @@ import { isBrowser } from '@/lib/utils' import { Transition } from '@headlessui/react' import { useRouter } from 'next/router' import { createContext, useContext, useEffect, useRef, useState } from 'react' +import Announcement from './components/Announcement' import ArchiveDateList from './components/ArchiveDateList' import ArticleFooter from './components/ArticleFooter' import { ArticleHeader } from './components/ArticleInfo' @@ -137,6 +138,8 @@ const LayoutPostList = props => { {/* 滑动组件 */} + {/* 公告 */} +
    ) } From 596d8018b55f15d93263d142f22345f6ca19e036 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Mon, 4 Nov 2024 16:47:33 +0800 Subject: [PATCH 159/290] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BC=A9=E7=95=A5?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/images/themes-preview/commerce.png | Bin 1044957 -> 207921 bytes public/images/themes-preview/example.png | Bin 352063 -> 83485 bytes public/images/themes-preview/fukasawa.png | Bin 1141535 -> 235449 bytes public/images/themes-preview/game.png | Bin 681118 -> 143894 bytes public/images/themes-preview/heo.png | Bin 936595 -> 172214 bytes public/images/themes-preview/hexo.png | Bin 802208 -> 178582 bytes public/images/themes-preview/landing.png | Bin 440230 -> 113266 bytes public/images/themes-preview/magzine.png | Bin 440230 -> 113266 bytes public/images/themes-preview/matery.png | Bin 734233 -> 155927 bytes public/images/themes-preview/medium.png | Bin 810616 -> 194722 bytes public/images/themes-preview/movie.png | Bin 1383028 -> 266627 bytes public/images/themes-preview/photo.png | Bin 214758 -> 41486 bytes public/images/themes-preview/plog.png | Bin 2494095 -> 452946 bytes public/images/themes-preview/starter.png | Bin 466331 -> 92762 bytes 14 files changed, 0 insertions(+), 0 deletions(-) diff --git a/public/images/themes-preview/commerce.png b/public/images/themes-preview/commerce.png index a82980e3142614c6abdac7de597987a6467a6d66..a019ee3f77ff733cb1c6dfd1874568fa58db9134 100644 GIT binary patch literal 207921 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 z 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 Z!fmXH&T}eM^`9BGwuZsODs`Ke{{t_D9HjsN literal 1044957 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

    #M1YhfGW1OTDQO zmX~YnfQK>htiDmPr~4oGJI>@=&g9*IEPu7RpZl@aTd@9yyY#l7RX`}G3F6d&?l~$h zM`6f}$bb}c$2n&wc-Fl9o>o z;kKtIvhJ$rQ23{x*QOsETQajdA+=$m0{(62`w>r^ffjh0<2o1T-y(r$&JW0UdmIA1 zUk%Wmw;x}Qbm_+<%h`cu7W9QvR#P7{BpZ45;-Whi#hjz8zKQR`%Rm-B^l^>sPs*Kg zb&bqKxG@c0`T#Q*8a$2VMGS^Kl*^^8R_yRc9a)`=x3?7>MTuaF>fHNLm`@!@x7#QZ zc>hLZmS)9cN@-+^DTLAXg?_noSHs@$+9{}_N`ErrnQY#7JG*Wizq@gCyInA+sWnL> zBvJhauI^zw?)+WbD)cy8@YxD$}G%e%Xiw87JzyUcuztfp%d&vCgD z3HdE$^T)H4k~T2_uXKl+ru`iz;@>Dm5LjLT(-0|DmPx zJ*`kbn*=If(3SvhNz}BAD6AZD|EdY8Q$_kFejU=3DPb!-S$OI?rhpGA)i~{jmm*qS zHvr=X&uxxi5YWm(Fhk>yj2HdSLR4ERV76q({E_nB&CzbHT>cktk5m4ks)>dy|fX=oO8eZ#pv1k zl*Z|rp+syKK?=qWeC5ROuNzh{J+r71f;^HI1Vb23p1glR=B8{u&F72QUf!Q17=%%* zAs(K2#b)Rv6tVn)zFz3$Yx9x%!QnN~K!jDtj=nvX%YVMHNpdQhH2``X4=odTeuZGK z8C(twV)#ZtN~xPi;fpx=&XJ}gzeNiDCfOBei=U7kebJKlDW>hmn%LN=MVNYr3OhnT z$+ik7Xhk;4d?%@A#L({7Fykdg#=1}KV%LcW!~{m@h^bpfKj``LDNM}DTcx8jIRvU1 zo<`?HQ1CR%o14-QTWE&w2pWY#GSn}}wl_1gnIbDL;Sygl%0${!TUx6-$i4@_bAGl3}PDgJH8 z)=5c=$cSTsNi;{LrDzhLKNF06ktr;uL-|H=mvCSq9{$yH;LF>zJvqyg5p5 z%-Mmvh9J#k&rfZqlq5OisLa_=%t(Scjx7IcmNB?tTai##ay&+04F|q$g^}8Rn^_%W zgpegJX1=p@qF}304YM_n&??q+=L0j9FQZk7-b2lHdRAx3b*_e7r9$nBlrNF530qAR zt14YmJIOD;y(Q2ujcWeQr6BiQn}M^|ZlXy}(Lj~OBdLl2s*JWO!hGXbp663a_{lDt z-IMacvXjWU2sd9SPB_0O44?&Z&MjhlX&qm}VAER--dvKsB5tuin=Bm*ll<)H>IwWd zxH{<-J)VN`Ys^gLq5U#2IywFt0a*UBPMF$Qp$X@ph2*AsasQf!{S2`tX$7J()*Y?Q z)~02w-zpk1%jKeC5m&IRa&d^|5ai9338(;q4x{;iM}T}r zMsz2t;x7rkC*Q%n^bL;yBx(?LERX}p2;Z4S`g3z#QeTC-3nHy_be5O$Leuy6&vz?%x?>gowHCjULNjd(`s7S{loXtV{uQ5urV|D_5Ho3Z)g}Y;{Q|H62%B4{TVpTrqY+99OpebfrtVC*8DfYWcgmrfYHXpJ#F$xs-rd!^$?SXf3NjG#i6xvP z{gtpy!RyCTrPzpr`y5`~OD~01*B80rVoy$Ov>Fz^LCAzup=thK0nL#eX6plTAF~>4 zcM;WjA{JOD38M|K!)%}O9lY~|MmYl>ghshFwe;q6!|A|!u?g*GPp}+cpwz^+uVW%|A?}z7wK;;r>$Uaba|bJ6cSv-5hu5J=tZ@S>xnh$ zp7R$A(;9^MZ+4@Mh_XlFQgIW1OODJrx464z7D=Ope|TD0SCQ-N+ohdQoz}8(uk4Rg zo!0%{x>SH)Sy3sJt^1i1BcPQ&MB%MWFq;A+;AYE@hMhpNhV1(D12DZ3OEjKb3}p$R z?I|2wX(8oAhnkm9MU^f|6bK&$@hC?X$W8xolVE=>#aSAe2~0{WKMnyO{~wI~Wl)@L z)V7J@?he5lcMI-r!M$-O(6|H-!5xAJcSx`xjk`NE1a}J_LV`=?e%`5X_TIJUo0`A; zp^ED2i?!Bq9;a(#5OXgzKf33N!k6-iqP{>` z^fco<3Q=ac{{KMJCS6~QURhm|Id3#?xcX0@5Dt!x1~xW=K$~z>W9O~nh~F>LLwo+$ z32{G~79s>dpX&%fFrWDb7{k;ur8sGN1Dz&Sb3wPg zLH+?IN=2|O=Nmhqla#onruh&{eB`Jx*kr9^4ctFGPcdVwT3*}KjXhY=++qt=OTc7A z;!lMF*8SY(cWXGei+iNK9}?Qxsf+^Mi3>wtc|nlS*BLW$^ZeJ!vWrrsKW)Jd7;ZXF zPeOIgKlle#Q+yIDoMRzeA;85NZiajpUrlh99F8Zg-(Fvpm}wLIWGD z!2p1DEh-wB4_GIz={SK?aw9%>+3Jy0LQ zDfHnS-YTYrrnl|DyI@@g(ePm`fyHaDtf1Hk2?^k0m3mkb`Gyq7Ot8tSyYfEo>jM3g zaT9gaNK9q@{PZNhBkisdlcFt5=?Pa&Hhth78a=f_U&X(0dzThfppaHp&htygwRif> z!9wAK(?E`wQt{W&0IW2xQ!1Li!8`N8=^L=RXhiC&6#%j!CT|5t-1sed?Du1fGyKt2 z0hedUWsg1pi$r_jl zPhi@36!RCh&symB09{8XWb7-CjspX7#C81vJbv1i5w%g{GI;&aWA@gB84mADs+h1OvcB>1 zEriXl8gOhDGTi;4;Ia@&z9Qp>In?g#*do}lbCQ9-(!Sk9{eg`?#{O3>&`_{r=CGuW z4kz)Q2N}i0=*ptZJ8`vBx(T0PlN;SaTQ-56)H=`(XC^(OMxx+Q}+t}`{0Q%cAh9GS{EPV zDk+6-S&@t@>}i*nOF1)s;O#M-i#RR;((V!WK$&ENPbl%_>l1zsLqg04^gN8uAKPyv z9i4g+%J;ct%zqQF2xImOnIhGNp^mj|;X(+lj*Y25e&1*3Y2L>6svNYXp%A8eAF<;u zHpI{Y;$1+wEcR4ZNgp|UkF0JGYgzG*V4-%D$CNX2?H&=$GmzZ;6?KPz6Dyhpe#IZX zZy-d9K$l~FDKq9M$=gWmo3zXe4-O6Cr-&LnqIC1H@4NqGKdw^?WQbTDy_cYV-Q(JN z*{2A3iC({dd78YxpmE*1qv;7N?Cy=Scy*x&4LFaM+LnsNbtT(hT5(EWQlw)VrqV{A z8Dqx;yaeK(J-c@Z+zDnX1+pE%n1;Nb$w_@;M(8T5b;8>g;juaKWCf?P5HEVR(~=ak z^Vnyg_^VZ^s7?Y8wBM55Ef_Ibwz;^7vS%GiJ)$_tBWfD?8XsB4DPQ`>6oIKy%{{n+ zWMMy2c~($SrvU!?+s3%0wf6cK`86xincE{P_cCh3I`fg1v+lO1HsmHDcCBTSB|+RWuk=S!(mmftb;vFcuJb{(Oh9un9CrfWP%*^%x@1OE|M#~x4vh2c?G%*<%hgwa;^te9XiJ2G-*X*qqkuWYhf z5?pcn6ZBd-v@CJb8j2rXnz9hIv0C}3M`vPORPl=|ekIZ+ zpZV_NyDHUcdB(7r1*b#k&2~)sX{E&aYjgHBvg0J*MGrpZn?|0fX*VJL}>S2 zVFRxbd0~&7)zcfQsf5OEDc4{1E`|0gC86o7A78EPzs;40V~3bM^bDa9L%UL2IP})m zjIx1};soGOh3d@qUc?FigH?$WM7V9mm=Car?VUHo6886ReO?82FN5UYhg88#?_^zA zK9`0UTJOld-3oTgS6X{Tyx&uMzTOP{aM6!NJ=X;dvP5MqWhFTNXzS;SwZAlNRr47_ zEpep0-r5E;7+y)iZ&_2!J6=meInq=C3$A5WD9-Vg%tM!WTAHmqS54N1`$lHM$b%C0 z_Vxyp!9qf<4yx-l%|=8&E8J1()a1s_2GQv~L=cZt%a zF26Rr5;DMp3C$sy%`bazRKW&IlEb8h`|;e8HYNE|5BJ>n>%ciI`qw{{(3dO3oyl28 zYQ_QPHeRX7+eg0UrSzg|dfXPq_Jn3^bZnr=hfGJ8Ff~6X;gfn&1Lt(b5P!PuFrOX? zLut0U^R=!=9T%#a+QLD%l#-p&n-ZAHzxo=vn^i9sXDJ|o9FQHDr|7N0+vuE|qPq+j zymZoA^X2pusRtH3wSs$av4g{}Vw2=lz|0uAU@fENn57=csjc?#D9oR8l5^32Kv}@@ z@pJ|VCT$RbOt};OT3t=>)NS^R9DMJ-xgtp;0QRVLUEe=BdAitm5oWi)jm}NJ+*{fY zB(umK*_lEMU_#;bw;?HAc5n~*OP@)-CHM0%gdxkYxT+eT+^+m8CMnw4h=cM4L`Pc} zV}_c%cZf)k&>S4g4!KFd-Z|REz;*M>y9Pnn`bfiMdeE?oorHosmsA8iW&h#6Bv7Q3);$;KMk{fovnJatx=LttIi3K_InH>Y6%KUKmLSw zG)9-5l|e#D`pnai6<$zF>0O(&TlS#sNJi7|Awj3OIN^L@qb1y4Xk1|xgl6E%hL-Ss zxEc*JPtqn9mdPV)guv5ZNc#AzK(F#p_R4wJyWdrfjj(`^Yp! zoQ8(G=!|Gq@d3TvH?>&XER1~I=s)3jnf8`Am63e6WDmrVtq$2R)R^Jh?lF1xmYCJi z=2;1przGPRgMgb9df&=leaEUE1pl0@-90)W3Iil!9{9X#%==V4yVYHWtxkO5?72Fv z_Jhz~!`9HScomh)IQMiQDSAZ-AB{XBnj{_!MlcZE{@df62W`ICEgf8{WJe_sn1)ZiMwd~`my zOz~;&l!3wF3B>w`2TP(Pic2vfa_xzLp5r(PJF$)2C#J!8tKWT}U$Ne=4CrX|l~Hs0K0i z((H}i@+ecTW2&5Vr=+bS`ViAOI#Y#Jbg&TGu~$lGvR{mNOe47OT!ZlAyTRR#s`E_3(30}fTFO6La>j3FP2tz)u& zWMgJ$M zR4Dm8$HCj=X1n2weGPxZzuoyyGZzeu87nb=hxUbP{ ztpkz<6*$e5Ew9}dbW%fARZYZoupEMLgdOcAps(UVS;b+#ukT6I7BUsVFvl5-mvhO2 zlx63;O0oh*$g1OdXRBhicnt1R-Chf`TASZ54B%~gnbqRu>r*k~KPCh7>SV^57_2qc z19Ft>%$}vUP|FgRRyDAagW;!1MM?1EB!wssJ39o_2Ft{e&&(kRhkX)AKdLOM5J0>k zHg?>@kzJbCi}-WFczp7;&r*|05rqPX*F}9x%QwmvnU!DlEW5zF+-w^<_+!>7)I$d; ztkL9!-MZ1dd}-g_)?1bQ7W6RuGeO|r{eJRTk5peY%`*;7@ICy46xQ_aZ0taJc=l$y zWOx(ykK-y%B`-U85CpSv0iTj0rr}Dftdj9}DiqyRcrO#kM$D?NAC|LEJym8A4@xl+ zI+Y)+E^WcL&haa=)kS$}5j8r0!O#4Xn4L%eAxZ%RI9K1AbvN8#%R4=Z2>ivN|JH$n zxJ;r2TS|)92ud*PO`3o3_fAeMYHr8>sl;6h^fFV02WR)R^u;U{=io;@XJdFRPZO7ZT1 zanaWg#KcWQ=X8QLIT7jnfg=xbR$AKhWEHlwKwPj91PueEFc>8Rw?y;!w8KN;-GE?p=Z?N-*ADt;mOViobsk`{w@u1pg>)T{BI|sCi$pjg+0|I<>w( z{0NSc_EL7j>iYhNeWA1aVH)Z^zuw+>AV`YxdiBlt`Ec3c_euTU)x)~^{TcZ7!(9cY zVy8{^ld%qA@>-_1-Xb$S-6W#@LD2O04f?wVX$@mxdcyNvsv7kQk}BtMg;`5NF3p1B z=W8C4%+UsS8-hupN{{_pfeL#-%qI0Q;|F=oR&QLV&?xU*VRBecP(rf7{)8>2eLd9D zr37oxM&y_ZOX11iZxOmy+Ax6P;Y6Z5>m>*A0^-|0OTKl+EJB8Vto|V*zmQjuBRHK= zEdCutfboqW)sP@LJr7N<^+bAC=cW(^u7;Cp11NxA)kDg+dC?DjlN_9t?&G9EZ?=NTj7( zJrb#*zLD{y3|I+3MQqzM@dTRXi!10p?SC!nWxWiqc{U##{{{MkpruV17R9vMyM(XI z4%}#`%#|n3!xz5?Ytc_OFGd!7U86M%C=}Ol^rb@M0zFLS;Fz(7iy-PtsVB=BzxE!Q z2YYFrZ83 zgSW~iGjQhOFdwlX+kIa)ok9((KA`5iR{h(anhzUl$QjG|;};^F^D{O{pVq-8;O9Gy z!NJ(Y0j1PZJ(t1v1%HG-ZnxO3asg>G_U(uM2`~ns&vZsx*Fd3NY2x?!HdFseG}D12 znm6}NW_yj*ge(GUdHAj3K#eT45F&rz`YU<;k-fgJ+$FW`@7uyf3=6{^Zr*b-&Z z5{Y~BDo_jvRayyH0S``xA!f9=Y6#};WiFPkYyHpjq_Kmxj$PGeSH>B=c&t^14^>;A z?Rmzs2>Hzz^1F#x+_-S~@l;^R0Qkx#HQ3N`QY!@x*xkXohHEoCB9QHWPld(rZQB&q zJcl?O3N%Dc@TaoTOdr?gHYgM`0fX_MRTGc$+U`<9kSicld_l%eY?SahB?3X@K52m1 z_>jIIwf+HsKvjS z-k^K<*Xy5B`qD~6gUma#y&^FbO^;oG?iET$uO_(r{>X#Jt zP*o4VMbjLQ)U>7Kn{eJG%^#CrUn=|+t*J+;Gx;^u*erQyk5Awhm!6gv{h_7B@#IX# zN9hf~D`+kJNV<&GCVIPQWp#t&D&CPi)BguJ*sQ8;wmq$xsdK3BobQNigm|NF4oV<( zJW~%2Y$}+3p;r920$0ajG1#}r!v;Q^_xOzvFcM7$FW%~jcta{W2ip!`0K}8CtPG?2 zn5{8JD-Q~my(<;X!I8`o2-8k#3!ny=Aj=$XzYMVWJBsGl4vUG!kPZ@$^zD*LV==A017Ktt$tf)!|W$EprlgAKs7o-GX^}H!0Z%|0TCf zDZUNPIbwf3CEOwQ#mFqcKX{=mf>>hxS}1n+#QfOa!mi<%``ID<4P{=Jm8~tdGuY5E ze{R$Rn<`I0fZ0e+C12bR%goa57cO%$Pumm9z{oiIk)VdVJ8l$cwKd+5=vfZ7dq9oN z8T^K9mAs!hUEB+C5q;G1OeOLH-$*omaN{=%$9Zz!%sy?N#zl1Cj^w=(<;Tzi$q#v3 zh|Kj84bV_xCZ>8>eJ4^ZY^R}Wyz^k(fv7q!3FX^fTvyw|)$e=47Cu;K6x+l3Ls1d&cTZv&D1hSWpnm(oGk-De*Jo+h!luOnFM z)7U%xxqiQwxD9@9oi*K0o1niw+Ou5oO9eed@xQ)iVoQD)#8Klbh?(?MIC}_6Um60n4q^Tb^y1}RNCYxu*mg^3};&zQNH2>E!!|E zzKS^uL|t(q5id)f^S#-{R$S3>oQU}T`;Tz&1V%sy z-`tWY1_YZmPfKD#etlvRZ7*A3HyaS-Mzn_~piBRWU~#!1+T9DHTrwCfD&<6@GNb#1 z_K-)!cotdwm9?+zZHn#+wp|9I)(_hCe4?-sbbMG(BpqWfsWo3G9bGH#=j$grPNh@! z)L_S08BH*P$(QJ&puDca0m(*JQX;)uIWr|B=7ePF&11CxE&Onv{;TzWoqEEF#kyb) zVwx%?EU&OkRc7<5gc4mv_4%$Aaa;b>79`PGVzBp6i2dK!Hfs%A(5}BNXQZMsAASpx zA`B>*!3>_(nL-0=m@k&tHYTWf{P%RRtnqO@57C7dWF}HNfoJk1Ihl>eRTz(%h^vmS z|2|G|o{8uYd?j5hF32bRRzPUAKIiNBWW57|ur^;D4Us?wAhR5Ke`z?nt}_=j`BbFVwnB{@k+=|v zp;%=!*C`}2kF1gF7P=~-_Q1Kti28Gz%dFw_(f8N?m{!&2OqD#*MZ1*B+^E1fL zYghHqa>L^xqpLHY`y<&QoBn0B>_Aw76$DvT27`4O=Bn0)(8`9R-6Ar za{h%RhROyJ`LAHDwzU*GC5?{Q-NrU$V$tKv6d7+z*}jq({|eJ>rrc zf#g&u9bFh2F0P`zB7xGHeR+{UuIjq2-cch1Un3OCL!9BSQpK$*=V!x}nN^t+vvu&S zt_Srk?Fq!|XLV9$|E6dgfV1ZrpJJkeoYm*P@_<6mLWhlf!wE?JKw z`L6TMPGv)E5Ix_2)eeLbis%!M)z>Pn4@+XrsMED}APoND&$eifEnekSH|_oOXAmez zl8gmpCkazYI~#K%M?NaS=$VFD-ycU16K3C8TU$}&zx-@)cO$p?W5^>c5%t&vIqq1D zjyF`CmynDo8DS$5S_08>5{4bDeB<^W6yYGzp!>Z7s)#W}5-Pu72k?iz6%VG$+T2#L zuApxBwe9E!khEh14ShCXJ&BPZjETsmWf(;Uaq?oVRs)x>c)4wVidwT+E>G+~{H5CZ zM9HszhBpFl&;OgOa0ds#M9j4~ zvNC}*NluqQDQSpfcC756DbW|E=wb*H%A31=9>34g1?9qjYjOJ*A9(Vf%T%6H!tme0 z@6;gpS?GT7cc*vO&eo7~foioH6f znVCe@*Y~n=W;9VKzV5!)qv%wiV+!*AwQ(u~oE~8(7tI0*-v*zXs8S`ooG2OnXmP)n zV5`dtcr`y2qfT8bc6c=<*6dZ9$kYrL4ochs*r9$KDzHmBLVF&-?Hdf`)`&zK{Ncxq zm0&)=`@2xqESU6s18L`j3Er(Fs?{$>EU+KEEi=1ivo?8?L%FsgX9WMl6P{5J-j;C$ z5`20_j7^C?!UCr%*)PogjSO3?WIMXrA?kqJzXdNsN!0(im8+kHhLZm=d%G~~kXl8Y z%hK4|whwIS!t0!JOY7JPF=$@)drStGK`=||^-(7c&*!!L2%_u*@$k>WKDsL%WLDZ( zU-DH{zW=@R*`{LYD>BVJz@X}7k%YI);*~C77<*#}_P5;C` zy4s^?`lT&qJV(;ArYWJhyH_#kCwtk&V`;9bQy@J2D|D*J`cV`%C+3gUVFH`eN&DDX z!a_t8LC36_LI|A2qAejH+(0G&Y_RHHSrXh|>Q z1%i*6b$HE*W1jipDH1)TpFQMcTY#b-&A-E`L)rEZQA z>C3F+Vg(ZHkU66%Ggk->h9KAJ3FQL`VHFZZE{amuvLJ@ls_}O+qhUhB@EJag2@RYI z=ou}nhqe=8|2~@OEqU&s8HQZNjj-vZ1iK#zow+DBxkh8GtLl{-@-LR*!`R#PT&4`m z4SB`83*_F)G0OemU)e~)+$7!2ITNzn{(0gv8zMFH02HllN7OF+vUee5(SSh}t552e zQhp)2JD(rwRVw=wcU|T8M^d3}@EL7?aj_LPq=fOZV}4IpdEDX>QaaMmS-{%%GAlGJ zX@g@gy-bK<9i|ib>Tw=qB(O%GcmxZ ziYs3RwldYxasFF2Do$R9Pn%6*tYhc72$n!{HlSs7rTOG()N~T81SjbDxkH3wo=kh0 zYC7IL0iu&vIKZR#H=f(k7wP#l%Wb#i#-FMFqV(;+gutL2mrL`-X*aJ%^Tj4_)Qyq= z%s2I+{cQc0c%K`Yle2V>_ZR7Sa+j$D;PWeiKn#sK@=X}~At+!o_g2tB2Sm1@48|18 z28;ErE#dp(aJjpC12JXTUo<^{&%f}m0#q%bIMJ_PwtxfkbY2ER3eQ1mN>`p z>!ci54qo(2e2((^R#QeoGf>TD>=d|f!tJUJ45##+A^3N0rUP=G=E;{3)%8}3+`%`= zM^}}&TXvU1Vr69CEP9QL!7wCDfwu$9_vcNaJAZ)0HK}a@zY#fD_{Q-|M248!e?}4| zIbxG|{A<)jk5%Nrj4pCvh~8QBo&#xJSM@4Z`;*N_;a!&VXMk~6B#Y~K zLJuse>W%-q-#ynT9FumWR0Ltd307kr&^|Vf8C)^P%DnXM<5FpRqKQtc6x|R{+`WK| z#+XQ95VuMSV)YX-a%B}2Iqk3wB`Quw*2#V&Fe0=_`rl)0TUqRCY+GR9+v;`S;yLafx%-zHNR^C-Rgjk<}qRx*960 z(VE)eib;ZaVT9E#Etc0PV#6Q22*Vw#JPa`;p?_uo^cUtgC+T?hOr#SXf|aq)J-A_j zXW)9!k<*1iJAzvS4!{Arzh{0}+R zMry#S-7H043?S%*>rCecxJhq*M-z)}hl88*;sY%PGkKKO|WTP{cl6RQUB;lWJK{1fH zJ{W;-`o&S!vFmM(!~s5;P1r^pOJly!Gks#JA$8bH0ZM{8?(W1hi|YosZ@Lq+t*LRS zOzDHk3M?HR41yR^b65qHyy=&@<$0SL{XL8$!TZp%iW3v^j$d=j-MdxNCkG6jw`Ei0=KAvwp&(=_IIkv zdlS|8N4IcAGb*3z6FRDU!eW{>3BwI?vC3_2unyLjF9K3^v_#5OtgAq#Y#ST-2cp(I z0sVy)_y4;gFLrD{Rs7k~7EkDFa_o8h8e8H@j5L#VN*~6$i)dnTYP79n(wnd`Ij%^I zx_j#bcYkQ}3kHFjwsOUr)aC>!9X)ZPi>nb}UGTZb zTz~g<;Tt(rb@iIlGhIjS%stCviI8tXd%A(u_2GLv74YZx>66gn2 z+wU-2_o9RAFBV+3Dl2!{A-YvH+guQl3tP2=3qi+6B#PKcpkn7}n3&)=o!ymO7=K?= zVQYklFE~80>o5i^x_Pd|LEfB4@$xGNCb(w|6U>UHWQcqzLUk)UCHWZu|KrS&Nr9 zBC`%a7IWaov4lk+*y<1{FkZps)WwPb!(Ak{(wfQqBAP~npLb+hlUR-@Kt2K;=D-6X z0trXZ_)iOI%R;a(0uvOINQ!Odo@P=wRfk))YElw)|nw@V#OBjR*i~HeYic+B`v4DVaLRH3C17pHVm)r`RuT-gm-D`^TxRQurpn1p+QpvEB}kUcXWbkRvWVzvr;TSLK6aShb`=R=_3aK5^*2m=W0PKSm`;5ypMmREp3Q%S17e|p=%r0*ZNj_> z6_{qiLIN>sbsBojEhVqdB7g^T@A;nLvl@GfsX^jn&t%LLdt|#G-fhg}etG!k+*D{F z?miC)lDK;!x1J`1fN)F$|BO!^K;b}-fJaCk6LCxnbC6BV#Ebeneu}l=1q|<3SBqDd8{GHVy8~ ze_Z!?{4yfKHt`*EVq~XNDinp`h+kgjcnKqW${D<;8HynEBSmhEfO15|sGT};lGXqI z{$yZunXG4vcK2G5#~l*&ADc z^O)8;b8c}yJRyNd9V?-zt|ksNP=Y7H5;G_}U~7(~lpG^#@{C7RHso=?;~InhD>APP zttP?8(#;7ib`SxNR0NJ6k?Q#PRQk0|w2bISQB5)8J2Mcau3lJD0sLPqEO%2~(rDWs zMQ%3OZ!|$G9V~+*+SE`SPafvw=|xo}65j!ymUT?RbwkUaJ){L;pWJU(BXt34{Ynb1 zmXKS<9D$w$z1+^ndDlF$m zXvy1mNNz20`?c}!?=LJ9pX%FAV>o=$yr82DxSKW~=7heJ*&=(a`FVq@aNw4ls7TKz`om-^%`Mu<>P4F4tp?~KY> zzv71H&fj?-HWid%nojqd;Ef4Lw5RY|AWiq48D z)Md-WPw5RcP>-#iWekiDT`)l|QKTGJhm=&j{sthW{0ueyY%S+rS4-s9-9B;P8Qdn= zN(TwOTldTUi>A3$$EWq*eXp*|&TF&Li2$&2I26Hde>>MSoAtX%J%Sb!s+$2FR$X)X zJk%wfGj|;r1>*{08L_5n0NR$&3v9F^JTS9GehW-q-k#xU@$4HL8)X08b?zVXWwqdl zUBVKY-^IjBQy8w1%)z%g21LNH7WM5*+a;4#65Z=s(#a!SiaJrU9?y6@+KCOBXZV&s zs)8x30{uKbS^<7#kPFRr;m}})inwv_K$+r)pX2ne_tAG`^{T{YLWC_{ks04Dcp80m zS9CsLcAoRs)Nk~)-YUIT-pu~|Z)047B%Cz)@Y#G&Myi_P2tD4P9V7E2`1cf zx)Xo5vl9IS%llGI#Yjjxe^E#sa-19AZk0J~i2p#pRuZblxvJEj^Z9ik{Ofl1*0 zTb3~j_0+w%7LIXs9@y6`>h^DZuV>p{ZW^C5hOd}uoP!D@Kqf)LR!mbx4qiwV8cJ3t z0SUCDmX{2un9K^&Bk-dBicDHMsf2a z%)4!jD$FA8r>N|PkOAe0z)`jXiRp2P!rYvs%p$jMc=ipo!}TtOIhyl7`Roo9Ihh5r zFU;7*#b0sWF)~(-Psr*&vV>REU;adV6li(YLwX61x_jycM_nnOo%dZ;RVu9cic1-z z7mYR6kdEnz3ku-BTM!xYC`v|brqPj*W71t zmijT(As1gS>0c-w!9R4IxPPP%&%!b5rA+sKzKXmypN6&msx0Z4rXgVVli4{Al~up2 zOwkI!-@}lK-1+_w+5hGrrZ36A$cR4D`E(DsEQ+MhKY#MtF69l)$rILXQ}*A0ZL)hM z;!cLCfk2(sk1t`@qSxvt6N;LlTwICEJJ<5;M|HS+mlJQ@87}An?TL#5U%zj6AdV{IE|GxQ;Q)FQrA#{Q++p^GTI zE(dMV2f4^oCnX$8o8Da2you{yj;N)N|0(K`&e4fFsw0YL5$)?KD*C6Xz$z!|h?2*U z|9j~bz!k2tZoB<2git9!Ua}aDJe8=fXcNJhWH>{SLyzHi%CJ06V`C<$ghk*5o*m+q zU6|xG7SBA#N+;Dr_JA(#l4hkIvEQW3p`cBG3XszZPCCe8Ac$I;kewMhx2*_bzGkhw zNEQYgLN%W4byuT1jFg8JONYGx-dJhLuu|Xc^GvLHtp@i`oiGYEkq22u$G383qUE3E z6h(3jcorQDJZXIdkJ=Z5k-N@X-A2#jXJ3sd#yqr7tNZL$4JwmrDo6hb=+6!x`8*!! zr9KVO%miEgVvqLp>}9pfz4(Y)QOn>F`6{T2CV}vWS;6RWQ33p^=vzXWC$9g9seC(wgWBo(np_FoGI0F+-iyDk+W6PHd;8 zvpPjnM9b=$@24tKg3*mqmai!Z6l(s0VWXqB*Rq{=Ut{b$?kyu90es(rky_ zzHIl#FH_I#jz3OCwH;=(x)gu~-wgySZfID(>~a8eyg~g=z8}qwAI%H?S783C#-9@U zVDjHu5feDz^i(4oJ0SD3iy5tp@M}W_Dr>vL`As*(vlr2bfVJa)6$=3H{|V2F3D{g# zt2hXjaZWpdbu(i}C^X(jG;t0KZ<|jXG*O*b_m4>g$*5pgvOA8VQ6mVMe`JkVP% zDJdmP?Cu_`sgeG9s8)4;&fo*i7C?{0_Hn%UrSKA|k=GrBPa1_fFTwZm_nD#A!u&@7 zb=>&y0ab26t}W!BsH;TR^w?VTFY%#)Ze-I+DKqm{R$Wy$!`Kq)x{Ds{ieVbH4P+JP}k zstz#>?JtCh9WW%*OLm9L6~hbwzqj3EK~)p7JDzhiW=H2Ejx5Mv!Mb3uJY^Y-F^S9g zhH$=_Jh*9ydTAcu?z<3Gx}YK~{GMQu%){B09g$Fsm290RygHww2B>&G|B9{Yz@O*Y z6jfM>jjFf&>mGE{OVV6ytBG*eq(5STIX-@yp99-Q& z`>CsSgf59R)#X;U+9$u!at!~nkUUFV+`rd03lnf5G1eG%{C+MPZr!`yIFTP z?q^@nomvS}(*LTJA^5KcRr z=H0nS6Cv#^HCS@XkywDvtM72!cZ$<&K;nAUGc-|gnTzjprd9qFp}}&!O-2pa!lEy? zo^$W!#$&_ma(E)qwX0Py!JU|^iTc7!=8f>L^pkh|Cf_}a$43Vg{B}Wbp zY^%iceJ-l21ouBPL?~lT-5tDCEeGVwVv9-h?A>H!Cj%=P@qi;WBf53$ySu+CY-?>G zTuF$WTCyiGI{9*^|B;WWqN>>^JoY<60@guMJqRNF{t6IQ{G`Wi)hKy)Xk;Uq<*hg4J?3?yEx z=lF>kAsP|Q5>|P%j;EM%hX*oDW}muXl2uYB$f zvI<_zl@~bMIRAV8@g(&DE04uQ5|+uaP49xr&B{J$5Uvp{10Lyua|a zw-fd|{HpbEbuL4Yv=0jiI_G&pZNI*&_;h%k z-fRaNUsc{P(kK%lgiy;pqJ>ppt-?avTzckhf7R{-?OH?VYF>^fo-lf?59PIC)trWFo^wJipTcq&6F4E3 z_I8-;V$3T*_*sdWsgRQ$vKj=fX--7Lly&h&0wT$(Q;I+%D#Uq`Z{9R*7E5;NhtB^n z{0=B7UjZ@1qB5p^WmWUV2#|$#<;KQC@%VRS$5eQ+|AQ6f%k1qsuv;w-^e?zZr>@(S z)>Pu;63{RDRzU_KR$!T&m63PEE1{Q5%_xZ2NU$Yx2SL95(bdi>{M7M@VJ2NCJ0WUM z&)dM(s;V1rIcsFR`yW~Gz8sq7ME}sWSy`qbZFw6JBWEp|y0WZ%0LpX8KDpJK%rCM0 zIqfV}ZnE0Cn2l`TfQfA80D4hCrgYY)z(7h`+}?|-fbCNyu^tt7%VgT^6`l&!!?9@h z$G#w)wGOhv*k7*Xc^A3TuZD372}?B!(lG5Lkk z%c_0zjSq-VB=P(o2b&2PKR*XsNh*}#fD|OmOZBC~H)WnLqO3y_hrMv90OScME42tZ zag_Id1QQ5*>gABfOx-o(K5IPD3lHJq@4^ccUM9Cy!3`;)(n|{BIW=>a%l`-Qi<|&7 z>+rv0Evf*~c&#sl@g0pwSa<)<6xY@Q*axSKsXH?H=9(liY}m{$hJe5`JP53@Sd&^y zRFhx6yF-U+5lZ#pfoxz}pN4BDz}<&lxZq=28cGcnvDFD1u9_d?O8d9L@e2l16$wpJ z{`(H_etIP*aPqzGVrm%3>>ou53E@JEj~PBGk{1q8?Au}|f%c4}(H9bbN6&Gru90?o z_qHP*llO;KSoNCA#_`y&tsTo_W7iz@&x8qSOrm=VQ2#DN&|l(RcUkx^p4KUZgb_pi z5?Vy0bZBz#9)X8SSw=~p`t+-3N=8~(dY5>561$wCF8cd8*c>nP(}YT(aOa4u=^jr| zckS+eH7>U%TfM%OB?CO;k6>Y@UQ7znKuh~x)RBsMS>qFA7WSUF(r7<9(<|Z_{HkVR z$u>--KZ#+C5N^KBju@h6KhUO+BR%X&*Tb006Q_*+Ss<%KUI`68@r zVp6!`Mwjvjz3zn}ZRH;uG9xN!+Zz0KW+m;_olg(tBpiUTa?Fts<9%t0A$e@nl6u)e zNAZg((}=^G`%Qq9>qc(h%Z&(NDlqPxh%qrg_PlQY?T+InVLo(*%jE9$ig3x5H=28g zdUZL7U$fN_Q$5bKxHv*9v5pQ1F^*|};pf;!9eW2iTPR!8I~R(#$D-mMb4%3iQd@;M zA=xZQkma0?EVj^bY^Pl`_zl=fe zM|HCVoH4QttRMm)8xiz5ttbsi_msiIh$)5y4E2%Y4pnIW8dOnrt8~XXanhrI@tU!e zgD(K1OB?2OTwrk{9YmqHGBjd5$JvoZG36t?4EX0puHXPKrhQ8Rxp%_Vn=h#U#&L^4m`@{SB(Cty=jLSK0|Hzr3*X z(}N@m9%^&jBYNyA5+IPU&UllMnsUN;RTJy^xKpjI$J#JB$Q)jBLR)hVeWr^bYFtF( zCh%^l!qJ^WT`F)m&(mg)uFh-{+z_Ux0l#1ISXY?!EZl%9E&Y$hdGJErL?A+pWf+QX z__M@ze$Ya_l(Va62x|Ge4}WD$7}M+STT{bZApe&DoUe%V&I9qn(?tsgnL`FhxxG#87{tDh zk&ebzHm3Yly|=A2gDJ7K46%9I}@X7D+z1AsKq4 z{S|wknx37!5C8BUHbYO(hNe42hN`I%WAR>4>&wT;KpoP=Lo>S2?pIdmi$=}jxKKO{kg*bUBx~p^G19wWxV9H$qnz-penIE=0x*k zaW@hj?(CMuv%5yGafgOi{a`GR+FsuXiTEh!4M_1@>R(Hux%><$kpU<*nq)K7!!#IBCqBGCLr2cHtlV=sffW zrys^^$`WUKVsx zBmQBf#apj6?)Tf&bT2645t*!L4is&es#z~#?aR`n0n`y$C$Ha6Q&{_F#l(v&TuQ)Aedg0L!suMk#w4E!EGq0kA^#@lcK*IAmsNg?Mb+vyg8g`W ze*Mft^4Ovp@L}QM*9GYqXx=N$gS{*`JE#9@Ej3BR2RhA)PWc2=a|l-WL|wPhKx?NwTtOEOTk zeCkfbTCeXRk^x=_PEP7ZCKk*Or3eXJ8!N-~$CaF^)kDq>k=L7V7#2U5|GyvQSxcB6&_nuA-m5v zW$^01ybT5(RR8Tr9Z@a3Za)9lb&1?EsN0)fZv49c$m8TzH3)&===vT}uvgqiSeAhw zQXP7rN?WAPA5n#cP0+u8fXefkj`SZ5h?hT|5u!pEU-8hS9ciEaf3%dDlpF~FDLQp{ z;ihxI+RKf>(YjG-MjAl7sq}p>#7lg?z^n^!IGZBXN;91m6kR@kW^^l|3kHxYWd=KbqpC0w?Fi=g?u7axIhX!g-j z_KxvRbmMQ5Q-viLHIs!D;o?a#xBEXzGMh?UF4uj#sqm;HAb__9uknBUW8EB(@=Duv z9!PUJ9;L7%fc_l$ShKBWV(-KaJ@u-!o#TdV7Dwb3z~|Z0FyAlLO~N_L&!U=mf5Oaq zG|!`NyM}@JUB@Gksd4u7WfSWsEVy+{dtq#29RQvg*804lGdQ#1(EQ#UI#4$Xc1ucw z(}bKG=7@{G9q7yht^#9v#!e1O#m?o0-gESjTvND#4{t;5YAPTR0jx6K9`4p23-`CT zYt!ZLD8UCO1DFcLfUX`^LTdB9pN@wiJPp`9?Uiu=*|^F5^j^XwUt5Y3IUr7e0NjSf z0^H)`S^&VaO1YB6LxP{ko0&cRF3u#SZ=YI5pF&nh=Uu-C$^Lx8zZb8VTsDgNnI{L+ zCobfa$zXsm7=iO6x+`rmCr#m7jy=+dwHA+AQDu<&QOMa zV=7E*6jUPJ5 z$mwVatB>5(`CyXxS$(GVohhz0 zPzT+YVbO3KtpC0kYD(XWc}ApQTx9FgQ$Paa_w3MRFV*3xeu~kDciM+-1B6CeAeF_|1|9iR$3U7VS*UW zWTTE4nV2wg@{0YPHMDcfmJF=c^tA&0qVnBssjbrpz2c1z^kuGr`Qg3$qnVQn?x8gH zb+5$k0phP8EQwP-FZCABx~%hQg5G+LOSeW}UA0hnKp7kxv3dKAuM-Css?*>HI45hv ze@EitPNTj-5vPTEi+*Z-tJnatFWtB0b@U_=0m#ANNc`LD9NrQ}M7Q_*uQF3;BJ!Z3 z3=rFGU`nTfs>dHuQiZlb>d(a$h?`#Wxg_%yV=0cDxhmrRhuFb3BDyb0%9al9IhX4_ z6ZF+tg4ePio{8)_`NX0Dy##SY#V{RnM^$|MD>3HR4o(>I+CU-BLn$n*%YG2_^SR^x ztS#~Q(4{?7SL5wda)gru$lZO0Z%qCd++@fYIFvA|%Ss77=%1Q4;=YtDKmR#Nf}xm- z%8=}$bG#uiRxe6x@KP(C6-Mi?GlSOF+$o8PsfySh8Q?VrpYpB{qH2#A`)$B$7-DYi*?s$7sILInSLoY-d95tY72tgSOfAykK(vIfotlcUih);enxz@aXUJ znZLB<|FEA@^g1(~KtA78LIMH&NFlQ!?-?GINhT8W~h)1#VZ1 zlGA6|=yZSPPz*9%e?%?x%$GkUTvTDB3sae0Gs89r5*+WwXl)W<+Y0k_Q_$|=55zcu z>d4x89ngI2@GSVT*S_P(+OhKprqa&71C~9C762Vl6SM&5LkIDbx0-mp8VEN(HO{yN z`iH5eoQjEjxYQ24MOyI-`s9XHUG>gA5JK^O$zzHUNP6P9VX0NSXqPtcJgEMI`dzH` zW`!Z>a()%GcZ`l8Z}N{!2jtYFFsoPARQitH8O&{BW}Qdfh2OvQdXTe<%F=rG4N4%1 zs8~zS@4py7m;OsHblHMoVJUdoups~c(-#Bbyf4R^J0UOQ z$n+22wt;0+M|eA&-D{Sls92nWi-?T%w>qG@S5k~(kdQ+1H&$h(&)j7${uamJOp)+M z*r9q^3fgq7$`EULgZCeRGohlhHu9Ma9p_@|su|`Q6 zAJuBbZ;_N-N$3N)}e)UHr zn^!oLsH)9=QfMx6rd_Lm=2-Em+3qs&@@rKi)-K98$jXKC>Zsu##j*0iJaO+gW?D85 zB&NUHaTsFk&lJ0n)eZ*sFXoZ>surWsNrqCueKU6-Bb*)zVfqU$_=~+bT{@u zQ)*jHiv5wJb7F}!f%~|zJ-V;9wVxkF*Pjtm^UvQ-uM2hIl&S|uc6~sY zW@Q6FOV1y1Uenx1ynX2Wy(w4_{B@l&6%j#Q`#j|H?e;;+>3Vg@N1V_*r^oH=ll2RW z)<~We^PXMpp9m@6(HL$w&TQAJ(AJLlx^08*?q8kS0Qi8if#3KRlFmu8o~hJwn8}?V zo>(upuw{)8U-ja&qY@d*{!6nJuh7$Zml@R@&g?Z!SV+r(h2*cOGUD{s_zJNX`(xKI zAf>{#bE_4KNQ3ilG2U#ZcB+edtSQD}w7)`2BXQ59Z>2~Vd}DZP8;8~w)q`RY)-!mv+ zoTS#`R)+2eJ1VH0q;~f-^sVjtA@Pg$Vb(pLLZ(GnL6>wK`y=UB{A$aS zA`&-^Gvyk=C$uGJbA?VY2=nIO#%_K5?ZXCNtBeP!YeB|a-$+UJ{At`&I;7Rg%~LHg zv}#7A2u@A}CQAZl^b`js1x8~AK{>Q4V-&t+#;`1Dv{pWss4R+dqXLS~H6spm$2X~| zJ8|_=iW*wRd0*F7?kQcWEC$f;f{e{Rv2a>lbzv<9sx%LwE?vcX(bhQ`HA{S?zzA*< zpHFTsH{cvA==t3oveY8>(Yuc4-q`czns$aJ(F$Tqeser2Lp+v#L~^#^ByzSj1d$9G zC1Xw8`D7O8hjKGp2D9~?_4w*&tgBwiCl&LM;v!Hf-Co}nIeW}sDYbLHaHKit#O`5l z7fS~IQNi4=FkVqc8J-tUYPb;3KM9YIrw1q|c2o2!R8oTq3qWe1*_(>}jnoX19Tk&^ zUfn5f)fW5=(J+P$K#rbcD~N8WC?6FhO&yclMwnRHo1i-wd^!z>AqGtgVON0ON=YJWqez!K{ z*TovX(uJ#kJ;Dp8z=Mrjw!mzQ@e+)|BN-ep(T_XjT+bf>hUMTwRUPC<&L#jHVi(>r z_qIbq2<1~BHim2%1C4y}WAM@GJhmb#UKvCZ1qbjoWWpfWjiAEu&+ zBDPozZL^S?bYB94h4X6d^-yjLtP}4!>Lm5~Ru`hO5q4#%T$ghBpF+wDE=v37o1w8V z+r{-iQ&9N2W;}jEliPyicOF1x_ncOos?%xf^iqU(&}uU{0ExI7vf&b|{F!6)Jf;Hg&Pe~L;CSUC7Au{)mCpBm1 zVMS?FUF1qTJ{n$J)v!|fYz7D#vmGyQZCH6U7H1Wur8OW*<>vnE=6exCA@co5$uX+) zt z=K}7!x>!(SN`9B^o2>mi%MhjI9;h+Y_&j6}+@UOpC5Kf^^8Q?BNm=1Cjc9Umxrv_& zg0;PLBo;n50b@+Up)-(*Ho7vl$S|B%AjWjjXd224y0sEw=9vZ6v|xId4mp&o^=|19 z-Iz*=rj0W80F@DUSr#ZK@Fr zS7dC(+|Y72tVKd@I9LaYDmZPIakp6nA7cL(!=e>6>z^P*91RYBT9$5Vp_Dz z`}yXWuA!}cqIG~iTVl?&bP(GqXkxHuT;v&=6BFOJgS1QFqgmyoQ zeAk#X`}T?{`X%~l;{^*enO$pfIUuTV@tgXI?fT<$C~o?_tBTWMA6+zwo5Hr@;J;RM zvdC<=h{KbALp0VYg9(0TohgN1?=4i&Wa3)gWTQSyN7Z}h`FX0~hmx%%tzNY!KK%ZQ ziZzF^Xz8)iWp%1H8RlEZeJK@Hc+`rr@Ka7SD+C|hfbDQJB&!dhw4&FaoVQHrtJUF5 z9smV=#hoQV;q$eQxLnt>A@(b3kOI;&H=8=@q8_%Io1Y!fPpVQjNu09J#_kDcW?lKG zpz(hi8f=voq>VoH4KJfD(T-cPL#oZd1OHL)en~4xTic!4JRzG0`e8Z!=<(Ye5?rBO zlr*-W|Dvq!cX4F`a8LdJUSr1jYW|;V%nNvZw#H{}J+}7+_W!0;SPRrayR%???=jERKDa1wiA<$r z!6@o{@-vrH>zDAZ$W*g>iC|G!bR&aR{Dj{#i{sQ)(TzXr)zS4Csluszbl40k^wS`0 zi;9$4-hTlP>D~S%`+44PeUs>YOmgE9yaqz^q2ZAjjZu1wOg6~_zw+^&PK#e2jJpPG z_m8lh_ZLO!5~T<8{wv;;d7jOw+Y~h;s3wgMb}-3{0@3d5?5d4igur0j6EeX&urxtcw~pH!;YUBMibk`V!jkXZPaN zk(m&f*@nw=myOdsBC&b6`Z|xhSc&ouf6#yVw1b}NCKMQ=^G01m&@Zrt+W_!^)i@AT z2v}q1hwM}HDL+!a;cx+)15m#5Fg5M?w;rafWBgM-NH;E6>+1`gKs8fXNayJRq%92t z7{D(tq!k~91(rzqo5cYXnoX>8#h@qgm0(}0(5G`6Hw?_Mv|1^R-&B@X+k+}5=vna5 z>0ab}CE^JI!PxMRVwjp-mX2Tq4yOSu@WIxeUAG zM8p(fc|i(_zz$dlCL&F@%AE_#I7-(pIzq6B2E$kMdKYUn8R!zLmVPmP>0n$2?pg4&2v#XDVFW(aM&n5raW~YUslzCTj%55wNe4f?f@@ZLAn%QDFkIgPg;i%?W0# z*5O3DSz%)DQdQD6qonfn0MmVLd5A9k2d8vC@A4SWp7yW*6&GV; zynhZH-AgK1aAEQq552I`?}C+*HkNy=C{8Fyb8{SBV_MObhOv>$fO!#?D?7Mk23Ir5 zLk`bC57!K>A!3L4pSjmFjZ`&Pi!JI&E>+^;k|M6YTX(xeXE^E@9p>9sZ34LaM zK2K;oog8O#T`Lx$+1#8p44cgk8+g~*0|0tMo@YqgZ~G8WTgcX)zyOyCkv}*PmxgO* zEyX(8uUdj?`RrPy;hkJ+m##wEMZy(tOcoT=2Ait0mLWp4oD%_sz|4U|OnhlM1j2pE6qBs;0-+O^#3W}=fT2noR@Rc{y0 zHw?@I=%-7V-zvtqgkqrUxpsGJ0N5&YH}uT#=xWBx){??K&NspNs%~DN!Xk`RIob8P zpu|#@<$q;iFNA}vPb?+V&u@(XHqw>eGaEm1FzP?Qao?7aHMqcH-RtP#b%(~7r3y+C z5Uqb=#K=!APZhuouRNBBOUaOTt)j2+Ai|}pj)V!CRXWcot?JogR%Z6)GJQae4?