{folderBehavior === "link" ? (
-
+
{node.displayName}
) : (
diff --git a/quartz/components/styles/listPage.scss b/quartz/components/styles/listPage.scss
index c8fc9e957..d51568dc0 100644
--- a/quartz/components/styles/listPage.scss
+++ b/quartz/components/styles/listPage.scss
@@ -11,7 +11,7 @@ li.section-li {
& > .section {
display: grid;
- grid-template-columns: 6em 3fr 1fr;
+ grid-template-columns: fit-content(8em) 3fr 1fr;
@media all and (max-width: $mobileBreakpoint) {
& > .tags {
@@ -24,8 +24,7 @@ li.section-li {
}
& > .meta {
- margin: 0;
- flex-basis: 6em;
+ margin: 0 1em 0 0;
opacity: 0.6;
}
}
@@ -33,7 +32,8 @@ li.section-li {
// modifications in popover context
.popover .section {
- grid-template-columns: 6em 1fr !important;
+ grid-template-columns: fit-content(8em) 1fr !important;
+
& > .tags {
display: none;
}
diff --git a/quartz/plugins/emitters/componentResources.ts b/quartz/plugins/emitters/componentResources.ts
index e6725d99d..d1d8c8597 100644
--- a/quartz/plugins/emitters/componentResources.ts
+++ b/quartz/plugins/emitters/componentResources.ts
@@ -144,6 +144,14 @@ function addGlobalPageResources(ctx: BuildCtx, componentResources: ComponentReso
tinylyticsScript.defer = true
document.head.appendChild(tinylyticsScript)
`)
+ } else if (cfg.analytics?.provider === "cabin") {
+ componentResources.afterDOMLoaded.push(`
+ const cabinScript = document.createElement("script")
+ cabinScript.src = "${cfg.analytics.host ?? "https://scripts.cabin.dev"}/cabin.js"
+ cabinScript.defer = true
+ cabinScript.async = true
+ document.head.appendChild(cabinScript)
+ `)
}
if (cfg.enableSPA) {
diff --git a/quartz/plugins/transformers/links.ts b/quartz/plugins/transformers/links.ts
index f89d367d7..280581828 100644
--- a/quartz/plugins/transformers/links.ts
+++ b/quartz/plugins/transformers/links.ts
@@ -93,7 +93,7 @@ export const CrawlLinks: QuartzTransformerPlugin
| undefined> =
}
node.properties.className = classes
- if (opts.openLinksInNewTab) {
+ if (isExternal && opts.openLinksInNewTab) {
node.properties.target = "_blank"
}
diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts
index 414d8f65c..925d21e0d 100644
--- a/quartz/plugins/transformers/ofm.ts
+++ b/quartz/plugins/transformers/ofm.ts
@@ -6,6 +6,7 @@ import { slug as slugAnchor } from "github-slugger"
import rehypeRaw from "rehype-raw"
import { SKIP, visit } from "unist-util-visit"
import path from "path"
+import { splitAnchor } from "../../util/path"
import { JSResource } from "../../util/resources"
// @ts-ignore
import calloutScript from "../../components/scripts/callout.inline.ts"
@@ -199,10 +200,9 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin
src = src.replace(wikilinkRegex, (value, ...capture) => {
const [rawFp, rawHeader, rawAlias]: (string | undefined)[] = capture
- const fp = rawFp ?? ""
- const anchor = rawHeader?.trim().replace(/^#+/, "")
+ const [fp, anchor] = splitAnchor(`${rawFp ?? ""}${rawHeader ?? ""}`)
const blockRef = Boolean(anchor?.startsWith("^")) ? "^" : ""
- const displayAnchor = anchor ? `#${blockRef}${slugAnchor(anchor)}` : ""
+ const displayAnchor = anchor ? `#${blockRef}${anchor.trim().replace(/^#+/, "")}` : ""
const displayAlias = rawAlias ?? rawHeader?.replace("#", "|") ?? ""
const embedDisplay = value.startsWith("!") ? "!" : ""
@@ -414,8 +414,8 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin
return
}
- // find first line
- const firstChild = node.children[0]
+ // find first line and callout content
+ const [firstChild, ...calloutContent] = node.children
if (firstChild.type !== "paragraph" || firstChild.children[0]?.type !== "text") {
return
}
@@ -492,6 +492,21 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin
"data-callout-metadata": calloutMetaData,
},
}
+
+ // Add callout-content class to callout body if it has one.
+ if (calloutContent.length > 0) {
+ const contentData: BlockContent | DefinitionContent = {
+ data: {
+ hProperties: {
+ className: "callout-content",
+ },
+ hName: "div",
+ },
+ type: "blockquote",
+ children: [...calloutContent],
+ }
+ node.children = [node.children[0], contentData]
+ }
}
})
}
diff --git a/quartz/styles/base.scss b/quartz/styles/base.scss
index 859bb433e..b023b2794 100644
--- a/quartz/styles/base.scss
+++ b/quartz/styles/base.scss
@@ -481,6 +481,10 @@ video {
flex: 1 1 auto;
}
+div:has(> .overflow) {
+ position: relative;
+}
+
ul.overflow,
ol.overflow {
max-height: 400;
diff --git a/quartz/styles/callouts.scss b/quartz/styles/callouts.scss
index 8df083ceb..7eb9cb642 100644
--- a/quartz/styles/callouts.scss
+++ b/quartz/styles/callouts.scss
@@ -10,7 +10,7 @@
transition: max-height 0.3s ease;
box-sizing: border-box;
- & > *:nth-child(2) {
+ & > .callout-content > :first-child {
margin-top: 0;
}
diff --git a/tsconfig.json b/tsconfig.json
index 306204b5d..784ab231b 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -13,8 +13,8 @@
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true,
"jsx": "react-jsx",
- "jsxImportSource": "preact",
+ "jsxImportSource": "preact"
},
"include": ["**/*.ts", "**/*.tsx", "./package.json"],
- "exclude": ["build/**/*.d.ts"],
+ "exclude": ["build/**/*.d.ts"]
}