feat: unify layout slot architecture - make header/footer configurable positions, footer as array, add defaultPosition fallback, add tests, update docs
This commit is contained in:
@@ -19,7 +19,7 @@ export const DefaultFrame: PageFrame = {
|
||||
afterBody,
|
||||
left,
|
||||
right,
|
||||
footer: Footer,
|
||||
footer,
|
||||
}: PageFrameProps) {
|
||||
return (
|
||||
<>
|
||||
@@ -54,7 +54,9 @@ export const DefaultFrame: PageFrame = {
|
||||
<BodyComponent {...componentData} />
|
||||
))}
|
||||
</div>
|
||||
<Footer {...componentData} />
|
||||
{footer.map((FooterComponent) => (
|
||||
<FooterComponent {...componentData} />
|
||||
))}
|
||||
</>
|
||||
)
|
||||
},
|
||||
|
||||
@@ -19,7 +19,7 @@ export const FullWidthFrame: PageFrame = {
|
||||
beforeBody,
|
||||
pageBody: Content,
|
||||
afterBody,
|
||||
footer: Footer,
|
||||
footer,
|
||||
}: PageFrameProps) {
|
||||
return (
|
||||
<>
|
||||
@@ -44,7 +44,9 @@ export const FullWidthFrame: PageFrame = {
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
<Footer {...componentData} />
|
||||
{footer.map((FooterComponent) => (
|
||||
<FooterComponent {...componentData} />
|
||||
))}
|
||||
</>
|
||||
)
|
||||
},
|
||||
|
||||
@@ -10,13 +10,15 @@ import { PageFrame, PageFrameProps } from "./types"
|
||||
*/
|
||||
export const MinimalFrame: PageFrame = {
|
||||
name: "minimal",
|
||||
render({ componentData, pageBody: Content, footer: Footer }: PageFrameProps) {
|
||||
render({ componentData, pageBody: Content, footer }: PageFrameProps) {
|
||||
return (
|
||||
<>
|
||||
<div class="center minimal">
|
||||
<Content {...componentData} />
|
||||
</div>
|
||||
<Footer {...componentData} />
|
||||
{footer.map((FooterComponent) => (
|
||||
<FooterComponent {...componentData} />
|
||||
))}
|
||||
</>
|
||||
)
|
||||
},
|
||||
|
||||
@@ -22,8 +22,8 @@ export interface PageFrameProps {
|
||||
left: QuartzComponent[]
|
||||
/** Right sidebar components */
|
||||
right: QuartzComponent[]
|
||||
/** Footer component */
|
||||
footer: QuartzComponent
|
||||
/** Footer components */
|
||||
footer: QuartzComponent[]
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,6 +8,8 @@ export interface ComponentManifest {
|
||||
quartzVersion?: string
|
||||
author?: string
|
||||
homepage?: string
|
||||
defaultPosition?: string
|
||||
defaultPriority?: number
|
||||
}
|
||||
|
||||
export interface RegisteredComponent {
|
||||
|
||||
@@ -25,7 +25,7 @@ interface RenderComponents {
|
||||
afterBody: QuartzComponent[]
|
||||
left: QuartzComponent[]
|
||||
right: QuartzComponent[]
|
||||
footer: QuartzComponent
|
||||
footer: QuartzComponent[]
|
||||
frame?: string
|
||||
}
|
||||
|
||||
@@ -329,7 +329,7 @@ export function renderPage(
|
||||
afterBody,
|
||||
left,
|
||||
right,
|
||||
footer: Footer,
|
||||
footer,
|
||||
frame: frameName,
|
||||
} = components
|
||||
const Body = BodyConstructor()
|
||||
@@ -360,7 +360,7 @@ export function renderPage(
|
||||
afterBody,
|
||||
left,
|
||||
right,
|
||||
footer: Footer,
|
||||
footer,
|
||||
}),
|
||||
]}
|
||||
</Body>
|
||||
|
||||
Reference in New Issue
Block a user