summaryrefslogtreecommitdiff
path: root/src/site.config.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/site.config.ts')
-rw-r--r--src/site.config.ts81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/site.config.ts b/src/site.config.ts
new file mode 100644
index 0000000..3efa4ea
--- /dev/null
+++ b/src/site.config.ts
@@ -0,0 +1,81 @@
+import type { SiteConfig } from "@/types";
+import type { AstroExpressiveCodeOptions } from "astro-expressive-code";
+
+export const siteConfig: SiteConfig = {
+ // Used as both a meta property (src/components/BaseHead.astro L:31 + L:49) & the generated satori png (src/pages/og-image/[slug].png.ts)
+ author: "Chris Williams",
+ // Date.prototype.toLocaleDateString() parameters, found in src/utils/date.ts.
+ date: {
+ locale: "en-GB",
+ options: {
+ day: "numeric",
+ month: "short",
+ year: "numeric",
+ },
+ },
+ // Used as the default description meta property and webmanifest description
+ description: "An opinionated starter theme for Astro",
+ // HTML lang property, found in src/layouts/Base.astro L:18 & astro.config.ts L:48
+ lang: "en-GB",
+ // Meta property, found in src/components/BaseHead.astro L:42
+ ogLocale: "en_GB",
+ /*
+ - Used to construct the meta title property found in src/components/BaseHead.astro L:11
+ - The webmanifest name found in astro.config.ts L:42
+ - The link value found in src/components/layout/Header.astro L:35
+ - In the footer found in src/components/layout/Footer.astro L:12
+ */
+ title: "Astro Cactus",
+ // ! Please remember to replace the following site property with your own domain, used in astro.config.ts
+ url: "https://astro-cactus.chriswilliams.dev/",
+};
+
+// Used to generate links in both the Header & Footer.
+export const menuLinks: { path: string; title: string }[] = [
+ {
+ path: "/",
+ title: "Home",
+ },
+ {
+ path: "/about/",
+ title: "About",
+ },
+ {
+ path: "/posts/",
+ title: "Blog",
+ },
+ {
+ path: "/notes/",
+ title: "Notes",
+ },
+];
+
+// https://expressive-code.com/reference/configuration/
+export const expressiveCodeOptions: AstroExpressiveCodeOptions = {
+ styleOverrides: {
+ borderRadius: "4px",
+ codeFontFamily:
+ 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace',
+ codeFontSize: "0.875rem",
+ codeLineHeight: "1.7142857rem",
+ codePaddingInline: "1rem",
+ frames: {
+ frameBoxShadowCssValue: "none",
+ },
+ uiLineHeight: "inherit",
+ },
+ themeCssSelector(theme, { styleVariants }) {
+ // If one dark and one light theme are available
+ // generate theme CSS selectors compatible with cactus-theme dark mode switch
+ if (styleVariants.length >= 2) {
+ const baseTheme = styleVariants[0]?.theme;
+ const altTheme = styleVariants.find((v) => v.theme.type !== baseTheme?.type)?.theme;
+ if (theme === baseTheme || theme === altTheme) return `[data-theme='${theme.type}']`;
+ }
+ // return default selector
+ return `[data-theme="${theme.name}"]`;
+ },
+ // One dark, one light theme => https://expressive-code.com/guides/themes/#available-themes
+ themes: ["dracula", "github-light"],
+ useThemedScrollbars: false,
+};