Layer pane
A layer pane groups related content in a structured panel. Place a Pane header or Pane footer directly inside it to frame the primary content with a contrasting tinted band.
Getting Started
Quick start guide for new users
Props
color?: FluxColor
The color of the layer pane.
Default: gray
Slots
default
The content of the layer pane.
Examples
Basic
A layer pane with a header and a single pane.
Getting Started
Quick start guide for new users
<template>
<FluxLayerPane>
<FluxPaneHeader title="Getting Started"/>
<FluxPane>
<FluxPaneBody>Quick start guide for new users</FluxPaneBody>
</FluxPane>
</FluxLayerPane>
</template>
<script
lang="ts"
setup>
import { FluxLayerPane, FluxPane, FluxPaneBody, FluxPaneHeader } from '@flux-ui/components';
</script>Colors
Use the color prop to convey meaning, such as severity or status.
Resources
Browse documentation, release notes and developer guides for your team.
Upgrade to Pro
Unlock advanced analytics, unlimited seats and priority support.
Update available
Version 2.5.0 is ready to install. Restart the application to apply the update.
Backup completed
Your latest backup finished successfully and is stored securely in the cloud.
Scheduled maintenance
The platform will be unavailable on Sunday between 02:00 and 04:00 UTC.
Payment failed
We could not process your last invoice. Update your billing details to avoid service interruption.
<template>
<FluxFlex
direction="vertical"
:gap="9">
<FluxLayerPane>
<FluxPaneHeader
icon="file-lines"
title="Resources"/>
<FluxPane>
<FluxPaneBody>Browse documentation, release notes and developer guides for your team.</FluxPaneBody>
</FluxPane>
</FluxLayerPane>
<FluxLayerPane color="primary">
<FluxPaneHeader
icon="sparkles"
title="Upgrade to Pro"/>
<FluxPane>
<FluxPaneBody>Unlock advanced analytics, unlimited seats and priority support.</FluxPaneBody>
</FluxPane>
</FluxLayerPane>
<FluxLayerPane color="info">
<FluxPaneHeader
icon="circle-info"
title="Update available"/>
<FluxPane>
<FluxPaneBody>Version 2.5.0 is ready to install. Restart the application to apply the update.</FluxPaneBody>
</FluxPane>
</FluxLayerPane>
<FluxLayerPane color="success">
<FluxPaneHeader
icon="circle-check"
title="Backup completed"/>
<FluxPane>
<FluxPaneBody>Your latest backup finished successfully and is stored securely in the cloud.</FluxPaneBody>
</FluxPane>
</FluxLayerPane>
<FluxLayerPane color="warning">
<FluxPaneHeader
icon="hourglass-clock"
title="Scheduled maintenance"/>
<FluxPane>
<FluxPaneBody>The platform will be unavailable on Sunday between 02:00 and 04:00 UTC.</FluxPaneBody>
</FluxPane>
</FluxLayerPane>
<FluxLayerPane color="danger">
<FluxPaneHeader
icon="circle-exclamation"
title="Payment failed"/>
<FluxPane>
<FluxPaneBody>We could not process your last invoice. Update your billing details to avoid service interruption.</FluxPaneBody>
</FluxPane>
</FluxLayerPane>
</FluxFlex>
</template>
<script
lang="ts"
setup>
import { FluxFlex, FluxLayerPane, FluxPane, FluxPaneBody, FluxPaneHeader } from '@flux-ui/components';
</script>With footer
A header at the top and a footer at the bottom of the layer pane.
Resources
Documentation
Changelog
<template>
<FluxLayerPane>
<FluxPaneHeader title="Resources"/>
<FluxPane>
<FluxPaneBody>Documentation</FluxPaneBody>
</FluxPane>
<FluxPane>
<FluxPaneBody>Changelog</FluxPaneBody>
</FluxPane>
<FluxPaneFooter>v2.4.0</FluxPaneFooter>
</FluxLayerPane>
</template>
<script
lang="ts"
setup>
import { FluxLayerPane, FluxPane, FluxPaneBody, FluxPaneFooter, FluxPaneHeader } from '@flux-ui/components';
</script>With buttons
A layer pane containing action buttons.
Quick Actions
<template>
<FluxLayerPane>
<FluxPaneHeader title="Quick Actions"/>
<FluxPane>
<FluxPaneBody>
<FluxButtonStack direction="vertical">
<FluxSecondaryButton
is-filled
icon-leading="file-plus"
label="New document"/>
<FluxSecondaryButton
is-filled
icon-leading="upload"
label="Import file"/>
<FluxDestructiveButton
is-filled
icon-leading="trash"
label="Delete all"/>
</FluxButtonStack>
</FluxPaneBody>
</FluxPane>
</FluxLayerPane>
</template>
<script
lang="ts"
setup>
import { FluxButtonStack, FluxDestructiveButton, FluxLayerPane, FluxPane, FluxPaneBody, FluxPaneHeader, FluxSecondaryButton } from '@flux-ui/components';
</script>With button group
A segmented button group as a view switcher in the pane header.
Calendar
Showing your schedule for this week.
<template>
<FluxLayerPane>
<FluxPaneHeader title="Calendar">
<template #after>
<FluxButtonGroup>
<FluxSecondaryButton label="Day"/>
<FluxPrimaryButton label="Week"/>
<FluxSecondaryButton label="Month"/>
</FluxButtonGroup>
</template>
</FluxPaneHeader>
<FluxPane>
<FluxPaneBody>Showing your schedule for this week.</FluxPaneBody>
</FluxPane>
</FluxLayerPane>
</template>
<script
lang="ts"
setup>
import { FluxButtonGroup, FluxLayerPane, FluxPane, FluxPaneBody, FluxPaneHeader, FluxPrimaryButton, FluxSecondaryButton } from '@flux-ui/components';
</script>With items
A header with a trailing action, above a list of items with avatars and badges.
Team members
Bas MiliusEngineer
Active
Jane DoeDesigner
Active
John DoeProduct manager
Away
<template>
<FluxLayerPane>
<FluxPaneHeader title="Team members">
<template #after>
<FluxSecondaryButton
icon-leading="user-plus"
label="Invite"/>
</template>
</FluxPaneHeader>
<FluxPane>
<FluxItemStack>
<FluxItem
v-for="member in members"
:key="member.name">
<FluxItemMedia
is-center
:size="36">
<FluxAvatar
:alt="member.name"
fallback-icon="user"
:size="36"/>
</FluxItemMedia>
<FluxItemContent is-center>
<strong>{{ member.name }}</strong>
<span>{{ member.role }}</span>
</FluxItemContent>
<FluxItemActions is-center>
<FluxBadge
:color="member.color"
:label="member.status"/>
</FluxItemActions>
</FluxItem>
</FluxItemStack>
</FluxPane>
</FluxLayerPane>
</template>
<script
lang="ts"
setup>
import type { FluxColor } from '@flux-ui/types';
import { FluxAvatar, FluxBadge, FluxItem, FluxItemActions, FluxItemContent, FluxItemMedia, FluxItemStack, FluxLayerPane, FluxPane, FluxPaneHeader, FluxSecondaryButton } from '@flux-ui/components';
const members: { name: string; role: string; status: string; color: FluxColor }[] = [
{name: 'Bas Milius', role: 'Engineer', status: 'Active', color: 'success'},
{name: 'Jane Doe', role: 'Designer', status: 'Active', color: 'success'},
{name: 'John Doe', role: 'Product manager', status: 'Away', color: 'warning'}
];
</script>With icon
A Pane header with an icon for a prominent section heading.
Performance
RevenueTotal revenue this period
+12%
OrdersNumber of orders placed
+4%
RefundsRefunds processed
-2%
<template>
<FluxLayerPane>
<FluxPaneHeader
icon="chart-line"
title="Performance"/>
<FluxPane>
<FluxItemStack>
<FluxItem
v-for="metric in metrics"
:key="metric.label">
<FluxItemContent>
<strong>{{ metric.label }}</strong>
<span>{{ metric.description }}</span>
</FluxItemContent>
<FluxItemActions is-center>
<FluxBadge
:color="metric.color"
:label="metric.value"/>
</FluxItemActions>
</FluxItem>
</FluxItemStack>
</FluxPane>
</FluxLayerPane>
</template>
<script
lang="ts"
setup>
import type { FluxColor } from '@flux-ui/types';
import { FluxBadge, FluxItem, FluxItemActions, FluxItemContent, FluxItemStack, FluxLayerPane, FluxPane, FluxPaneHeader } from '@flux-ui/components';
const metrics: { label: string; description: string; value: string; color: FluxColor }[] = [
{label: 'Revenue', description: 'Total revenue this period', value: '+12%', color: 'success'},
{label: 'Orders', description: 'Number of orders placed', value: '+4%', color: 'success'},
{label: 'Refunds', description: 'Refunds processed', value: '-2%', color: 'danger'}
];
</script>