From c538c151c7462ad0395ff2c15c5e11e89e362aa8 Mon Sep 17 00:00:00 2001
From: Striven <sg.striven@cutecat.club>
Date: Sat, 04 Apr 2026 19:47:16 +0000
Subject: [PATCH] Initial commit

---
 quartz/cfg.ts |  102 +++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 86 insertions(+), 16 deletions(-)

diff --git a/quartz/cfg.ts b/quartz/cfg.ts
index 1c9ece8..c97d613 100644
--- a/quartz/cfg.ts
+++ b/quartz/cfg.ts
@@ -1,35 +1,105 @@
+import { ValidDateType } from "./components/Date"
 import { QuartzComponent } from "./components/types"
+import { ValidLocale } from "./i18n"
 import { PluginTypes } from "./plugins/types"
-import { Theme } from "./theme"
+import { Theme } from "./util/theme"
+
+export type Analytics =
+  | null
+  | {
+      provider: "plausible"
+      host?: string
+    }
+  | {
+      provider: "google"
+      tagId: string
+    }
+  | {
+      provider: "umami"
+      websiteId: string
+      host?: string
+    }
+  | {
+      provider: "goatcounter"
+      websiteId: string
+      host?: string
+      scriptSrc?: string
+    }
+  | {
+      provider: "posthog"
+      apiKey: string
+      host?: string
+    }
+  | {
+      provider: "tinylytics"
+      siteId: string
+    }
+  | {
+      provider: "cabin"
+      host?: string
+    }
+  | {
+      provider: "clarity"
+      projectId?: string
+    }
+  | {
+      provider: "matomo"
+      host: string
+      siteId: string
+    }
+  | {
+      provider: "vercel"
+    }
+  | {
+      provider: "rybbit"
+      siteId: string
+      host?: string
+    }
 
 export interface GlobalConfiguration {
-  pageTitle: string,
+  pageTitle: string
+  pageTitleSuffix?: string
   /** Whether to enable single-page-app style rendering. this prevents flashes of unstyled content and improves smoothness of Quartz */
-  enableSPA: boolean,
+  enableSPA: boolean
   /** Whether to display Wikipedia-style popovers when hovering over links */
-  enablePopovers: boolean,
+  enablePopovers: boolean
+  /** Analytics mode */
+  analytics: Analytics
   /** Glob patterns to not search */
-  ignorePatterns: string[],
+  ignorePatterns: string[]
+  /** Whether to use created, modified, or published as the default type of date */
+  defaultDateType: ValidDateType
   /** Base URL to use for CNAME files, sitemaps, and RSS feeds that require an absolute URL.
-  *   Quartz will avoid using this as much as possible and use relative URLs most of the time  
-  */
-  canonicalUrl?: string,
+   *   Quartz will avoid using this as much as possible and use relative URLs most of the time
+   */
+  baseUrl?: string
   theme: Theme
+  /**
+   * Allow to translate the date in the language of your choice.
+   * Also used for UI translation (default: en-US)
+   * Need to be formatted following BCP 47: https://en.wikipedia.org/wiki/IETF_language_tag
+   * The first part is the language (en) and the second part is the script/region (US)
+   * Language Codes: https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes
+   * Region Codes: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
+   */
+  locale: ValidLocale
 }
 
 export interface QuartzConfig {
-  configuration: GlobalConfiguration,
-  plugins: PluginTypes,
+  configuration: GlobalConfiguration
+  plugins: PluginTypes
 }
 
 export interface FullPageLayout {
   head: QuartzComponent
-  header: QuartzComponent[],
-  beforeBody: QuartzComponent[],
-  pageBody: QuartzComponent,
-  left: QuartzComponent[],
-  right: QuartzComponent[],
-  footer: QuartzComponent,
+  header: QuartzComponent[]
+  beforeBody: QuartzComponent[]
+  pageBody: QuartzComponent
+  afterBody: QuartzComponent[]
+  left: QuartzComponent[]
+  right: QuartzComponent[]
+  footer: QuartzComponent
 }
 
 export type PageLayout = Pick<FullPageLayout, "beforeBody" | "left" | "right">
+export type SharedLayout = Pick<FullPageLayout, "head" | "header" | "footer" | "afterBody">

--
Gitblit v1.10.0