mirror of
				https://github.com/ZetaKebab/quartz.git
				synced 2025-10-31 05:29:49 +00:00 
			
		
		
		
	feat(layout): add afterBody
This commit is contained in:
		| @@ -260,11 +260,11 @@ export const ContentPage: QuartzEmitterPlugin = () => { | ||||
|     ...defaultContentPageLayout, | ||||
|     pageBody: Content(), | ||||
|   } | ||||
|   const { head, header, beforeBody, pageBody, left, right, footer } = layout | ||||
|   const { head, header, beforeBody, pageBody, afterBody, left, right, footer } = layout | ||||
|   return { | ||||
|     name: "ContentPage", | ||||
|     getQuartzComponents() { | ||||
|       return [head, ...header, ...beforeBody, pageBody, ...left, ...right, footer] | ||||
|       return [head, ...header, ...beforeBody, pageBody, ...afterBody, ...left, ...right, footer] | ||||
|     }, | ||||
|     async emit(ctx, content, resources, emit): Promise<FilePath[]> { | ||||
|       const cfg = ctx.cfg.configuration | ||||
|   | ||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 65 KiB | 
| @@ -12,6 +12,7 @@ export interface FullPageLayout { | ||||
|   header: QuartzComponent[] // laid out horizontally | ||||
|   beforeBody: QuartzComponent[] // laid out vertically | ||||
|   pageBody: QuartzComponent // single component | ||||
|   afterBody: QuartzComponent[] // laid out vertically | ||||
|   left: QuartzComponent[] // vertical on desktop, horizontal on mobile | ||||
|   right: QuartzComponent[] // vertical on desktop, horizontal on mobile | ||||
|   footer: QuartzComponent // single component | ||||
|   | ||||
| @@ -5,6 +5,7 @@ import * as Component from "./quartz/components" | ||||
| export const sharedPageComponents: SharedLayout = { | ||||
|   head: Component.Head(), | ||||
|   header: [], | ||||
|   afterBody: [], | ||||
|   footer: Component.Footer({ | ||||
|     links: { | ||||
|       GitHub: "https://github.com/jackyzha0/quartz", | ||||
|   | ||||
| @@ -77,10 +77,11 @@ export interface FullPageLayout { | ||||
|   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"> | ||||
| export type SharedLayout = Pick<FullPageLayout, "head" | "header" | "footer" | "afterBody"> | ||||
|   | ||||
| @@ -13,7 +13,6 @@ export default ((opts?: Options) => { | ||||
|     const links = opts?.links ?? [] | ||||
|     return ( | ||||
|       <footer class={`${displayClass ?? ""}`}> | ||||
|         <hr /> | ||||
|         <p> | ||||
|           {i18n(cfg.locale).components.footer.createdWith}{" "} | ||||
|           <a href="https://quartz.jzhao.xyz/">Quartz v{version}</a> © {year} | ||||
|   | ||||
| @@ -14,6 +14,7 @@ interface RenderComponents { | ||||
|   header: QuartzComponent[] | ||||
|   beforeBody: QuartzComponent[] | ||||
|   pageBody: QuartzComponent | ||||
|   afterBody: QuartzComponent[] | ||||
|   left: QuartzComponent[] | ||||
|   right: QuartzComponent[] | ||||
|   footer: QuartzComponent | ||||
| @@ -187,6 +188,7 @@ export function renderPage( | ||||
|     header, | ||||
|     beforeBody, | ||||
|     pageBody: Content, | ||||
|     afterBody, | ||||
|     left, | ||||
|     right, | ||||
|     footer: Footer, | ||||
| @@ -232,6 +234,12 @@ export function renderPage( | ||||
|                 </div> | ||||
|               </div> | ||||
|               <Content {...componentData} /> | ||||
|               <hr /> | ||||
|               <div class="page-footer"> | ||||
|                 {afterBody.map((BodyComponent) => ( | ||||
|                   <BodyComponent {...componentData} /> | ||||
|                 ))} | ||||
|               </div> | ||||
|             </div> | ||||
|             {RightComponent} | ||||
|           </Body> | ||||
|   | ||||
| @@ -59,14 +59,25 @@ export const ContentPage: QuartzEmitterPlugin<Partial<FullPageLayout>> = (userOp | ||||
|     ...userOpts, | ||||
|   } | ||||
|  | ||||
|   const { head: Head, header, beforeBody, pageBody, left, right, footer: Footer } = opts | ||||
|   const { head: Head, header, beforeBody, pageBody, afterBody, left, right, footer: Footer } = opts | ||||
|   const Header = HeaderConstructor() | ||||
|   const Body = BodyConstructor() | ||||
|  | ||||
|   return { | ||||
|     name: "ContentPage", | ||||
|     getQuartzComponents() { | ||||
|       return [Head, Header, Body, ...header, ...beforeBody, pageBody, ...left, ...right, Footer] | ||||
|       return [ | ||||
|         Head, | ||||
|         Header, | ||||
|         Body, | ||||
|         ...header, | ||||
|         ...beforeBody, | ||||
|         pageBody, | ||||
|         ...afterBody, | ||||
|         ...left, | ||||
|         ...right, | ||||
|         Footer, | ||||
|       ] | ||||
|     }, | ||||
|     async getDependencyGraph(ctx, content, _resources) { | ||||
|       const graph = new DepGraph<FilePath>() | ||||
|   | ||||
| @@ -33,14 +33,25 @@ export const FolderPage: QuartzEmitterPlugin<Partial<FolderPageOptions>> = (user | ||||
|     ...userOpts, | ||||
|   } | ||||
|  | ||||
|   const { head: Head, header, beforeBody, pageBody, left, right, footer: Footer } = opts | ||||
|   const { head: Head, header, beforeBody, pageBody, afterBody, left, right, footer: Footer } = opts | ||||
|   const Header = HeaderConstructor() | ||||
|   const Body = BodyConstructor() | ||||
|  | ||||
|   return { | ||||
|     name: "FolderPage", | ||||
|     getQuartzComponents() { | ||||
|       return [Head, Header, Body, ...header, ...beforeBody, pageBody, ...left, ...right, Footer] | ||||
|       return [ | ||||
|         Head, | ||||
|         Header, | ||||
|         Body, | ||||
|         ...header, | ||||
|         ...beforeBody, | ||||
|         pageBody, | ||||
|         ...afterBody, | ||||
|         ...left, | ||||
|         ...right, | ||||
|         Footer, | ||||
|       ] | ||||
|     }, | ||||
|     async getDependencyGraph(_ctx, content, _resources) { | ||||
|       // Example graph: | ||||
|   | ||||
| @@ -30,14 +30,25 @@ export const TagPage: QuartzEmitterPlugin<Partial<TagPageOptions>> = (userOpts) | ||||
|     ...userOpts, | ||||
|   } | ||||
|  | ||||
|   const { head: Head, header, beforeBody, pageBody, left, right, footer: Footer } = opts | ||||
|   const { head: Head, header, beforeBody, pageBody, afterBody, left, right, footer: Footer } = opts | ||||
|   const Header = HeaderConstructor() | ||||
|   const Body = BodyConstructor() | ||||
|  | ||||
|   return { | ||||
|     name: "TagPage", | ||||
|     getQuartzComponents() { | ||||
|       return [Head, Header, Body, ...header, ...beforeBody, pageBody, ...left, ...right, Footer] | ||||
|       return [ | ||||
|         Head, | ||||
|         Header, | ||||
|         Body, | ||||
|         ...header, | ||||
|         ...beforeBody, | ||||
|         pageBody, | ||||
|         ...afterBody, | ||||
|         ...left, | ||||
|         ...right, | ||||
|         Footer, | ||||
|       ] | ||||
|     }, | ||||
|     async getDependencyGraph(ctx, content, _resources) { | ||||
|       const graph = new DepGraph<FilePath>() | ||||
|   | ||||
| @@ -2,7 +2,6 @@ import { QuartzTransformerPlugin } from "../types" | ||||
| import { Root, Html, BlockContent, DefinitionContent, Paragraph, Code } from "mdast" | ||||
| import { Element, Literal, Root as HtmlRoot } from "hast" | ||||
| import { ReplaceFunction, findAndReplace as mdastFindReplace } from "mdast-util-find-and-replace" | ||||
| import { slug as slugAnchor } from "github-slugger" | ||||
| import rehypeRaw from "rehype-raw" | ||||
| import { SKIP, visit } from "unist-util-visit" | ||||
| import path from "path" | ||||
|   | ||||
| @@ -201,11 +201,19 @@ a { | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   & .page-header { | ||||
|   & .page-header, | ||||
|   & .page-footer { | ||||
|     width: $pageWidth; | ||||
|     margin: $topSpacing auto 0 auto; | ||||
|     margin-top: 1rem; | ||||
|  | ||||
|     @media all and (max-width: $fullPageWidth) { | ||||
|       width: initial; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   & .page-header { | ||||
|     margin: $topSpacing auto 0 auto; | ||||
|     @media all and (max-width: $fullPageWidth) { | ||||
|       margin-top: 2rem; | ||||
|     } | ||||
|   } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jacky Zhao
					Jacky Zhao