Merge pull request #1910 from tangly1024/feat/theme-landing-2

Starter 主题
This commit is contained in:
tangly1024
2024-02-23 11:36:39 +08:00
committed by GitHub
129 changed files with 6471 additions and 560 deletions

View File

@@ -91,6 +91,30 @@ const BLOG = {
FONT_AWESOME: process.env.NEXT_PUBLIC_FONT_AWESOME_PATH || 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css', // font-awesome 字体图标地址; 可选 /css/all.min.css https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/font-awesome/6.0.0/css/all.min.css
// END ************网站字体*****************
// 路径和组件映射,不同路径分别展示主题的什么组件
LAYOUT_MAPPINGS: {
'-1': 'LayoutBase',
'/': 'LayoutIndex',
'/archive': 'LayoutArchive',
'/page/[page]': 'LayoutPostList',
'/category/[category]': 'LayoutPostList',
'/category/[category]/page/[page]': 'LayoutPostList',
'/tag/[tag]': 'LayoutPostList',
'/tag/[tag]/page/[page]': 'LayoutPostList',
'/search': 'LayoutSearch',
'/search/[keyword]': 'LayoutSearch',
'/search/[keyword]/page/[page]': 'LayoutSearch',
'/404': 'Layout404',
'/tag': 'LayoutTagIndex',
'/category': 'LayoutCategoryIndex',
'/[prefix]': 'LayoutSlug',
'/[prefix]/[slug]': 'LayoutSlug',
'/[prefix]/[slug]/[...suffix]': 'LayoutSlug',
'/signin': 'LayoutSignIn',
'/signup': 'LayoutSignUp'
},
CAN_COPY: process.env.NEXT_PUBLIC_CAN_COPY || true, // 是否允许复制页面内容 默认允许如果设置为false、则全栈禁止复制内容。
CUSTOM_RIGHT_CLICK_CONTEXT_MENU: process.env.NEXT_PUBLIC_CUSTOM_RIGHT_CLICK_CONTEXT_MENU || true, // 自定义右键菜单,覆盖系统菜单
CUSTOM_RIGHT_CLICK_CONTEXT_MENU_THEME_SWITCH: process.env.NEXT_PUBLIC_CUSTOM_RIGHT_CLICK_CONTEXT_MENU_THEME_SWITCH || true,
@@ -154,6 +178,8 @@ const BLOG = {
POSTS_PER_PAGE: 12, // post counts per page
POSTS_SORT_BY: process.env.NEXT_PUBLIC_POST_SORT_BY || 'notion', // 排序方式 'date'按时间,'notion'由notion控制
POST_WAITING_TIME_FOR_404: process.env.NEXT_PUBLIC_POST_WAITING_TIME_FOR_404 || '8', // 文章加载超时时间单位秒超时后跳转到404页面
ALGOLIA_APP_ID: process.env.NEXT_PUBLIC_ALGOLIA_APP_ID || null, // 在这里查看 https://dashboard.algolia.com/account/api-keys/
ALGOLIA_ADMIN_APP_KEY: process.env.ALGOLIA_ADMIN_APP_KEY || null, // 管理后台的KEY不要暴露在代码中在这里查看 https://dashboard.algolia.com/account/api-keys/
ALGOLIA_SEARCH_ONLY_APP_KEY: process.env.NEXT_PUBLIC_ALGOLIA_SEARCH_ONLY_APP_KEY || null, // 客户端搜索用的KEY

View File

@@ -2,7 +2,7 @@ import Link from 'next/link'
import { useRouter } from 'next/router'
import { useEffect, useState, useRef, useLayoutEffect } from 'react'
import { useGlobal } from '@/lib/global'
import { saveDarkModeToCookies, THEMES } from '@/themes/theme'
import { saveDarkModeToLocalStorage, THEMES } from '@/themes/theme'
import useWindowSize from '@/hooks/useWindowSize'
import { siteConfig } from '@/lib/config'
@@ -122,7 +122,7 @@ export default function CustomContextMenu(props) {
function handleChangeDarkMode() {
const newStatus = !isDarkMode
saveDarkModeToCookies(newStatus)
saveDarkModeToLocalStorage(newStatus)
updateDarkMode(newStatus)
const htmlElement = document.getElementsByTagName('html')[0]
htmlElement.classList?.remove(newStatus ? 'light' : 'dark')

View File

@@ -38,7 +38,7 @@ const ThemeSwitch = () => {
return (<>
<Draggable>
<div id="draggableBox" style={{ left: '0px', top: '80vh' }} className="fixed group space-y-2 overflow-hidden z-50 p-3 flex flex-col items-start dark:text-white bg-gray-50 dark:bg-black rounded-xl shadow-lg border dark:border-gray-800">
<div id="draggableBox" style={{ left: '0px', top: '80vh' }} className="fixed group space-y-2 overflow-hidden z-50 p-3 flex flex-col items-start dark:text-white bg-white dark:bg-black rounded-xl shadow-lg ">
{/* 深色按钮 */}
<div className="text-sm flex items-center w-0 group-hover:w-32 transition-all duration-200">
<DarkModeButton />

View File

@@ -1,7 +1,7 @@
import { generateLocaleDict, initLocale, saveLangToCookies } from './lang'
import { generateLocaleDict, initLocale, saveLangToLocalStorage } from './lang'
import { createContext, useContext, useEffect, useState } from 'react'
import { useRouter } from 'next/router'
import { THEMES, initDarkMode, saveDarkModeToCookies } from '@/themes/theme'
import { THEMES, initDarkMode, saveDarkModeToLocalStorage } from '@/themes/theme'
import { APPEARANCE, LANG, THEME } from 'blog.config'
const GlobalContext = createContext()
@@ -38,7 +38,7 @@ export function GlobalContextProvider(props) {
// 切换深色模式
const toggleDarkMode = () => {
const newStatus = !isDarkMode
saveDarkModeToCookies(newStatus)
saveDarkModeToLocalStorage(newStatus)
updateDarkMode(newStatus)
const htmlElement = document.getElementsByTagName('html')[0]
htmlElement.classList?.remove(newStatus ? 'light' : 'dark')
@@ -50,7 +50,7 @@ export function GlobalContextProvider(props) {
*/
function changeLang(lang) {
if (lang) {
saveLangToCookies(lang)
saveLangToLocalStorage(lang)
updateLang(lang)
updateLocale(generateLocaleDict(lang))
}

View File

@@ -5,7 +5,6 @@ import zhTW from './lang/zh-TW'
import frFR from './lang/fr-FR'
import trTR from './lang/tr-TR'
import jaJP from './lang/ja-JP'
import cookie from 'react-cookies'
import { getQueryVariable, isBrowser, mergeDeep } from './utils'
/**
@@ -65,14 +64,14 @@ export function generateLocaleDict(langString) {
*/
export function initLocale(lang, locale, changeLang, changeLocale) {
if (isBrowser) {
const queryLang = getQueryVariable('lang') || loadLangFromCookies()
const queryLang = getQueryVariable('lang') || loadLangFromLocalStorage()
let currentLang = lang
if (queryLang && queryLang !== 'undefined' && queryLang !== lang) {
currentLang = queryLang
}
changeLang(currentLang)
saveLangToCookies(currentLang)
saveLangToLocalStorage(currentLang)
const targetLocale = generateLocaleDict(currentLang)
if (JSON.stringify(locale) !== JSON.stringify(currentLang)) {
@@ -84,14 +83,14 @@ export function initLocale(lang, locale, changeLang, changeLocale) {
* 读取语言
* @returns {*}
*/
export const loadLangFromCookies = () => {
return cookie.load('lang')
export const loadLangFromLocalStorage = () => {
return localStorage.getItem('lang')
}
/**
* 保存语言
* @param newTheme
*/
export const saveLangToCookies = (lang) => {
cookie.save('lang', lang, { path: '/' })
export const saveLangToLocalStorage = (lang) => {
localStorage.setItem('lang', lang)
}

View File

@@ -43,7 +43,6 @@
"preact": "^10.5.15",
"prism-themes": "1.9.0",
"react": "^18.2.0",
"react-cookies": "^0.1.1",
"react-dom": "^18.2.0",
"react-facebook": "^8.1.4",
"react-notion-x": "6.16.0",
@@ -75,4 +74,4 @@
"url": "https://github.com/tangly/NotionNext/issues",
"email": "tlyong1992@hotmail.com"
}
}
}

View File

@@ -8,7 +8,7 @@ import { getNotion } from '@/lib/notion/getNotion'
import { getPageTableOfContents } from '@/lib/notion/getPageTableOfContents'
import { getLayoutByTheme } from '@/themes/theme'
import md5 from 'js-md5'
import { checkContainHttp, isBrowser } from '@/lib/utils'
import { checkContainHttp } from '@/lib/utils'
import { uploadDataToAlgolia } from '@/lib/algolia'
import { siteConfig } from '@/lib/config'
@@ -20,7 +20,6 @@ import { siteConfig } from '@/lib/config'
*/
const Slug = props => {
const { post } = props
const router = useRouter()
// 文章锁🔐
const [lock, setLock] = useState(post?.password && post?.password !== '')
@@ -40,20 +39,6 @@ const Slug = props => {
// 文章加载
useEffect(() => {
// 404
if (!post) {
setTimeout(() => {
if (isBrowser) {
const article = document.getElementById('notion-article')
if (!article) {
router.push('/404').then(() => {
console.warn('找不到页面', router.asPath)
})
}
}
}, 8 * 1000) // 404时长 8秒
}
// 文章加密
if (post?.password && post?.password !== '') {
setLock(true)

29
pages/signin.js Normal file
View File

@@ -0,0 +1,29 @@
import BLOG from '@/blog.config'
import { getGlobalData } from '@/lib/notion/getNotionData'
import { useRouter } from 'next/router'
import { getLayoutByTheme } from '@/themes/theme'
import { siteConfig } from '@/lib/config'
/**
* 登录
* @param {*} props
* @returns
*/
const SignIn = props => {
// 根据页面路径加载不同Layout文件
const Layout = getLayoutByTheme({ theme: siteConfig('THEME'), router: useRouter() })
return <Layout {...props} />
}
export async function getStaticProps() {
const from = 'SignIn'
const props = await getGlobalData({ from })
delete props.allPages
return {
props,
revalidate: parseInt(BLOG.NEXT_REVALIDATE_SECOND)
}
}
export default SignIn

29
pages/signup.js Normal file
View File

@@ -0,0 +1,29 @@
import BLOG from '@/blog.config'
import { getGlobalData } from '@/lib/notion/getNotionData'
import { useRouter } from 'next/router'
import { getLayoutByTheme } from '@/themes/theme'
import { siteConfig } from '@/lib/config'
/**
* 注册
* @param {*} props
* @returns
*/
const SignUp = props => {
// 根据页面路径加载不同Layout文件
const Layout = getLayoutByTheme({ theme: siteConfig('THEME'), router: useRouter() })
return <Layout {...props} />
}
export async function getStaticProps() {
const from = 'SignIn'
const props = await getGlobalData({ from })
delete props.allPages
return {
props,
revalidate: parseInt(BLOG.NEXT_REVALIDATE_SECOND)
}
}
export default SignUp

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 699 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -0,0 +1 @@
<svg fill="none" height="46" viewBox="0 0 46 46" width="46" xmlns="http://www.w3.org/2000/svg"><g fill="#fff" fill-opacity=".44"><circle cx="1.39737" cy="44.6026" r="1.39737" transform="matrix(0 -1 1 0 -43.20523 45.99997)"/><circle cx="1.39737" cy="7.99124" r="1.39737" transform="matrix(0 -1 1 0 -6.59387 9.38861)"/><circle cx="13.6943" cy="44.6026" r="1.39737" transform="matrix(0 -1 1 0 -30.9083 58.2969)"/><circle cx="13.6943" cy="7.99124" r="1.39737" transform="matrix(0 -1 1 0 5.70306 21.68554)"/><circle cx="25.9911" cy="44.6026" r="1.39737" transform="matrix(0 -1 1 0 -18.6115 70.5937)"/><circle cx="25.9911" cy="7.99124" r="1.39737" transform="matrix(0 -1 1 0 17.99986 33.98234)"/><circle cx="38.288" cy="44.6026" r="1.39737" transform="matrix(0 -1 1 0 -6.3146 82.8906)"/><circle cx="38.288" cy="7.99124" r="1.39737" transform="matrix(0 -1 1 0 30.29676 46.27924)"/><circle cx="1.39737" cy="32.3058" r="1.39737" transform="matrix(0 -1 1 0 -30.90843 33.70317)"/><circle cx="13.6943" cy="32.3058" r="1.39737" transform="matrix(0 -1 1 0 -18.6115 46.0001)"/><circle cx="25.9911" cy="32.3058" r="1.39737" transform="matrix(0 -1 1 0 -6.3147 58.2969)"/><circle cx="38.288" cy="32.3058" r="1.39737" transform="matrix(0 -1 1 0 5.9822 70.5938)"/><circle cx="1.39737" cy="20.0087" r="1.39737" transform="matrix(0 -1 1 0 -18.61133 21.40607)"/><circle cx="13.6943" cy="20.0087" r="1.39737" transform="matrix(0 -1 1 0 -6.3144 33.703)"/><circle cx="25.9911" cy="20.0087" r="1.39737" transform="matrix(0 -1 1 0 5.9824 45.9998)"/><circle cx="38.288" cy="20.0087" r="1.39737" transform="matrix(0 -1 1 0 18.2793 58.2967)"/></g></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1 @@
<svg fill="none" height="251" viewBox="0 0 745 251" width="745" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a"><stop offset="0" stop-color="#3056d3" stop-opacity=".15"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="-101.591" x2="49.1618" xlink:href="#a" y1="-50.4346" y2="-49.6518"/><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="643.409" x2="794.162" xlink:href="#a" y1="196.565" y2="197.348"/><mask id="d" height="251" maskUnits="userSpaceOnUse" width="745" x="0" y="0"><rect fill="#3056d3" height="251" rx="5" width="745"/></mask><rect fill="#3056d3" fill-opacity=".05" height="251" rx="5" width="745"/><g mask="url(#d)"><ellipse cx=".483916" cy="3.5" fill="url(#b)" rx="102.075" ry="105.5" transform="matrix(-1 0 0 -1 .967832 7)"/><ellipse cx="745.484" cy="250.5" fill="url(#c)" rx="102.075" ry="105.5"/></g></svg>

After

Width:  |  Height:  |  Size: 965 B

View File

@@ -0,0 +1,12 @@
<svg width="158" height="40" viewBox="0 0 158 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2165_2972)">
<path opacity="0.56" d="M15.6061 3.33333C15.6061 1.49167 17.1083 0 18.963 0H20.6415C31.7655 0 40.7831 8.95417 40.7831 20V36.6667C40.7831 38.5083 39.2809 40 37.4262 40H35.7477C24.6237 40 15.6061 31.0458 15.6061 20V3.33333Z" fill="#4A6CF7"/>
<path opacity="0.88" d="M17.2847 39.9998C26.5546 39.9998 34.0694 32.5379 34.0694 23.3332C34.0694 14.1284 26.5546 6.6665 17.2847 6.6665C8.01476 6.6665 0.5 14.1284 0.5 23.3332C0.5 32.5379 8.01476 39.9998 17.2847 39.9998Z" fill="#4A6CF7"/>
<path d="M63.7375 31.7787H69.3377L61.4753 10H55.3531L47.497 31.7787H53.033L54.3347 27.9318H62.4354L63.7375 31.7787ZM61.0759 23.8366H55.727L58.3819 15.8635L61.0759 23.8366ZM79.675 25.2947L75.6857 14.4674H69.7762L76.8006 31.1893L72.8373 40H78.534L89.361 14.4674H83.6383L79.675 25.2947ZM96.5595 23.7435C96.5595 20.7652 98.016 19.8966 100.523 19.8966H101.973V14.2813C99.653 14.2813 97.7647 15.5223 96.5595 17.3526V14.4674H91.2686V31.7787H96.5595V23.7435ZM121.391 23.123C121.391 17.6318 117.498 14.2193 112.42 14.2193C107.38 14.2193 103.449 17.6318 103.449 23.123C103.449 28.6143 107.29 32.0269 112.362 32.0269C117.434 32.0269 121.391 28.6143 121.391 23.123ZM108.837 23.123C108.837 20.1758 110.506 18.8108 112.42 18.8108C114.276 18.8108 116.01 20.1758 116.01 23.123C116.01 26.0393 114.25 27.4354 112.362 27.4354C110.441 27.4354 108.837 26.0393 108.837 23.123ZM132.849 23.8056C132.849 29.4209 136.497 31.9959 140.956 31.9959C145.41 31.9959 149.09 29.4209 149.09 23.8056V10.1551H146.273V23.8366C146.273 27.8077 144.172 29.514 140.982 29.514C137.799 29.514 135.665 27.8077 135.665 23.8366V10.1551H132.849V23.8056ZM153.788 31.7787H156.598V10.1551H153.788V31.7787Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_2165_2972">
<rect width="157" height="40" fill="white" transform="translate(0.5)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,12 @@
<svg width="158" height="40" viewBox="0 0 158 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2001_9537)">
<path opacity="0.56" d="M15.6061 3.33333C15.6061 1.49167 17.1083 0 18.963 0H20.6415C31.7655 0 40.7831 8.95417 40.7831 20V36.6667C40.7831 38.5083 39.2809 40 37.4262 40H35.7477C24.6237 40 15.6061 31.0458 15.6061 20V3.33333Z" fill="#4A6CF7"/>
<path opacity="0.88" d="M17.2847 39.9998C26.5546 39.9998 34.0694 32.5379 34.0694 23.3332C34.0694 14.1284 26.5546 6.6665 17.2847 6.6665C8.01476 6.6665 0.5 14.1284 0.5 23.3332C0.5 32.5379 8.01476 39.9998 17.2847 39.9998Z" fill="#4A6CF7"/>
<path d="M63.7375 31.7787H69.3377L61.4753 10H55.3531L47.497 31.7787H53.0331L54.3347 27.9317H62.4354L63.7375 31.7787ZM61.0759 23.8366H55.727L58.3819 15.8635L61.0759 23.8366ZM79.675 25.2947L75.6857 14.4674H69.7762L76.8006 31.1893L72.8373 40H78.534L89.361 14.4674H83.6383L79.675 25.2947ZM96.5596 23.7435C96.5596 20.7652 98.016 19.8966 100.523 19.8966H101.973V14.2813C99.653 14.2813 97.7647 15.5223 96.5596 17.3526V14.4674H91.2686V31.7787H96.5596V23.7435ZM121.391 23.123C121.391 17.6318 117.498 14.2193 112.42 14.2193C107.38 14.2193 103.449 17.6318 103.449 23.123C103.449 28.6143 107.29 32.0269 112.362 32.0269C117.434 32.0269 121.391 28.6143 121.391 23.123ZM108.837 23.123C108.837 20.1758 110.506 18.8108 112.42 18.8108C114.276 18.8108 116.01 20.1758 116.01 23.123C116.01 26.0393 114.25 27.4354 112.362 27.4354C110.441 27.4354 108.837 26.0393 108.837 23.123ZM132.849 23.8056C132.849 29.4209 136.497 31.9959 140.956 31.9959C145.41 31.9959 149.09 29.4209 149.09 23.8056V10.1551H146.273V23.8366C146.273 27.8077 144.172 29.514 140.982 29.514C137.799 29.514 135.665 27.8077 135.665 23.8366V10.1551H132.849V23.8056ZM153.788 31.7787H156.598V10.1551H153.788V31.7787Z" fill="#2D2D2D"/>
</g>
<defs>
<clipPath id="clip0_2001_9537">
<rect width="157" height="40" fill="white" transform="translate(0.5)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,39 @@
<svg width="174" height="40" viewBox="0 0 174 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2165_2924)">
<path d="M36.5 20C36.5 10.0589 28.4411 2 18.5 2C8.55887 2 0.5 10.0589 0.5 20C0.5 29.9411 8.55887 38 18.5 38C28.4411 38 36.5 29.9411 36.5 20Z" fill="url(#paint0_linear_2165_2924)"/>
<path d="M36.5 20C36.5 10.0589 28.4411 2 18.5 2C8.55887 2 0.5 10.0589 0.5 20C0.5 29.9411 8.55887 38 18.5 38C28.4411 38 36.5 29.9411 36.5 20Z" fill="url(#paint1_linear_2165_2924)" fill-opacity="0.56"/>
<path d="M18.7865 8.75C21.6369 8.75 24.3277 9.80311 26.41 11.7231C26.5254 11.8295 26.5266 12.0103 26.4156 12.1213L22.0081 16.5288C21.9014 16.6356 21.7299 16.6382 21.6131 16.5425C20.8171 15.8908 19.8294 15.5369 18.7883 15.5369C16.3238 15.5352 14.3199 17.5391 14.3199 20H7.53125C7.53125 13.7967 12.5814 8.75 18.7865 8.75Z" fill="white"/>
<path d="M14.3199 20C14.3199 22.3097 16.0847 24.2161 18.3375 24.4424C18.4877 24.4575 18.6072 24.5806 18.6072 24.7316V30.9643C18.6072 31.1213 18.4778 31.2483 18.3208 31.2419C12.3294 30.9964 7.53125 26.0475 7.53125 20H14.3199Z" fill="white"/>
<path opacity="0.56" d="M25.4747 20.8931H22.8204C22.665 20.8931 22.5391 21.0191 22.5391 21.1744V23.8269C22.5391 23.9823 22.665 24.1082 22.8204 24.1082H25.4747C25.63 24.1082 25.7559 23.9823 25.7559 23.8269V21.1744C25.7559 21.0191 25.63 20.8931 25.4747 20.8931Z" fill="white"/>
<path opacity="0.4" d="M29.0468 20.8931H26.3925C26.2372 20.8931 26.1113 21.0191 26.1113 21.1744V23.8269C26.1113 23.9823 26.2372 24.1082 26.3925 24.1082H29.0468C29.2021 24.1082 29.3281 23.9823 29.3281 23.8269V21.1744C29.3281 21.0191 29.2021 20.8931 29.0468 20.8931Z" fill="white"/>
<path opacity="0.72" d="M25.4747 24.4648H22.8204C22.665 24.4648 22.5391 24.5907 22.5391 24.746V27.3986C22.5391 27.5539 22.665 27.6798 22.8204 27.6798H25.4747C25.63 27.6798 25.7559 27.5539 25.7559 27.3986V24.746C25.7559 24.5907 25.63 24.4648 25.4747 24.4648Z" fill="white"/>
<path opacity="0.88" d="M21.9013 24.4648H19.247C19.0917 24.4648 18.9658 24.5907 18.9658 24.746V27.3986C18.9658 27.5539 19.0917 27.6798 19.247 27.6798H21.9013C22.0567 27.6798 22.1826 27.5539 22.1826 27.3986V24.746C22.1826 24.5907 22.0567 24.4648 21.9013 24.4648Z" fill="white"/>
<path opacity="0.56" d="M29.0468 24.4648H26.3925C26.2372 24.4648 26.1113 24.5907 26.1113 24.746V27.3986C26.1113 27.5539 26.2372 27.6798 26.3925 27.6798H29.0468C29.2021 27.6798 29.3281 27.5539 29.3281 27.3986V24.746C29.3281 24.5907 29.2021 24.4648 29.0468 24.4648Z" fill="white"/>
<path opacity="0.88" d="M25.4747 28.0347H22.8204C22.665 28.0347 22.5391 28.1606 22.5391 28.3159V30.9685C22.5391 31.1238 22.665 31.2497 22.8204 31.2497H25.4747C25.63 31.2497 25.7559 31.1238 25.7559 30.9685V28.3159C25.7559 28.1606 25.63 28.0347 25.4747 28.0347Z" fill="white"/>
<path opacity="0.96" d="M21.9013 28.0347H19.247C19.0917 28.0347 18.9658 28.1606 18.9658 28.3159V30.9685C18.9658 31.1238 19.0917 31.2497 19.247 31.2497H21.9013C22.0567 31.2497 22.1826 31.1238 22.1826 30.9685V28.3159C22.1826 28.1606 22.0567 28.0347 21.9013 28.0347Z" fill="white"/>
<path opacity="0.72" d="M29.0468 28.0347H26.3925C26.2372 28.0347 26.1113 28.1606 26.1113 28.3159V30.9685C26.1113 31.1238 26.2372 31.2497 26.3925 31.2497H29.0468C29.2021 31.2497 29.3281 31.1238 29.3281 30.9685V28.3159C29.3281 28.1606 29.2021 28.0347 29.0468 28.0347Z" fill="white"/>
<path d="M57.4419 12.125H60.2769V28.379C60.2769 29.4185 60.035 30.3845 59.5512 31.277C59.0787 32.18 58.4375 32.9622 57.6275 33.6238C56.8175 34.2957 55.895 34.8155 54.86 35.183C53.825 35.561 52.745 35.75 51.62 35.75C50.45 35.75 49.3194 35.5033 48.2281 35.0098C47.1369 34.5268 46.1806 33.8757 45.3594 33.0567C44.5494 32.2482 43.9644 31.34 43.6044 30.332L46.2031 29.2295C46.4169 29.954 46.7994 30.605 47.3506 31.1825C47.9131 31.7705 48.5656 32.2325 49.3081 32.5685C50.0619 32.915 50.8325 33.0882 51.62 33.0882C52.3625 33.0882 53.0769 32.9675 53.7631 32.726C54.4606 32.4845 55.085 32.1485 55.6362 31.718C56.1987 31.298 56.6375 30.7993 56.9525 30.2218C57.2787 29.6548 57.4419 29.0405 57.4419 28.379V25.2447C56.8681 26.1477 56.1087 26.8827 55.1637 27.4497C54.23 28.0063 53.1387 28.2845 51.89 28.2845C50.6975 28.2845 49.5781 28.0693 48.5319 27.6388C47.4856 27.2083 46.5687 26.615 45.7812 25.859C44.9937 25.0925 44.375 24.2105 43.925 23.213C43.475 22.2155 43.25 21.1445 43.25 20C43.25 18.8555 43.475 17.7845 43.925 16.787C44.375 15.779 44.9937 14.897 45.7812 14.141C46.5687 13.3745 47.4856 12.776 48.5319 12.3455C49.5781 11.915 50.6975 11.6997 51.89 11.6997C53.1387 11.6997 54.23 11.978 55.1637 12.5345C56.1087 13.091 56.8681 13.826 57.4419 14.7395V12.125ZM51.9069 25.7173C52.9981 25.7173 53.9431 25.4548 54.7419 24.9298C55.5519 24.4048 56.1762 23.7065 56.615 22.835C57.0537 21.9635 57.2731 21.0185 57.2731 20C57.2731 18.95 57.0481 17.9945 56.5981 17.1335C56.1594 16.262 55.535 15.569 54.725 15.0545C53.9262 14.5295 52.9869 14.267 51.9069 14.267C50.8494 14.267 49.8819 14.5243 49.0044 15.0388C48.1269 15.5533 47.4294 16.2463 46.9119 17.1178C46.4056 17.9788 46.1525 18.9395 46.1525 20C46.1525 21.0605 46.4112 22.0265 46.9288 22.898C47.4575 23.759 48.155 24.4468 49.0212 24.9613C49.8987 25.4653 50.8606 25.7173 51.9069 25.7173Z" fill="white"/>
<path d="M62.9844 27.8751V12.1251H65.8194V14.0939C66.4157 13.3589 67.1694 12.7761 68.0807 12.3456C68.9919 11.9046 69.9819 11.6841 71.0507 11.6841C71.7032 11.6841 72.3332 11.7628 72.9407 11.9203L71.7932 14.5664C71.3319 14.4299 70.8819 14.3616 70.4432 14.3616C69.5994 14.3616 68.8232 14.5559 68.1144 14.9444C67.4169 15.3224 66.86 15.8369 66.4438 16.4879C66.0275 17.1389 65.8194 17.8634 65.8194 18.6614V27.8751H62.9844Z" fill="white"/>
<path d="M86.3749 12.1251H89.2099V27.8751H86.3749L86.2568 25.2134C85.728 26.1269 84.9968 26.8671 84.063 27.4341C83.1405 28.0011 82.038 28.2846 80.7555 28.2846C79.518 28.2846 78.3593 28.0694 77.2793 27.6389C76.1993 27.1979 75.243 26.5941 74.4105 25.8276C73.5893 25.0506 72.948 24.1581 72.4868 23.1501C72.0255 22.1421 71.7949 21.0554 71.7949 19.8899C71.7949 18.7664 72.0199 17.7059 72.4699 16.7084C72.9199 15.7109 73.5443 14.8394 74.343 14.0939C75.153 13.3379 76.0868 12.7499 77.1443 12.3299C78.2018 11.8993 79.338 11.6841 80.553 11.6841C81.8805 11.6841 83.0449 11.9781 84.0462 12.5661C85.0474 13.1436 85.8574 13.8944 86.4762 14.8184L86.3749 12.1251ZM80.7049 25.7174C81.8187 25.7174 82.7805 25.4654 83.5905 24.9614C84.4118 24.4469 85.0418 23.7539 85.4805 22.8824C85.9305 22.0109 86.1555 21.0501 86.1555 20.0001C86.1555 18.9291 85.9305 17.9631 85.4805 17.1021C85.0305 16.2306 84.3949 15.5429 83.5737 15.0389C82.7637 14.5244 81.8074 14.2671 80.7049 14.2671C79.5912 14.2671 78.5787 14.5244 77.6674 15.0389C76.7562 15.5534 76.0305 16.2464 75.4905 17.1179C74.9618 17.9789 74.6974 18.9396 74.6974 20.0001C74.6974 21.0606 74.973 22.0266 75.5243 22.8981C76.0755 23.7591 76.8068 24.4469 77.718 24.9614C78.6293 25.4654 79.6249 25.7174 80.7049 25.7174Z" fill="white"/>
<path d="M102.265 12.125H105.269L96.0378 35.75H93.034L96.0884 27.875L90.0303 12.125H93.1353L97.5059 24.2367L102.265 12.125Z" fill="white"/>
<path d="M119.608 12.125H122.443V28.379C122.443 29.4185 122.201 30.3845 121.717 31.277C121.245 32.18 120.603 32.9622 119.793 33.6238C118.983 34.2957 118.061 34.8155 117.026 35.183C115.991 35.561 114.911 35.75 113.786 35.75C112.616 35.75 111.485 35.5033 110.394 35.0098C109.303 34.5268 108.347 33.8757 107.525 33.0567C106.715 32.2482 106.13 31.34 105.77 30.332L108.369 29.2295C108.583 29.954 108.965 30.605 109.517 31.1825C110.079 31.7705 110.732 32.2325 111.474 32.5685C112.228 32.915 112.998 33.0882 113.786 33.0882C114.528 33.0882 115.243 32.9675 115.929 32.726C116.627 32.4845 117.251 32.1485 117.802 31.718C118.365 31.298 118.803 30.7993 119.118 30.2218C119.445 29.6548 119.608 29.0405 119.608 28.379V25.2447C119.034 26.1477 118.275 26.8827 117.33 27.4497C116.396 28.0063 115.305 28.2845 114.056 28.2845C112.863 28.2845 111.744 28.0693 110.698 27.6388C109.652 27.2083 108.735 26.615 107.947 25.859C107.16 25.0925 106.541 24.2105 106.091 23.213C105.641 22.2155 105.416 21.1445 105.416 20C105.416 18.8555 105.641 17.7845 106.091 16.787C106.541 15.779 107.16 14.897 107.947 14.141C108.735 13.3745 109.652 12.776 110.698 12.3455C111.744 11.915 112.863 11.6997 114.056 11.6997C115.305 11.6997 116.396 11.978 117.33 12.5345C118.275 13.091 119.034 13.826 119.608 14.7395V12.125ZM114.073 25.7173C115.164 25.7173 116.109 25.4548 116.908 24.9298C117.718 24.4048 118.342 23.7065 118.781 22.835C119.22 21.9635 119.439 21.0185 119.439 20C119.439 18.95 119.214 17.9945 118.764 17.1335C118.325 16.262 117.701 15.569 116.891 15.0545C116.092 14.5295 115.153 14.267 114.073 14.267C113.015 14.267 112.048 14.5243 111.17 15.0388C110.293 15.5533 109.595 16.2463 109.078 17.1178C108.572 17.9788 108.318 18.9395 108.318 20C108.318 21.0605 108.577 22.0265 109.095 22.898C109.623 23.759 110.321 24.4468 111.187 24.9613C112.065 25.4653 113.027 25.7173 114.073 25.7173Z" fill="white"/>
<path d="M125.15 27.8751V12.1251H127.985V14.0939C128.582 13.3589 129.335 12.7761 130.247 12.3456C131.158 11.9046 132.148 11.6841 133.217 11.6841C133.869 11.6841 134.499 11.7628 135.107 11.9203L133.959 14.5664C133.498 14.4299 133.048 14.3616 132.609 14.3616C131.765 14.3616 130.989 14.5559 130.28 14.9444C129.583 15.3224 129.026 15.8369 128.61 16.4879C128.194 17.1389 127.985 17.8634 127.985 18.6614V27.8751H125.15Z" fill="white"/>
<path d="M135.83 12.1252H138.665V27.8752H135.83V12.1252ZM137.282 9.55791C136.832 9.55791 136.455 9.42141 136.151 9.14841C135.847 8.87541 135.695 8.53416 135.695 8.12466C135.695 7.71516 135.847 7.37391 136.151 7.10091C136.455 6.82791 136.826 6.69141 137.265 6.69141C137.704 6.69141 138.075 6.82791 138.379 7.10091C138.682 7.37391 138.834 7.71516 138.834 8.12466C138.834 8.53416 138.682 8.87541 138.379 9.14841C138.086 9.42141 137.72 9.55791 137.282 9.55791Z" fill="white"/>
<path d="M154.723 4.25H157.558V27.875H154.723V25.1975C154.149 26.1215 153.378 26.867 152.411 27.434C151.443 28.001 150.307 28.2845 149.002 28.2845C147.776 28.2845 146.628 28.0693 145.559 27.6388C144.491 27.2083 143.546 26.615 142.724 25.859C141.914 25.0925 141.279 24.2105 140.818 23.213C140.356 22.2155 140.126 21.1445 140.126 20C140.126 18.8555 140.356 17.7845 140.818 16.787C141.279 15.779 141.914 14.897 142.724 14.141C143.546 13.3745 144.491 12.776 145.559 12.3455C146.628 11.915 147.776 11.6997 149.002 11.6997C150.307 11.6997 151.443 11.9832 152.411 12.5503C153.378 13.1173 154.149 13.8628 154.723 14.7868V4.25ZM149.036 25.7173C150.149 25.7173 151.111 25.4653 151.921 24.9613C152.743 24.4468 153.373 23.7538 153.811 22.8823C154.261 22.0108 154.486 21.05 154.486 20C154.486 18.929 154.261 17.963 153.811 17.102C153.361 16.2305 152.726 15.5428 151.904 15.0388C151.094 14.5243 150.138 14.267 149.036 14.267C147.922 14.267 146.909 14.5243 145.998 15.0388C145.098 15.5533 144.378 16.2463 143.838 17.1178C143.298 17.9788 143.028 18.9395 143.028 20C143.028 21.0605 143.304 22.0265 143.855 22.898C144.406 23.759 145.138 24.4468 146.049 24.9613C146.96 25.4653 147.956 25.7173 149.036 25.7173Z" fill="white"/>
<path d="M165.403 28.1741C164.491 28.1426 163.603 27.9852 162.736 27.7016C161.881 27.4077 161.128 27.0139 160.475 26.5204C159.834 26.0164 159.367 25.4389 159.074 24.7879L161.504 23.8114C161.673 24.1684 161.977 24.5044 162.416 24.8194C162.854 25.1344 163.361 25.3864 163.934 25.5754C164.508 25.7644 165.088 25.8589 165.673 25.8589C166.291 25.8589 166.871 25.7697 167.411 25.5912C167.951 25.4127 168.389 25.1502 168.727 24.8037C169.076 24.4467 169.25 24.0214 169.25 23.5279C169.25 23.0029 169.059 22.5934 168.676 22.2994C168.305 21.9949 167.833 21.7586 167.259 21.5906C166.696 21.4122 166.123 21.2441 165.538 21.0867C164.379 20.8136 163.344 20.4882 162.433 20.1102C161.521 19.7217 160.801 19.2334 160.273 18.6454C159.755 18.0469 159.496 17.2857 159.496 16.3617C159.496 15.3852 159.783 14.5399 160.357 13.8259C160.942 13.1119 161.707 12.5607 162.652 12.1722C163.597 11.7836 164.609 11.5894 165.689 11.5894C167.051 11.5894 168.294 11.8624 169.419 12.4084C170.544 12.9544 171.382 13.6947 171.933 14.6292L169.655 15.8734C169.464 15.4954 169.171 15.1647 168.778 14.8812C168.384 14.5872 167.934 14.3562 167.428 14.1882C166.921 14.0202 166.404 13.9309 165.875 13.9204C165.223 13.8994 164.609 13.9782 164.036 14.1567C163.473 14.3352 163.018 14.6082 162.669 14.9756C162.331 15.3327 162.163 15.7789 162.163 16.3144C162.163 16.8394 162.343 17.2384 162.703 17.5114C163.074 17.7844 163.552 18.0049 164.137 18.1729C164.733 18.3304 165.38 18.5142 166.078 18.7242C167.101 19.0287 168.058 19.3804 168.946 19.7794C169.835 20.1784 170.549 20.6772 171.089 21.2757C171.641 21.8742 171.911 22.6144 171.899 23.4964C171.899 24.4624 171.59 25.3077 170.971 26.0322C170.353 26.7462 169.548 27.2921 168.558 27.6701C167.579 28.0482 166.528 28.2161 165.403 28.1741Z" fill="white"/>
</g>
<defs>
<linearGradient id="paint0_linear_2165_2924" x1="18.5" y1="2" x2="18.5" y2="38" gradientUnits="userSpaceOnUse">
<stop stop-color="#3558EA"/>
<stop offset="1" stop-color="#0000FF"/>
</linearGradient>
<linearGradient id="paint1_linear_2165_2924" x1="23.2893" y1="7.22943" x2="7.43291" y2="54.4749" gradientUnits="userSpaceOnUse">
<stop offset="0.215628" stop-color="#1E1983" stop-opacity="0"/>
<stop offset="0.447191" stop-color="#1E1983" stop-opacity="0.19"/>
<stop offset="0.619792" stop-color="#1E1983"/>
</linearGradient>
<clipPath id="clip0_2165_2924">
<rect width="173" height="40" fill="white" transform="translate(0.5)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,39 @@
<svg width="174" height="40" viewBox="0 0 174 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2001_9489)">
<path d="M36.5 20C36.5 10.0589 28.4411 2 18.5 2C8.55887 2 0.5 10.0589 0.5 20C0.5 29.9411 8.55887 38 18.5 38C28.4411 38 36.5 29.9411 36.5 20Z" fill="url(#paint0_linear_2001_9489)"/>
<path d="M36.5 20C36.5 10.0589 28.4411 2 18.5 2C8.55887 2 0.5 10.0589 0.5 20C0.5 29.9411 8.55887 38 18.5 38C28.4411 38 36.5 29.9411 36.5 20Z" fill="url(#paint1_linear_2001_9489)" fill-opacity="0.56"/>
<path d="M18.7865 8.75C21.6369 8.75 24.3277 9.80311 26.41 11.7231C26.5254 11.8295 26.5266 12.0103 26.4156 12.1213L22.0081 16.5288C21.9014 16.6356 21.7299 16.6382 21.6131 16.5425C20.8171 15.8908 19.8294 15.5369 18.7883 15.5369C16.3238 15.5352 14.3199 17.5391 14.3199 20H7.53125C7.53125 13.7967 12.5814 8.75 18.7865 8.75Z" fill="white"/>
<path d="M14.3199 20C14.3199 22.3097 16.0847 24.2161 18.3375 24.4424C18.4877 24.4575 18.6072 24.5806 18.6072 24.7316V30.9643C18.6072 31.1213 18.4778 31.2483 18.3208 31.2419C12.3294 30.9964 7.53125 26.0475 7.53125 20H14.3199Z" fill="white"/>
<path opacity="0.56" d="M25.4747 20.8931H22.8204C22.665 20.8931 22.5391 21.0191 22.5391 21.1744V23.8269C22.5391 23.9823 22.665 24.1082 22.8204 24.1082H25.4747C25.63 24.1082 25.7559 23.9823 25.7559 23.8269V21.1744C25.7559 21.0191 25.63 20.8931 25.4747 20.8931Z" fill="white"/>
<path opacity="0.4" d="M29.0468 20.8931H26.3925C26.2372 20.8931 26.1113 21.0191 26.1113 21.1744V23.8269C26.1113 23.9823 26.2372 24.1082 26.3925 24.1082H29.0468C29.2021 24.1082 29.3281 23.9823 29.3281 23.8269V21.1744C29.3281 21.0191 29.2021 20.8931 29.0468 20.8931Z" fill="white"/>
<path opacity="0.72" d="M25.4747 24.4648H22.8204C22.665 24.4648 22.5391 24.5907 22.5391 24.746V27.3986C22.5391 27.5539 22.665 27.6798 22.8204 27.6798H25.4747C25.63 27.6798 25.7559 27.5539 25.7559 27.3986V24.746C25.7559 24.5907 25.63 24.4648 25.4747 24.4648Z" fill="white"/>
<path opacity="0.88" d="M21.9013 24.4648H19.247C19.0917 24.4648 18.9658 24.5907 18.9658 24.746V27.3986C18.9658 27.5539 19.0917 27.6798 19.247 27.6798H21.9013C22.0567 27.6798 22.1826 27.5539 22.1826 27.3986V24.746C22.1826 24.5907 22.0567 24.4648 21.9013 24.4648Z" fill="white"/>
<path opacity="0.56" d="M29.0468 24.4648H26.3925C26.2372 24.4648 26.1113 24.5907 26.1113 24.746V27.3986C26.1113 27.5539 26.2372 27.6798 26.3925 27.6798H29.0468C29.2021 27.6798 29.3281 27.5539 29.3281 27.3986V24.746C29.3281 24.5907 29.2021 24.4648 29.0468 24.4648Z" fill="white"/>
<path opacity="0.88" d="M25.4747 28.0347H22.8204C22.665 28.0347 22.5391 28.1606 22.5391 28.3159V30.9685C22.5391 31.1238 22.665 31.2497 22.8204 31.2497H25.4747C25.63 31.2497 25.7559 31.1238 25.7559 30.9685V28.3159C25.7559 28.1606 25.63 28.0347 25.4747 28.0347Z" fill="white"/>
<path opacity="0.96" d="M21.9013 28.0347H19.247C19.0917 28.0347 18.9658 28.1606 18.9658 28.3159V30.9685C18.9658 31.1238 19.0917 31.2497 19.247 31.2497H21.9013C22.0567 31.2497 22.1826 31.1238 22.1826 30.9685V28.3159C22.1826 28.1606 22.0567 28.0347 21.9013 28.0347Z" fill="white"/>
<path opacity="0.72" d="M29.0468 28.0347H26.3925C26.2372 28.0347 26.1113 28.1606 26.1113 28.3159V30.9685C26.1113 31.1238 26.2372 31.2497 26.3925 31.2497H29.0468C29.2021 31.2497 29.3281 31.1238 29.3281 30.9685V28.3159C29.3281 28.1606 29.2021 28.0347 29.0468 28.0347Z" fill="white"/>
<path d="M57.4419 12.125H60.2769V28.379C60.2769 29.4185 60.035 30.3845 59.5512 31.277C59.0787 32.18 58.4375 32.9622 57.6275 33.6238C56.8175 34.2957 55.895 34.8155 54.86 35.183C53.825 35.561 52.745 35.75 51.62 35.75C50.45 35.75 49.3194 35.5033 48.2281 35.0098C47.1369 34.5268 46.1806 33.8757 45.3594 33.0567C44.5494 32.2482 43.9644 31.34 43.6044 30.332L46.2031 29.2295C46.4169 29.954 46.7994 30.605 47.3506 31.1825C47.9131 31.7705 48.5656 32.2325 49.3081 32.5685C50.0619 32.915 50.8325 33.0882 51.62 33.0882C52.3625 33.0882 53.0769 32.9675 53.7631 32.726C54.4606 32.4845 55.085 32.1485 55.6362 31.718C56.1987 31.298 56.6375 30.7993 56.9525 30.2218C57.2787 29.6548 57.4419 29.0405 57.4419 28.379V25.2447C56.8681 26.1477 56.1087 26.8827 55.1637 27.4497C54.23 28.0063 53.1387 28.2845 51.89 28.2845C50.6975 28.2845 49.5781 28.0693 48.5319 27.6388C47.4856 27.2083 46.5687 26.615 45.7812 25.859C44.9937 25.0925 44.375 24.2105 43.925 23.213C43.475 22.2155 43.25 21.1445 43.25 20C43.25 18.8555 43.475 17.7845 43.925 16.787C44.375 15.779 44.9937 14.897 45.7812 14.141C46.5687 13.3745 47.4856 12.776 48.5319 12.3455C49.5781 11.915 50.6975 11.6997 51.89 11.6997C53.1387 11.6997 54.23 11.978 55.1637 12.5345C56.1087 13.091 56.8681 13.826 57.4419 14.7395V12.125ZM51.9069 25.7173C52.9981 25.7173 53.9431 25.4548 54.7419 24.9298C55.5519 24.4048 56.1762 23.7065 56.615 22.835C57.0537 21.9635 57.2731 21.0185 57.2731 20C57.2731 18.95 57.0481 17.9945 56.5981 17.1335C56.1594 16.262 55.535 15.569 54.725 15.0545C53.9262 14.5295 52.9869 14.267 51.9069 14.267C50.8494 14.267 49.8819 14.5243 49.0044 15.0388C48.1269 15.5533 47.4294 16.2463 46.9119 17.1178C46.4056 17.9788 46.1525 18.9395 46.1525 20C46.1525 21.0605 46.4112 22.0265 46.9288 22.898C47.4575 23.759 48.155 24.4468 49.0212 24.9613C49.8987 25.4653 50.8606 25.7173 51.9069 25.7173Z" fill="#1E1983"/>
<path d="M62.9844 27.8751V12.1251H65.8194V14.0939C66.4157 13.3589 67.1694 12.7761 68.0807 12.3456C68.9919 11.9046 69.9819 11.6841 71.0507 11.6841C71.7032 11.6841 72.3332 11.7628 72.9407 11.9203L71.7932 14.5664C71.3319 14.4299 70.8819 14.3616 70.4432 14.3616C69.5994 14.3616 68.8232 14.5559 68.1144 14.9444C67.4169 15.3224 66.86 15.8369 66.4438 16.4879C66.0275 17.1389 65.8194 17.8634 65.8194 18.6614V27.8751H62.9844Z" fill="#1E1983"/>
<path d="M86.3749 12.1251H89.2099V27.8751H86.3749L86.2568 25.2134C85.728 26.1269 84.9968 26.8671 84.063 27.4341C83.1405 28.0011 82.038 28.2846 80.7555 28.2846C79.518 28.2846 78.3593 28.0694 77.2793 27.6389C76.1993 27.1979 75.243 26.5941 74.4105 25.8276C73.5893 25.0506 72.948 24.1581 72.4868 23.1501C72.0255 22.1421 71.7949 21.0554 71.7949 19.8899C71.7949 18.7664 72.0199 17.7059 72.4699 16.7084C72.9199 15.7109 73.5443 14.8394 74.343 14.0939C75.153 13.3379 76.0868 12.7499 77.1443 12.3299C78.2018 11.8993 79.338 11.6841 80.553 11.6841C81.8805 11.6841 83.0449 11.9781 84.0462 12.5661C85.0474 13.1436 85.8574 13.8944 86.4762 14.8184L86.3749 12.1251ZM80.7049 25.7174C81.8187 25.7174 82.7805 25.4654 83.5905 24.9614C84.4118 24.4469 85.0418 23.7539 85.4805 22.8824C85.9305 22.0109 86.1555 21.0501 86.1555 20.0001C86.1555 18.9291 85.9305 17.9631 85.4805 17.1021C85.0305 16.2306 84.3949 15.5429 83.5737 15.0389C82.7637 14.5244 81.8074 14.2671 80.7049 14.2671C79.5912 14.2671 78.5787 14.5244 77.6674 15.0389C76.7562 15.5534 76.0305 16.2464 75.4905 17.1179C74.9618 17.9789 74.6974 18.9396 74.6974 20.0001C74.6974 21.0606 74.973 22.0266 75.5243 22.8981C76.0755 23.7591 76.8068 24.4469 77.718 24.9614C78.6293 25.4654 79.6249 25.7174 80.7049 25.7174Z" fill="#1E1983"/>
<path d="M102.265 12.125H105.269L96.0378 35.75H93.034L96.0884 27.875L90.0303 12.125H93.1353L97.5059 24.2367L102.265 12.125Z" fill="#1E1983"/>
<path d="M119.608 12.125H122.443V28.379C122.443 29.4185 122.201 30.3845 121.717 31.277C121.245 32.18 120.603 32.9622 119.793 33.6238C118.983 34.2957 118.061 34.8155 117.026 35.183C115.991 35.561 114.911 35.75 113.786 35.75C112.616 35.75 111.485 35.5033 110.394 35.0098C109.303 34.5268 108.347 33.8757 107.525 33.0567C106.715 32.2482 106.13 31.34 105.77 30.332L108.369 29.2295C108.583 29.954 108.965 30.605 109.517 31.1825C110.079 31.7705 110.732 32.2325 111.474 32.5685C112.228 32.915 112.998 33.0882 113.786 33.0882C114.528 33.0882 115.243 32.9675 115.929 32.726C116.627 32.4845 117.251 32.1485 117.802 31.718C118.365 31.298 118.803 30.7993 119.118 30.2218C119.445 29.6548 119.608 29.0405 119.608 28.379V25.2447C119.034 26.1477 118.275 26.8827 117.33 27.4497C116.396 28.0063 115.305 28.2845 114.056 28.2845C112.863 28.2845 111.744 28.0693 110.698 27.6388C109.652 27.2083 108.735 26.615 107.947 25.859C107.16 25.0925 106.541 24.2105 106.091 23.213C105.641 22.2155 105.416 21.1445 105.416 20C105.416 18.8555 105.641 17.7845 106.091 16.787C106.541 15.779 107.16 14.897 107.947 14.141C108.735 13.3745 109.652 12.776 110.698 12.3455C111.744 11.915 112.863 11.6997 114.056 11.6997C115.305 11.6997 116.396 11.978 117.33 12.5345C118.275 13.091 119.034 13.826 119.608 14.7395V12.125ZM114.073 25.7173C115.164 25.7173 116.109 25.4548 116.908 24.9298C117.718 24.4048 118.342 23.7065 118.781 22.835C119.22 21.9635 119.439 21.0185 119.439 20C119.439 18.95 119.214 17.9945 118.764 17.1335C118.325 16.262 117.701 15.569 116.891 15.0545C116.092 14.5295 115.153 14.267 114.073 14.267C113.015 14.267 112.048 14.5243 111.17 15.0388C110.293 15.5533 109.595 16.2463 109.078 17.1178C108.572 17.9788 108.318 18.9395 108.318 20C108.318 21.0605 108.577 22.0265 109.095 22.898C109.623 23.759 110.321 24.4468 111.187 24.9613C112.065 25.4653 113.027 25.7173 114.073 25.7173Z" fill="#1E1983"/>
<path d="M125.15 27.8751V12.1251H127.985V14.0939C128.582 13.3589 129.335 12.7761 130.247 12.3456C131.158 11.9046 132.148 11.6841 133.217 11.6841C133.869 11.6841 134.499 11.7628 135.107 11.9203L133.959 14.5664C133.498 14.4299 133.048 14.3616 132.609 14.3616C131.765 14.3616 130.989 14.5559 130.28 14.9444C129.583 15.3224 129.026 15.8369 128.61 16.4879C128.194 17.1389 127.985 17.8634 127.985 18.6614V27.8751H125.15Z" fill="#1E1983"/>
<path d="M135.83 12.1252H138.665V27.8752H135.83V12.1252ZM137.282 9.55791C136.832 9.55791 136.455 9.42141 136.151 9.14841C135.847 8.87541 135.695 8.53416 135.695 8.12466C135.695 7.71516 135.847 7.37391 136.151 7.10091C136.455 6.82791 136.826 6.69141 137.265 6.69141C137.704 6.69141 138.075 6.82791 138.379 7.10091C138.682 7.37391 138.834 7.71516 138.834 8.12466C138.834 8.53416 138.682 8.87541 138.379 9.14841C138.086 9.42141 137.72 9.55791 137.282 9.55791Z" fill="#1E1983"/>
<path d="M154.723 4.25H157.558V27.875H154.723V25.1975C154.149 26.1215 153.378 26.867 152.411 27.434C151.443 28.001 150.307 28.2845 149.002 28.2845C147.776 28.2845 146.628 28.0693 145.559 27.6388C144.491 27.2083 143.546 26.615 142.724 25.859C141.914 25.0925 141.279 24.2105 140.818 23.213C140.356 22.2155 140.126 21.1445 140.126 20C140.126 18.8555 140.356 17.7845 140.818 16.787C141.279 15.779 141.914 14.897 142.724 14.141C143.546 13.3745 144.491 12.776 145.559 12.3455C146.628 11.915 147.776 11.6997 149.002 11.6997C150.307 11.6997 151.443 11.9832 152.411 12.5503C153.378 13.1173 154.149 13.8628 154.723 14.7868V4.25ZM149.036 25.7173C150.149 25.7173 151.111 25.4653 151.921 24.9613C152.743 24.4468 153.373 23.7538 153.811 22.8823C154.261 22.0108 154.486 21.05 154.486 20C154.486 18.929 154.261 17.963 153.811 17.102C153.361 16.2305 152.726 15.5428 151.904 15.0388C151.094 14.5243 150.138 14.267 149.036 14.267C147.922 14.267 146.909 14.5243 145.998 15.0388C145.098 15.5533 144.378 16.2463 143.838 17.1178C143.298 17.9788 143.028 18.9395 143.028 20C143.028 21.0605 143.304 22.0265 143.855 22.898C144.406 23.759 145.138 24.4468 146.049 24.9613C146.96 25.4653 147.956 25.7173 149.036 25.7173Z" fill="#1E1983"/>
<path d="M165.403 28.1741C164.491 28.1426 163.603 27.9852 162.736 27.7016C161.881 27.4077 161.128 27.0139 160.475 26.5204C159.834 26.0164 159.367 25.4389 159.074 24.7879L161.504 23.8114C161.673 24.1684 161.977 24.5044 162.416 24.8194C162.854 25.1344 163.361 25.3864 163.934 25.5754C164.508 25.7644 165.088 25.8589 165.673 25.8589C166.291 25.8589 166.871 25.7697 167.411 25.5912C167.951 25.4127 168.389 25.1502 168.727 24.8037C169.076 24.4467 169.25 24.0214 169.25 23.5279C169.25 23.0029 169.059 22.5934 168.676 22.2994C168.305 21.9949 167.833 21.7586 167.259 21.5906C166.696 21.4122 166.123 21.2441 165.538 21.0867C164.379 20.8136 163.344 20.4882 162.433 20.1102C161.521 19.7217 160.801 19.2334 160.273 18.6454C159.755 18.0469 159.496 17.2857 159.496 16.3617C159.496 15.3852 159.783 14.5399 160.357 13.8259C160.942 13.1119 161.707 12.5607 162.652 12.1722C163.597 11.7836 164.609 11.5894 165.689 11.5894C167.051 11.5894 168.294 11.8624 169.419 12.4084C170.544 12.9544 171.382 13.6947 171.933 14.6292L169.655 15.8734C169.464 15.4954 169.171 15.1647 168.778 14.8812C168.384 14.5872 167.934 14.3562 167.428 14.1882C166.921 14.0202 166.404 13.9309 165.875 13.9204C165.223 13.8994 164.609 13.9782 164.036 14.1567C163.473 14.3352 163.018 14.6082 162.669 14.9756C162.331 15.3327 162.163 15.7789 162.163 16.3144C162.163 16.8394 162.343 17.2384 162.703 17.5114C163.074 17.7844 163.552 18.0049 164.137 18.1729C164.733 18.3304 165.38 18.5142 166.078 18.7242C167.101 19.0287 168.058 19.3804 168.946 19.7794C169.835 20.1784 170.549 20.6772 171.089 21.2757C171.641 21.8742 171.911 22.6144 171.899 23.4964C171.899 24.4624 171.59 25.3077 170.971 26.0322C170.353 26.7462 169.548 27.2921 168.558 27.6701C167.579 28.0482 166.528 28.2161 165.403 28.1741Z" fill="#1E1983"/>
</g>
<defs>
<linearGradient id="paint0_linear_2001_9489" x1="18.5" y1="2" x2="18.5" y2="38" gradientUnits="userSpaceOnUse">
<stop stop-color="#3558EA"/>
<stop offset="1" stop-color="#0000FF"/>
</linearGradient>
<linearGradient id="paint1_linear_2001_9489" x1="23.2893" y1="7.22943" x2="7.43291" y2="54.4749" gradientUnits="userSpaceOnUse">
<stop offset="0.215628" stop-color="#1E1983" stop-opacity="0"/>
<stop offset="0.447191" stop-color="#1E1983" stop-opacity="0.19"/>
<stop offset="0.619792" stop-color="#1E1983"/>
</linearGradient>
<clipPath id="clip0_2001_9489">
<rect width="173" height="40" fill="white" transform="translate(0.5)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,26 @@
<svg width="188" height="40" viewBox="0 0 188 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2165_2948)">
<mask id="mask0_2165_2948" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="1" y="5" width="185" height="30">
<path d="M185.95 5H1.5V35H185.95V5Z" fill="white"/>
</mask>
<g mask="url(#mask0_2165_2948)">
<path d="M45.5152 7.30566H41.1641V32.1453H55.9198V28.1377H45.5152V7.30566Z" fill="white"/>
<path d="M60.9122 11.9924C62.2709 11.9924 63.3931 10.8702 63.3931 9.47328C63.3931 8.07634 62.2709 7 60.9122 7C59.4847 7 58.3625 8.0916 58.3625 9.48092C58.3625 10.8702 59.4923 11.9924 60.9122 11.9924ZM58.8511 32.145H62.9961V15.3511H58.8511V32.145Z" fill="white"/>
<path d="M71.4236 32.1449V23.1068C71.4236 20.3892 72.9809 18.6182 75.5381 18.6182C77.6831 18.6182 79.0725 19.977 79.0725 22.8014V32.1526H83.2175V21.809C83.2175 17.4579 81.0419 14.8472 76.8282 14.8472C74.5534 14.8472 72.5152 15.8319 71.4618 17.5342L71.1183 15.3587H67.2786V32.1526H71.4236V32.1449Z" fill="white"/>
<path d="M94.8053 32.5879C99.187 32.5879 102.248 30.3818 102.958 26.7024H99.1183C98.6374 28.2978 97.1488 29.1833 94.8664 29.1833C92.1107 29.1833 90.5534 27.6871 90.2481 24.7329L102.889 24.6948V23.4429C102.889 18.2062 99.6908 14.8398 94.6603 14.8398C89.7366 14.8398 86.3015 18.4734 86.3015 23.7482C86.3015 28.9467 89.8053 32.5879 94.8053 32.5879ZM94.6985 18.2444C97.1794 18.2444 98.7748 19.7711 98.7748 22.0841H90.3473C90.7519 19.5726 92.2481 18.2444 94.6985 18.2444Z" fill="white"/>
<path d="M108.279 11.9924C109.637 11.9924 110.759 10.8702 110.759 9.47328C110.759 8.07634 109.637 7 108.279 7C106.851 7 105.737 8.0916 105.737 9.48092C105.737 10.8702 106.843 11.9924 108.279 11.9924ZM106.202 32.145H110.347V15.3511H106.202V32.145Z" fill="white"/>
<path d="M113.653 23.7174C113.653 29.0533 116.981 32.5877 122.08 32.5877C126.462 32.5877 129.729 29.9006 130.233 25.9923H126.05C125.607 27.8319 124.149 28.8472 122.072 28.8472C119.424 28.8472 117.79 26.8777 117.79 23.7174C117.79 20.5571 119.561 18.5495 122.21 18.5495C124.179 18.5495 125.576 19.5342 126.05 21.4426H130.195C129.752 17.3968 126.622 14.8472 122.042 14.8472C117.088 14.8472 113.653 18.519 113.653 23.7174Z" fill="white"/>
<path d="M132.332 23.7176C132.332 28.9543 136.103 32.5573 141.309 32.5573C146.508 32.5573 150.286 28.9619 150.286 23.7176C150.286 18.481 146.515 14.8779 141.309 14.8779C136.111 14.8856 132.332 18.481 132.332 23.7176ZM136.485 23.7176C136.485 20.6566 138.454 18.5879 141.309 18.5879C144.164 18.5879 146.134 20.6642 146.134 23.7176C146.134 26.7711 144.164 28.8474 141.309 28.8474C138.454 28.855 136.485 26.7787 136.485 23.7176Z" fill="white"/>
<path d="M157.706 32.1449V23.1068C157.706 20.3892 159.263 18.6182 161.821 18.6182C163.966 18.6182 165.355 19.977 165.355 22.8014V32.1526H169.5V21.809C169.5 17.4579 167.324 14.8472 163.111 14.8472C160.836 14.8472 158.798 15.8319 157.744 17.5342L157.401 15.3587H153.561V32.1526H157.706V32.1449Z" fill="white"/>
<path d="M185.95 27.0839C185.95 30.4808 183.065 32.5953 178.92 32.5953C174.737 32.5953 172.095 30.3434 172.088 27.061H176.019C176.05 28.519 177.141 29.4426 179.042 29.4426C180.973 29.4426 182.034 28.6564 182.034 27.435C182.034 26.58 181.599 25.977 180.103 25.6335L177.072 24.9159C174.05 24.2365 172.592 22.809 172.592 20.122C172.592 16.8243 175.37 14.8472 179.248 14.8472C183.019 14.8472 185.561 17.0304 185.599 20.29H181.66C181.637 18.8625 180.676 17.9464 179.08 17.9464C177.454 17.9464 176.5 18.6945 176.5 19.9464C176.5 20.9006 177.256 21.5037 178.676 21.8472L181.706 22.5648C184.309 23.1526 185.737 24.3129 185.927 26.519L185.95 27.0839Z" fill="white"/>
<path d="M25.2173 31.4524C26.3089 30.3608 26.3089 28.5974 25.2173 27.5058L6.2631 8.55161C5.17149 7.46001 3.40813 7.46001 2.31654 8.55161C1.22493 9.64322 1.22493 11.4066 2.31654 12.4982L21.2707 31.4524C22.3623 32.544 24.1257 32.544 25.2173 31.4524Z" fill="#6566FF"/>
<path d="M24.7135 17.4599C25.8051 16.3683 25.8051 14.605 24.7135 13.5134L17.0189 5.8187C15.9273 4.7271 14.1639 4.7271 13.0723 5.8187C11.9807 6.91031 11.9807 8.67366 13.0723 9.76527L20.767 17.4599C21.8586 18.5439 23.6219 18.5439 24.7135 17.4599Z" fill="#6566FF"/>
<path d="M14.4616 34.1851C15.5532 33.0935 15.5532 31.3301 14.4616 30.2385L6.76691 22.5438C5.67531 21.4522 3.91195 21.4522 2.82035 22.5438C1.72875 23.6354 1.72875 25.3988 2.82035 26.4904L10.515 34.1851C11.6066 35.2767 13.37 35.2767 14.4616 34.1851Z" fill="#6566FF"/>
</g>
</g>
<defs>
<clipPath id="clip0_2165_2948">
<rect width="185" height="30" fill="white" transform="translate(1.5 5)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@@ -0,0 +1,26 @@
<svg width="188" height="40" viewBox="0 0 188 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2001_9513)">
<mask id="mask0_2001_9513" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="1" y="5" width="185" height="30">
<path d="M185.95 5H1.5V35H185.95V5Z" fill="white"/>
</mask>
<g mask="url(#mask0_2001_9513)">
<path d="M45.5152 7.30566H41.1641V32.1453H55.9198V28.1377H45.5152V7.30566Z" fill="#1C2033"/>
<path d="M60.9122 11.9924C62.2709 11.9924 63.3931 10.8702 63.3931 9.47328C63.3931 8.07634 62.2709 7 60.9122 7C59.4847 7 58.3625 8.0916 58.3625 9.48092C58.3625 10.8702 59.4923 11.9924 60.9122 11.9924ZM58.8511 32.145H62.9961V15.3511H58.8511V32.145Z" fill="#1C2033"/>
<path d="M71.4236 32.1449V23.1068C71.4236 20.3892 72.9809 18.6182 75.5381 18.6182C77.6831 18.6182 79.0725 19.977 79.0725 22.8014V32.1526H83.2175V21.809C83.2175 17.4579 81.0419 14.8472 76.8282 14.8472C74.5534 14.8472 72.5152 15.8319 71.4618 17.5342L71.1183 15.3587H67.2786V32.1526H71.4236V32.1449Z" fill="#1C2033"/>
<path d="M94.8053 32.5879C99.187 32.5879 102.248 30.3818 102.958 26.7024H99.1183C98.6374 28.2978 97.1488 29.1833 94.8664 29.1833C92.1107 29.1833 90.5534 27.6871 90.2481 24.7329L102.889 24.6948V23.4429C102.889 18.2062 99.6908 14.8398 94.6603 14.8398C89.7366 14.8398 86.3015 18.4734 86.3015 23.7482C86.3015 28.9467 89.8053 32.5879 94.8053 32.5879ZM94.6985 18.2444C97.1794 18.2444 98.7748 19.7711 98.7748 22.0841H90.3473C90.7519 19.5726 92.2481 18.2444 94.6985 18.2444Z" fill="#1C2033"/>
<path d="M108.279 11.9924C109.637 11.9924 110.759 10.8702 110.759 9.47328C110.759 8.07634 109.637 7 108.279 7C106.851 7 105.737 8.0916 105.737 9.48092C105.737 10.8702 106.843 11.9924 108.279 11.9924ZM106.202 32.145H110.347V15.3511H106.202V32.145Z" fill="#1C2033"/>
<path d="M113.653 23.7174C113.653 29.0533 116.981 32.5877 122.08 32.5877C126.462 32.5877 129.729 29.9006 130.233 25.9923H126.05C125.607 27.8319 124.149 28.8472 122.072 28.8472C119.424 28.8472 117.79 26.8777 117.79 23.7174C117.79 20.5571 119.561 18.5495 122.21 18.5495C124.179 18.5495 125.576 19.5342 126.05 21.4426H130.195C129.752 17.3968 126.622 14.8472 122.042 14.8472C117.088 14.8472 113.653 18.519 113.653 23.7174Z" fill="#1C2033"/>
<path d="M132.332 23.7176C132.332 28.9543 136.103 32.5573 141.309 32.5573C146.508 32.5573 150.286 28.9619 150.286 23.7176C150.286 18.481 146.515 14.8779 141.309 14.8779C136.111 14.8856 132.332 18.481 132.332 23.7176ZM136.485 23.7176C136.485 20.6566 138.454 18.5879 141.309 18.5879C144.164 18.5879 146.134 20.6642 146.134 23.7176C146.134 26.7711 144.164 28.8474 141.309 28.8474C138.454 28.855 136.485 26.7787 136.485 23.7176Z" fill="#1C2033"/>
<path d="M157.706 32.1449V23.1068C157.706 20.3892 159.263 18.6182 161.821 18.6182C163.966 18.6182 165.355 19.977 165.355 22.8014V32.1526H169.5V21.809C169.5 17.4579 167.324 14.8472 163.111 14.8472C160.836 14.8472 158.798 15.8319 157.744 17.5342L157.401 15.3587H153.561V32.1526H157.706V32.1449Z" fill="#1C2033"/>
<path d="M185.95 27.0839C185.95 30.4808 183.065 32.5953 178.92 32.5953C174.737 32.5953 172.095 30.3434 172.088 27.061H176.019C176.05 28.519 177.141 29.4426 179.042 29.4426C180.973 29.4426 182.034 28.6564 182.034 27.435C182.034 26.58 181.599 25.977 180.103 25.6335L177.072 24.9159C174.05 24.2365 172.592 22.809 172.592 20.122C172.592 16.8243 175.37 14.8472 179.248 14.8472C183.019 14.8472 185.561 17.0304 185.599 20.29H181.66C181.637 18.8625 180.676 17.9464 179.08 17.9464C177.454 17.9464 176.5 18.6945 176.5 19.9464C176.5 20.9006 177.256 21.5037 178.676 21.8472L181.706 22.5648C184.309 23.1526 185.737 24.3129 185.927 26.519L185.95 27.0839Z" fill="#1C2033"/>
<path d="M25.2173 31.4524C26.3089 30.3608 26.3089 28.5974 25.2173 27.5058L6.2631 8.55161C5.17149 7.46001 3.40813 7.46001 2.31654 8.55161C1.22493 9.64322 1.22493 11.4066 2.31654 12.4982L21.2707 31.4524C22.3623 32.544 24.1257 32.544 25.2173 31.4524Z" fill="#6566FF"/>
<path d="M24.7135 17.4599C25.8051 16.3683 25.8051 14.605 24.7135 13.5134L17.0189 5.8187C15.9273 4.7271 14.1639 4.7271 13.0723 5.8187C11.9807 6.91031 11.9807 8.67366 13.0723 9.76527L20.767 17.4599C21.8586 18.5439 23.6219 18.5439 24.7135 17.4599Z" fill="#6566FF"/>
<path d="M14.4616 34.1851C15.5532 33.0935 15.5532 31.3301 14.4616 30.2385L6.76691 22.5438C5.67531 21.4522 3.91195 21.4522 2.82035 22.5438C1.72875 23.6354 1.72875 25.3988 2.82035 26.4904L10.515 34.1851C11.6066 35.2767 13.37 35.2767 14.4616 34.1851Z" fill="#6566FF"/>
</g>
</g>
<defs>
<clipPath id="clip0_2001_9513">
<rect width="185" height="30" fill="white" transform="translate(1.5 5)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -0,0 +1,27 @@
<svg width="161" height="40" viewBox="0 0 161 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2165_2978)">
<mask id="mask0_2165_2978" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="41" height="40">
<path d="M40.5 0H0.5V40H40.5V0Z" fill="white"/>
</mask>
<g mask="url(#mask0_2165_2978)">
<path opacity="0.72" d="M40.4359 18.3522C40.4163 18.1526 40.3239 17.9673 40.1764 17.8316C40.0288 17.6958 39.8364 17.6191 39.6359 17.6162H19.7C19.1586 17.6294 18.6301 17.784 18.167 18.0647C17.7039 18.3454 17.3222 18.7424 17.06 19.2162C16.8172 19.6399 16.6895 20.1198 16.6895 20.6082C16.6895 21.0965 16.8172 21.5764 17.06 22.0002C17.1293 22.1334 17.2321 22.2463 17.3584 22.3277C17.4847 22.409 17.6299 22.4561 17.7799 22.4642H39.684C39.8845 22.4612 40.0769 22.3845 40.2244 22.2488C40.372 22.113 40.4643 21.9277 40.484 21.7282C40.484 21.1042 40.484 20.5762 40.484 20.1282C40.484 19.6802 40.4839 18.9602 40.4359 18.3522Z" fill="#3758F9"/>
<path d="M40.4198 18.3522C40.404 18.154 40.315 17.9689 40.17 17.8328C40.0251 17.6967 39.8346 17.6195 39.6358 17.6162H36.4358C36.3236 17.6174 36.2128 17.6423 36.1108 17.6892C36.0088 17.736 35.9179 17.8038 35.8438 17.8882C35.7693 17.9693 35.7134 18.0657 35.6802 18.1708C35.647 18.2759 35.6374 18.3869 35.6519 18.4962C35.6519 19.0082 35.6519 19.5202 35.6519 20.0962C35.6478 22.6493 35.0008 25.1603 33.7704 27.3973C32.54 29.6344 30.7658 31.5255 28.6118 32.8962C28.3878 33.0402 28.1799 33.2162 27.9399 33.3442C26.7658 34.0128 25.5062 34.5188 24.1958 34.8482L26.2919 38.5762C26.363 38.6994 26.4658 38.8015 26.5896 38.8718C26.7133 38.9421 26.8535 38.9781 26.9958 38.9762C27.0804 38.9915 27.1672 38.9915 27.2519 38.9762L27.7638 38.7682L28.2278 38.5762C28.9356 38.2822 29.6249 37.9456 30.2919 37.5682C33.4114 35.8109 36.0034 33.2503 37.7985 30.1524C39.5937 27.0546 40.5265 23.5325 40.4999 19.9522C40.4999 19.3602 40.4678 18.8962 40.4198 18.3522Z" fill="#3758F9"/>
<path d="M29.0946 33.5387C28.9871 33.3562 28.8162 33.2195 28.6146 33.1547H28.3905C28.2516 33.1558 28.1148 33.1886 27.9905 33.2507C25.709 34.5489 23.1276 35.2274 20.5026 35.2187C16.4739 35.2102 12.6127 33.6061 9.76396 30.7574C6.91524 27.9086 5.31109 24.0474 5.30264 20.0187C5.31109 15.99 6.91524 12.1287 9.76396 9.27999C12.6127 6.43126 16.4739 4.82713 20.5026 4.81867C23.1264 4.81951 25.7054 5.49735 27.9905 6.78666C28.11 6.86248 28.2491 6.90144 28.3905 6.89866H28.5665C28.6762 6.87445 28.7798 6.82785 28.8706 6.76177C28.9615 6.6957 29.0378 6.61157 29.0946 6.51467L30.6946 3.73067C30.8004 3.54551 30.8295 3.3263 30.7757 3.11997C30.7219 2.91363 30.5893 2.73657 30.4065 2.62667C27.3949 0.924775 23.9939 0.0317974 20.5347 0.0346749C15.2329 0.0431374 10.1508 2.15299 6.40186 5.90189C2.65296 9.65078 0.54313 14.7329 0.534668 20.0347C0.54313 25.3364 2.65296 30.4186 6.40186 34.1675C10.1508 37.9164 15.2329 40.0262 20.5347 40.0347C23.9939 40.0375 27.3949 39.1446 30.4065 37.4427C30.4981 37.3913 30.5784 37.3221 30.6427 37.2391C30.707 37.1561 30.7539 37.0611 30.7808 36.9596C30.8076 36.8581 30.8139 36.7523 30.7991 36.6484C30.7843 36.5445 30.7488 36.4446 30.6946 36.3547L29.0946 33.5387Z" fill="#3758F9"/>
<path opacity="0.56" d="M22.7878 22.3998H17.7319C17.5885 22.3896 17.4496 22.345 17.3271 22.2698C17.2045 22.1946 17.1019 22.091 17.0278 21.9678L26.3239 38.4318C26.3951 38.5551 26.4978 38.6571 26.6216 38.7275C26.7453 38.7978 26.8855 38.8338 27.0278 38.8318C27.1179 38.847 27.2099 38.847 27.2999 38.8318C28.3571 38.4512 29.3796 37.9801 30.356 37.4238C30.4475 37.3724 30.5276 37.3032 30.5919 37.2202C30.6562 37.1373 30.7031 37.0422 30.73 36.9407C30.7568 36.8393 30.7631 36.7334 30.7483 36.6295C30.7335 36.5256 30.698 36.4257 30.6438 36.3358L22.7878 22.3998Z" fill="#3758F9"/>
</g>
<path d="M63.0224 13.6567V30.6077H60.0416V13.6567H55.5V10.855H67.5512V13.6567H63.0224Z" fill="white"/>
<path d="M77.7473 18.1472H80.6386V30.6078H77.7473V29.3029C76.5618 30.4116 75.2868 30.966 73.9222 30.966C72.1994 30.966 70.7751 30.3434 69.6493 29.0982C68.532 27.8274 67.9733 26.241 67.9733 24.3391C67.9733 22.4713 68.532 20.9148 69.6493 19.6696C70.7665 18.4244 72.1652 17.8018 73.8454 17.8018C75.2953 17.8018 76.5959 18.3988 77.7473 19.5929V18.1472ZM70.9158 24.3391C70.9158 25.5331 71.2356 26.5054 71.8753 27.256C72.532 28.015 73.3593 28.3946 74.3571 28.3946C75.4232 28.3946 76.2846 28.0278 76.9414 27.2943C77.5981 26.5353 77.9264 25.5715 77.9264 24.4031C77.9264 23.2346 77.5981 22.2709 76.9414 21.5118C76.2846 20.7698 75.4318 20.3988 74.3827 20.3988C73.3934 20.3988 72.5661 20.7741 71.9009 21.5246C71.2441 22.2837 70.9158 23.2218 70.9158 24.3391Z" fill="white"/>
<path d="M87.1503 18.147V30.6076H84.2719V18.147H87.1503ZM83.8369 12.9658C83.8369 12.4626 84.0203 12.0276 84.387 11.6609C84.7537 11.2941 85.193 11.1108 85.7047 11.1108C86.2249 11.1108 86.6684 11.2941 87.0352 11.6609C87.4019 12.0191 87.5853 12.4583 87.5853 12.9786C87.5853 13.4988 87.4019 13.9423 87.0352 14.3091C86.677 14.6758 86.2377 14.8592 85.7175 14.8592C85.1972 14.8592 84.7537 14.6758 84.387 14.3091C84.0203 13.9423 83.8369 13.4946 83.8369 12.9658Z" fill="white"/>
<path d="M93.6748 9V30.6077H90.7964V9H93.6748Z" fill="white"/>
<path d="M108.029 20.322H116.191V20.9744C116.191 22.4584 116.016 23.7719 115.666 24.9147C115.325 25.9723 114.749 26.9616 113.939 27.8827C112.106 29.9467 109.773 30.9787 106.941 30.9787C104.178 30.9787 101.811 29.9808 99.8412 27.9851C97.871 25.9808 96.8859 23.5757 96.8859 20.7697C96.8859 17.9041 97.8881 15.4733 99.8923 13.4776C101.897 11.4733 104.336 10.4712 107.21 10.4712C108.754 10.4712 110.195 10.7868 111.534 11.4179C112.813 12.049 114.071 13.0725 115.308 14.4883L113.184 16.5224C111.564 14.3646 109.59 13.2857 107.261 13.2857C105.172 13.2857 103.419 14.0064 102.003 15.4478C100.587 16.8635 99.8795 18.6375 99.8795 20.7697C99.8795 22.9701 100.668 24.7825 102.246 26.2068C103.722 27.5288 105.321 28.1898 107.044 28.1898C108.511 28.1898 109.828 27.6951 110.997 26.7058C112.165 25.7079 112.818 24.5139 112.954 23.1237H108.029V20.322Z" fill="white"/>
<path d="M119.402 18.1472H122.28V19.2602C122.809 18.7059 123.278 18.3263 123.688 18.1216C124.106 17.9084 124.6 17.8018 125.172 17.8018C125.931 17.8018 126.724 18.0491 127.551 18.5438L126.233 21.1792C125.688 20.7869 125.155 20.5907 124.634 20.5907C123.065 20.5907 122.28 21.7762 122.28 24.1472V30.6078H119.402V18.1472Z" fill="white"/>
<path d="M132.489 18.147V30.6076H129.611V18.147H132.489ZM129.176 12.9658C129.176 12.4626 129.359 12.0276 129.726 11.6609C130.093 11.2941 130.532 11.1108 131.044 11.1108C131.564 11.1108 132.007 11.2941 132.374 11.6609C132.741 12.0191 132.924 12.4583 132.924 12.9786C132.924 13.4988 132.741 13.9423 132.374 14.3091C132.016 14.6758 131.577 14.8592 131.057 14.8592C130.536 14.8592 130.093 14.6758 129.726 14.3091C129.359 13.9423 129.176 13.4946 129.176 12.9658Z" fill="white"/>
<path d="M145.321 9H148.212V30.6077H145.321V29.3028C144.187 30.4115 142.903 30.9659 141.47 30.9659C139.764 30.9659 138.349 30.3433 137.223 29.0981C136.106 27.8273 135.547 26.2409 135.547 24.339C135.547 22.4797 136.106 20.9275 137.223 19.6823C138.332 18.4286 139.726 17.8017 141.406 17.8017C142.865 17.8017 144.17 18.3987 145.321 19.5928V9ZM138.489 24.339C138.489 25.533 138.809 26.5053 139.449 27.2559C140.106 28.0149 140.933 28.3945 141.931 28.3945C142.997 28.3945 143.858 28.0277 144.515 27.2942C145.172 26.5352 145.5 25.5714 145.5 24.403C145.5 23.2345 145.172 22.2708 144.515 21.5117C143.858 20.7697 143.005 20.3987 141.956 20.3987C140.967 20.3987 140.14 20.774 139.474 21.5245C138.818 22.2836 138.489 23.2217 138.489 24.339Z" fill="white"/>
<path d="M159.086 20.2709L156.707 21.5374C156.332 20.7698 155.867 20.386 155.312 20.386C155.048 20.386 154.822 20.4756 154.634 20.6547C154.447 20.8253 154.353 21.047 154.353 21.3199C154.353 21.7975 154.907 22.2709 156.016 22.74C157.543 23.3967 158.57 24.0022 159.099 24.5566C159.628 25.111 159.892 25.8572 159.892 26.7954C159.892 27.998 159.449 29.0044 158.562 29.8146C157.7 30.5822 156.66 30.966 155.44 30.966C153.351 30.966 151.871 29.9468 151.001 27.9084L153.457 26.7698C153.799 27.3668 154.059 27.7464 154.238 27.9084C154.587 28.2325 155.005 28.3946 155.491 28.3946C156.464 28.3946 156.95 27.9511 156.95 27.0641C156.95 26.5523 156.575 26.0747 155.824 25.6312C155.534 25.4862 155.244 25.3455 154.954 25.2091C154.664 25.0726 154.37 24.9319 154.071 24.7869C153.236 24.3775 152.647 23.9681 152.306 23.5587C151.871 23.0385 151.654 22.369 151.654 21.5502C151.654 20.4671 152.025 19.5715 152.767 18.8636C153.526 18.1558 154.447 17.8018 155.53 17.8018C157.125 17.8018 158.31 18.6248 159.086 20.2709Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_2165_2978">
<rect width="160" height="40" fill="white" transform="translate(0.5)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@@ -0,0 +1,27 @@
<svg width="161" height="40" viewBox="0 0 161 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2011_604)">
<mask id="mask0_2011_604" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="41" height="40">
<path d="M40.5 0H0.5V40H40.5V0Z" fill="white"/>
</mask>
<g mask="url(#mask0_2011_604)">
<path opacity="0.72" d="M40.4359 18.3522C40.4163 18.1526 40.3239 17.9673 40.1764 17.8316C40.0288 17.6958 39.8364 17.6191 39.6359 17.6162H19.7C19.1586 17.6294 18.6301 17.784 18.167 18.0647C17.7039 18.3454 17.3222 18.7424 17.06 19.2162C16.8172 19.6399 16.6895 20.1198 16.6895 20.6082C16.6895 21.0965 16.8172 21.5764 17.06 22.0002C17.1293 22.1334 17.2321 22.2463 17.3584 22.3277C17.4847 22.409 17.6299 22.4561 17.7799 22.4642H39.684C39.8845 22.4612 40.0769 22.3845 40.2244 22.2488C40.372 22.113 40.4643 21.9277 40.484 21.7282C40.484 21.1042 40.484 20.5762 40.484 20.1282C40.484 19.6802 40.4839 18.9602 40.4359 18.3522Z" fill="#3758F9"/>
<path d="M40.4198 18.3522C40.404 18.154 40.315 17.9689 40.17 17.8328C40.0251 17.6967 39.8346 17.6195 39.6358 17.6162H36.4358C36.3236 17.6174 36.2128 17.6423 36.1108 17.6892C36.0088 17.736 35.9179 17.8038 35.8438 17.8882C35.7693 17.9693 35.7134 18.0657 35.6802 18.1708C35.647 18.2759 35.6374 18.3869 35.6519 18.4962C35.6519 19.0082 35.6519 19.5202 35.6519 20.0962C35.6478 22.6493 35.0008 25.1603 33.7704 27.3973C32.54 29.6344 30.7658 31.5255 28.6118 32.8962C28.3878 33.0402 28.1799 33.2162 27.9399 33.3442C26.7658 34.0128 25.5062 34.5188 24.1958 34.8482L26.2919 38.5762C26.363 38.6994 26.4658 38.8015 26.5896 38.8718C26.7133 38.9421 26.8535 38.9781 26.9958 38.9762C27.0804 38.9915 27.1672 38.9915 27.2519 38.9762L27.7638 38.7682L28.2278 38.5762C28.9356 38.2822 29.6249 37.9456 30.2919 37.5682C33.4114 35.8109 36.0034 33.2503 37.7985 30.1524C39.5937 27.0546 40.5265 23.5325 40.4999 19.9522C40.4999 19.3602 40.4678 18.8962 40.4198 18.3522Z" fill="#3758F9"/>
<path d="M29.0946 33.5387C28.9871 33.3562 28.8162 33.2195 28.6146 33.1547H28.3905C28.2516 33.1558 28.1148 33.1886 27.9905 33.2507C25.709 34.5489 23.1276 35.2274 20.5026 35.2187C16.4739 35.2102 12.6127 33.6061 9.76396 30.7574C6.91524 27.9086 5.31109 24.0474 5.30264 20.0187C5.31109 15.99 6.91524 12.1287 9.76396 9.27999C12.6127 6.43126 16.4739 4.82713 20.5026 4.81867C23.1264 4.81951 25.7054 5.49735 27.9905 6.78666C28.11 6.86248 28.2491 6.90144 28.3905 6.89866H28.5665C28.6762 6.87445 28.7798 6.82785 28.8706 6.76177C28.9615 6.6957 29.0378 6.61157 29.0946 6.51467L30.6946 3.73067C30.8004 3.54551 30.8295 3.3263 30.7757 3.11997C30.7219 2.91363 30.5893 2.73657 30.4065 2.62667C27.3949 0.924775 23.9939 0.0317974 20.5347 0.0346749C15.2329 0.0431374 10.1508 2.15299 6.40186 5.90189C2.65296 9.65078 0.54313 14.7329 0.534668 20.0347C0.54313 25.3364 2.65296 30.4186 6.40186 34.1675C10.1508 37.9164 15.2329 40.0262 20.5347 40.0347C23.9939 40.0375 27.3949 39.1446 30.4065 37.4427C30.4981 37.3913 30.5784 37.3221 30.6427 37.2391C30.707 37.1561 30.7539 37.0611 30.7808 36.9596C30.8076 36.8581 30.8139 36.7523 30.7991 36.6484C30.7843 36.5445 30.7488 36.4446 30.6946 36.3547L29.0946 33.5387Z" fill="#3758F9"/>
<path opacity="0.56" d="M22.7878 22.3998H17.7319C17.5885 22.3896 17.4496 22.345 17.3271 22.2698C17.2045 22.1946 17.1019 22.091 17.0278 21.9678L26.3239 38.4318C26.3951 38.5551 26.4978 38.6571 26.6216 38.7275C26.7453 38.7978 26.8855 38.8338 27.0278 38.8318C27.1179 38.847 27.2099 38.847 27.2999 38.8318C28.3571 38.4512 29.3796 37.9801 30.356 37.4238C30.4475 37.3724 30.5276 37.3032 30.5919 37.2202C30.6562 37.1373 30.7031 37.0422 30.73 36.9407C30.7568 36.8393 30.7631 36.7334 30.7483 36.6295C30.7335 36.5256 30.698 36.4257 30.6438 36.3358L22.7878 22.3998Z" fill="#3758F9"/>
</g>
<path d="M63.0224 13.6567V30.6077H60.0416V13.6567H55.5V10.855H67.5512V13.6567H63.0224Z" fill="#111928"/>
<path d="M77.7473 18.1472H80.6386V30.6078H77.7473V29.3029C76.5618 30.4116 75.2868 30.966 73.9222 30.966C72.1994 30.966 70.7751 30.3434 69.6493 29.0982C68.532 27.8274 67.9733 26.241 67.9733 24.3391C67.9733 22.4713 68.532 20.9148 69.6493 19.6696C70.7665 18.4244 72.1652 17.8018 73.8454 17.8018C75.2953 17.8018 76.5959 18.3988 77.7473 19.5929V18.1472ZM70.9158 24.3391C70.9158 25.5331 71.2356 26.5054 71.8753 27.256C72.532 28.015 73.3593 28.3946 74.3571 28.3946C75.4232 28.3946 76.2846 28.0278 76.9414 27.2943C77.5981 26.5353 77.9264 25.5715 77.9264 24.4031C77.9264 23.2346 77.5981 22.2709 76.9414 21.5118C76.2846 20.7698 75.4318 20.3988 74.3827 20.3988C73.3934 20.3988 72.5661 20.7741 71.9009 21.5246C71.2441 22.2837 70.9158 23.2218 70.9158 24.3391Z" fill="#111928"/>
<path d="M87.1503 18.147V30.6076H84.2719V18.147H87.1503ZM83.8369 12.9658C83.8369 12.4626 84.0203 12.0276 84.387 11.6609C84.7537 11.2941 85.193 11.1108 85.7047 11.1108C86.2249 11.1108 86.6684 11.2941 87.0352 11.6609C87.4019 12.0191 87.5853 12.4583 87.5853 12.9786C87.5853 13.4988 87.4019 13.9423 87.0352 14.3091C86.677 14.6758 86.2377 14.8592 85.7175 14.8592C85.1972 14.8592 84.7537 14.6758 84.387 14.3091C84.0203 13.9423 83.8369 13.4946 83.8369 12.9658Z" fill="#111928"/>
<path d="M93.6748 9V30.6077H90.7964V9H93.6748Z" fill="#111928"/>
<path d="M108.029 20.322H116.191V20.9744C116.191 22.4584 116.016 23.7719 115.666 24.9147C115.325 25.9723 114.749 26.9616 113.939 27.8827C112.106 29.9467 109.773 30.9787 106.941 30.9787C104.178 30.9787 101.811 29.9808 99.8412 27.9851C97.871 25.9808 96.8859 23.5757 96.8859 20.7697C96.8859 17.9041 97.8881 15.4733 99.8923 13.4776C101.897 11.4733 104.336 10.4712 107.21 10.4712C108.754 10.4712 110.195 10.7868 111.534 11.4179C112.813 12.049 114.071 13.0725 115.308 14.4883L113.184 16.5224C111.564 14.3646 109.59 13.2857 107.261 13.2857C105.172 13.2857 103.419 14.0064 102.003 15.4478C100.587 16.8635 99.8795 18.6375 99.8795 20.7697C99.8795 22.9701 100.668 24.7825 102.246 26.2068C103.722 27.5288 105.321 28.1898 107.044 28.1898C108.511 28.1898 109.828 27.6951 110.997 26.7058C112.165 25.7079 112.818 24.5139 112.954 23.1237H108.029V20.322Z" fill="#111928"/>
<path d="M119.402 18.1472H122.28V19.2602C122.809 18.7059 123.278 18.3263 123.688 18.1216C124.106 17.9084 124.6 17.8018 125.172 17.8018C125.931 17.8018 126.724 18.0491 127.551 18.5438L126.233 21.1792C125.688 20.7869 125.155 20.5907 124.634 20.5907C123.065 20.5907 122.28 21.7762 122.28 24.1472V30.6078H119.402V18.1472Z" fill="#111928"/>
<path d="M132.489 18.147V30.6076H129.611V18.147H132.489ZM129.176 12.9658C129.176 12.4626 129.359 12.0276 129.726 11.6609C130.093 11.2941 130.532 11.1108 131.044 11.1108C131.564 11.1108 132.007 11.2941 132.374 11.6609C132.741 12.0191 132.924 12.4583 132.924 12.9786C132.924 13.4988 132.741 13.9423 132.374 14.3091C132.016 14.6758 131.577 14.8592 131.057 14.8592C130.536 14.8592 130.093 14.6758 129.726 14.3091C129.359 13.9423 129.176 13.4946 129.176 12.9658Z" fill="#111928"/>
<path d="M145.321 9H148.212V30.6077H145.321V29.3028C144.187 30.4115 142.903 30.9659 141.47 30.9659C139.764 30.9659 138.349 30.3433 137.223 29.0981C136.106 27.8273 135.547 26.2409 135.547 24.339C135.547 22.4797 136.106 20.9275 137.223 19.6823C138.332 18.4286 139.726 17.8017 141.406 17.8017C142.865 17.8017 144.17 18.3987 145.321 19.5928V9ZM138.489 24.339C138.489 25.533 138.809 26.5053 139.449 27.2559C140.106 28.0149 140.933 28.3945 141.931 28.3945C142.997 28.3945 143.858 28.0277 144.515 27.2942C145.172 26.5352 145.5 25.5714 145.5 24.403C145.5 23.2345 145.172 22.2708 144.515 21.5117C143.858 20.7697 143.005 20.3987 141.956 20.3987C140.967 20.3987 140.14 20.774 139.474 21.5245C138.818 22.2836 138.489 23.2217 138.489 24.339Z" fill="#111928"/>
<path d="M159.086 20.2709L156.707 21.5374C156.332 20.7698 155.867 20.386 155.312 20.386C155.048 20.386 154.822 20.4756 154.634 20.6547C154.447 20.8253 154.353 21.047 154.353 21.3199C154.353 21.7975 154.907 22.2709 156.016 22.74C157.543 23.3967 158.57 24.0022 159.099 24.5566C159.628 25.111 159.892 25.8572 159.892 26.7954C159.892 27.998 159.449 29.0044 158.562 29.8146C157.7 30.5822 156.66 30.966 155.44 30.966C153.351 30.966 151.871 29.9468 151.001 27.9084L153.457 26.7698C153.799 27.3668 154.059 27.7464 154.238 27.9084C154.587 28.2325 155.005 28.3946 155.491 28.3946C156.464 28.3946 156.95 27.9511 156.95 27.0641C156.95 26.5523 156.575 26.0747 155.824 25.6312C155.534 25.4862 155.244 25.3455 154.954 25.2091C154.664 25.0726 154.37 24.9319 154.071 24.7869C153.236 24.3775 152.647 23.9681 152.306 23.5587C151.871 23.0385 151.654 22.369 151.654 21.5502C151.654 20.4671 152.025 19.5715 152.767 18.8636C153.526 18.1558 154.447 17.8018 155.53 17.8018C157.125 17.8018 158.31 18.6248 159.086 20.2709Z" fill="#111928"/>
</g>
<defs>
<clipPath id="clip0_2011_604">
<rect width="160" height="40" fill="white" transform="translate(0.5)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@@ -0,0 +1,17 @@
<svg width="163" height="40" viewBox="0 0 163 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2165_2966)">
<path d="M32.9574 14.9978V26.9412C32.9574 29.368 31.7102 31.6227 29.6582 32.9129L20.0555 38.9522C19.8528 39.0812 19.5824 38.9337 19.5824 38.6941V34.4673C19.5824 33.773 19.9265 33.1279 20.504 32.7409L26.6293 28.6553C27.4833 28.0839 27.9994 27.1255 27.9994 26.0995V17.8669C27.9994 17.2095 28.3496 16.6013 28.9209 16.2695L32.0358 14.4755C32.4474 14.2421 32.9574 14.537 32.9574 15.01V14.9978Z" fill="#625DF5"/>
<path d="M32.214 11.4228L18.6486 19.2561C17.6963 19.8029 17.1127 20.8166 17.1127 21.9164V38.4184C17.1127 38.658 16.8546 38.8055 16.6519 38.6826L4.0818 31.3716C1.86391 30.0814 0.5 27.716 0.5 25.148V15.1582C0.5 12.1478 2.10352 9.3647 4.7146 7.85948L16.1542 1.24882C16.7256 0.91706 17.426 0.91706 17.9974 1.24882L20.8603 2.90149C21.4747 3.25782 21.4747 4.14252 20.8603 4.49886L7.20282 12.3813C6.25054 12.9281 5.66688 13.9418 5.66688 15.0415V24.5397C5.66688 25.6395 6.25054 26.6532 7.20282 27.2L11.7308 29.8111C11.8291 29.8663 11.9458 29.7988 11.9458 29.6882V20.2514C11.9458 18.3346 12.9656 16.5713 14.6245 15.6129L27.7475 8.03765C28.3618 7.68131 29.1237 7.71203 29.7073 8.11138L32.2693 9.86234C32.8283 10.2433 32.7976 11.0788 32.2078 11.4228H32.214Z" fill="#625DF5"/>
<path d="M47.7321 9.71687H52.1131V21.616C52.1131 22.5926 52.2467 23.4633 52.5139 24.228C52.781 24.9835 53.1772 25.6239 53.7024 26.149C54.2368 26.6742 54.8955 27.075 55.6787 27.3514C56.4618 27.6186 57.3739 27.7522 58.4151 27.7522C59.447 27.7522 60.3545 27.6186 61.1376 27.3514C61.93 27.075 62.5888 26.6742 63.1139 26.149C63.6483 25.6239 64.0491 24.9835 64.3163 24.228C64.5835 23.4633 64.7171 22.5926 64.7171 21.616V9.71687H69.098V22.1412C69.098 23.5601 68.8585 24.8499 68.3794 26.0108C67.9003 27.1717 67.2047 28.1668 66.2926 28.996C65.3804 29.8252 64.261 30.4655 62.9343 30.917C61.6167 31.3684 60.1103 31.5942 58.4151 31.5942C56.7198 31.5942 55.2088 31.3684 53.8821 30.917C52.5645 30.4655 51.4497 29.8252 50.5376 28.996C49.6254 28.1668 48.9298 27.1717 48.4507 26.0108C47.9716 24.8499 47.7321 23.5601 47.7321 22.1412V9.71687Z" fill="white"/>
<path d="M72.1247 9.71687H76.5333V31.3178H72.1247V9.71687Z" fill="white"/>
<path d="M78.5925 23.233C78.5925 21.9339 78.8366 20.7638 79.325 19.7227C79.8133 18.6723 80.4858 17.7786 81.3427 17.0416C82.2088 16.2953 83.2315 15.724 84.4108 15.3279C85.5993 14.9225 86.8846 14.7198 88.2666 14.7198C88.8563 14.7198 89.4367 14.7566 90.0079 14.8303C90.5884 14.904 91.1412 15.0054 91.6664 15.1344C92.2007 15.2634 92.6983 15.42 93.1589 15.6043C93.6288 15.7793 94.0434 15.9728 94.4027 16.1847V8.39014H98.4935V31.3178H94.4027V29.7837C94.0434 30.0325 93.6196 30.2674 93.1313 30.4886C92.643 30.7097 92.1178 30.9032 91.5558 31.069C90.9938 31.2348 90.4087 31.3638 89.8006 31.456C89.2018 31.5573 88.6075 31.608 88.0178 31.608C86.6358 31.608 85.3644 31.4053 84.2035 30.9999C83.0518 30.5945 82.0613 30.0233 81.2321 29.2862C80.4029 28.5491 79.7534 27.6692 79.2835 26.6466C78.8228 25.6147 78.5925 24.4768 78.5925 23.233ZM82.8906 23.233C82.8906 23.8871 83.0195 24.5044 83.2775 25.0849C83.5447 25.6653 83.9225 26.1767 84.4108 26.6189C84.9083 27.0519 85.5026 27.3975 86.1936 27.6554C86.8938 27.9042 87.6769 28.0286 88.543 28.0286C89.0958 28.0286 89.6486 27.9779 90.2014 27.8765C90.7542 27.766 91.284 27.614 91.7907 27.4205C92.3067 27.227 92.7858 26.9921 93.228 26.7157C93.6795 26.4393 94.0711 26.1306 94.4027 25.7897V20.1373C93.9881 19.8056 93.5505 19.5246 93.0898 19.2942C92.6292 19.0639 92.1593 18.875 91.6802 18.7276C91.2011 18.5802 90.7174 18.4742 90.2291 18.4097C89.7407 18.336 89.2663 18.2992 88.8056 18.2992C87.8658 18.2992 87.0274 18.4282 86.2903 18.6861C85.5625 18.9349 84.9452 19.2804 84.4384 19.7227C83.9409 20.1649 83.5585 20.6855 83.2913 21.2843C83.0242 21.8832 82.8906 22.5328 82.8906 23.233Z" fill="white"/>
<path d="M100.967 23.1086C100.967 22.003 101.193 20.948 101.645 19.9438C102.096 18.9303 102.746 18.0366 103.593 17.2627C104.441 16.4887 105.477 15.8714 106.703 15.4108C107.937 14.9501 109.338 14.7198 110.904 14.7198C112.461 14.7198 113.862 14.9547 115.105 15.4246C116.358 15.8853 117.418 16.521 118.284 17.3318C119.159 18.1426 119.827 19.0961 120.288 20.1925C120.758 21.2889 120.993 22.4637 120.993 23.7167C120.993 23.8733 120.988 24.0438 120.979 24.228C120.979 24.4031 120.97 24.5643 120.951 24.7117H105.528C105.703 25.2 105.984 25.6469 106.371 26.0523C106.767 26.4577 107.26 26.8078 107.85 27.1026C108.439 27.3975 109.121 27.6278 109.895 27.7936C110.669 27.9503 111.526 28.0286 112.466 28.0286C113.405 28.0286 114.341 27.9318 115.271 27.7383C116.202 27.5357 117.091 27.2823 117.938 26.9782L119.32 30.1016C118.786 30.3504 118.243 30.5715 117.69 30.765C117.146 30.9492 116.575 31.1059 115.976 31.2348C115.386 31.3546 114.764 31.4468 114.11 31.5113C113.465 31.5757 112.784 31.608 112.065 31.608C110.231 31.608 108.624 31.3869 107.242 30.9446C105.86 30.5024 104.703 29.8989 103.773 29.1342C102.842 28.3695 102.142 27.4712 101.672 26.4393C101.202 25.4074 100.967 24.2971 100.967 23.1086ZM116.653 21.5193C116.506 21.0678 116.275 20.6486 115.962 20.2616C115.658 19.8655 115.276 19.5246 114.815 19.239C114.354 18.9441 113.82 18.7138 113.212 18.5479C112.604 18.3821 111.936 18.2992 111.208 18.2992C110.434 18.2992 109.729 18.3867 109.094 18.5618C108.458 18.7368 107.9 18.9718 107.421 19.2666C106.942 19.5614 106.541 19.9023 106.219 20.2893C105.906 20.6763 105.675 21.0862 105.528 21.5193H116.653Z" fill="white"/>
<path d="M122.651 23.2053C122.651 22.0076 122.868 20.8928 123.301 19.8609C123.743 18.8197 124.383 17.9214 125.222 17.1659C126.069 16.4012 127.101 15.8023 128.317 15.3693C129.543 14.9363 130.939 14.7198 132.505 14.7198C133.187 14.7198 133.873 14.7612 134.564 14.8441C135.255 14.9271 135.918 15.0468 136.554 15.2035C137.199 15.3509 137.803 15.5305 138.365 15.7425C138.927 15.9452 139.415 16.1709 139.83 16.4196L137.936 19.5015C137.043 19.0869 136.195 18.7829 135.393 18.5894C134.601 18.3959 133.795 18.2992 132.975 18.2992C132.035 18.2992 131.192 18.4236 130.446 18.6723C129.699 18.9119 129.064 19.2528 128.539 19.695C128.023 20.1281 127.626 20.644 127.35 21.2429C127.083 21.8325 126.949 22.4775 126.949 23.1777C126.949 23.8779 127.092 24.5275 127.378 25.1263C127.672 25.716 128.082 26.2273 128.608 26.6604C129.142 27.0842 129.782 27.4205 130.529 27.6692C131.284 27.9088 132.123 28.0286 133.044 28.0286C134.057 28.0286 135.011 27.8858 135.905 27.6001C136.808 27.3145 137.646 26.9322 138.42 26.4531L140.313 29.535C139.825 29.8298 139.295 30.1062 138.724 30.3642C138.153 30.6129 137.54 30.8295 136.886 31.0137C136.241 31.198 135.559 31.3408 134.841 31.4422C134.131 31.5527 133.394 31.608 132.629 31.608C131.072 31.608 129.676 31.3961 128.442 30.9723C127.207 30.5484 126.161 29.9634 125.305 29.2171C124.448 28.4616 123.789 27.5725 123.328 26.5498C122.877 25.5271 122.651 24.4123 122.651 23.2053Z" fill="white"/>
<path d="M142.967 8.39014H147.058V21.9339L154.686 15.01H160.947L152.42 22.6387L161.486 31.3178H155.35L149.283 25.4442L147.058 27.4343V31.3178H142.967V8.39014Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_2165_2966">
<rect width="162" height="40" fill="white" transform="translate(0.5)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@@ -0,0 +1,17 @@
<svg width="163" height="40" viewBox="0 0 163 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2001_9531)">
<path d="M32.9574 14.9978V26.9412C32.9574 29.368 31.7102 31.6227 29.6582 32.9129L20.0555 38.9522C19.8528 39.0812 19.5824 38.9337 19.5824 38.6941V34.4673C19.5824 33.773 19.9265 33.1279 20.504 32.7409L26.6293 28.6553C27.4833 28.0839 27.9994 27.1255 27.9994 26.0995V17.8669C27.9994 17.2095 28.3496 16.6013 28.9209 16.2695L32.0358 14.4755C32.4474 14.2421 32.9574 14.537 32.9574 15.01V14.9978Z" fill="#625DF5"/>
<path d="M32.214 11.4228L18.6486 19.2561C17.6963 19.8029 17.1127 20.8166 17.1127 21.9164V38.4184C17.1127 38.658 16.8546 38.8055 16.6519 38.6826L4.0818 31.3716C1.86391 30.0814 0.5 27.716 0.5 25.148V15.1582C0.5 12.1478 2.10352 9.3647 4.7146 7.85948L16.1542 1.24882C16.7256 0.91706 17.426 0.91706 17.9974 1.24882L20.8603 2.90149C21.4747 3.25782 21.4747 4.14252 20.8603 4.49886L7.20282 12.3813C6.25054 12.9281 5.66688 13.9418 5.66688 15.0415V24.5397C5.66688 25.6395 6.25054 26.6532 7.20282 27.2L11.7308 29.8111C11.8291 29.8663 11.9458 29.7988 11.9458 29.6882V20.2514C11.9458 18.3346 12.9656 16.5713 14.6245 15.6129L27.7475 8.03765C28.3618 7.68131 29.1237 7.71203 29.7073 8.11138L32.2693 9.86234C32.8283 10.2433 32.7976 11.0788 32.2078 11.4228H32.214Z" fill="#625DF5"/>
<path d="M47.7321 9.71687H52.1131V21.616C52.1131 22.5926 52.2467 23.4633 52.5139 24.228C52.7811 24.9835 53.1772 25.6239 53.7024 26.149C54.2368 26.6742 54.8955 27.075 55.6787 27.3514C56.4618 27.6186 57.374 27.7522 58.4151 27.7522C59.447 27.7522 60.3545 27.6186 61.1376 27.3514C61.93 27.075 62.5888 26.6742 63.1139 26.149C63.6483 25.6239 64.0491 24.9835 64.3163 24.228C64.5835 23.4633 64.7171 22.5926 64.7171 21.616V9.71687H69.0981V22.1412C69.0981 23.5601 68.8585 24.8499 68.3794 26.0108C67.9003 27.1717 67.2047 28.1668 66.2926 28.996C65.3804 29.8252 64.261 30.4655 62.9343 30.917C61.6167 31.3684 60.1103 31.5942 58.4151 31.5942C56.7198 31.5942 55.2088 31.3684 53.8821 30.917C52.5645 30.4655 51.4497 29.8252 50.5376 28.996C49.6255 28.1668 48.9298 27.1717 48.4507 26.0108C47.9716 24.8499 47.7321 23.5601 47.7321 22.1412V9.71687Z" fill="#101828"/>
<path d="M72.1247 9.71687H76.5333V31.3178H72.1247V9.71687Z" fill="#101828"/>
<path d="M78.5925 23.233C78.5925 21.9339 78.8367 20.7638 79.325 19.7227C79.8133 18.6723 80.4859 17.7786 81.3427 17.0416C82.2088 16.2953 83.2315 15.724 84.4108 15.3279C85.5993 14.9225 86.8846 14.7198 88.2666 14.7198C88.8563 14.7198 89.4367 14.7566 90.0079 14.8303C90.5884 14.904 91.1412 15.0054 91.6664 15.1344C92.2007 15.2634 92.6983 15.42 93.1589 15.6043C93.6288 15.7793 94.0434 15.9728 94.4028 16.1847V8.39014H98.4935V31.3178H94.4028V29.7837C94.0434 30.0325 93.6196 30.2674 93.1313 30.4886C92.643 30.7097 92.1178 30.9032 91.5558 31.069C90.9938 31.2348 90.4087 31.3638 89.8006 31.456C89.2018 31.5573 88.6075 31.608 88.0178 31.608C86.6358 31.608 85.3644 31.4053 84.2035 30.9999C83.0518 30.5945 82.0614 30.0233 81.2321 29.2862C80.4029 28.5491 79.7534 27.6692 79.2835 26.6466C78.8228 25.6147 78.5925 24.4768 78.5925 23.233ZM82.8906 23.233C82.8906 23.8871 83.0196 24.5044 83.2775 25.0849C83.5447 25.6653 83.9225 26.1767 84.4108 26.6189C84.9083 27.0519 85.5026 27.3975 86.1936 27.6554C86.8938 27.9042 87.6769 28.0286 88.543 28.0286C89.0958 28.0286 89.6486 27.9779 90.2014 27.8766C90.7542 27.766 91.284 27.614 91.7907 27.4205C92.3067 27.227 92.7858 26.9921 93.228 26.7157C93.6795 26.4393 94.0711 26.1306 94.4028 25.7897V20.1373C93.9881 19.8056 93.5505 19.5246 93.0898 19.2942C92.6292 19.0639 92.1593 18.875 91.6802 18.7276C91.2011 18.5802 90.7174 18.4742 90.2291 18.4097C89.7408 18.336 89.2663 18.2992 88.8056 18.2992C87.8658 18.2992 87.0274 18.4282 86.2903 18.6861C85.5625 18.9349 84.9452 19.2804 84.4384 19.7227C83.9409 20.1649 83.5585 20.6855 83.2913 21.2843C83.0242 21.8832 82.8906 22.5328 82.8906 23.233Z" fill="#101828"/>
<path d="M100.967 23.1086C100.967 22.003 101.193 20.948 101.645 19.9438C102.096 18.9303 102.746 18.0366 103.593 17.2627C104.441 16.4887 105.477 15.8714 106.703 15.4108C107.937 14.9501 109.338 14.7198 110.904 14.7198C112.461 14.7198 113.862 14.9547 115.105 15.4246C116.358 15.8853 117.418 16.521 118.284 17.3318C119.159 18.1426 119.827 19.0961 120.288 20.1925C120.758 21.2889 120.993 22.4637 120.993 23.7167C120.993 23.8733 120.988 24.0438 120.979 24.228C120.979 24.4031 120.97 24.5643 120.951 24.7117H105.528C105.703 25.2 105.984 25.6469 106.371 26.0523C106.767 26.4577 107.26 26.8078 107.85 27.1026C108.439 27.3975 109.121 27.6278 109.895 27.7936C110.669 27.9503 111.526 28.0286 112.466 28.0286C113.405 28.0286 114.341 27.9318 115.271 27.7383C116.202 27.5357 117.091 27.2823 117.938 26.9782L119.32 30.1016C118.786 30.3504 118.243 30.5715 117.69 30.765C117.146 30.9492 116.575 31.1059 115.976 31.2348C115.386 31.3546 114.764 31.4468 114.11 31.5113C113.465 31.5757 112.784 31.608 112.065 31.608C110.231 31.608 108.624 31.3869 107.242 30.9446C105.86 30.5024 104.703 29.8989 103.773 29.1342C102.842 28.3695 102.142 27.4712 101.672 26.4393C101.202 25.4074 100.967 24.2971 100.967 23.1086ZM116.653 21.5193C116.506 21.0678 116.275 20.6486 115.962 20.2616C115.658 19.8655 115.276 19.5246 114.815 19.239C114.354 18.9441 113.82 18.7138 113.212 18.5479C112.604 18.3821 111.936 18.2992 111.208 18.2992C110.434 18.2992 109.729 18.3867 109.094 18.5618C108.458 18.7368 107.9 18.9718 107.421 19.2666C106.942 19.5614 106.541 19.9023 106.219 20.2893C105.906 20.6763 105.675 21.0862 105.528 21.5193H116.653Z" fill="#101828"/>
<path d="M122.651 23.2053C122.651 22.0076 122.868 20.8928 123.301 19.8609C123.743 18.8197 124.383 17.9214 125.222 17.1659C126.069 16.4012 127.101 15.8023 128.317 15.3693C129.543 14.9363 130.939 14.7198 132.505 14.7198C133.187 14.7198 133.873 14.7612 134.564 14.8441C135.255 14.9271 135.918 15.0468 136.554 15.2035C137.199 15.3509 137.803 15.5305 138.365 15.7425C138.927 15.9452 139.415 16.1709 139.83 16.4196L137.936 19.5015C137.043 19.0869 136.195 18.7829 135.393 18.5894C134.601 18.3959 133.795 18.2992 132.975 18.2992C132.035 18.2992 131.192 18.4236 130.446 18.6723C129.699 18.9119 129.064 19.2528 128.539 19.695C128.023 20.1281 127.626 20.644 127.35 21.2429C127.083 21.8325 126.949 22.4775 126.949 23.1777C126.949 23.8779 127.092 24.5275 127.378 25.1263C127.672 25.716 128.082 26.2273 128.608 26.6604C129.142 27.0842 129.782 27.4205 130.529 27.6692C131.284 27.9088 132.123 28.0286 133.044 28.0286C134.057 28.0286 135.011 27.8858 135.905 27.6001C136.808 27.3145 137.646 26.9322 138.42 26.4531L140.313 29.535C139.825 29.8298 139.295 30.1062 138.724 30.3642C138.153 30.6129 137.54 30.8295 136.886 31.0137C136.241 31.198 135.559 31.3408 134.841 31.4422C134.131 31.5527 133.394 31.608 132.629 31.608C131.072 31.608 129.676 31.3961 128.442 30.9723C127.207 30.5484 126.161 29.9634 125.305 29.2171C124.448 28.4616 123.789 27.5725 123.328 26.5498C122.877 25.5271 122.651 24.4123 122.651 23.2053Z" fill="#101828"/>
<path d="M142.967 8.39014H147.058V21.9339L154.686 15.01H160.947L152.42 22.6387L161.486 31.3178H155.35L149.283 25.4442L147.058 27.4343V31.3178H142.967V8.39014Z" fill="#101828"/>
</g>
<defs>
<clipPath id="clip0_2001_9531">
<rect width="162" height="40" fill="white" transform="translate(0.5)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 B

View File

@@ -0,0 +1,9 @@
<svg width="570" height="492" viewBox="0 0 570 492" fill="none" xmlns="http://www.w3.org/2000/svg">
<ellipse cx="55" cy="350" rx="364" ry="364" transform="rotate(-45 55 350)" fill="url(#paint0_linear)"/>
<defs>
<linearGradient id="paint0_linear" x1="55" y1="-14" x2="55" y2="714" gradientUnits="userSpaceOnUse">
<stop stop-color="#13C296" stop-opacity="0.4"/>
<stop offset="1" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 429 B

View File

@@ -0,0 +1,9 @@
<svg width="372" height="264" viewBox="0 0 372 264" fill="none" xmlns="http://www.w3.org/2000/svg">
<ellipse cx="244.343" cy="243.965" rx="199.017" ry="199.017" transform="rotate(-75 244.343 243.965)" fill="url(#paint0_linear)"/>
<defs>
<linearGradient id="paint0_linear" x1="244.343" y1="44.9479" x2="244.343" y2="442.982" gradientUnits="userSpaceOnUse">
<stop stop-color="#3056D3" stop-opacity="0.32"/>
<stop offset="1" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 474 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@@ -0,0 +1 @@
<svg fill="none" height="48" viewBox="0 0 49 48" width="49" xmlns="http://www.w3.org/2000/svg"><path d="m24.5 48c13.2548 0 24-10.7452 24-24s-10.7452-24-24-24-24 10.7452-24 24 10.7452 24 24 24z" fill="#3056d3"/><path clip-rule="evenodd" d="m15.5 20.9998c1.1998-4.7998 4.2002-7.2 9-7.2 7.2 0 8.1 5.4 11.7 6.3 2.4002.6002 4.5-.2998 6.3-2.7-1.1998 4.7998-4.2002 7.2-9 7.2-7.2 0-8.1-5.4-11.7-6.3-2.4002-.6002-4.5.2998-6.3 2.7zm-9 10.8c1.19981-4.7998 4.2002-7.2 9-7.2 7.2 0 8.1 5.4 11.7 6.3 2.4002.6002 4.5-.2998 6.3-2.7-1.1998 4.7998-4.2002 7.2-9 7.2-7.2 0-8.1-5.4-11.7-6.3-2.4002-.6002-4.5.2998-6.3 2.7z" fill="#fff" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 640 B

View File

@@ -0,0 +1,12 @@
<svg width="132" height="46" viewBox="0 0 132 46" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2005_10874)">
<path d="M54.9519 12.0439C56.8799 12.0439 58.5538 12.3618 59.9734 12.9974C61.4142 13.633 62.5159 14.5441 63.2787 15.7306C64.0415 16.9172 64.4228 18.3261 64.4228 19.9576C64.4228 21.5679 64.0415 22.9769 63.2787 24.1846C62.5159 25.3712 61.4142 26.2822 59.9734 26.9178C58.5538 27.5535 56.8799 27.8713 54.9519 27.8713H49.9303V34.2912H45.7987V12.0439H54.9519ZM54.7612 24.3753C56.5621 24.3753 57.9287 23.9939 58.861 23.2311C59.7933 22.4684 60.2594 21.3772 60.2594 19.9576C60.2594 18.5381 59.7933 17.4469 58.861 16.6841C57.9287 15.9213 56.5621 15.5399 54.7612 15.5399H49.9303V24.3753H54.7612ZM68.967 12.0439H73.0986V30.7952H84.7308V34.2912H68.967V12.0439ZM104.668 29.1426H93.5439L91.351 34.2912H87.0922L97.1035 12.0439H101.172L111.215 34.2912H106.892L104.668 29.1426ZM103.301 25.9008L99.1058 16.1756L94.9423 25.9008H103.301ZM122.726 26.4411V34.2912H118.594V26.5047L109.854 12.0439H114.272L120.787 22.8815L127.366 12.0439H131.434L122.726 26.4411Z" fill="white"/>
<path d="M16.7273 39.309C25.9655 39.309 33.4545 31.82 33.4545 22.5818C33.4545 13.3435 25.9655 5.85449 16.7273 5.85449C7.48905 5.85449 0 13.3435 0 22.5818C0 31.82 7.48905 39.309 16.7273 39.309Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.5175 25.6612C8.74328 22.7044 9.0391 20.0428 11.4046 17.6774C14.9529 14.1289 18.0578 16.3467 20.2756 15.0161C21.7542 14.1289 22.3456 12.6506 22.0497 10.5806C23.8239 13.5374 23.5282 16.1989 21.1627 18.5644C17.6142 22.1128 14.5094 19.8951 12.2917 21.2257C10.813 22.1128 10.2217 23.5912 10.5175 25.6612ZM11.4046 35.4193C9.63041 32.4625 9.92614 29.801 12.2917 27.4354C15.8401 23.887 18.9449 26.1047 21.1627 24.7742C22.6413 23.887 23.2326 22.4086 22.9369 20.3387C24.711 23.2955 24.4152 25.957 22.0497 28.3225C18.5014 31.8709 15.3965 29.6532 13.1788 30.9838C11.7001 31.8709 11.1088 33.3493 11.4046 35.4193Z" fill="#3056D3"/>
</g>
<defs>
<clipPath id="clip0_2005_10874">
<rect width="131.309" height="46" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,12 @@
<svg width="132" height="46" viewBox="0 0 132 46" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2151_1148)">
<path d="M54.9519 12.0439C56.8799 12.0439 58.5538 12.3618 59.9734 12.9974C61.4142 13.633 62.5159 14.5441 63.2787 15.7306C64.0415 16.9172 64.4228 18.3261 64.4228 19.9576C64.4228 21.5679 64.0415 22.9769 63.2787 24.1846C62.5159 25.3712 61.4142 26.2822 59.9734 26.9178C58.5538 27.5535 56.8799 27.8713 54.9519 27.8713H49.9303V34.2912H45.7987V12.0439H54.9519ZM54.7612 24.3753C56.5621 24.3753 57.9287 23.9939 58.861 23.2311C59.7933 22.4684 60.2594 21.3772 60.2594 19.9576C60.2594 18.5381 59.7933 17.4469 58.861 16.6841C57.9287 15.9213 56.5621 15.5399 54.7612 15.5399H49.9303V24.3753H54.7612ZM68.967 12.0439H73.0986V30.7952H84.7308V34.2912H68.967V12.0439ZM104.668 29.1426H93.5439L91.351 34.2912H87.0922L97.1035 12.0439H101.172L111.215 34.2912H106.892L104.668 29.1426ZM103.301 25.9008L99.1058 16.1756L94.9423 25.9008H103.301ZM122.726 26.4411V34.2912H118.594V26.5047L109.854 12.0439H114.272L120.787 22.8815L127.366 12.0439H131.434L122.726 26.4411Z" fill="#111928"/>
<path d="M16.7273 39.309C25.9655 39.309 33.4545 31.82 33.4545 22.5818C33.4545 13.3435 25.9655 5.85449 16.7273 5.85449C7.48905 5.85449 0 13.3435 0 22.5818C0 31.82 7.48905 39.309 16.7273 39.309Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.5175 25.6612C8.74328 22.7044 9.0391 20.0428 11.4046 17.6774C14.9529 14.1289 18.0578 16.3467 20.2756 15.0161C21.7542 14.1289 22.3456 12.6506 22.0497 10.5806C23.8239 13.5374 23.5282 16.1989 21.1627 18.5644C17.6142 22.1128 14.5094 19.8951 12.2917 21.2257C10.813 22.1128 10.2217 23.5912 10.5175 25.6612ZM11.4046 35.4193C9.63041 32.4625 9.92614 29.801 12.2917 27.4354C15.8401 23.887 18.9449 26.1047 21.1627 24.7742C22.6413 23.887 23.2326 22.4086 22.9369 20.3387C24.711 23.2955 24.4152 25.957 22.0497 28.3225C18.5014 31.8709 15.3965 29.6532 13.1788 30.9838C11.7001 31.8709 11.1088 33.3493 11.4046 35.4193Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_2151_1148">
<rect width="131.309" height="46" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,37 @@
<svg width="55" height="53" viewBox="0 0 55 53" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.5118 3.1009C13.3681 3.1009 14.0622 2.40674 14.0622 1.55045C14.0622 0.69416 13.3681 0 12.5118 0C11.6555 0 10.9613 0.69416 10.9613 1.55045C10.9613 2.40674 11.6555 3.1009 12.5118 3.1009Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.5038 3.1009C23.3601 3.1009 24.0543 2.40674 24.0543 1.55045C24.0543 0.69416 23.3601 0 22.5038 0C21.6475 0 20.9534 0.69416 20.9534 1.55045C20.9534 2.40674 21.6475 3.1009 22.5038 3.1009Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.4958 3.1009C33.3521 3.1009 34.0463 2.40674 34.0463 1.55045C34.0463 0.69416 33.3521 0 32.4958 0C31.6395 0 30.9454 0.69416 30.9454 1.55045C30.9454 2.40674 31.6395 3.1009 32.4958 3.1009Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M42.4875 3.1009C43.3438 3.1009 44.038 2.40674 44.038 1.55045C44.038 0.69416 43.3438 0 42.4875 0C41.6312 0 40.9371 0.69416 40.9371 1.55045C40.9371 2.40674 41.6312 3.1009 42.4875 3.1009Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M52.4795 3.1009C53.3358 3.1009 54.03 2.40674 54.03 1.55045C54.03 0.69416 53.3358 0 52.4795 0C51.6233 0 50.9291 0.69416 50.9291 1.55045C50.9291 2.40674 51.6233 3.1009 52.4795 3.1009Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.52045 13.0804C3.37674 13.0804 4.0709 12.3862 4.0709 11.5299C4.0709 10.6737 3.37674 9.97949 2.52045 9.97949C1.66416 9.97949 0.970001 10.6737 0.970001 11.5299C0.970001 12.3862 1.66416 13.0804 2.52045 13.0804Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.5118 13.0804C13.3681 13.0804 14.0622 12.3862 14.0622 11.5299C14.0622 10.6737 13.3681 9.97949 12.5118 9.97949C11.6555 9.97949 10.9613 10.6737 10.9613 11.5299C10.9613 12.3862 11.6555 13.0804 12.5118 13.0804Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.5038 13.0804C23.3601 13.0804 24.0543 12.3862 24.0543 11.5299C24.0543 10.6737 23.3601 9.97949 22.5038 9.97949C21.6475 9.97949 20.9534 10.6737 20.9534 11.5299C20.9534 12.3862 21.6475 13.0804 22.5038 13.0804Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.4958 13.0804C33.3521 13.0804 34.0463 12.3862 34.0463 11.5299C34.0463 10.6737 33.3521 9.97949 32.4958 9.97949C31.6395 9.97949 30.9454 10.6737 30.9454 11.5299C30.9454 12.3862 31.6395 13.0804 32.4958 13.0804Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M42.4875 13.0804C43.3438 13.0804 44.038 12.3862 44.038 11.5299C44.038 10.6737 43.3438 9.97949 42.4875 9.97949C41.6312 9.97949 40.9371 10.6737 40.9371 11.5299C40.9371 12.3862 41.6312 13.0804 42.4875 13.0804Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M52.4795 13.0804C53.3358 13.0804 54.03 12.3862 54.03 11.5299C54.03 10.6737 53.3358 9.97949 52.4795 9.97949C51.6233 9.97949 50.9291 10.6737 50.9291 11.5299C50.9291 12.3862 51.6233 13.0804 52.4795 13.0804Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.52045 23.0604C3.37674 23.0604 4.0709 22.3662 4.0709 21.5099C4.0709 20.6536 3.37674 19.9595 2.52045 19.9595C1.66416 19.9595 0.970001 20.6536 0.970001 21.5099C0.970001 22.3662 1.66416 23.0604 2.52045 23.0604Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.5118 23.0604C13.3681 23.0604 14.0622 22.3662 14.0622 21.5099C14.0622 20.6536 13.3681 19.9595 12.5118 19.9595C11.6555 19.9595 10.9613 20.6536 10.9613 21.5099C10.9613 22.3662 11.6555 23.0604 12.5118 23.0604Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.5038 23.0604C23.3601 23.0604 24.0543 22.3662 24.0543 21.5099C24.0543 20.6536 23.3601 19.9595 22.5038 19.9595C21.6475 19.9595 20.9534 20.6536 20.9534 21.5099C20.9534 22.3662 21.6475 23.0604 22.5038 23.0604Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.4958 23.0604C33.3521 23.0604 34.0463 22.3662 34.0463 21.5099C34.0463 20.6536 33.3521 19.9595 32.4958 19.9595C31.6395 19.9595 30.9454 20.6536 30.9454 21.5099C30.9454 22.3662 31.6395 23.0604 32.4958 23.0604Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M42.4875 23.0604C43.3438 23.0604 44.038 22.3662 44.038 21.5099C44.038 20.6536 43.3438 19.9595 42.4875 19.9595C41.6312 19.9595 40.9371 20.6536 40.9371 21.5099C40.9371 22.3662 41.6312 23.0604 42.4875 23.0604Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M52.4795 23.0604C53.3358 23.0604 54.03 22.3662 54.03 21.5099C54.03 20.6536 53.3358 19.9595 52.4795 19.9595C51.6233 19.9595 50.9291 20.6536 50.9291 21.5099C50.9291 22.3662 51.6233 23.0604 52.4795 23.0604Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.52045 33.0404C3.37674 33.0404 4.0709 32.3462 4.0709 31.4899C4.0709 30.6336 3.37674 29.9395 2.52045 29.9395C1.66416 29.9395 0.970001 30.6336 0.970001 31.4899C0.970001 32.3462 1.66416 33.0404 2.52045 33.0404Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.5118 33.0404C13.3681 33.0404 14.0622 32.3462 14.0622 31.4899C14.0622 30.6336 13.3681 29.9395 12.5118 29.9395C11.6555 29.9395 10.9613 30.6336 10.9613 31.4899C10.9613 32.3462 11.6555 33.0404 12.5118 33.0404Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.5038 33.0404C23.3601 33.0404 24.0543 32.3462 24.0543 31.4899C24.0543 30.6336 23.3601 29.9395 22.5038 29.9395C21.6475 29.9395 20.9534 30.6336 20.9534 31.4899C20.9534 32.3462 21.6475 33.0404 22.5038 33.0404Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.4958 33.0404C33.3521 33.0404 34.0463 32.3462 34.0463 31.4899C34.0463 30.6336 33.3521 29.9395 32.4958 29.9395C31.6395 29.9395 30.9454 30.6336 30.9454 31.4899C30.9454 32.3462 31.6395 33.0404 32.4958 33.0404Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M42.4875 33.0404C43.3438 33.0404 44.038 32.3462 44.038 31.4899C44.038 30.6336 43.3438 29.9395 42.4875 29.9395C41.6312 29.9395 40.9371 30.6336 40.9371 31.4899C40.9371 32.3462 41.6312 33.0404 42.4875 33.0404Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M52.4795 33.0404C53.3358 33.0404 54.03 32.3462 54.03 31.4899C54.03 30.6336 53.3358 29.9395 52.4795 29.9395C51.6233 29.9395 50.9291 30.6336 50.9291 31.4899C50.9291 32.3462 51.6233 33.0404 52.4795 33.0404Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.52045 43.0203C3.37674 43.0203 4.0709 42.3262 4.0709 41.4699C4.0709 40.6136 3.37674 39.9194 2.52045 39.9194C1.66416 39.9194 0.970001 40.6136 0.970001 41.4699C0.970001 42.3262 1.66416 43.0203 2.52045 43.0203Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.5118 43.0203C13.3681 43.0203 14.0622 42.3262 14.0622 41.4699C14.0622 40.6136 13.3681 39.9194 12.5118 39.9194C11.6555 39.9194 10.9613 40.6136 10.9613 41.4699C10.9613 42.3262 11.6555 43.0203 12.5118 43.0203Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.5038 43.0203C23.3601 43.0203 24.0543 42.3262 24.0543 41.4699C24.0543 40.6136 23.3601 39.9194 22.5038 39.9194C21.6475 39.9194 20.9534 40.6136 20.9534 41.4699C20.9534 42.3262 21.6475 43.0203 22.5038 43.0203Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.4958 43.0203C33.3521 43.0203 34.0463 42.3262 34.0463 41.4699C34.0463 40.6136 33.3521 39.9194 32.4958 39.9194C31.6395 39.9194 30.9454 40.6136 30.9454 41.4699C30.9454 42.3262 31.6395 43.0203 32.4958 43.0203Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M42.4875 43.0203C43.3438 43.0203 44.038 42.3262 44.038 41.4699C44.038 40.6136 43.3438 39.9194 42.4875 39.9194C41.6312 39.9194 40.9371 40.6136 40.9371 41.4699C40.9371 42.3262 41.6312 43.0203 42.4875 43.0203Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M52.4795 43.0203C53.3358 43.0203 54.03 42.3262 54.03 41.4699C54.03 40.6136 53.3358 39.9194 52.4795 39.9194C51.6233 39.9194 50.9291 40.6136 50.9291 41.4699C50.9291 42.3262 51.6233 43.0203 52.4795 43.0203Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.52045 53.0001C3.37674 53.0001 4.0709 52.3059 4.0709 51.4496C4.0709 50.5933 3.37674 49.8992 2.52045 49.8992C1.66416 49.8992 0.970001 50.5933 0.970001 51.4496C0.970001 52.3059 1.66416 53.0001 2.52045 53.0001Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.5118 53.0001C13.3681 53.0001 14.0622 52.3059 14.0622 51.4496C14.0622 50.5933 13.3681 49.8992 12.5118 49.8992C11.6555 49.8992 10.9613 50.5933 10.9613 51.4496C10.9613 52.3059 11.6555 53.0001 12.5118 53.0001Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.5038 53.0001C23.3601 53.0001 24.0543 52.3059 24.0543 51.4496C24.0543 50.5933 23.3601 49.8992 22.5038 49.8992C21.6475 49.8992 20.9534 50.5933 20.9534 51.4496C20.9534 52.3059 21.6475 53.0001 22.5038 53.0001Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.4958 53.0001C33.3521 53.0001 34.0463 52.3059 34.0463 51.4496C34.0463 50.5933 33.3521 49.8992 32.4958 49.8992C31.6395 49.8992 30.9454 50.5933 30.9454 51.4496C30.9454 52.3059 31.6395 53.0001 32.4958 53.0001Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M42.4875 53.0001C43.3438 53.0001 44.038 52.3059 44.038 51.4496C44.038 50.5933 43.3438 49.8992 42.4875 49.8992C41.6312 49.8992 40.9371 50.5933 40.9371 51.4496C40.9371 52.3059 41.6312 53.0001 42.4875 53.0001Z" fill="#3758F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M52.4795 53.0001C53.3358 53.0001 54.03 52.3059 54.03 51.4496C54.03 50.5933 53.3358 49.8992 52.4795 49.8992C51.6233 49.8992 50.9291 50.5933 50.9291 51.4496C50.9291 52.3059 51.6233 53.0001 52.4795 53.0001Z" fill="#3758F9"/>
</svg>

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -0,0 +1,3 @@
<svg width="39" height="38" viewBox="0 0 39 38" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="19.97" cy="19" r="19" fill="#13C296"/>
</svg>

After

Width:  |  Height:  |  Size: 154 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@@ -0,0 +1,3 @@
<svg width="18" height="16" viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.40317 0.360352L11.4104 6.06469H17.906L12.651 9.59016L14.6582 15.2945L9.40317 11.769L4.14812 15.2945L6.15537 9.59016L0.900314 6.06469H7.39592L9.40317 0.360352Z" fill="#FBB040"/>
</svg>

After

Width:  |  Height:  |  Size: 292 B

583
styles/animate.css vendored
View File

@@ -1,363 +1,13 @@
@charset "UTF-8";/*!
* animate.css - https://animate.style/
* Version - 4.1.1
@charset "UTF-8";
/*!
* animate.css -https://daneden.github.io/animate.css/
* Version - 3.7.2
* Licensed under the MIT license - http://opensource.org/licenses/MIT
* https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css
* 这里做了精减后续不再使用animate.css因为占用体积太大不如手写动画
* Copyright (c) 2020 Animate.css
*
* Copyright (c) 2019 Daniel Eden
*/
:root {
--animate-duration: 1s;
--animate-delay: 1s;
--animate-repeat: 1;
}
.animate__animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-duration: var(--animate-duration);
animation-duration: var(--animate-duration);
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
.animate__animated.animate__faster {
-webkit-animation-duration: calc(1s / 2);
animation-duration: calc(1s / 2);
-webkit-animation-duration: calc(var(--animate-duration) / 2);
animation-duration: calc(var(--animate-duration) / 2);
}
.animate__animated.animate__fast {
-webkit-animation-duration: calc(1s * 0.8);
animation-duration: calc(1s * 0.8);
-webkit-animation-duration: calc(var(--animate-duration) * 0.8);
animation-duration: calc(var(--animate-duration) * 0.8);
}
@media print, (prefers-reduced-motion: reduce) {
.animate__animated {
-webkit-animation-duration: 1ms !important;
animation-duration: 1ms !important;
-webkit-transition-duration: 1ms !important;
transition-duration: 1ms !important;
-webkit-animation-iteration-count: 1 !important;
animation-iteration-count: 1 !important;
}
.animate__animated[class*='Out'] {
opacity: 0;
}
}
@-webkit-keyframes shakeX {
from,
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
10%,
30%,
50%,
70%,
90% {
-webkit-transform: translate3d(-10px, 0, 0);
transform: translate3d(-10px, 0, 0);
}
20%,
40%,
60%,
80% {
-webkit-transform: translate3d(10px, 0, 0);
transform: translate3d(10px, 0, 0);
}
}
@keyframes shakeX {
from,
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
10%,
30%,
50%,
70%,
90% {
-webkit-transform: translate3d(-10px, 0, 0);
transform: translate3d(-10px, 0, 0);
}
20%,
40%,
60%,
80% {
-webkit-transform: translate3d(10px, 0, 0);
transform: translate3d(10px, 0, 0);
}
}
.animate__shakeX {
-webkit-animation-name: shakeX;
animation-name: shakeX;
}
@-webkit-keyframes shakeY {
from,
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
10%,
30%,
50%,
70%,
90% {
-webkit-transform: translate3d(0, -10px, 0);
transform: translate3d(0, -10px, 0);
}
20%,
40%,
60%,
80% {
-webkit-transform: translate3d(0, 10px, 0);
transform: translate3d(0, 10px, 0);
}
}
@keyframes shakeY {
from,
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
10%,
30%,
50%,
70%,
90% {
-webkit-transform: translate3d(0, -10px, 0);
transform: translate3d(0, -10px, 0);
}
20%,
40%,
60%,
80% {
-webkit-transform: translate3d(0, 10px, 0);
transform: translate3d(0, 10px, 0);
}
}
.animate__shakeY {
-webkit-animation-name: shakeY;
animation-name: shakeY;
}
@-webkit-keyframes headShake {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
6.5% {
-webkit-transform: translateX(-6px) rotateY(-9deg);
transform: translateX(-6px) rotateY(-9deg);
}
18.5% {
-webkit-transform: translateX(5px) rotateY(7deg);
transform: translateX(5px) rotateY(7deg);
}
31.5% {
-webkit-transform: translateX(-3px) rotateY(-5deg);
transform: translateX(-3px) rotateY(-5deg);
}
43.5% {
-webkit-transform: translateX(2px) rotateY(3deg);
transform: translateX(2px) rotateY(3deg);
}
50% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes headShake {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
6.5% {
-webkit-transform: translateX(-6px) rotateY(-9deg);
transform: translateX(-6px) rotateY(-9deg);
}
18.5% {
-webkit-transform: translateX(5px) rotateY(7deg);
transform: translateX(5px) rotateY(7deg);
}
31.5% {
-webkit-transform: translateX(-3px) rotateY(-5deg);
transform: translateX(-3px) rotateY(-5deg);
}
43.5% {
-webkit-transform: translateX(2px) rotateY(3deg);
transform: translateX(2px) rotateY(3deg);
}
50% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
.animate__headShake {
-webkit-animation-timing-function: ease-in-out;
animation-timing-function: ease-in-out;
-webkit-animation-name: headShake;
animation-name: headShake;
}
@keyframes jello {
from,
11.1%,
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
22.2% {
-webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
transform: skewX(-12.5deg) skewY(-12.5deg);
}
33.3% {
-webkit-transform: skewX(6.25deg) skewY(6.25deg);
transform: skewX(6.25deg) skewY(6.25deg);
}
44.4% {
-webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
transform: skewX(-3.125deg) skewY(-3.125deg);
}
55.5% {
-webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
transform: skewX(1.5625deg) skewY(1.5625deg);
}
66.6% {
-webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
transform: skewX(-0.78125deg) skewY(-0.78125deg);
}
77.7% {
-webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
transform: skewX(0.390625deg) skewY(0.390625deg);
}
88.8% {
-webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
}
}
.animate__jello {
-webkit-animation-name: jello;
animation-name: jello;
-webkit-transform-origin: center;
transform-origin: center;
}
@-webkit-keyframes bounceInRight {
from,
60%,
75%,
90%,
to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
from {
opacity: 0;
-webkit-transform: translate3d(3000px, 0, 0) scaleX(3);
transform: translate3d(3000px, 0, 0) scaleX(3);
}
60% {
opacity: 1;
-webkit-transform: translate3d(-25px, 0, 0) scaleX(1);
transform: translate3d(-25px, 0, 0) scaleX(1);
}
75% {
-webkit-transform: translate3d(10px, 0, 0) scaleX(0.98);
transform: translate3d(10px, 0, 0) scaleX(0.98);
}
90% {
-webkit-transform: translate3d(-5px, 0, 0) scaleX(0.995);
transform: translate3d(-5px, 0, 0) scaleX(0.995);
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes bounceInRight {
from,
60%,
75%,
90%,
to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
from {
opacity: 0;
-webkit-transform: translate3d(3000px, 0, 0) scaleX(3);
transform: translate3d(3000px, 0, 0) scaleX(3);
}
60% {
opacity: 1;
-webkit-transform: translate3d(-25px, 0, 0) scaleX(1);
transform: translate3d(-25px, 0, 0) scaleX(1);
}
75% {
-webkit-transform: translate3d(10px, 0, 0) scaleX(0.98);
transform: translate3d(10px, 0, 0) scaleX(0.98);
}
90% {
-webkit-transform: translate3d(-5px, 0, 0) scaleX(0.995);
transform: translate3d(-5px, 0, 0) scaleX(0.995);
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.animate__bounceInRight {
-webkit-animation-name: bounceInRight;
animation-name: bounceInRight;
}
/* Fading entrances */
@-webkit-keyframes fadeIn {
from {
opacity: 0;
@@ -367,6 +17,7 @@
opacity: 1;
}
}
@keyframes fadeIn {
from {
opacity: 0;
@@ -376,128 +27,208 @@
opacity: 1;
}
}
.animate__fadeIn {
.fadeIn {
-webkit-animation-name: fadeIn;
animation-name: fadeIn;
}
/* Fading exits */
/* 删除 */
/* Flippers */
/* 删除 */
/* Lightspeed */
/* 删除 */
/* Rotating exits */
/* 删除 */
/* Zooming entrances */
/* 删除 */
/* Sliding entrances */
@-webkit-keyframes slideInLeft {
@-webkit-keyframes fadeInDown {
from {
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
visibility: visible;
opacity: 0;
-webkit-transform: translate3d(0, -20px, 0);
transform: translate3d(0, -20px, 0);
}
to {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes slideInLeft {
@keyframes fadeInDown {
from {
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
visibility: visible;
opacity: 0;
-webkit-transform: translate3d(0, -20px, 0);
transform: translate3d(0, -20px, 0);
}
to {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.animate__slideInLeft {
-webkit-animation-name: slideInLeft;
animation-name: slideInLeft;
.fadeInDown {
-webkit-animation-name: fadeInDown;
animation-name: fadeInDown;
}
@-webkit-keyframes slideInRight {
@-webkit-keyframes fadeInLeft {
from {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
visibility: visible;
opacity: 0;
-webkit-transform: translate3d(-20px, 0, 0);
transform: translate3d(-20px, 0, 0);
}
to {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes slideInRight {
@keyframes fadeInLeft {
from {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
visibility: visible;
opacity: 0;
-webkit-transform: translate3d(-20px, 0, 0);
transform: translate3d(-20px, 0, 0);
}
to {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.animate__slideInRight {
-webkit-animation-name: slideInRight;
animation-name: slideInRight;
.fadeInLeft {
-webkit-animation-name: fadeInLeft;
animation-name: fadeInLeft;
}
@keyframes slideOutLeft {
@-webkit-keyframes fadeInRight {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 0;
-webkit-transform: translate3d(20px, 0, 0);
transform: translate3d(20px, 0, 0);
}
to {
visibility: hidden;
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
}
}
.animate__slideOutLeft {
-webkit-animation-name: slideOutLeft;
animation-name: slideOutLeft;
}
@-webkit-keyframes slideOutRight {
from {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes fadeInRight {
from {
opacity: 0;
-webkit-transform: translate3d(20px, 0, 0);
transform: translate3d(20px, 0, 0);
}
to {
visibility: hidden;
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
}
}
@keyframes slideOutRight {
from {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.fadeInRight {
-webkit-animation-name: fadeInRight;
animation-name: fadeInRight;
}
@-webkit-keyframes fadeInUp {
from {
opacity: 0;
-webkit-transform: translate3d(0, 20px, 0);
transform: translate3d(0, 20px, 0);
}
to {
visibility: hidden;
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.animate__slideOutRight {
-webkit-animation-name: slideOutRight;
animation-name: slideOutRight;
@keyframes fadeInUp {
from {
opacity: 0;
-webkit-transform: translate3d(0, 20px, 0);
transform: translate3d(0, 20px, 0);
}
to {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.fadeInUp {
-webkit-animation-name: fadeInUp;
animation-name: fadeInUp;
}
.animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
.animated.infinite {
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
}
.animated.delay-1s {
-webkit-animation-delay: 1s;
animation-delay: 1s;
}
.animated.delay-2s {
-webkit-animation-delay: 2s;
animation-delay: 2s;
}
.animated.delay-3s {
-webkit-animation-delay: 3s;
animation-delay: 3s;
}
.animated.delay-4s {
-webkit-animation-delay: 4s;
animation-delay: 4s;
}
.animated.delay-5s {
-webkit-animation-delay: 5s;
animation-delay: 5s;
}
.animated.fast {
-webkit-animation-duration: 800ms;
animation-duration: 800ms;
}
.animated.faster {
-webkit-animation-duration: 500ms;
animation-duration: 500ms;
}
.animated.slow {
-webkit-animation-duration: 2s;
animation-duration: 2s;
}
.animated.slower {
-webkit-animation-duration: 3s;
animation-duration: 3s;
}
@media (print), (prefers-reduced-motion: reduce) {
.animated {
-webkit-animation-duration: 1ms !important;
animation-duration: 1ms !important;
-webkit-transition-duration: 1ms !important;
transition-duration: 1ms !important;
-webkit-animation-iteration-count: 1 !important;
animation-iteration-count: 1 !important;
}
}

View File

@@ -6,6 +6,26 @@ module.exports = {
darkMode: BLOG.APPEARANCE === 'class' ? 'media' : 'class', // or 'media' or 'class'
theme: {
fontFamily: fontFamilies,
screens: {
sm: '540px',
// => @media (min-width: 576px) { ... }
md: '720px',
// => @media (min-width: 768px) { ... }
lg: '960px',
// => @media (min-width: 992px) { ... }
xl: '1140px',
// => @media (min-width: 1200px) { ... }
'2xl': '1320px'
// => @media (min-width: 1400px) { ... }
},
container: {
center: true,
padding: '16px'
},
extend: {
colors: {
day: {
@@ -18,11 +38,43 @@ module.exports = {
'background-gray': '#f5f5f5',
'black-gray': '#101414',
'light-gray': '#e5e5e5'
}
},
black: '#212b36',
'dark-700': '#090e34b3',
dark: {
DEFAULT: '#111928',
2: '#1F2A37',
3: '#374151',
4: '#4B5563',
5: '#6B7280',
6: '#9CA3AF',
7: '#D1D5DB',
8: '#E5E7EB'
},
primary: '#3758F9',
'blue-dark': '#1B44C8',
secondary: '#13C296',
'body-color': '#637381',
'body-secondary': '#8899A8',
warning: '#FBBF24',
stroke: '#DFE4EA',
'gray-1': '#F9FAFB',
'gray-2': '#F3F4F6',
'gray-7': '#CED4DA'
},
maxWidth: {
side: '14rem',
'9/10': '90%'
},
boxShadow: {
input: '0px 7px 20px rgba(0, 0, 0, 0.03)',
form: '0px 1px 55px -11px rgba(0, 0, 0, 0.01)',
pricing: '0px 0px 40px 0px rgba(0, 0, 0, 0.08)',
'switch-1': '0px 0px 5px rgba(0, 0, 0, 0.15)',
testimonial: '0px 10px 20px 0px rgba(92, 115, 160, 0.07)',
'testimonial-btn': '0px 8px 15px 0px rgba(72, 72, 138, 0.08)',
1: '0px 1px 3px 0px rgba(166, 175, 195, 0.40)',
2: '0px 5px 12px 0px rgba(0, 0, 0, 0.10)'
}
}
},

View File

@@ -146,6 +146,22 @@ const LayoutPostList = props => {
*/
const LayoutSlug = props => {
const { post, lock, validPassword } = props
const router = useRouter()
useEffect(() => {
// 404
if (!post) {
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)
}
}, [post])
return (
<>
{lock
@@ -249,11 +265,11 @@ export {
CONFIG as THEME_CONFIG,
LayoutBase,
LayoutIndex,
LayoutPostList,
LayoutSearch,
LayoutArchive,
LayoutSlug,
Layout404,
LayoutPostList,
LayoutCategoryIndex,
LayoutTagIndex
}

View File

@@ -118,7 +118,23 @@ const LayoutPostList = (props) => {
* @returns
*/
const LayoutSlug = (props) => {
const { lock, validPassword } = props
const { post, lock, validPassword } = props
const router = useRouter()
useEffect(() => {
// 404
if (!post) {
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)
}
}, [post])
return (
<>
{lock ? <ArticleLock validPassword={validPassword} /> : <ArticleDetail {...props} />}

View File

@@ -215,7 +215,22 @@ const LayoutPostList = (props) => {
*/
const LayoutSlug = (props) => {
const { post, prev, next, lock, validPassword } = props
const router = useRouter()
useEffect(() => {
// 404
if (!post) {
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)
}
}, [post])
return (
<>
{/* 文章锁 */}
@@ -354,7 +369,7 @@ export {
LayoutArchive,
LayoutSlug,
Layout404,
LayoutCategoryIndex,
LayoutPostList,
LayoutCategoryIndex,
LayoutTagIndex
}

View File

@@ -1,5 +1,5 @@
import { useGlobal } from '@/lib/global'
import { saveDarkModeToCookies } from '@/themes/theme'
import { saveDarkModeToLocalStorage } from '@/themes/theme'
import { Moon, Sun } from '@/components/HeroIcons'
import { useImperativeHandle } from 'react'
@@ -24,7 +24,7 @@ const DarkModeButton = (props) => {
// 用户手动设置主题
const handleChangeDarkMode = () => {
const newStatus = !isDarkMode
saveDarkModeToCookies(newStatus)
saveDarkModeToLocalStorage(newStatus)
updateDarkMode(newStatus)
const htmlElement = document.getElementsByTagName('html')[0]
htmlElement.classList?.remove(newStatus ? 'light' : 'dark')

View File

@@ -1,5 +1,5 @@
import { useGlobal } from '@/lib/global'
import { saveDarkModeToCookies } from '@/themes/theme'
import { saveDarkModeToLocalStorage } from '@/themes/theme'
import CONFIG from '../config'
import { siteConfig } from '@/lib/config'
@@ -13,7 +13,7 @@ export default function FloatDarkModeButton () {
// 用户手动设置主题
const handleChangeDarkMode = () => {
const newStatus = !isDarkMode
saveDarkModeToCookies(newStatus)
saveDarkModeToLocalStorage(newStatus)
updateDarkMode(newStatus)
const htmlElement = document.getElementsByTagName('html')[0]
htmlElement.classList?.remove(newStatus ? 'light' : 'dark')

View File

@@ -1,6 +1,7 @@
import Link from 'next/link'
import { useGlobal } from '@/lib/global'
import CONFIG from '../config'
import { siteConfig } from '@/lib/config'
const MenuGroupCard = (props) => {
const { postCount, categoryOptions, tagOptions } = props

View File

@@ -39,6 +39,7 @@ import LazyImage from '@/components/LazyImage'
import WWAds from '@/components/WWAds'
import { AdSlot } from '@/components/GoogleAdsense'
import { siteConfig } from '@/lib/config'
import { isBrowser } from '@/lib/utils'
/**
* 基础布局 采用上中下布局,移动端使用顶部侧边导航栏
@@ -266,6 +267,22 @@ const LayoutSlug = props => {
siteConfig('COMMENT_GISCUS_REPO') || siteConfig('COMMENT_CUSDIS_APP_ID') || siteConfig('COMMENT_UTTERRANCES_REPO') ||
siteConfig('COMMENT_GITALK_CLIENT_ID') || siteConfig('COMMENT_WEBMENTION_ENABLE')
const router = useRouter()
useEffect(() => {
// 404
if (!post) {
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)
}
}, [post])
return (
<>
<div className={`w-full ${fullWidth ? '' : 'xl:max-w-5xl'} ${hasCode ? 'xl:w-[73.15vw]' : ''} lg:hover:shadow lg:border rounded-2xl lg:px-2 lg:py-4 bg-white dark:bg-[#18171d] dark:border-gray-600 article`}>
@@ -489,7 +506,7 @@ export {
LayoutArchive,
LayoutSlug,
Layout404,
LayoutCategoryIndex,
LayoutPostList,
LayoutCategoryIndex,
LayoutTagIndex
}

View File

@@ -1,5 +1,5 @@
import { useGlobal } from '@/lib/global'
import { saveDarkModeToCookies } from '@/themes/theme'
import { saveDarkModeToLocalStorage } from '@/themes/theme'
import CONFIG from '../config'
import { siteConfig } from '@/lib/config'
@@ -13,7 +13,7 @@ export default function FloatDarkModeButton () {
// 用户手动设置主题
const handleChangeDarkMode = () => {
const newStatus = !isDarkMode
saveDarkModeToCookies(newStatus)
saveDarkModeToLocalStorage(newStatus)
updateDarkMode(newStatus)
const htmlElement = document.getElementsByTagName('html')[0]
htmlElement.classList?.remove(newStatus ? 'light' : 'dark')

View File

@@ -222,7 +222,22 @@ const LayoutArchive = (props) => {
*/
const LayoutSlug = props => {
const { post, lock, validPassword } = props
const router = useRouter()
useEffect(() => {
// 404
if (!post) {
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)
}
}, [post])
return (
<>
<div className="w-full lg:hover:shadow lg:border rounded-t-xl lg:rounded-xl lg:px-2 lg:py-4 bg-white dark:bg-hexo-black-gray dark:border-black article">

View File

@@ -21,6 +21,7 @@ import Loading from '@/components/Loading'
import { isBrowser } from '@/lib/utils'
import { siteConfig } from '@/lib/config'
import { Pricing } from './components/Pricing'
import { useEffect } from 'react'
/**
* 布局框架
@@ -71,8 +72,26 @@ const LayoutIndex = (props) => {
* @returns
*/
const LayoutSlug = (props) => {
const { post } = props
// 如果 是 /article/[slug] 的文章路径则进行重定向到另一个域名
const router = useRouter()
useEffect(() => {
// 404
if (!post) {
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)
}
}, [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', '')
router.push(redirectUrl)

View File

@@ -1,5 +1,5 @@
import { useGlobal } from '@/lib/global'
import { saveDarkModeToCookies } from '@/themes/theme'
import { saveDarkModeToLocalStorage } from '@/themes/theme'
import CONFIG from '../config'
import { siteConfig } from '@/lib/config'
@@ -13,7 +13,7 @@ export default function FloatDarkModeButton() {
// 用户手动设置主题
const handleChangeDarkMode = () => {
const newStatus = !isDarkMode
saveDarkModeToCookies(newStatus)
saveDarkModeToLocalStorage(newStatus)
updateDarkMode(newStatus)
const htmlElement = document.getElementsByTagName('html')[0]
htmlElement.classList?.remove(newStatus ? 'light' : 'dark')

View File

@@ -30,6 +30,7 @@ import { Transition } from '@headlessui/react'
import { Style } from './style'
import replaceSearchResult from '@/components/Mark'
import { siteConfig } from '@/lib/config'
import { isBrowser } from '@/lib/utils'
/**
* 基础布局
@@ -197,7 +198,22 @@ const LayoutArchive = (props) => {
const LayoutSlug = props => {
const { post, lock, validPassword } = props
const { fullWidth } = useGlobal()
const router = useRouter()
useEffect(() => {
// 404
if (!post) {
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)
}
}, [post])
return (<>
<div id='inner-wrapper' className={`w-full ${fullWidth ? '' : 'lg:max-w-3xl 2xl:max-w-4xl'}`} >

View File

@@ -155,6 +155,23 @@ const LayoutSlug = props => {
</div>
)
const router = useRouter()
useEffect(() => {
// 404
if (!post) {
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)
}
}, [post])
return (
<div showInfoCard={true} slotRight={slotRight} {...props} >
{/* 文章锁 */}

View File

@@ -34,6 +34,8 @@ import { siteConfig } from '@/lib/config'
import Live2D from '@/components/Live2D'
import BlogArchiveItem from './components/BlogArchiveItem'
import NotionIcon from '@/components/NotionIcon'
import { useRouter } from 'next/router'
import { isBrowser } from '@/lib/utils'
const WWAds = dynamic(() => import('@/components/WWAds'), { ssr: false })
@@ -214,6 +216,22 @@ const LayoutPostList = props => {
*/
const LayoutSlug = (props) => {
const { post, lock, validPassword } = props
const router = useRouter()
useEffect(() => {
// 404
if (!post) {
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)
}
}, [post])
return (
<>
{/* 文章锁 */}

View File

@@ -1,12 +1,12 @@
import { useGlobal } from '@/lib/global'
import { saveDarkModeToCookies } from '@/themes/theme'
import { saveDarkModeToLocalStorage } from '@/themes/theme'
const DarkModeButton = () => {
const { isDarkMode, updateDarkMode } = useGlobal()
// 用户手动设置主题
const handleChangeDarkMode = () => {
const newStatus = !isDarkMode
saveDarkModeToCookies(newStatus)
saveDarkModeToLocalStorage(newStatus)
updateDarkMode(newStatus)
const htmlElement = document.getElementsByTagName('html')[0]
htmlElement.classList?.remove(newStatus ? 'light' : 'dark')

View File

@@ -1,5 +1,5 @@
import { useGlobal } from '@/lib/global'
import { saveDarkModeToCookies } from '@/themes/theme'
import { saveDarkModeToLocalStorage } from '@/themes/theme'
import CONFIG from '../config'
import { siteConfig } from '@/lib/config'
@@ -13,7 +13,7 @@ export default function FloatDarkModeButton () {
// 用户手动设置主题
const handleChangeDarkMode = () => {
const newStatus = !isDarkMode
saveDarkModeToCookies(newStatus)
saveDarkModeToLocalStorage(newStatus)
updateDarkMode(newStatus)
const htmlElement = document.getElementsByTagName('html')[0]
htmlElement.classList?.remove(newStatus ? 'light' : 'dark')

View File

@@ -276,6 +276,23 @@ const LayoutArchive = (props) => {
*/
const LayoutSlug = (props) => {
const { post, lock, validPassword } = props
const router = useRouter()
useEffect(() => {
// 404
if (!post) {
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)
}
}, [post])
return (
<>

View File

@@ -24,6 +24,7 @@ import { Style } from './style'
import replaceSearchResult from '@/components/Mark'
import AlgoliaSearchModal from '@/components/AlgoliaSearchModal'
import { siteConfig } from '@/lib/config'
import { useRouter } from 'next/router'
// 主题全局状态
const ThemeGlobalNobelium = createContext()
@@ -198,7 +199,22 @@ const LayoutArchive = props => {
*/
const LayoutSlug = props => {
const { post, lock, validPassword } = props
const router = useRouter()
useEffect(() => {
// 404
if (!post) {
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)
}
}, [post])
return (
<>

View File

@@ -164,7 +164,22 @@ const LayoutArchive = props => {
*/
const LayoutSlug = props => {
const { post, lock, validPassword } = props
const router = useRouter()
useEffect(() => {
// 404
if (!post) {
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)
}
}, [post])
return (
<>

View File

@@ -11,6 +11,7 @@ import replaceSearchResult from '@/components/Mark'
import dynamic from 'next/dynamic'
import NotionPage from '@/components/NotionPage'
import AlgoliaSearchModal from '@/components/AlgoliaSearchModal'
import { useRouter } from 'next/router'
// 主题组件
const BlogListScroll = dynamic(() => import('./components/BlogListScroll'), { ssr: false });
@@ -216,6 +217,23 @@ const LayoutSlug = props => {
* @returns
*/
const Layout404 = (props) => {
const { post } = props
const router = useRouter()
useEffect(() => {
// 404
if (!post) {
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)
}
}, [post])
return <>
404 Not found.
</>

View File

@@ -0,0 +1,204 @@
/* eslint-disable @next/next/no-img-element */
/* eslint-disable react/no-unescaped-entities */
import { siteConfig } from '@/lib/config'
import CONFIG from '../config'
/**
* 首页的关于模块
*/
export const About = () => {
return <>
{/* <!-- ====== About Section Start --> */}
<section
id="about"
className="bg-gray-1 pb-8 pt-20 dark:bg-dark-2 lg:pb-[70px] lg:pt-[120px]"
>
<div className="container">
<div className="wow fadeInUp" data-wow-delay=".2s">
<div className="-mx-4 flex flex-wrap items-center">
{/* 左侧的文字说明板块 */}
<div className="w-full px-4 lg:w-1/2">
<div className="mb-12 max-w-[540px] lg:mb-0">
<h2
className="mb-5 text-3xl font-bold leading-tight text-dark dark:text-white sm:text-[40px] sm:leading-[1.2]"
>
{siteConfig('STARTER_ABOUT_TITLE', null, CONFIG)}
</h2>
<p className="mb-10 text-base leading-relaxed text-body-color dark:text-dark-6"
dangerouslySetInnerHTML={
{ __html: siteConfig('STARTER_ABOUT_TEXT', null, CONFIG) }
}></p>
<a
href={siteConfig('STARTER_ABOUT_BUTTON_URL', null, CONFIG)}
className="inline-flex items-center justify-center rounded-md border border-primary bg-primary px-7 py-3 text-center text-base font-medium text-white hover:border-blue-dark hover:bg-blue-dark"
>
{siteConfig('STARTER_ABOUT_BUTTON_TEXT', null, CONFIG)}
</a>
</div>
</div>
{/* 右侧的图片海报 */}
<div className="w-full px-4 lg:w-1/2">
<div className="-mx-2 flex flex-wrap sm:-mx-4 lg:-mx-2 xl:-mx-4">
<div className="w-full px-2 sm:w-1/2 sm:px-4 lg:px-2 xl:px-4">
<div
className="mb-4 sm:mb-8 sm:h-[400px] md:h-[540px] lg:h-[400px] xl:h-[500px]"
>
<img
src={siteConfig('STARTER_ABOUT_IMAGE_1', null, CONFIG)}
alt="about image"
className="h-full w-full object-cover object-center"
/>
</div>
</div>
<div className="w-full px-2 sm:w-1/2 sm:px-4 lg:px-2 xl:px-4">
<div
className="mb-4 sm:mb-8 sm:h-[220px] md:h-[346px] lg:mb-4 lg:h-[225px] xl:mb-8 xl:h-[310px]"
>
<img
src={siteConfig('STARTER_ABOUT_IMAGE_2', null, CONFIG)}
alt="about image"
className="h-full w-full object-cover object-center"
/>
</div>
<div
className="relative z-10 mb-4 flex items-center justify-center overflow-hidden bg-primary px-6 py-12 sm:mb-8 sm:h-[160px] sm:p-5 lg:mb-4 xl:mb-8"
>
<div>
<span className="block text-5xl font-extrabold text-white">
{siteConfig('STARTER_ABOUT_TIPS_1', null, CONFIG)}
</span>
<span className="block text-base font-semibold text-white">
{siteConfig('STARTER_ABOUT_TIPS_2', null, CONFIG)}
</span>
<span
className="block text-base font-medium text-white text-opacity-70"
>
{siteConfig('STARTER_ABOUT_TIPS_3', null, CONFIG)}
</span>
</div>
<div>
<span className="absolute left-0 top-0 -z-10">
<svg
width="106"
height="144"
viewBox="0 0 106 144"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<rect
opacity="0.1"
x="-67"
y="47.127"
width="113.378"
height="131.304"
transform="rotate(-42.8643 -67 47.127)"
fill="url(#paint0_linear_1416_214)"
/>
<defs>
<linearGradient
id="paint0_linear_1416_214"
x1="-10.3111"
y1="47.127"
x2="-10.3111"
y2="178.431"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="white" />
<stop
offset="1"
stopColor="white"
stopOpacity="0"
/>
</linearGradient>
</defs>
</svg>
</span>
<span className="absolute right-0 top-0 -z-10">
<svg
width="130"
height="97"
viewBox="0 0 130 97"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<rect
opacity="0.1"
x="0.86792"
y="-6.67725"
width="155.563"
height="140.614"
transform="rotate(-42.8643 0.86792 -6.67725)"
fill="url(#paint0_linear_1416_215)"
/>
<defs>
<linearGradient
id="paint0_linear_1416_215"
x1="78.6495"
y1="-6.67725"
x2="78.6495"
y2="133.937"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="white" />
<stop
offset="1"
stopColor="white"
stopOpacity="0"
/>
</linearGradient>
</defs>
</svg>
</span>
<span className="absolute bottom-0 right-0 -z-10">
<svg
width="175"
height="104"
viewBox="0 0 175 104"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<rect
opacity="0.1"
x="175.011"
y="108.611"
width="101.246"
height="148.179"
transform="rotate(137.136 175.011 108.611)"
fill="url(#paint0_linear_1416_216)"
/>
<defs>
<linearGradient
id="paint0_linear_1416_216"
x1="225.634"
y1="108.611"
x2="225.634"
y2="256.79"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="white" />
<stop
offset="1"
stopColor="white"
stopOpacity="0"
/>
</linearGradient>
</defs>
</svg>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
{/* <!-- ====== About Section End --> */}
</>
}

View File

@@ -0,0 +1,67 @@
import throttle from 'lodash.throttle';
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 () => {
window.removeEventListener('scroll', navBarScollListener)
}
}, [])
// 滚动监听
const throttleMs = 200
const navBarScollListener = useCallback(
throttle(() => {
const scrollY = window.scrollY;
// 显示或隐藏返回顶部按钮
const backToTop = document.querySelector('.back-to-top');
if (backToTop) {
backToTop.style.display = scrollY > 50 ? 'flex' : 'none';
}
}, throttleMs)
)
return <>
{/* <!-- ====== Back To Top Start --> */}
<a className="back-to-top fixed bottom-8 left-auto right-8 z-[999] hidden h-10 w-10 items-center justify-center rounded-md bg-primary text-white shadow-md transition duration-300 ease-in-out hover:bg-dark">
<span className="mt-[6px] h-3 w-3 rotate-45 border-l border-t border-white" ></span>
</a>
{/* <!-- ====== Back To Top End --> */}
</>
}

View File

@@ -0,0 +1,53 @@
/**
* 详情页面顶部条
* @returns
*/
export const Banner = ({ title, description }) => {
return <>
{/* <!-- ====== Banner Section Start --> */}
<div
className="relative z-10 overflow-hidden pb-[60px] pt-[120px] dark:bg-dark md:pt-[130px] lg:pt-[160px]"
>
<div
className="absolute bottom-0 left-0 w-full h-px bg-gradient-to-r from-stroke/0 via-stroke to-stroke/0 dark:via-dark-3"
></div>
<div className="container">
<div className="flex flex-wrap items-center -mx-4">
<div className="w-full px-4">
<div className="text-center">
<h1
className="mb-4 text-3xl font-bold text-dark dark:text-white sm:text-4xl md:text-[40px] md:leading-[1.2]"
>
{title}
</h1>
<p className="mb-5 text-base text-body-color dark:text-dark-6">
{description}
</p>
{/* <ul className="flex items-center justify-center gap-[10px]">
<li>
<a
href="index.html"
className="flex items-center gap-[10px] text-base font-medium text-dark dark:text-white"
>
Home
</a>
</li>
<li>
<a
href="#"
className="flex items-center gap-[10px] text-base font-medium text-body-color"
>
<span className="text-body-color dark:text-dark-6"> / </span>
Blog Details
</a>
</li>
</ul> */}
</div>
</div>
</div>
</div>
</div>
{/* <!-- ====== Banner Section End --> */}
</>
}

View File

@@ -0,0 +1,77 @@
/* eslint-disable @next/next/no-img-element */
import { siteConfig } from '@/lib/config'
import CONFIG from '../config'
/**
* 博文列表
* @param {*} param0
* @returns
*/
export const Blog = ({ posts }) => {
return <>
{/* <!-- ====== Blog Section Start --> */}
<section className="bg-white pb-10 pt-20 dark:bg-dark lg:pb-20 lg:pt-[120px]">
<div className="container mx-auto">
{/* 区块标题文字 */}
<div className="-mx-4 flex flex-wrap justify-center">
<div className="w-full px-4">
<div className="mx-auto mb-[60px] max-w-[485px] text-center">
<span className="mb-2 block text-lg font-semibold text-primary">
{siteConfig('STARTER_BLOG_TITLE', null, CONFIG)}
</span>
<h2
className="mb-4 text-3xl font-bold text-dark dark:text-white sm:text-4xl md:text-[40px] md:leading-[1.2]"
>
{siteConfig('STARTER_BLOG_TEXT_1', null, CONFIG)}
</h2>
<p dangerouslySetInnerHTML={
{ __html: siteConfig('STARTER_BLOG_TEXT_2', null, CONFIG) }
} className="text-base text-body-color dark:text-dark-6">
</p>
</div>
</div>
</div>
{/* 博客列表 此处优先展示3片文章 */}
<div className="-mx-4 flex flex-wrap">
{posts?.map((item, index) => {
return <div key={index} className="w-full px-4 md:w-1/2 lg:w-1/3">
<div className="wow fadeInUp group mb-10" data-wow-delay=".1s">
<div className="mb-8 overflow-hidden rounded-[5px]">
<a href="blog-details.html" className="block">
<img
src={item.pageCoverThumbnail}
alt={item.title}
className="w-full transition group-hover:rotate-6 group-hover:scale-125"
/>
</a>
</div>
<div>
<span
className="mb-6 inline-block rounded-[5px] bg-primary px-4 py-0.5 text-center text-xs font-medium leading-loose text-white"
>
{item.publishDay}
</span>
<h3>
<a
className="mb-4 inline-block text-xl font-semibold text-dark hover:text-primary dark:text-white dark:hover:text-primary sm:text-2xl lg:text-xl xl:text-2xl"
>
{item.title}
</a>
</h3>
<p
className="max-w-[370px] text-base text-body-color dark:text-dark-6"
>
{item.summary}
</p>
</div>
</div>
</div>
}) }
</div>
</div>
</section>
{/* <!-- ====== Blog Section End --> */}
</>
}

View File

@@ -0,0 +1,37 @@
/* eslint-disable @next/next/no-img-element */
import CONFIG from '../config'
/**
* 合作伙伴
* @returns
*/
export const Brand = () => {
return <>
{/* <!-- ====== Brands Section Start --> */}
<section className="pb-20 dark:bg-dark">
<div className="container px-4">
<div
className="-mx-4 flex flex-wrap items-center justify-center gap-8 xl:gap-11"
>
{CONFIG.STARTER_BRANDS?.map((item, index) => {
return <a key={index} href={item.URL}>
<img
src={item.IMAGE}
alt={item.TITLE}
className="dark:hidden"
/>
<img
src={item.IMAGE_WHITE}
alt={item.TITLE}
className="hidden dark:block"
/>
</a>
})}
</div>
</div>
</section>
{/* <!-- ====== Brands Section End --> */}
</>
}

View File

@@ -0,0 +1,106 @@
export const CTA = () => {
return <>
{/* <!-- ====== CTA Section Start --> */}
<section
className="relative z-10 overflow-hidden bg-primary py-20 lg:py-[115px]"
>
<div className="container mx-auto">
<div className="relative overflow-hidden">
<div className="-mx-4 flex flex-wrap items-stretch">
<div className="w-full px-4">
<div className="mx-auto max-w-[570px] text-center">
<h2
className="mb-2.5 text-3xl font-bold text-white md:text-[38px] md:leading-[1.44]"
>
<span>What Are You Looking For?</span>
<span className="text-3xl font-normal md:text-[40px]">
Get Started Now
</span>
</h2>
<p
className="mx-auto mb-6 max-w-[515px] text-base leading-[1.5] text-white"
>
There are many variations of passages of Lorem Ipsum but the
majority have suffered in some form.
</p>
<a
className="inline-block rounded-md border border-transparent bg-secondary px-7 py-3 text-base font-medium text-white transition hover:bg-[#0BB489]"
>
Start using Play
</a>
</div>
</div>
</div>
</div>
</div>
<div>
<span className="absolute left-0 top-0">
<svg
width="495"
height="470"
viewBox="0 0 495 470"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<circle
cx="55"
cy="442"
r="138"
stroke="white"
stroke-opacity="0.04"
stroke-width="50"
/>
<circle
cx="446"
r="39"
stroke="white"
stroke-opacity="0.04"
stroke-width="20"
/>
<path
d="M245.406 137.609L233.985 94.9852L276.609 106.406L245.406 137.609Z"
stroke="white"
stroke-opacity="0.08"
stroke-width="12"
/>
</svg>
</span>
<span className="absolute bottom-0 right-0">
<svg
width="493"
height="470"
viewBox="0 0 493 470"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<circle
cx="462"
cy="5"
r="138"
stroke="white"
stroke-opacity="0.04"
stroke-width="50"
/>
<circle
cx="49"
cy="470"
r="39"
stroke="white"
stroke-opacity="0.04"
stroke-width="20"
/>
<path
d="M222.393 226.701L272.808 213.192L259.299 263.607L222.393 226.701Z"
stroke="white"
stroke-opacity="0.06"
stroke-width="13"
/>
</svg>
</span>
</div>
</section>
{/* <!-- ====== CTA Section End --> */}
</>
}

View File

@@ -0,0 +1,90 @@
import { siteConfig } from '@/lib/config'
import CONFIG from '../config'
import { SVGLocation } from './svg/SVGLocation'
import { SVGEmail } from './svg/SVGEmail'
/* eslint-disable react/no-unescaped-entities */
export const Contact = () => {
return <>
{/* <!-- ====== Contact Start ====== --> */}
<section id="contact" className="relative py-20 md:py-[120px]">
<div
className="absolute left-0 top-0 -z-[1] h-full w-full dark:bg-dark"
></div>
<div
className="absolute left-0 top-0 -z-[1] h-1/2 w-full bg-[#E9F9FF] dark:bg-dark-700 lg:h-[45%] xl:h-1/2"
></div>
<div className="container px-4">
<div className="-mx-4 flex flex-wrap items-center">
{/* 联系方式左侧文字 */}
<div className="w-full px-4 lg:w-7/12 xl:w-8/12">
<div className="ud-contact-content-wrapper">
<div className="ud-contact-title mb-12 lg:mb-[150px]">
<span
className="mb-6 block text-base font-medium text-dark dark:text-white"
>
{siteConfig('STARTER_CONTACT_TITLE', null, CONFIG)}
</span>
<h2
className="max-w-[260px] text-[35px] font-semibold leading-[1.14] text-dark dark:text-white"
>
{siteConfig('STARTER_CONTACT_TEXT', null, CONFIG)}
</h2>
</div>
<div className="mb-12 flex flex-wrap justify-between lg:mb-0">
<div className="mb-8 flex w-[330px] max-w-full">
<div className="mr-6 text-[32px] text-primary">
<SVGLocation/>
</div>
<div>
<h5
className="mb-[18px] text-lg font-semibold text-dark dark:text-white"
>
{siteConfig('STARTER_CONTACT_LOCATION_TITLE', null, CONFIG)}
</h5>
<p className="text-base text-body-color dark:text-dark-6">
{siteConfig('STARTER_CONTACT_LOCATION_TEXT', null, CONFIG)}
</p>
</div>
</div>
<div className="mb-8 flex w-[330px] max-w-full">
<div className="mr-6 text-[32px] text-primary">
<SVGEmail/>
</div>
<div>
<h5
className="mb-[18px] text-lg font-semibold text-dark dark:text-white"
>
{siteConfig('STARTER_CONTACT_EMAIL_TITLE', null, CONFIG)}
</h5>
<p className="text-base text-body-color dark:text-dark-6">
{siteConfig('STARTER_CONTACT_EMAIL_TEXT', null, CONFIG)}
</p>
</div>
</div>
</div>
</div>
</div>
{/* 联系方式右侧留言 */}
<div className="w-full px-4 lg:w-5/12 xl:w-4/12">
<div
className="wow fadeInUp rounded-lg bg-white px-8 py-10 shadow-testimonial dark:bg-dark-2 dark:shadow-none sm:px-10 sm:py-12 md:p-[60px] lg:p-10 lg:px-10 lg:py-12 2xl:p-[60px]"
data-wow-delay=".2s"
>
{/* 自定义的留言表单 、 需要对接接口 */}
{/* <MessageForm/> */}
{/* 嵌入外部表单 */}
<iframe src="https://noteforms.com/forms/yfctc7" width="100%" height="500px" frameborder="0"></iframe>
</div>
</div>
</div>
</div>
</section>
{/* <!-- ====== Contact End ====== --> */}
</>
}

View File

@@ -0,0 +1,84 @@
import { useGlobal } from '@/lib/global';
import { useRouter } from 'next/router';
export const DarkModeButton = () => {
const { toggleDarkMode } = useGlobal()
const router = useRouter()
return <>
<label
// for="themeSwitcher"
className="inline-flex cursor-pointer items-center"
aria-label="themeSwitcher"
name="themeSwitcher"
>
<input
onClick={toggleDarkMode}
type="checkbox"
name="themeSwitcher"
id="themeSwitcher"
className="sr-only"
/>
<span className={`block ${router.route === '/' ? 'text-white' : ''} dark:hidden`}>
<svg
className="fill-current"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M13.3125 1.50001C12.675 1.31251 12.0375 1.16251 11.3625 1.05001C10.875 0.975006 10.35 1.23751 10.1625 1.68751C9.93751 2.13751 10.05 2.70001 10.425 3.00001C13.0875 5.47501 14.0625 9.11251 12.975 12.525C11.775 16.3125 8.25001 18.975 4.16251 19.0875C3.63751 19.0875 3.22501 19.425 3.07501 19.9125C2.92501 20.4 3.15001 20.925 3.56251 21.1875C4.50001 21.75 5.43751 22.2 6.37501 22.5C7.46251 22.8375 8.58751 22.9875 9.71251 22.9875C11.625 22.9875 13.5 22.5 15.1875 21.5625C17.85 20.1 19.725 17.7375 20.55 14.8875C22.1625 9.26251 18.975 3.37501 13.3125 1.50001ZM18.9375 14.4C18.2625 16.8375 16.6125 18.825 14.4 20.0625C12.075 21.3375 9.41251 21.6 6.90001 20.85C6.63751 20.775 6.33751 20.6625 6.07501 20.55C10.05 19.7625 13.35 16.9125 14.5875 13.0125C15.675 9.56251 15 5.92501 12.7875 3.07501C17.5875 4.68751 20.2875 9.67501 18.9375 14.4Z"
/>
</svg>
</span>
<span className="hidden text-white dark:block">
<svg
className="fill-current"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<g clipPath="url(#clip0_2172_3070)">
<path
d="M12 6.89999C9.18752 6.89999 6.90002 9.18749 6.90002 12C6.90002 14.8125 9.18752 17.1 12 17.1C14.8125 17.1 17.1 14.8125 17.1 12C17.1 9.18749 14.8125 6.89999 12 6.89999ZM12 15.4125C10.125 15.4125 8.58752 13.875 8.58752 12C8.58752 10.125 10.125 8.58749 12 8.58749C13.875 8.58749 15.4125 10.125 15.4125 12C15.4125 13.875 13.875 15.4125 12 15.4125Z"
/>
<path
d="M12 4.2375C12.45 4.2375 12.8625 3.8625 12.8625 3.375V1.5C12.8625 1.05 12.4875 0.637497 12 0.637497C11.55 0.637497 11.1375 1.0125 11.1375 1.5V3.4125C11.175 3.8625 11.55 4.2375 12 4.2375Z"
/>
<path
d="M12 19.7625C11.55 19.7625 11.1375 20.1375 11.1375 20.625V22.5C11.1375 22.95 11.5125 23.3625 12 23.3625C12.45 23.3625 12.8625 22.9875 12.8625 22.5V20.5875C12.8625 20.1375 12.45 19.7625 12 19.7625Z"
/>
<path
d="M18.1125 6.74999C18.3375 6.74999 18.5625 6.67499 18.7125 6.48749L19.9125 5.28749C20.25 4.94999 20.25 4.42499 19.9125 4.08749C19.575 3.74999 19.05 3.74999 18.7125 4.08749L17.5125 5.28749C17.175 5.62499 17.175 6.14999 17.5125 6.48749C17.6625 6.67499 17.8875 6.74999 18.1125 6.74999Z"
/>
<path
d="M5.32501 17.5125L4.12501 18.675C3.78751 19.0125 3.78751 19.5375 4.12501 19.875C4.27501 20.025 4.50001 20.1375 4.72501 20.1375C4.95001 20.1375 5.17501 20.0625 5.32501 19.875L6.52501 18.675C6.86251 18.3375 6.86251 17.8125 6.52501 17.475C6.18751 17.175 5.62501 17.175 5.32501 17.5125Z"
/>
<path
d="M22.5 11.175H20.5875C20.1375 11.175 19.725 11.55 19.725 12.0375C19.725 12.4875 20.1 12.9 20.5875 12.9H22.5C22.95 12.9 23.3625 12.525 23.3625 12.0375C23.3625 11.55 22.95 11.175 22.5 11.175Z"
/>
<path
d="M4.23751 12C4.23751 11.55 3.86251 11.1375 3.37501 11.1375H1.50001C1.05001 11.1375 0.637512 11.5125 0.637512 12C0.637512 12.45 1.01251 12.8625 1.50001 12.8625H3.41251C3.86251 12.8625 4.23751 12.45 4.23751 12Z"
/>
<path
d="M18.675 17.5125C18.3375 17.175 17.8125 17.175 17.475 17.5125C17.1375 17.85 17.1375 18.375 17.475 18.7125L18.675 19.9125C18.825 20.0625 19.05 20.175 19.275 20.175C19.5 20.175 19.725 20.1 19.875 19.9125C20.2125 19.575 20.2125 19.05 19.875 18.7125L18.675 17.5125Z"
/>
<path
d="M5.32501 4.125C4.98751 3.7875 4.46251 3.7875 4.12501 4.125C3.78751 4.4625 3.78751 4.9875 4.12501 5.325L5.32501 6.525C5.47501 6.675 5.70001 6.7875 5.92501 6.7875C6.15001 6.7875 6.37501 6.7125 6.52501 6.525C6.86251 6.1875 6.86251 5.6625 6.52501 5.325L5.32501 4.125Z"
/>
</g>
<defs>
<clipPath id="clip0_2172_3070">
<rect width="24" height="24" fill="white" />
</clipPath>
</defs>
</svg>
</span>
</label>
</>
}

View File

@@ -0,0 +1,137 @@
import { siteConfig } from '@/lib/config';
import { useEffect } from 'react'
import CONFIG from '../config';
import { SVGQuestion } from './svg/SVGQuestion';
import { SVGCircleBG } from './svg/SVGCircleBG';
export const FAQ = () => {
useEffect(() => {
// ===== Faq accordion
const faqs = document.querySelectorAll('.single-faq');
faqs.forEach((el) => {
el.querySelector('.faq-btn').addEventListener('click', () => {
el.querySelector('.icon').classList.toggle('rotate-180');
el.querySelector('.faq-content').classList.toggle('hidden');
});
});
})
return <>
{/* <!-- ====== FAQ Section Start --> */}
<section
className="relative z-20 overflow-hidden bg-white pb-8 pt-20 dark:bg-dark lg:pb-[50px] lg:pt-[120px]"
>
<div className="container mx-auto">
<div className="-mx-4 flex flex-wrap">
<div className="w-full px-4">
<div className="mx-auto mb-[60px] max-w-[520px] text-center">
<span className="mb-2 block text-lg font-semibold text-primary">
{siteConfig('STARTER_FAQ_TITLE', null, CONFIG)}
</span>
<h2
className="mb-3 text-3xl font-bold leading-[1.2] text-dark dark:text-white sm:text-4xl md:text-[40px]"
>
{siteConfig('STARTER_FAQ_TEXT_1', null, CONFIG)}
</h2>
<p
className="mx-auto max-w-[485px] text-base text-body-color dark:text-dark-6"
>
{siteConfig('STARTER_FAQ_TEXT_2', null, CONFIG)}
</p>
</div>
</div>
</div>
<div className="-mx-4 flex flex-wrap">
<div className="w-full px-4 lg:w-1/2">
<div className="mb-12 flex lg:mb-[70px]">
<div
className="mr-4 flex h-[50px] w-full max-w-[50px] items-center justify-center rounded-xl bg-primary text-white sm:mr-6 sm:h-[60px] sm:max-w-[60px]"
>
<SVGQuestion/>
</div>
<div className="w-full">
<h3
className="mb-6 text-xl font-semibold text-dark dark:text-white sm:text-2xl lg:text-xl xl:text-2xl"
>
{siteConfig('STARTER_FAQ_1_QUESTION', null, CONFIG)}
</h3>
<p dangerouslySetInnerHTML={
{ __html: siteConfig('STARTER_FAQ_1_ANSWER', null, CONFIG) }
} className="text-base text-body-color dark:text-dark-6">
</p>
</div>
</div>
<div className="mb-12 flex lg:mb-[70px]">
<div
className="mr-4 flex h-[50px] w-full max-w-[50px] items-center justify-center rounded-xl bg-primary text-white sm:mr-6 sm:h-[60px] sm:max-w-[60px]"
>
<SVGQuestion/>
</div>
<div className="w-full">
<h3
className="mb-6 text-xl font-semibold text-dark dark:text-white sm:text-2xl lg:text-xl xl:text-2xl"
>
{siteConfig('STARTER_FAQ_2_QUESTION', null, CONFIG)}
</h3>
<p dangerouslySetInnerHTML={
{ __html: siteConfig('STARTER_FAQ_2_ANSWER', null, CONFIG) }
} className="text-base text-body-color dark:text-dark-6">
</p>
</div>
</div>
</div>
<div className="w-full px-4 lg:w-1/2">
<div className="mb-12 flex lg:mb-[70px]">
<div
className="mr-4 flex h-[50px] w-full max-w-[50px] items-center justify-center rounded-xl bg-primary text-white sm:mr-6 sm:h-[60px] sm:max-w-[60px]"
>
<SVGQuestion/>
</div>
<div className="w-full">
<h3
className="mb-6 text-xl font-semibold text-dark dark:text-white sm:text-2xl lg:text-xl xl:text-2xl"
>
{siteConfig('STARTER_FAQ_3_QUESTION', null, CONFIG)}
</h3>
<p dangerouslySetInnerHTML={
{ __html: siteConfig('STARTER_FAQ_3_ANSWER', null, CONFIG) }
} className="text-base text-body-color dark:text-dark-6">
</p>
</div>
</div>
<div className="mb-12 flex lg:mb-[70px]">
<div
className="mr-4 flex h-[50px] w-full max-w-[50px] items-center justify-center rounded-xl bg-primary text-white sm:mr-6 sm:h-[60px] sm:max-w-[60px]"
>
<SVGQuestion/>
</div>
<div className="w-full">
<h3
className="mb-6 text-xl font-semibold text-dark dark:text-white sm:text-2xl lg:text-xl xl:text-2xl"
>
{siteConfig('STARTER_FAQ_4_QUESTION', null, CONFIG)}
</h3>
<p dangerouslySetInnerHTML={
{ __html: siteConfig('STARTER_FAQ_4_ANSWER', null, CONFIG) }
} className="text-base text-body-color dark:text-dark-6">
</p>
</div>
</div>
</div>
</div>
</div>
{/* 背景图案 */}
<div>
<span className="absolute left-4 top-4 -z-[1]">
<SVGCircleBG/>
</span>
<span className="absolute bottom-4 right-4 -z-[1]">
<SVGCircleBG/>
</span>
</div>
</section>
{/* <!-- ====== FAQ Section End --> */}
</>
}

View File

@@ -0,0 +1,135 @@
import CONFIG from '../config'
import { siteConfig } from '@/lib/config';
import { SVGGifts } from './svg/SVGGifts';
import { SVGTemplate } from './svg/SVGTemplate';
import { SVGDesign } from './svg/SVGDesign';
import { SVGEssential } from './svg/SVGEssential';
/**
* 产品特性相关,将显示在首页中
* @returns
*/
export const Features = () => {
return <>
{/* <!-- ====== Features Section Start --> */}
<section className="pb-8 pt-20 dark:bg-dark lg:pb-[70px] lg:pt-[120px]">
<div className="container">
<div className="-mx-4 flex flex-wrap">
<div className="w-full px-4">
<div className="mx-auto mb-12 max-w-[485px] text-center lg:mb-[70px]">
<span className="mb-2 block text-lg font-semibold text-primary">
{siteConfig('STARTER_FEATURE_TITLE', null, CONFIG)}
</span>
<h2
className="mb-3 text-3xl font-bold text-dark dark:text-white sm:text-4xl md:text-[40px] md:leading-[1.2]"
>
{siteConfig('STARTER_FEATURE_TEXT_1', null, CONFIG)}
</h2>
<p className="text-base text-body-color dark:text-dark-6">
{siteConfig('STARTER_FEATURE_TEXT_2', null, CONFIG)}
</p>
</div>
</div>
</div>
<div className="-mx-4 flex flex-wrap">
<div className="w-full px-4 md:w-1/2 lg:w-1/4">
<div className="wow fadeInUp group mb-12" data-wow-delay=".1s">
<div
className="relative z-10 mb-10 flex h-[70px] w-[70px] items-center justify-center rounded-[14px] bg-primary"
>
<span
className="absolute left-0 top-0 -z-[1] mb-8 flex h-[70px] w-[70px] rotate-[25deg] items-center justify-center rounded-[14px] bg-primary bg-opacity-20 duration-300 group-hover:rotate-45"
></span>
<SVGGifts/>
</div>
<h4 className="mb-3 text-xl font-bold text-dark dark:text-white">
{siteConfig('STARTER_FEATURE_1_TITLE_1', null, CONFIG)}
</h4>
<p className="mb-8 text-body-color dark:text-dark-6 lg:mb-9">
{siteConfig('STARTER_FEATURE_1_TEXT_1', null, CONFIG)}
</p>
<a
href={siteConfig('STARTER_FEATURE_1_BUTTON_URL', null, CONFIG)}
className="text-base font-medium text-dark hover:text-primary dark:text-white dark:hover:text-primary"
>
{siteConfig('STARTER_FEATURE_1_BUTTON_TEXT', null, CONFIG)}
</a>
</div>
</div>
<div className="w-full px-4 md:w-1/2 lg:w-1/4">
<div className="wow fadeInUp group mb-12" data-wow-delay=".15s">
<div
className="relative z-10 mb-10 flex h-[70px] w-[70px] items-center justify-center rounded-[14px] bg-primary"
>
<span
className="absolute left-0 top-0 -z-[1] mb-8 flex h-[70px] w-[70px] rotate-[25deg] items-center justify-center rounded-[14px] bg-primary bg-opacity-20 duration-300 group-hover:rotate-45"
></span>
<SVGTemplate/>
</div>
<h4 className="mb-3 text-xl font-bold text-dark dark:text-white">
{siteConfig('STARTER_FEATURE_2_TITLE_1', null, CONFIG)}
</h4>
<p className="mb-8 text-body-color dark:text-dark-6 lg:mb-9">
{siteConfig('STARTER_FEATURE_2_TEXT_1', null, CONFIG)}
</p>
<a
href={siteConfig('STARTER_FEATURE_2_BUTTON_URL', null, CONFIG)}
className="text-base font-medium text-dark hover:text-primary dark:text-white dark:hover:text-primary"
>
{siteConfig('STARTER_FEATURE_2_BUTTON_TEXT', null, CONFIG)}
</a>
</div>
</div>
<div className="w-full px-4 md:w-1/2 lg:w-1/4">
<div className="wow fadeInUp group mb-12" data-wow-delay=".2s">
<div
className="relative z-10 mb-10 flex h-[70px] w-[70px] items-center justify-center rounded-[14px] bg-primary"
>
<span
className="absolute left-0 top-0 -z-[1] mb-8 flex h-[70px] w-[70px] rotate-[25deg] items-center justify-center rounded-[14px] bg-primary bg-opacity-20 duration-300 group-hover:rotate-45"
></span>
<SVGDesign/>
</div>
<h4 className="mb-3 text-xl font-bold text-dark dark:text-white">
{siteConfig('STARTER_FEATURE_3_TITLE_1', null, CONFIG)}
</h4>
<p className="mb-8 text-body-color dark:text-dark-6 lg:mb-9">
{siteConfig('STARTER_FEATURE_3_TEXT_1', null, CONFIG)}
</p>
<a
href={siteConfig('STARTER_FEATURE_3_BUTTON_URL', null, CONFIG)}
className="text-base font-medium text-dark hover:text-primary dark:text-white dark:hover:text-primary"
>
{siteConfig('STARTER_FEATURE_3_BUTTON_TEXT', null, CONFIG)}
</a>
</div>
</div>
<div className="w-full px-4 md:w-1/2 lg:w-1/4">
<div className="wow fadeInUp group mb-12" data-wow-delay=".25s">
<div
className="relative z-10 mb-10 flex h-[70px] w-[70px] items-center justify-center rounded-[14px] bg-primary"
>
<span
className="absolute left-0 top-0 -z-[1] mb-8 flex h-[70px] w-[70px] rotate-[25deg] items-center justify-center rounded-[14px] bg-primary bg-opacity-20 duration-300 group-hover:rotate-45"
></span>
<SVGEssential/>
</div>
<h4 className="mb-3 text-xl font-bold text-dark dark:text-white">
{siteConfig('STARTER_FEATURE_4_TITLE_1', null, CONFIG)}
</h4>
<p className="mb-8 text-body-color dark:text-dark-6 lg:mb-9">
{siteConfig('STARTER_FEATURE_4_TEXT_1', null, CONFIG)}
</p>
<a
href={siteConfig('STARTER_FEATURE_4_BUTTON_URL', null, CONFIG)}
className="text-base font-medium text-dark hover:text-primary dark:text-white dark:hover:text-primary"
>
{siteConfig('STARTER_FEATURE_3_BUTTON_TEXT', null, CONFIG)}
</a>
</div>
</div>
</div>
</div>
</section>
{/* <!-- ====== Features Section End --> */}
</>
}

View File

@@ -0,0 +1,164 @@
import { siteConfig } from '@/lib/config'
import CONFIG from '../config'
import { Logo } from './Logo'
import SocialButton from '@/themes/fukasawa/components/SocialButton'
import { SVGFooterCircleBG } from './svg/SVGFooterCircleBG'
import { checkContainHttp, sliceUrlFromHttp } from '@/lib/utils'
/* eslint-disable @next/next/no-img-element */
export const Footer = (props) => {
const latestPosts = props?.latestPosts ? props?.latestPosts.slice(0, 2) : []
return <>
{/* <!-- ====== Footer Section Start --> */}
<footer
className="wow fadeInUp relative z-10 bg-[#090E34] pt-20 lg:pt-[100px]"
data-wow-delay=".15s"
>
<div className="container">
<div className="-mx-4 flex flex-wrap">
<div className="w-full px-4 sm:w-1/2 md:w-1/2 lg:w-4/12 xl:w-3/12">
<div className="mb-10 w-full">
<a
className="-mx-4 mb-6 inline-block max-w-[160px]"
>
<Logo white={true}/>
</a>
<p className="mb-8 max-w-[270px] text-base text-gray-7">
{siteConfig('STARTER_FOOTER_SLOGAN', null, CONFIG)}
</p>
<div className="-mx-3 flex items-center">
<div className='mx-3'><SocialButton/></div>
</div>
</div>
</div>
{/* 中间三列菜单组 */}
{CONFIG.STARTER_FOOTER_LINK_GROUP?.map((item, index) => {
return <div key={index} className="w-full px-4 sm:w-1/2 md:w-1/2 lg:w-2/12 xl:w-2/12">
<div className="mb-10 w-full">
<h4 className="mb-9 text-lg font-semibold text-white">
{item.TITLE}
</h4>
<ul>
{item?.LINK_GROUP?.map((l, i) => {
return <li key={i}>
<a href={l.URL}
className="mb-3 inline-block text-base text-gray-7 hover:text-primary"
>
{l.TITLE}
</a>
</li>
})}
</ul>
</div>
</div>
})}
{/* 页脚右侧最新博文 */}
<div className="w-full px-4 md:w-2/3 lg:w-6/12 xl:w-3/12">
<div className="mb-10 w-full">
<h4 className="mb-9 text-lg font-semibold text-white">
{siteConfig('STARTER_FOOTER_BLOG_LATEST_TITLE', null, CONFIG)}
</h4>
{/* 展示两条最新博客文章 */}
<div className="flex flex-col gap-8">
{latestPosts?.map((item, index) => {
const url = checkContainHttp(item.slug) ? sliceUrlFromHttp(item.slug) : `${siteConfig('SUB_PATH', '')}/${item.slug}`
return <a key={index}
href={url}
className="group flex items-center gap-[22px]"
>
<div className="overflow-hidden rounded w-20 h-12">
<img
src={item.pageCoverThumbnail}
alt={item.title}
/>
</div>
<span
className="line-clamp-2 max-w-[180px] text-base text-gray-7 group-hover:text-white"
>
{item.title}
</span>
</a>
})}
</div>
</div>
</div>
</div>
</div>
{/* 底部版权信息相关 */}
<div
className="mt-12 border-t border-[#8890A4] border-opacity-40 py-8 lg:mt-[60px]"
>
<div className="container">
<div className="-mx-4 flex flex-wrap">
<div className="w-full px-4 md:w-2/3 lg:w-1/2">
<div className="my-1">
<div
className="-mx-3 flex items-center justify-center md:justify-start"
>
<a
href= {siteConfig('STARTER_FOOTER_PRIVACY_POLICY_URL', null, CONFIG)}
className="px-3 text-base text-gray-7 hover:text-white hover:underline"
>
{siteConfig('STARTER_FOOTER_PRIVACY_POLICY_TEXT', null, CONFIG)}
</a>
<a
href= {siteConfig('STARTER_FOOTER_PRIVACY_LEGAL_NOTICE_URL', null, CONFIG)}
className="px-3 text-base text-gray-7 hover:text-white hover:underline"
>
{siteConfig('STARTER_FOOTER_PRIVACY_LEGAL_NOTICE_TEXT', null, CONFIG)}
</a>
<a
href= {siteConfig('STARTER_FOOTER_PRIVACY_TERMS_OF_SERVICE_URL', null, CONFIG)}
className="px-3 text-base text-gray-7 hover:text-white hover:underline"
>
{siteConfig('STARTER_FOOTER_PRIVACY_TERMS_OF_SERVICE_TEXT', null, CONFIG)}
</a>
</div>
</div>
</div>
<div className="w-full px-4 md:w-1/3 lg:w-1/2">
<div className="my-1 flex justify-center md:justify-end">
<p className="text-base text-gray-7">
Designed and Developed by
<a
href="https://github.com/tangly1024/NotionNext"
rel="nofollow noopner noreferrer"
target="_blank"
className="px-1 text-gray-1 hover:underline"
>
NotionNext {siteConfig('VERSION')}
</a>
</p>
</div>
</div>
</div>
</div>
</div>
{/* Footer 背景 */}
<div>
<span className="absolute left-0 top-0 z-[-1]">
<img src="/images/starter/footer/shape-1.svg" alt="" />
</span>
<span className="absolute bottom-0 right-0 z-[-1]">
<img src="/images/starter/footer/shape-3.svg" alt="" />
</span>
<span className="absolute right-0 top-0 z-[-1]">
<SVGFooterCircleBG/>
</span>
</div>
</footer>
{/* <!-- ====== Footer Section End --> */}
</>
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,61 @@
/* eslint-disable @next/next/no-html-link-for-pages */
import { siteConfig } from '@/lib/config';
import { useGlobal } from '@/lib/global';
import throttle from 'lodash.throttle';
import { useRouter } from 'next/router';
import { useEffect, useState } from 'react';
import CONFIG from '../config';
/**
* 站点图标
* @returns
*/
export const Logo = ({ white }) => {
const router = useRouter()
const { isDarkMode } = useGlobal()
const logoWhite = siteConfig('STARTER_LOGO_WHITE', null, CONFIG)
const [logo, setLogo] = useState(logoWhite)
const [logoTextColor, setLogoTextColor] = useState('text-white')
useEffect(() => {
// 滚动监听
const throttleMs = 200
const navBarScrollListener = throttle(() => {
const scrollY = window.scrollY;
// 何时显示浅色或白底的logo
const homePageNavBar = router.route === '/' && scrollY < 10 // 在首页并且视窗在页面顶部
console.log('白色', homePageNavBar, router.route, scrollY < 10)
if (white || isDarkMode || homePageNavBar) {
setLogo(siteConfig('STARTER_LOGO_WHITE', null, CONFIG))
setLogoTextColor('text-white')
} else {
setLogo(siteConfig('STARTER_LOGO', null, CONFIG))
setLogoTextColor('text-black')
}
}, throttleMs)
navBarScrollListener()
window.addEventListener('scroll', navBarScrollListener)
return () => {
window.removeEventListener('scroll', navBarScrollListener)
}
}, [isDarkMode, router])
return <div className="w-60 max-w-full px-4">
<div className="navbar-logo flex items-center w-full py-5 cursor-pointer">
{/* eslint-disable-next-line @next/next/no-img-element */}
{logo && <img
onClick={() => {
router.push('/')
}}
src={logo}
alt="logo"
className="header-logo w-full"
/>}
{/* logo文字 */}
<span onClick={() => { router.push('/') }} className={`${logoTextColor} dark:text-white py-1.5 header-logo-text whitespace-nowrap text-2xl font-semibold`}>
{siteConfig('TITLE')}
</span>
</div>
</div>
}

View File

@@ -0,0 +1,29 @@
/* eslint-disable @next/next/no-img-element */
export const MadeWithButton = () => {
return <>
{/* <!-- ====== Made With Button Start --> */}
<a
target="_blank"
rel="nofollow noopener noreferrer"
className="fixed bottom-8 left-4 z-[999] inline-flex items-center gap-[10px] rounded-lg bg-white px-[14px] py-2 shadow-2 dark:bg-dark-2 sm:left-9"
href="https://tailgrids.com/"
>
<span className="text-base font-medium text-dark-3 dark:text-dark-6">
Made with
</span>
<span className="block h-4 w-px bg-stroke dark:bg-dark-3"></span>
<span className="block w-full max-w-[88px]">
<img
src="/images/starter/brands/tailgrids.svg"
alt="tailgrids"
className="dark:hidden"
/>
<img
src="/images/starter/brands/tailgrids-white.svg"
alt="tailgrids"
className="hidden dark:block"
/>
</span>
</a>
</>
}

View File

@@ -0,0 +1,47 @@
import Link from 'next/link'
import { useRouter } from 'next/router'
export const MenuItem = ({ link }) => {
const hasSubMenu = link?.subMenus?.length > 0
const router = useRouter()
return <>
{/* MenuItem */}
{!hasSubMenu && <li className="group relative whitespace-nowrap">
<Link href={link?.to} target={link?.to?.indexOf('http') === 0 ? '_blank' : '_self'}
className={`ud-menu-scroll mx-8 flex py-2 text-base font-medium text-dark group-hover:text-primary dark:text-white lg:mr-0 lg:inline-flex lg:px-0 lg:py-6 ${router.route === '/' ? 'lg:text-white lg:group-hover:text-white' : ''} lg:group-hover:opacity-70`}
>
{link?.icon && <i className={link.icon + ' mr-2 my-auto'} />}{link?.name}
</Link>
</li>}
{hasSubMenu && <li className="submenu-item group relative whitespace-nowrap">
{/* 有子菜单的MenuItem */}
<a className={`relative mx-8 flex items-center justify-between py-2 text-base font-medium text-dark group-hover:text-primary dark:text-white lg:ml-8 lg:mr-0 lg:inline-flex lg:py-6 lg:pl-0 lg:pr-4 ${router.route === '/' ? 'lg:text-white lg:group-hover:text-white' : ''} lg:group-hover:opacity-70 xl:ml-10`}>
{link?.icon && <i className={link.icon + ' mr-2 my-auto'} />}{link?.name}
<svg
className="ml-2 fill-current"
width="16"
height="20"
viewBox="0 0 16 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M7.99999 14.9C7.84999 14.9 7.72499 14.85 7.59999 14.75L1.84999 9.10005C1.62499 8.87505 1.62499 8.52505 1.84999 8.30005C2.07499 8.07505 2.42499 8.07505 2.64999 8.30005L7.99999 13.525L13.35 8.25005C13.575 8.02505 13.925 8.02505 14.15 8.25005C14.375 8.47505 14.375 8.82505 14.15 9.05005L8.39999 14.7C8.27499 14.825 8.14999 14.9 7.99999 14.9Z"
/>
</svg>
</a>
<div className="submenu relative left-0 top-full hidden w-[250px] rounded-sm bg-white p-4 transition-[top] duration-300 group-hover:opacity-100 dark:bg-dark-2 lg:invisible lg:absolute lg:top-[110%] lg:block lg:opacity-0 lg:shadow-lg lg:group-hover:visible lg:group-hover:top-full" >
{link.subMenus.map((sLink, index) => {
return <Link key={index} href={sLink.to} target={link?.to?.indexOf('http') === 0 ? '_blank' : '_self'} className="block rounded px-4 py-[10px] text-sm text-body-color hover:text-primary dark:text-dark-6 dark:hover:text-primary" >
{/* 子菜单SubMenuItem */}
<span className='text-sm ml-4 whitespace-nowrap'>{link?.icon && <i className={sLink.icon + ' mr-2 my-auto'} />} {sLink.title}</span>
</Link>
})}
</div>
</li>}
</>
}

View File

@@ -0,0 +1,82 @@
import { siteConfig } from '@/lib/config';
import { useGlobal } from '@/lib/global';
import { useEffect } from 'react';
import CONFIG from '../config';
import { MenuItem } from './MenuItem';
/**
* 响应式 折叠菜单
*/
export const MenuList = (props) => {
const { customNav, customMenu } = props
const { locale } = useGlobal()
let links = [
{ icon: 'fas fa-archive', name: locale.NAV.ARCHIVE, to: '/archive', show: siteConfig('HEO_MENU_ARCHIVE', null, CONFIG) },
{ icon: 'fas fa-search', name: locale.NAV.SEARCH, to: '/search', show: siteConfig('HEO_MENU_SEARCH', null, CONFIG) },
{ icon: 'fas fa-folder', name: locale.COMMON.CATEGORY, to: '/category', show: siteConfig('HEO_MENU_CATEGORY', null, CONFIG) },
{ icon: 'fas fa-tag', name: locale.COMMON.TAGS, to: '/tag', show: siteConfig('HEO_MENU_TAG', null, CONFIG) }
]
if (customNav) {
links = customNav.concat(links)
}
useEffect(() => {
// ===== responsive navbar
const navbarToggler = document.querySelector('#navbarToggler');
const navbarCollapse = document.querySelector('#navbarCollapse');
// 点击弹出菜单
navbarToggler?.addEventListener('click', () => {
navbarToggler?.classList.toggle('navbarTogglerActive');
navbarCollapse?.classList.toggle('hidden');
});
//= ==== close navbar-collapse when a clicked
document
.querySelectorAll('#navbarCollapse ul li:not(.submenu-item) a')
.forEach((e) =>
e.addEventListener('click', () => {
navbarToggler?.classList.remove('navbarTogglerActive');
navbarCollapse?.classList.add('hidden');
})
);
// ===== Sub-menu
const submenuItems = document.querySelectorAll('.submenu-item');
submenuItems.forEach((el) => {
el.querySelector('a')?.addEventListener('click', () => {
el.querySelector('.submenu')?.classList.toggle('hidden');
});
});
}, [])
// 如果 开启自定义菜单则覆盖Page生成的菜单
if (siteConfig('CUSTOM_MENU')) {
links = customMenu
}
// if (!links || links.length === 0) {
// return null
// }
return <>
<div>
{/* 移动端菜单切换按钮 */}
<button id="navbarToggler" className="absolute right-4 top-1/2 block -translate-y-1/2 rounded-lg px-3 py-[6px] ring-primary focus:ring-2 lg:hidden">
<span className="relative my-[6px] block h-[2px] w-[30px] bg-white duration-200 transition-all" ></span>
<span className="relative my-[6px] block h-[2px] w-[30px] bg-white duration-200 transition-all" ></span>
<span className="relative my-[6px] block h-[2px] w-[30px] bg-white duration-200 transition-all" ></span>
</button>
{/* 响应式菜单 */}
<nav id="navbarCollapse" className="absolute right-4 top-full hidden w-full max-w-[250px] rounded-lg bg-white py-5 shadow-lg dark:bg-dark-2 lg:static lg:block lg:w-full lg:max-w-full lg:bg-transparent lg:px-4 lg:py-0 lg:shadow-none dark:lg:bg-transparent xl:px-6">
<ul className="blcok lg:flex 2xl:ml-20">
{links?.map((link, index) => <MenuItem key={index} link={link} />)}
</ul>
</nav>
</div>
</>
}

View File

@@ -0,0 +1,132 @@
import { siteConfig } from '@/lib/config'
import CONFIG from '../config'
import { useRef, useState } from 'react'
/**
* 留言表单
* @returns
*/
export const MessageForm = () => {
const formRef = useRef()
const [success] = useState(false)
const [formData, setFormData] = useState({
fullName: '',
email: '',
phone: '',
message: ''
})
const handleChange = (e) => {
const { name, value } = e.target
setFormData(prevState => ({
...prevState,
[name]: value
}))
}
// useEffect(() => {
// const form = formRef.current
// const handleSubmit = (e) => {
// e.preventDefault()
// submitComments(formData).then(response => {
// console.log('Subscription succeeded:', response)
// // 在此处添加成功订阅后的操作
// setSuccess(true)
// })
// .catch(error => {
// console.error('Subscription failed:', error)
// // 在此处添加订阅失败后的操作
// })
// }
// form?.addEventListener('submit', handleSubmit)
// return () => {
// form?.removeEventListener('submit', handleSubmit)
// }
// }, [submitComments])
return <>
<h3
className="mb-8 text-2xl font-semibold text-dark dark:text-white md:text-[28px] md:leading-[1.42]"
>
{siteConfig('STARTER_CONTACT_MSG_TITLE', null, CONFIG)}
</h3>
<form ref={formRef}>
<div className="mb-[22px]">
<label
// for="fullName"
className="mb-4 block text-sm text-body-color dark:text-dark-6">
{siteConfig('STARTER_CONTACT_MSG_NAME', null, CONFIG)}*
</label>
<input
disabled={success}
type="text"
name="fullName"
value={formData.fullName}
onChange={handleChange}
placeholder="Adam Gelius"
className="w-full border-0 border-b border-[#f1f1f1] bg-transparent pb-3 text-body-color placeholder:text-body-color/60 focus:border-primary focus:outline-none dark:border-dark-3 dark:text-dark-6"
/>
</div>
<div className="mb-[22px]">
<label
// for="email"
className="mb-4 block text-sm text-body-color dark:text-dark-6">
{siteConfig('STARTER_CONTACT_MSG_EMAIL', null, CONFIG)}*
</label >
<input
disabled={success}
type="email"
name="email"
value={formData.email}
onChange={handleChange}
placeholder="example@yourmail.com"
className="w-full border-0 border-b border-[#f1f1f1] bg-transparent pb-3 text-body-color placeholder:text-body-color/60 focus:border-primary focus:outline-none dark:border-dark-3 dark:text-dark-6"
/>
</div>
<div className="mb-[22px]">
<label
// for="phone"
className="mb-4 block text-sm text-body-color dark:text-dark-6">
{siteConfig('STARTER_CONTACT_MSG_PHONE', null, CONFIG)}*
</label >
<input
disabled={success}
type="text"
name="phone"
value={formData.phone}
onChange={handleChange}
placeholder="+885 1254 5211 552"
className="w-full border-0 border-b border-[#f1f1f1] bg-transparent pb-3 text-body-color placeholder:text-body-color/60 focus:border-primary focus:outline-none dark:border-dark-3 dark:text-dark-6"
/>
</div>
<div className="mb-[30px]">
<label
// for="message"
className="mb-4 block text-sm text-body-color dark:text-dark-6">
{siteConfig('STARTER_CONTACT_MSG_TEXT', null, CONFIG)}*
</label >
<textarea
disabled={success}
name="message"
value={formData.message}
onChange={handleChange}
rows="1"
placeholder="type your message here"
className="w-full resize-none border-0 border-b border-[#f1f1f1] bg-transparent pb-3 text-body-color placeholder:text-body-color/60 focus:border-primary focus:outline-none dark:border-dark-3 dark:text-dark-6"
></textarea>
</div>
<div className="mb-0">
<button
disabled={success}
type="submit"
className="inline-flex items-center justify-center rounded-md bg-primary px-10 py-3 text-base font-medium text-white transition duration-300 ease-in-out hover:bg-blue-dark"
>
{siteConfig('STARTER_CONTACT_MSG_SEND', null, CONFIG)}
</button>
{/* Success message */}
{success && <p className="mt-2 text-green-600 text-sm">{siteConfig('STARTER_CONTACT_MSG_THANKS', null, CONFIG)}</p>}
</div>
</form>
</>
}

View File

@@ -0,0 +1,91 @@
/* eslint-disable no-unreachable */
import throttle from 'lodash.throttle';
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';
/**
* 顶部导航栏
*/
export const NavBar = (props) => {
const router = useRouter()
const { isDarkMode } = useGlobal()
const [buttonTextColor, setColor] = useState(router.route === '/' ? 'text-white' : '')
useEffect(() => {
if (isDarkMode || router.route === '/') {
setColor('text-white')
} else {
setColor('')
}
// ======= Sticky
window.addEventListener('scroll', navBarScollListener)
return () => {
window.removeEventListener('scroll', navBarScollListener)
}
}, [[isDarkMode]])
// 滚动监听
const throttleMs = 200
const navBarScollListener = useCallback(
throttle(() => {
// 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');
} else {
ud_header?.classList?.remove('sticky');
}
}, throttleMs)
)
return <>
{/* <!-- ====== Navbar Section Start --> */}
<div className="ud-header absolute left-0 top-0 z-40 flex w-full items-center bg-transparent" >
<div className="container">
<div className="relative -mx-4 flex items-center justify-between">
{/* Logo */}
<Logo/>
<div className="flex w-full items-center justify-between px-4">
{/* 中间菜单 */}
<MenuList {...props}/>
{/* 右侧功能 */}
<div className="flex items-center justify-end pr-16 lg:pr-0">
{/* 深色模式切换 */}
<DarkModeButton/>
{/* 注册登录功能 */}
<div className="hidden sm:flex">
<a
href={siteConfig('STARTER_NAV_BUTTON_1_URL', null, CONFIG)}
className={`loginBtn ${buttonTextColor} px-[22px] py-2 text-base font-medium hover:opacity-70`}
>
{siteConfig('STARTER_NAV_BUTTON_1_TEXT', null, CONFIG)}
</a>
<a
href={siteConfig('STARTER_NAV_BUTTON_2_URL', null, CONFIG)}
className={`signUpBtn ${buttonTextColor} rounded-md bg-white bg-opacity-20 px-6 py-2 text-base font-medium duration-300 ease-in-out hover:bg-opacity-100 hover:text-dark`}
>
{siteConfig('STARTER_NAV_BUTTON_2_TEXT', null, CONFIG)}
</a>
</div>
</div>
</div>
</div>
</div>
</div>
{/* <!-- ====== Navbar Section End --> */}
</>
}

View File

@@ -0,0 +1,177 @@
import { siteConfig } from '@/lib/config'
import CONFIG from '../config'
/**
* 价格板块
* @returns
*/
export const Pricing = () => {
return <>
{/* <!-- ====== Pricing Section Start --> */}
<section
id="pricing"
className="relative z-20 overflow-hidden bg-white pb-12 pt-20 dark:bg-dark lg:pb-[90px] lg:pt-[120px]"
>
<div className="container mx-auto">
<div className="-mx-4 flex flex-wrap">
<div className="w-full px-4">
<div className="mx-auto mb-[60px] max-w-[510px] text-center">
<span className="mb-2 block text-lg font-semibold text-primary">
{siteConfig('STARTER_PRICING_TITLE', null, CONFIG)}
</span>
<h2
className="mb-3 text-3xl font-bold text-dark dark:text-white sm:text-4xl md:text-[40px] md:leading-[1.2]"
>
{siteConfig('STARTER_PRICING_TEXT_1', null, CONFIG)}
</h2>
<p className="text-base text-body-color dark:text-dark-6">
{siteConfig('STARTER_PRICING_TEXT_2', null, CONFIG)}
</p>
</div>
</div>
</div>
{/* 第一个付费计划 */}
<div className="-mx-4 flex flex-wrap justify-center">
<div className="w-full px-4 md:w-1/2 lg:w-1/3">
<div
className="relative z-10 mb-10 overflow-hidden rounded-xl bg-white px-8 py-10 shadow-pricing dark:bg-dark-2 sm:p-12 lg:px-6 lg:py-10 xl:p-14"
>
<span
className="mb-5 block text-xl font-medium text-dark dark:text-white"
>
{siteConfig('STARTER_PRICING_1_TITLE', null, CONFIG)}
</span>
<h2
className="space-x-1 mb-11 text-4xl font-semibold text-dark dark:text-white xl:text-[42px] xl:leading-[1.21]"
>
<span className="text-xl font-medium">{siteConfig('STARTER_PRICING_1_PRICE_CURRENCY', null, CONFIG)}</span>
<span className="-ml-1 -tracking-[2px]">{siteConfig('STARTER_PRICING_1_PRICE', null, CONFIG)}</span>
<span
className="text-base font-normal text-body-color dark:text-dark-6"
>
{siteConfig('STARTER_PRICING_1_PRICE_PERIOD', null, CONFIG)}
</span>
</h2>
<div className="mb-[50px]">
<h5 className="mb-5 text-lg font-medium text-dark dark:text-white">
{siteConfig('STARTER_PRICING_1_HEADER', null, CONFIG)}
</h5>
<div className="flex flex-col gap-[14px]">
{siteConfig('STARTER_PRICING_1_FEATURES', null, CONFIG)?.split(',').map((feature, index) => {
return <p key={index} className="text-base text-body-color dark:text-dark-6">
{feature}
</p>
})}
</div>
</div>
<a
href={siteConfig('STARTER_PRICING_1_BUTTON_URL')}
className="inline-block rounded-md bg-primary px-7 py-3 text-center text-base font-medium text-white transition hover:bg-blue-dark"
>
{siteConfig('STARTER_PRICING_1_BUTTON_TEXT', null, CONFIG)}
</a>
</div>
</div>
{/* 第二个付费计划 */}
<div className="w-full px-4 md:w-1/2 lg:w-1/3">
<div
className="relative z-10 mb-10 overflow-hidden rounded-xl bg-white px-8 py-10 shadow-pricing dark:bg-dark-2 sm:p-12 lg:px-6 lg:py-10 xl:p-14"
>
<p style={{ writingMode: 'vertical-rl', textOrientation: 'mixed' }}
className="absolute p-1 right-0 top-0 inline-block rounded-bl-md rounded-tl-md bg-primary text-base font-medium text-white tracking-wider"
>
{siteConfig('STARTER_PRICING_2_TAG', null, CONFIG)}
</p>
<span
className="mb-5 block text-xl font-medium text-dark dark:text-white"
>
{siteConfig('STARTER_PRICING_2_TITLE', null, CONFIG)}
</span>
<h2
className="space-x-1 mb-11 text-4xl font-semibold text-dark dark:text-white xl:text-[42px] xl:leading-[1.21]"
>
<span className="text-xl font-medium">{siteConfig('STARTER_PRICING_1_PRICE_CURRENCY', null, CONFIG)}</span>
<span className="-ml-1 -tracking-[2px]">{siteConfig('STARTER_PRICING_1_PRICE', null, CONFIG)}</span>
<span
className="text-base font-normal text-body-color dark:text-dark-6"
>
{siteConfig('STARTER_PRICING_2_PRICE_PERIOD', null, CONFIG)}
</span>
</h2>
<div className="mb-[50px]">
<h5 className="mb-5 text-lg font-medium text-dark dark:text-white">
{siteConfig('STARTER_PRICING_2_HEADER', null, CONFIG)}
</h5>
<div className="flex flex-col gap-[14px]">
{siteConfig('STARTER_PRICING_2_FEATURES', null, CONFIG)?.split(',').map((feature, index) => {
return <p key={index} className="text-base text-body-color dark:text-dark-6">
{feature}
</p>
})}
</div>
</div>
<a
href={siteConfig('STARTER_PRICING_2_BUTTON_URL')}
className="inline-block rounded-md bg-primary px-7 py-3 text-center text-base font-medium text-white transition hover:bg-blue-dark"
>
{siteConfig('STARTER_PRICING_2_BUTTON_TEXT', null, CONFIG)}
</a>
</div>
</div>
{/* 第三个付费计划 */}
<div className="w-full px-4 md:w-1/2 lg:w-1/3">
<div
className="relative z-10 mb-10 overflow-hidden rounded-xl bg-white px-8 py-10 shadow-pricing dark:bg-dark-2 sm:p-12 lg:px-6 lg:py-10 xl:p-14"
>
<span
className="mb-5 block text-xl font-medium text-dark dark:text-white"
>
{siteConfig('STARTER_PRICING_3_TITLE', null, CONFIG)}
</span>
<h2
className="space-x-1 mb-11 text-4xl font-semibold text-dark dark:text-white xl:text-[42px] xl:leading-[1.21]"
>
<span className="text-xl font-medium">{siteConfig('STARTER_PRICING_3_PRICE_CURRENCY', null, CONFIG)}</span>
<span className="-ml-1 -tracking-[2px]">{siteConfig('STARTER_PRICING_3_PRICE', null, CONFIG)}</span>
<span
className="text-base font-normal text-body-color dark:text-dark-6"
>
{siteConfig('STARTER_PRICING_3_PRICE_PERIOD', null, CONFIG)}
</span>
</h2>
<div className="mb-[50px]">
<h5 className="mb-5 text-lg font-medium text-dark dark:text-white">
{siteConfig('STARTER_PRICING_3_HEADER', null, CONFIG)}
</h5>
<div className="flex flex-col gap-[14px]">
{siteConfig('STARTER_PRICING_3_FEATURES', null, CONFIG)?.split(',').map((feature, index) => {
return <p key={index} className="text-base text-body-color dark:text-dark-6">
{feature}
</p>
})}
</div>
</div>
<a
href={siteConfig('STARTER_PRICING_3_BUTTON_URL')}
className="inline-block rounded-md bg-primary px-7 py-3 text-center text-base font-medium text-white transition hover:bg-blue-dark"
>
{siteConfig('STARTER_PRICING_3_BUTTON_TEXT', null, CONFIG)}
</a>
</div>
</div>
</div>
</div>
</section>
{/* <!-- ====== Pricing Section End --> */}
</>
}

View File

@@ -0,0 +1,97 @@
/* eslint-disable @next/next/no-img-element */
import { Logo } from './Logo'
import { SVGCircleBg2 } from './svg/SVGCircleBG2'
import { SVGCircleBG3 } from './svg/SVGCircleBG3'
import { SVGFacebook } from './svg/SVGFacebook'
import { SVGGoogle } from './svg/SVGGoogle'
import { SVGTwitter } from './svg/SVGTwitter'
/**
* 登录
* @returns
*/
export const SignInForm = () => {
return <>
{/* <!-- ====== Forms Section Start --> */}
<section className="bg-[#F4F7FF] py-14 lg:py-20 dark:bg-dark">
<div className="container">
<div className="flex flex-wrap -mx-4">
<div className="w-full px-4">
<div
className="wow fadeInUp relative mx-auto max-w-[525px] overflow-hidden rounded-lg bg-white dark:bg-dark-2 py-14 px-8 text-center sm:px-12 md:px-[60px]"
data-wow-delay=".15s">
<div className="mb-10 text-center">
<div href="#" className="mx-auto inline-block max-w-[160px]">
<Logo/>
</div>
</div>
{/* 表单内容 */}
<form>
<div className="mb-[22px]">
<input type="email" placeholder="Email"
className="w-full px-5 py-3 text-base transition bg-transparent border rounded-md outline-none border-stroke dark:border-dark-3 text-body-color dark:text-dark-6 placeholder:text-dark-6 focus:border-primary dark:focus:border-primary focus-visible:shadow-none" />
</div>
<div className="mb-[22px]">
<input type="password" placeholder="Password"
className="w-full px-5 py-3 text-base transition bg-transparent border rounded-md outline-none border-stroke dark:border-dark-3 text-body-color dark:text-dark-6 placeholder:text-dark-6 focus:border-primary dark:focus:border-primary focus-visible:shadow-none" />
</div>
<div className="mb-9">
<input type="submit" value="Sign In"
className="w-full px-5 py-3 text-base text-white transition duration-300 ease-in-out border rounded-md cursor-pointer border-primary bg-primary hover:bg-blue-dark" />
</div>
</form>
<span className="relative block text-center z-1 mb-7">
<span className="absolute left-0 block w-full h-px -z-1 top-1/2 bg-stroke dark:bg-dark-3"></span>
<span className="relative z-10 inline-block px-3 text-base bg-white dark:bg-dark-2 text-body-secondary">Connect With</span>
</span>
{/* 社交平台 */}
<ul className="flex justify-between -mx-2 mb-9">
<li className="w-full px-2">
<a href="#"
className="flex h-11 items-center justify-center rounded-md bg-[#4064AC] transition hover:bg-opacity-90">
<SVGFacebook className='fill-white'/>
</a>
</li>
<li className="w-full px-2">
<a href="#"
className="flex h-11 items-center justify-center rounded-md bg-[#1C9CEA] transition hover:bg-opacity-90">
<SVGTwitter className='fill-white'/>
</a>
</li>
<li className="w-full px-2">
<a href="#"
className="flex h-11 items-center justify-center rounded-md bg-[#D64937] transition hover:bg-opacity-90">
<SVGGoogle className='fill-white'/>
</a>
</li>
</ul>
<a href="#" className="inline-block mb-2 text-base text-dark dark:text-white hover:text-primary dark:hover:text-primary">
Forget Password?
</a>
<p className="text-base text-body-secondary">
Not a member yet?
<a href="signup.html" className="text-primary hover:underline">
Sign Up
</a>
</p>
<div>
<span className="absolute top-1 right-1">
<SVGCircleBg2/>
</span>
<span className="absolute left-1 bottom-1">
<SVGCircleBG3/>
</span>
</div>
</div>
</div>
</div>
</div>
</section>
{/* <!-- ====== Forms Section End --> */}
</>
}

View File

@@ -0,0 +1,160 @@
import { Logo } from './Logo'
/**
* 注册
* @returns
*/
export const SignUpForm = () => {
return <>
{/* <!-- ====== Forms Section Start --> */}
<section className="bg-[#F4F7FF] py-14 lg:py-[90px] dark:bg-dark">
<div className="container">
<div className="flex flex-wrap -mx-4">
<div className="w-full px-4">
<div
className="wow fadeInUp relative mx-auto max-w-[525px] overflow-hidden rounded-xl shadow-form bg-white dark:bg-dark-2 py-14 px-8 text-center sm:px-12 md:px-[60px]"
data-wow-delay=".15s">
<div className="mb-10 text-center">
<a href="#" className="mx-auto inline-block max-w-[160px]">
<Logo/>
</a>
</div>
<form>
<div className="mb-[22px]">
<input type="text" placeholder="Name"
className="w-full px-5 py-3 text-base transition bg-transparent border rounded-md outline-none border-stroke dark:border-dark-3 text-body-color dark:text-dark-6 placeholder:text-dark-6 focus:border-primary dark:focus:border-primary focus-visible:shadow-none" />
</div>
<div className="mb-[22px]">
<input type="email" placeholder="Email"
className="w-full px-5 py-3 text-base transition bg-transparent border rounded-md outline-none border-stroke dark:border-dark-3 text-body-color dark:text-dark-6 placeholder:text-dark-6 focus:border-primary dark:focus:border-primary focus-visible:shadow-none" />
</div>
<div className="mb-[22px]">
<input type="password" placeholder="Password"
className="w-full px-5 py-3 text-base transition bg-transparent border rounded-md outline-none border-stroke dark:border-dark-3 text-body-color dark:text-dark-6 placeholder:text-dark-6 focus:border-primary dark:focus:border-primary focus-visible:shadow-none" />
</div>
<div className="mb-9">
<input type="submit" value="Sign Up"
className="w-full px-5 py-3 text-base text-white transition duration-300 ease-in-out border rounded-md cursor-pointer border-primary bg-primary hover:bg-blue-dark" />
</div>
</form>
<span className="relative block text-center z-1 mb-7">
<span className="absolute left-0 block w-full h-px -z-1 top-1/2 bg-stroke dark:bg-dark-3"></span>
<span className="relative z-10 inline-block px-3 text-base bg-white dark:bg-dark-2 text-body-secondary">Connect With</span>
</span>
<ul className="flex justify-between -mx-2 mb-9">
<li className="w-full px-2">
<a href="#"
className="flex h-11 items-center justify-center rounded-md bg-[#4064AC] transition hover:bg-opacity-90">
<svg width="10" height="20" viewBox="0 0 10 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M9.29878 8H7.74898H7.19548V7.35484V5.35484V4.70968H7.74898H8.91133C9.21575 4.70968 9.46483 4.45161 9.46483 4.06452V0.645161C9.46483 0.290323 9.24343 0 8.91133 0H6.89106C4.70474 0 3.18262 1.80645 3.18262 4.48387V7.29032V7.93548H2.62912H0.747223C0.359774 7.93548 0 8.29032 0 8.80645V11.129C0 11.5806 0.304424 12 0.747223 12H2.57377H3.12727V12.6452V19.129C3.12727 19.5806 3.43169 20 3.87449 20H6.47593C6.64198 20 6.78036 19.9032 6.89106 19.7742C7.00176 19.6452 7.08478 19.4194 7.08478 19.2258V12.6774V12.0323H7.66596H8.91133C9.2711 12.0323 9.54785 11.7742 9.6032 11.3871V11.3548V11.3226L9.99065 9.09677C10.0183 8.87097 9.99065 8.6129 9.8246 8.35484C9.76925 8.19355 9.52018 8.03226 9.29878 8Z"
fill="white" />
</svg>
</a>
</li>
<li className="w-full px-2">
<a href="#"
className="flex h-11 items-center justify-center rounded-md bg-[#1C9CEA] transition hover:bg-opacity-90">
<svg width="22" height="16" viewBox="0 0 22 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M19.5516 2.75538L20.9 1.25245C21.2903 0.845401 21.3968 0.53229 21.4323 0.375734C20.3677 0.939335 19.3742 1.1272 18.7355 1.1272H18.4871L18.3452 1.00196C17.4935 0.344423 16.429 0 15.2935 0C12.8097 0 10.8581 1.81605 10.8581 3.91389C10.8581 4.03914 10.8581 4.22701 10.8935 4.35225L11 4.97847L10.2548 4.94716C5.7129 4.82192 1.9871 1.37769 1.38387 0.782779C0.390323 2.34834 0.958064 3.85127 1.56129 4.79061L2.76774 6.54403L0.851613 5.6047C0.887097 6.91977 1.45484 7.95303 2.55484 8.7045L3.5129 9.33072L2.55484 9.67515C3.15806 11.272 4.50645 11.9296 5.5 12.18L6.8129 12.4932L5.57097 13.2446C3.58387 14.4971 1.1 14.4031 0 14.3092C2.23548 15.6869 4.89677 16 6.74194 16C8.12581 16 9.15484 15.8748 9.40322 15.7808C19.3387 13.7143 19.8 5.8865 19.8 4.32094V4.10176L20.0129 3.97652C21.2194 2.97456 21.7161 2.44227 22 2.12916C21.8935 2.16047 21.7516 2.22309 21.6097 2.2544L19.5516 2.75538Z"
fill="white" />
</svg>
</a>
</li>
<li className="w-full px-2">
<a href="#"
className="flex h-11 items-center justify-center rounded-md bg-[#D64937] transition hover:bg-opacity-90">
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M17.8477 8.17132H9.29628V10.643H15.4342C15.1065 14.0743 12.2461 15.5574 9.47506 15.5574C5.95916 15.5574 2.8306 12.8821 2.8306 9.01461C2.8306 5.29251 5.81018 2.47185 9.47506 2.47185C12.2759 2.47185 13.9742 4.24567 13.9742 4.24567L15.7024 2.47185C15.7024 2.47185 13.3783 0.000145544 9.35587 0.000145544C4.05223 -0.0289334 0 4.30383 0 8.98553C0 13.5218 3.81386 18 9.44526 18C14.4212 18 17.9967 14.7141 17.9967 9.79974C18.0264 8.78198 17.8477 8.17132 17.8477 8.17132Z"
fill="white" />
</svg>
</a>
</li>
</ul>
<p className="mb-4 text-base text-body-secondary">
By creating an account you are agree with our
<a href="#" className="text-primary hover:underline">
Privacy
</a>
and
<a href="#" className="text-primary hover:underline">
Policy
</a>
</p>
<p className="text-base text-body-secondary">
Already have an account?
<a href="signin.html" className="text-primary hover:underline">
Sign In
</a>
</p>
<div>
<span className="absolute top-1 right-1">
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="1.39737" cy="38.6026" r="1.39737" transform="rotate(-90 1.39737 38.6026)"
fill="#3056D3" />
<circle cx="1.39737" cy="1.99122" r="1.39737" transform="rotate(-90 1.39737 1.99122)"
fill="#3056D3" />
<circle cx="13.6943" cy="38.6026" r="1.39737" transform="rotate(-90 13.6943 38.6026)"
fill="#3056D3" />
<circle cx="13.6943" cy="1.99122" r="1.39737" transform="rotate(-90 13.6943 1.99122)"
fill="#3056D3" />
<circle cx="25.9911" cy="38.6026" r="1.39737" transform="rotate(-90 25.9911 38.6026)"
fill="#3056D3" />
<circle cx="25.9911" cy="1.99122" r="1.39737" transform="rotate(-90 25.9911 1.99122)"
fill="#3056D3" />
<circle cx="38.288" cy="38.6026" r="1.39737" transform="rotate(-90 38.288 38.6026)" fill="#3056D3" />
<circle cx="38.288" cy="1.99122" r="1.39737" transform="rotate(-90 38.288 1.99122)" fill="#3056D3" />
<circle cx="1.39737" cy="26.3057" r="1.39737" transform="rotate(-90 1.39737 26.3057)"
fill="#3056D3" />
<circle cx="13.6943" cy="26.3057" r="1.39737" transform="rotate(-90 13.6943 26.3057)"
fill="#3056D3" />
<circle cx="25.9911" cy="26.3057" r="1.39737" transform="rotate(-90 25.9911 26.3057)"
fill="#3056D3" />
<circle cx="38.288" cy="26.3057" r="1.39737" transform="rotate(-90 38.288 26.3057)" fill="#3056D3" />
<circle cx="1.39737" cy="14.0086" r="1.39737" transform="rotate(-90 1.39737 14.0086)"
fill="#3056D3" />
<circle cx="13.6943" cy="14.0086" r="1.39737" transform="rotate(-90 13.6943 14.0086)"
fill="#3056D3" />
<circle cx="25.9911" cy="14.0086" r="1.39737" transform="rotate(-90 25.9911 14.0086)"
fill="#3056D3" />
<circle cx="38.288" cy="14.0086" r="1.39737" transform="rotate(-90 38.288 14.0086)" fill="#3056D3" />
</svg>
</span>
<span className="absolute left-1 bottom-1">
<svg width="29" height="40" viewBox="0 0 29 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="2.288" cy="25.9912" r="1.39737" transform="rotate(-90 2.288 25.9912)" fill="#3056D3" />
<circle cx="14.5849" cy="25.9911" r="1.39737" transform="rotate(-90 14.5849 25.9911)"
fill="#3056D3" />
<circle cx="26.7216" cy="25.9911" r="1.39737" transform="rotate(-90 26.7216 25.9911)"
fill="#3056D3" />
<circle cx="2.288" cy="13.6944" r="1.39737" transform="rotate(-90 2.288 13.6944)" fill="#3056D3" />
<circle cx="14.5849" cy="13.6943" r="1.39737" transform="rotate(-90 14.5849 13.6943)"
fill="#3056D3" />
<circle cx="26.7216" cy="13.6943" r="1.39737" transform="rotate(-90 26.7216 13.6943)"
fill="#3056D3" />
<circle cx="2.288" cy="38.0087" r="1.39737" transform="rotate(-90 2.288 38.0087)" fill="#3056D3" />
<circle cx="2.288" cy="1.39739" r="1.39737" transform="rotate(-90 2.288 1.39739)" fill="#3056D3" />
<circle cx="14.5849" cy="38.0089" r="1.39737" transform="rotate(-90 14.5849 38.0089)"
fill="#3056D3" />
<circle cx="26.7216" cy="38.0089" r="1.39737" transform="rotate(-90 26.7216 38.0089)"
fill="#3056D3" />
<circle cx="14.5849" cy="1.39761" r="1.39737" transform="rotate(-90 14.5849 1.39761)"
fill="#3056D3" />
<circle cx="26.7216" cy="1.39761" r="1.39737" transform="rotate(-90 26.7216 1.39761)"
fill="#3056D3" />
</svg>
</span>
</div>
</div>
</div>
</div>
</div>
</section>
{/* <!-- ====== Forms Section End --> */}
</>
}

View File

@@ -0,0 +1,44 @@
import { siteConfig } from '@/lib/config'
/**
* 社交联系方式按钮组
* @returns {JSX.Element}
* @constructor
*/
const SocialButton = () => {
return <div className='w-52 justify-center flex-wrap flex my-2'>
<div className='space-x-5 md:text-xl text-3xl text-gray-600 dark:text-gray-400 text-center'>
{siteConfig('CONTACT_GITHUB') && <a target='_blank' rel='noreferrer' title={'github'} href={siteConfig('CONTACT_GITHUB')} >
<i className='fab fa-github transform hover:scale-125 duration-150'/>
</a>}
{siteConfig('CONTACT_TWITTER') && <a target='_blank' rel='noreferrer' title={'twitter'} href={siteConfig('CONTACT_TWITTER')} >
<i className='fab fa-twitter transform hover:scale-125 duration-150'/>
</a>}
{siteConfig('CONTACT_TELEGRAM') && <a target='_blank' rel='noreferrer' href={siteConfig('CONTACT_TELEGRAM')} title={'telegram'} >
<i className='fab fa-telegram transform hover:scale-125 duration-150'/>
</a>}
{siteConfig('CONTACT_LINKEDIN') && <a target='_blank' rel='noreferrer' href={siteConfig('CONTACT_LINKEDIN')} title={'linkedIn'} >
<i className='fab fa-linkedin transform hover:scale-125 duration-150'/>
</a>}
{siteConfig('CONTACT_WEIBO') && <a target='_blank' rel='noreferrer' title={'weibo'} href={siteConfig('CONTACT_WEIBO')} >
<i className='fab fa-weibo transform hover:scale-125 duration-150'/>
</a>}
{siteConfig('CONTACT_INSTAGRAM') && <a target='_blank' rel='noreferrer' title={'instagram'} href={siteConfig('CONTACT_INSTAGRAM')} >
<i className='fab fa-instagram transform hover:scale-125 duration-150'/>
</a>}
{siteConfig('CONTACT_EMAIL') && <a target='_blank' rel='noreferrer' title={'email'} href={`mailto:${siteConfig('CONTACT_EMAIL')}`} >
<i className='fas fa-envelope transform hover:scale-125 duration-150'/>
</a>}
{JSON.parse(siteConfig('ENABLE_RSS')) && <a target='_blank' rel='noreferrer' title={'RSS'} href={'/feed'} >
<i className='fas fa-rss transform hover:scale-125 duration-150'/>
</a>}
{siteConfig('CONTACT_BILIBILI') && <a target='_blank' rel='noreferrer' title={'bilibili'} href={siteConfig('CONTACT_BILIBILI')} >
<i className='fab fa-bilibili transform hover:scale-125 duration-150'/>
</a>}
{siteConfig('CONTACT_YOUTUBE') && <a target='_blank' rel='noreferrer' title={'youtube'} href={siteConfig('CONTACT_YOUTUBE')} >
<i className='fab fa-youtube transform hover:scale-125 duration-150'/>
</a>}
</div>
</div>
}
export default SocialButton

View File

@@ -0,0 +1,95 @@
/* eslint-disable @next/next/no-img-element */
import { siteConfig } from '@/lib/config'
import CONFIG from '../config'
import { SVGAvatarBG } from './svg/SVGAvatarBG'
import { SVGFacebook } from './svg/SVGFacebook'
import { SVGTwitter } from './svg/SVGTwitter'
import { SVGInstagram } from './svg/SVGInstagram'
export const Team = () => {
return <>
{/* <!-- ====== Team Section Start --> */}
<section
id="team"
className="overflow-hidden bg-gray-1 pb-12 pt-20 dark:bg-dark-2 lg:pb-[90px] lg:pt-[120px]"
>
<div className="container mx-auto">
<div className="-mx-4 flex flex-wrap">
<div className="w-full px-4">
<div className="mx-auto mb-[60px] max-w-[485px] text-center">
<span className="mb-2 block text-lg font-semibold text-primary">
{siteConfig('STARTER_TEAM_TITLE', null, CONFIG)}
</span>
<h2
className="mb-3 text-3xl font-bold leading-[1.2] text-dark dark:text-white sm:text-4xl md:text-[40px]"
>
{siteConfig('STARTER_TEAM_TEXT_1', null, CONFIG)}
</h2>
<p dangerouslySetInnerHTML={
{ __html: siteConfig('STARTER_TEAM_TEXT_2', null, CONFIG) }
} className="text-base text-body-color dark:text-dark-6">
</p>
</div>
</div>
</div>
{/* 团队成员排列矩阵 */}
<div className="-mx-4 flex flex-wrap justify-center">
{CONFIG.STARTER_TEAM_ITEMS.map((item, index) => {
return <div key={index} className="w-full px-4 sm:w-1/2 lg:w-1/4 xl:w-1/4">
<div
className="group mb-8 rounded-xl bg-white px-5 pb-10 pt-12 shadow-testimonial dark:bg-dark dark:shadow-none"
>
{/* 头像 */}
<div className="relative z-10 mx-auto mb-5 h-[120px] w-[120px]">
<img
src={item.STARTER_TEAM_ITEM_AVATAR}
alt="team image"
className="h-[120px] w-[120px] rounded-full"
/>
<span
className="absolute bottom-0 left-0 -z-10 h-10 w-10 rounded-full bg-secondary opacity-0 transition-all group-hover:opacity-100"
></span>
<span
className="absolute right-0 top-0 -z-10 opacity-0 transition-all group-hover:opacity-100"
>
<SVGAvatarBG/>
</span>
</div>
{/* 文字介绍 */}
<div className="text-center">
<h4
className="mb-1 text-lg font-semibold text-dark dark:text-white"
>
{item.STARTER_TEAM_ITEM_NICKNAME}
</h4>
<p className="mb-5 text-sm text-body-color dark:text-dark-6">
{item.STARTER_TEAM_ITEM_DESCRIPTION}
</p>
{/* 社交链接 */}
<div className="flex items-center justify-center gap-5">
<a className="text-dark-6 hover:text-primary" >
<SVGFacebook/>
</a>
<a className="text-dark-6 hover:text-primary" >
<SVGTwitter/>
</a>
<a className="text-dark-6 hover:text-primary" >
<SVGInstagram/>
</a>
</div>
</div>
</div>
</div>
})}
</div>
</div>
</section>
{/* <!-- ====== Team Section End --> */}
</>
}

View File

@@ -0,0 +1,145 @@
/* eslint-disable react/no-unescaped-entities */
/* eslint-disable @next/next/no-img-element */
import { siteConfig } from '@/lib/config';
import { loadExternalResource } from '@/lib/utils';
import { useEffect } from 'react';
import CONFIG from '../config';
import { SVGLeftArrow } from './svg/SVGLeftArrow';
import { SVGRightArrow } from './svg/SVGRightArrow';
/**
* 一些外部js
*/
const loadExternal = async () => {
await loadExternalResource('https://cdnjs.cloudflare.com/ajax/libs/Swiper/11.0.5/swiper-bundle.css', 'css');
await loadExternalResource('https://cdnjs.cloudflare.com/ajax/libs/Swiper/11.0.5/swiper-bundle.min.js', 'js');
const Swiper = window.Swiper
if (!Swiper) {
return
}
// Testimonial
// eslint-disable-next-line no-unused-vars
const testimonialSwiper = new Swiper('.testimonial-carousel', {
slidesPerView: 1,
spaceBetween: 30,
// Navigation arrows
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev'
},
breakpoints: {
640: {
slidesPerView: 2,
spaceBetween: 30
},
1024: {
slidesPerView: 3,
spaceBetween: 30
},
1280: {
slidesPerView: 3,
spaceBetween: 30
}
}
});
};
export const Testimonials = () => {
useEffect(() => {
loadExternal()
}, [])
// 用户评分
const ratings = [1, 2, 3, 4, 5];
return <>
{/* <!-- ====== Testimonial Section Start --> */}
<section
id="testimonials"
className="overflow-hidden bg-gray-1 py-20 dark:bg-dark-2 md:py-[120px]"
>
<div className="container mx-auto">
<div className="-mx-4 flex flex-wrap justify-center">
<div className="w-full px-4">
<div className="mx-auto mb-[60px] max-w-[485px] text-center">
<span className="mb-2 block text-lg font-semibold text-primary">
{siteConfig('STARTER_TESTIMONIALS_TITLE', null, CONFIG)}
</span>
<h2
className="mb-3 text-3xl font-bold leading-[1.2] text-dark dark:text-white sm:text-4xl md:text-[40px]"
>
{siteConfig('STARTER_TESTIMONIALS_TEXT_1', null, CONFIG)}
</h2>
<p className="text-base text-body-color dark:text-dark-6">
{siteConfig('STARTER_TESTIMONIALS_TEXT_2', null, CONFIG)}
</p>
</div>
</div>
</div>
<div className="-m-5">
<div className="swiper testimonial-carousel common-carousel p-5">
<div className="swiper-wrapper">
{/* 用户评价卡牌 */}
{CONFIG.STARTER_TESTIMONIALS_ITEMS.map((item, index) => {
return <div key={index} className="swiper-slide">
<div
className="rounded-xl bg-white px-4 py-[30px] shadow-testimonial dark:bg-dark sm:px-[30px]"
>
<div className="mb-[18px] flex items-center gap-[2px]">
{ratings.map((rating, index) => (
<img key={index} alt="star icon"// 为每个图片设置唯一的 key 属性
src={siteConfig('STARTER_TESTIMONIALS_STAR_ICON', null, CONFIG)}/>
))}
</div>
<p className="mb-6 text-base text-body-color dark:text-dark-6">
{item.STARTER_TESTIMONIALS_ITEM_TEXT}
</p>
<a href={item.STARTER_TESTIMONIALS_ITEM_URL} className="flex items-center gap-4">
<div className="h-[50px] w-[50px] overflow-hidden rounded-full">
<img
src={item.STARTER_TESTIMONIALS_ITEM_AVATAR}
alt="author"
className="h-[50px] w-[50px] overflow-hidden rounded-full object-cover"
/>
</div>
<div>
<h3
className="text-sm font-semibold text-dark dark:text-white"
>
{item.STARTER_TESTIMONIALS_ITEM_NICKNAME}
</h3>
<p className="text-xs text-body-secondary">
{item.STARTER_TESTIMONIALS_ITEM_DESCRIPTION}
</p>
</div>
</a>
</div>
</div>
})}
</div>
{/* 切换按钮 */}
<div className="mt-[60px] flex items-center justify-center gap-1">
<div className="swiper-button-prev">
<SVGLeftArrow/>
</div>
<div className="swiper-button-next">
<SVGRightArrow/>
</div>
</div>
</div>
</div>
</div>
</section>
{/* <!-- ====== Testimonial Section End --> */}
</>
}

Some files were not shown because too many files have changed in this diff Show More