XDSLayoutFooter@xds/core · Layout

Usage

Layout provides composable components for building structured page shells with header, sidebar, content, and footer slots. Use XDSLayout for full app layouts and XDSHStack/XDSVStack for simple directional stacking.

Best practices

GuidancePractices
DoUse XDSLayout for page shells that need distinct zones like header, sidebar(s), content, and footer.
DoUse XDSHStack and XDSVStack for simple directional stacking within a content area.
Don'tUse XDSLayout for simple stacking layouts — use XDSHStack or XDSVStack instead.
Don'tNest multiple XDSLayout components — use one per page shell and compose content within its slots.

Import

ts
import {XDSLayoutFooter} from '@xds/core/Layout'

Props

PropTypeDescription
children
ReactNodeFooter content.
hasDivider
boolean (default: false)Border at top edge.
height
number | stringFooter height.
label
stringAccessible label for the landmark element.
role
AriaRoleARIA landmark role.

Showcase source

tsx
'use client';
import {
XDSLayout,
XDSLayoutContent,
XDSLayoutHeader,
XDSLayoutFooter,
XDSLayoutPanel,
XDSCard,
XDSHStack,
} from '@xds/core/Layout';
import {XDSCenter} from '@xds/core/Center';
import {XDSButton} from '@xds/core/Button';
export default function LayoutFooterShowcase() {
return (
<XDSCenter width={600}>
<XDSLayout
height="fill"
header={
<XDSLayoutHeader hasDivider>
<XDSCard variant="muted" />
</XDSLayoutHeader>
}
start={
<XDSLayoutPanel hasDivider width={140}>
<XDSCard variant="muted" />
</XDSLayoutPanel>
}
content={
<XDSLayoutContent>
<XDSCard variant="muted" />
</XDSLayoutContent>
}
footer={
<XDSLayoutFooter hasDivider>
<XDSHStack gap={2} hAlign="end">
<XDSButton label="Cancel" variant="secondary">
Cancel
</XDSButton>
<XDSButton label="Save" variant="primary">
Save
</XDSButton>
</XDSHStack>
</XDSLayoutFooter>
}
/>
</XDSCenter>
);
}