mirror of
https://github.com/ZetaKebab/quartz.git
synced 2025-07-01 16:27:38 +00:00
121 lines
3.4 KiB
TypeScript
121 lines
3.4 KiB
TypeScript
import { QuartzConfig } from "./quartz/cfg"
|
|
import * as Plugin from "./quartz/plugins"
|
|
|
|
/**
|
|
* Quartz 4 Configuration
|
|
*
|
|
* See https://quartz.jzhao.xyz/configuration for more information.
|
|
*/
|
|
const config: QuartzConfig = {
|
|
configuration: {
|
|
pageTitle: "🗾 Japanese",
|
|
enableSPA: true,
|
|
enablePopovers: true,
|
|
analytics: null,
|
|
locale: "en-US",
|
|
baseUrl: "jp.marchal.dev",
|
|
ignorePatterns: ["private", "templates", ".obsidian"],
|
|
defaultDateType: "modified",
|
|
theme: {
|
|
fontOrigin: "googleFonts",
|
|
cdnCaching: false,
|
|
typography: {
|
|
header: "Schibsted Grotesk",
|
|
body: "Source Sans Pro",
|
|
code: "IBM Plex Mono",
|
|
},
|
|
colors: {
|
|
lightMode: {
|
|
light: "#faf8f8",
|
|
lightgray: "#e5e5e5",
|
|
gray: "#b8b8b8",
|
|
darkgray: "#4e4e4e",
|
|
dark: "#2b2b2b",
|
|
secondary: "#284b63",
|
|
tertiary: "#84a59d",
|
|
highlight: "rgba(143, 159, 169, 0.15)",
|
|
textHighlight: "#fff23688",
|
|
},
|
|
darkMode: {
|
|
light: "#161618",
|
|
lightgray: "#393639",
|
|
gray: "#646464",
|
|
darkgray: "#d4d4d4",
|
|
dark: "#ebebec",
|
|
secondary: "#7b97aa",
|
|
tertiary: "#84a59d",
|
|
highlight: "rgba(143, 159, 169, 0.15)",
|
|
textHighlight: "#b3aa0288",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
plugins: {
|
|
transformers: [
|
|
Plugin.FrontMatter(),
|
|
Plugin.CreatedModifiedDate({
|
|
priority: ["frontmatter", "git", "filesystem"],
|
|
}),
|
|
Plugin.SyntaxHighlighting({
|
|
theme: {
|
|
light: "github-light",
|
|
dark: "github-dark",
|
|
},
|
|
keepBackground: false,
|
|
}),
|
|
Plugin.ObsidianFlavoredMarkdown({ enableInHtmlEmbed: true, enableYouTubeEmbed: true }),
|
|
Plugin.GitHubFlavoredMarkdown(),
|
|
Plugin.TableOfContents({
|
|
maxDepth: 4,
|
|
}),
|
|
Plugin.CrawlLinks({ markdownLinkResolution: "shortest" }),
|
|
Plugin.Description(),
|
|
Plugin.Latex({ renderEngine: "katex" }),
|
|
],
|
|
filters: [Plugin.RemoveDrafts()],
|
|
emitters: [
|
|
Plugin.AliasRedirects(),
|
|
Plugin.ComponentResources(),
|
|
Plugin.ContentPage(),
|
|
Plugin.FolderPage({
|
|
sort: (f1, f2) => {
|
|
const naturalCompare = (a: string, b: string) => {
|
|
const splitA = a.split(/(\d+)/).filter(Boolean)
|
|
const splitB = b.split(/(\d+)/).filter(Boolean)
|
|
|
|
for (let i = 0; i < Math.min(splitA.length, splitB.length); i++) {
|
|
const numA = parseInt(splitA[i], 10)
|
|
const numB = parseInt(splitB[i], 10)
|
|
|
|
if (!isNaN(numA) && !isNaN(numB)) {
|
|
if (numA !== numB) return numA - numB
|
|
} else {
|
|
const compare = splitA[i].localeCompare(splitB[i])
|
|
if (compare !== 0) return compare
|
|
}
|
|
}
|
|
|
|
return splitA.length - splitB.length
|
|
}
|
|
|
|
const f1Title = f1.frontmatter?.title?.toLowerCase() ?? ""
|
|
const f2Title = f2.frontmatter?.title?.toLowerCase() ?? ""
|
|
return naturalCompare(f1Title, f2Title)
|
|
},
|
|
}),
|
|
Plugin.TagPage(),
|
|
Plugin.ContentIndex({
|
|
enableSiteMap: true,
|
|
enableRSS: true,
|
|
}),
|
|
Plugin.Assets(),
|
|
Plugin.Static(),
|
|
Plugin.Favicon(),
|
|
Plugin.NotFoundPage(),
|
|
// Comment out CustomOgImages to speed up build time
|
|
// Plugin.CustomOgImages(),
|
|
],
|
|
},
|
|
}
|
|
|
|
export default config |