feat: 404 page emitter
This commit is contained in:
		| @@ -1,7 +1,8 @@ | ||||
| import ArticleTitle from "./ArticleTitle" | ||||
| import Content from "./pages/Content" | ||||
| import TagContent from "./pages/TagContent" | ||||
| import FolderContent from "./pages/FolderContent" | ||||
| import NotFound from "./pages/404" | ||||
| import ArticleTitle from "./ArticleTitle" | ||||
| import Darkmode from "./Darkmode" | ||||
| import Head from "./Head" | ||||
| import PageTitle from "./PageTitle" | ||||
| @@ -36,4 +37,5 @@ export { | ||||
|   DesktopOnly, | ||||
|   MobileOnly, | ||||
|   RecentNotes, | ||||
|   NotFound, | ||||
| } | ||||
|   | ||||
							
								
								
									
										12
									
								
								quartz/components/pages/404.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								quartz/components/pages/404.tsx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| import { QuartzComponentConstructor } from "../types" | ||||
|  | ||||
| function NotFound() { | ||||
|   return ( | ||||
|     <article class="popover-hint"> | ||||
|       <h1>404</h1> | ||||
|       <p>Either this page is private or doesn't exist.</p> | ||||
|     </article> | ||||
|   ) | ||||
| } | ||||
|  | ||||
| export default (() => NotFound) satisfies QuartzComponentConstructor | ||||
							
								
								
									
										56
									
								
								quartz/plugins/emitters/404.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								quartz/plugins/emitters/404.tsx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | ||||
| import { QuartzEmitterPlugin } from "../types" | ||||
| import { QuartzComponentProps } from "../../components/types" | ||||
| import BodyConstructor from "../../components/Body" | ||||
| import { pageResources, renderPage } from "../../components/renderPage" | ||||
| import { FullPageLayout } from "../../cfg" | ||||
| import { FilePath, FullSlug } from "../../util/path" | ||||
| import { sharedPageComponents } from "../../../quartz.layout" | ||||
| import { NotFound } from "../../components" | ||||
| import { defaultProcessedContent } from "../vfile" | ||||
|  | ||||
| export const NotFoundPage: QuartzEmitterPlugin = () => { | ||||
|   const opts: FullPageLayout = { | ||||
|     ...sharedPageComponents, | ||||
|     pageBody: NotFound(), | ||||
|     beforeBody: [], | ||||
|     left: [], | ||||
|     right: [], | ||||
|   } | ||||
|  | ||||
|   const { head: Head, pageBody, footer: Footer } = opts | ||||
|   const Body = BodyConstructor() | ||||
|  | ||||
|   return { | ||||
|     name: "404Page", | ||||
|     getQuartzComponents() { | ||||
|       return [Head, Body, pageBody, Footer] | ||||
|     }, | ||||
|     async emit(ctx, _content, resources, emit): Promise<FilePath[]> { | ||||
|       const cfg = ctx.cfg.configuration | ||||
|       const slug = "404" as FullSlug | ||||
|       const externalResources = pageResources(slug, resources) | ||||
|       const [tree, vfile] = defaultProcessedContent({ | ||||
|         slug, | ||||
|         text: "Not Found", | ||||
|         description: "Not Found", | ||||
|         frontmatter: { title: "Not Found", tags: [] }, | ||||
|       }) | ||||
|       const componentData: QuartzComponentProps = { | ||||
|         fileData: vfile.data, | ||||
|         externalResources, | ||||
|         cfg, | ||||
|         children: [], | ||||
|         tree, | ||||
|         allFiles: [], | ||||
|       } | ||||
|  | ||||
|       return [ | ||||
|         await emit({ | ||||
|           content: renderPage(slug, componentData, opts, externalResources), | ||||
|           slug, | ||||
|           ext: ".html", | ||||
|         }), | ||||
|       ] | ||||
|     }, | ||||
|   } | ||||
| } | ||||
| @@ -6,3 +6,4 @@ export { AliasRedirects } from "./aliases" | ||||
| export { Assets } from "./assets" | ||||
| export { Static } from "./static" | ||||
| export { ComponentResources } from "./componentResources" | ||||
| export { NotFoundPage } from "./404" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user