diff --git a/quartz/components/Group.tsx b/quartz/components/Group.tsx new file mode 100644 index 000000000..ccb17dc15 --- /dev/null +++ b/quartz/components/Group.tsx @@ -0,0 +1,23 @@ +import { concatenateResources } from "../util/resources" +import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" + +interface GroupConfig { + components: QuartzComponent[] +} + +export default ((config: GroupConfig) => { + const Group: QuartzComponent = (props: QuartzComponentProps) => + config.components + .map((c: QuartzComponent) => ({ component: c })) + .map((it: { component: QuartzComponent} ) => ()) + + + Group.afterDOMLoaded = concatenateResources( + ...config.components.map((c) => c.afterDOMLoaded), + ) + Group.beforeDOMLoaded = concatenateResources( + ...config.components.map((c) => c.beforeDOMLoaded), + ) + Group.css = concatenateResources(...config.components.map((c) => c.css)) + return Group +}) satisfies QuartzComponentConstructor \ No newline at end of file diff --git a/quartz/components/index.ts b/quartz/components/index.ts index cece8e614..bf7a0f35b 100644 --- a/quartz/components/index.ts +++ b/quartz/components/index.ts @@ -23,6 +23,7 @@ import Breadcrumbs from "./Breadcrumbs" import Comments from "./Comments" import Flex from "./Flex" import ConditionalRender from "./ConditionalRender" +import Group from "./Group" export { ArticleTitle, @@ -50,4 +51,5 @@ export { Comments, Flex, ConditionalRender, + Group }