Skip to main content
Ctrl+K

Intranet Distribution

  • How-to Guides
    • Content
      • Create a person
      • Create a location
      • Create an organisational unit
      • Set a content owner
      • Upload files by drag and drop
      • Edit images
    • Working with blocks
      • Use the Event Calendar block
      • Use the Contact list block
      • Use the IFrame block
      • Use the RSS block
      • Use the Slider block
      • Use the Form block
    • Feedback
      • Configure the content feedback form
      • Submit feedback
    • Engagement
      • Enable likes and ratings
      • Configure passive targeting
    • Settings
      • Configure squared person images in teasers and listings
      • Configure blocks through the web
      • Import and export site content
      • Configure search settings
      • Configure allowed iFrame domains
    • Authentication
      • Set up OIDC authentication
  • Reference
    • Control Panel Settings
    • Content Types
    • Workflows
    • Site Customization
  • Tutorials
    • Your First Intranet Page
    • Organizing Content
    • Using the Feedback Form
  • Concepts
    • Content Ownership
    • Organisational Structure
    • Personalization
  • Developer Documentation
    • Getting Started
      • Installation
      • Project Structure
      • Contributing
    • Developer Tutorials
      • Create a Custom Behavior
      • Create a Custom Volto Block
      • Create a Custom Widget
    • Developer How-to Guides
      • Configure blocks through the web (TTW)
      • Reindex content via an instance script
      • Move or rename content objects via an instance script
      • Upgrade an add-on dependency in kitconcept.core
      • Upgrade Plone in kitconcept.core
      • Configure a project based on a distribution to ensure versions are consistent with the distribution
      • Upgrade a distribution-based project
      • Remove the default colophon slot
      • Configure social media
      • Upgrade Volto Light Theme
      • Extend the control panel
      • Add an API endpoint
      • Customize email templates
      • Add a vocabulary
      • Override frontend components
    • Developer Reference
      • API Reference
        • @votes Endpoint
        • @feedback Endpoint
        • Byline / DocumentByLine
        • @clm Endpoint
      • Behaviors Reference
        • IPersonBehavior
        • ILocationBehavior
        • IOrganisationalUnitBehavior
        • IVotes Behavior
        • ICLM Behavior
        • VLT Site Customization Behaviors
        • IAdditionalContactInfo
        • IPersonBiography
      • Components Reference
        • ContentInteractions
        • FeedbackForm Component
        • ListingBlockDisclaimer
        • PersonView
        • PersonResultItem
        • PersonSummary
        • SearchTabs
        • StickyMenu
        • Summary component
        • Card component
        • Slots
        • Helpers
        • useLiveData
        • Widgets
        • ErrorBoundary (Recoverable Block Error Boundary)
        • EventMetadata block
        • InheritedFieldWrapper
      • Helpers Reference
        • smartTextRenderer
      • Frontend Styleguide
      • IIntranetSettings Registry
      • Vocabularies
      • Colors
      • Compatibility
      • Image aspect ratio
      • Recommended add-ons
      • Storybook
      • styleDefinitions registry
    • Developer Concepts
      • System Architecture
      • Data Model
      • Security Model
      • Block model
      • Layout
      • Vertical spacing
  • Glossary
  • Repository
  • Suggest edit
  • Open issue
  • .md

StickyMenu

Contents

  • Backend behavior
    • Fields
  • Slot registration
  • Component: StickyMenu
    • Props
    • Behaviour
    • CSS
  • Component: MobileStickyMenu
    • Props
    • Behaviour
    • CSS
  • Removing the default registration
  • Registering a custom sticky menu component
  • See also

StickyMenu#

StickyMenu is a desktop fixed-position navigation component rendered on the right side of the screen. MobileStickyMenu is its mobile counterpart, rendered as a carousel fixed to the bottom of the screen. Both components read their data from the kitconcept.sticky_menu Plone behavior via the inherit API expander.

Backend behavior#

Property

Value

Dotted name

kitconcept.sticky_menu

Interface class

IStickyMenuSettings

Module

kitconcept.voltolighttheme.behaviors.sticky_menu

Title

Sticky menu

Description

Sticky menu showing fixed in the right side of the screen

Fields#

Field

Type

Widget

Required

Default

Description

sticky_menu

JSONField

object_list (iconLinkList schema)

No

[]

List of icon links composing the menu

sticky_menu_color

TextLine

colorPicker

No

—

Background color

sticky_menu_foreground_color

TextLine

colorPicker

No

—

Text color

enable_mobile_sticky_menu

Bool

—

No

False

Show the mobile sticky menu at the bottom of the screen

Each item in sticky_menu is an iconLink object:

Field

Type

Description

@id

string

Item identifier

title

string

Link label

icon

Image

Icon image

href

Array<hrefType>

Link target

openInNewTab

boolean

Open in a new tab

Slot registration#

Both components are registered by default by @kitconcept/volto-light-theme in src/config/slots.ts.

Component

Slot

Registration name

StickyMenu

aboveHeader

StickyMenu

MobileStickyMenu

preFooter

MobileStickyMenu

Component: StickyMenu#

File: frontend/packages/volto-light-theme/src/components/StickyMenu/StickyMenu.tsx

Props#

Prop

Type

Required

content

Content (from @plone/types)

Yes

Behaviour#

Reads sticky_menu, sticky_menu_color, and sticky_menu_foreground_color from the kitconcept.sticky_menu inherit expander on content. Renders an IconLinkList inside a <div class="sticky-menu">.

Hidden via CSS in CMS UI, add view, edit view, and on mobile screens (≤ $largest-mobile-screen).

CSS#

Class

Element

sticky-menu

Root <div>

CSS variable

Fallback

--sticky-menu-color

#555

--sticky-menu-foreground-color

#fff

Positioning: position: fixed, right 0, vertically centered (top: 50vh, transform: translateY(-50%)). On screens taller than 969px: top: 373px, transform: none. Z-index: 11.

Component: MobileStickyMenu#

File: frontend/packages/volto-light-theme/src/components/StickyMenu/MobileStickyMenu.tsx

Props#

Prop

Type

Required

content

Content (from @plone/types)

Yes

Behaviour#

Reads enable_mobile_sticky_menu, sticky_menu, sticky_menu_color, and sticky_menu_foreground_color from the kitconcept.sticky_menu inherit expander. Returns null when enable_mobile_sticky_menu is false.

Renders menu items as a horizontal Embla Carousel (useEmblaCarousel) with PrevButton and NextButton arrow controls.

CSS#

Class

Element

mobile-sticky-menu

Root <div>

embla

Carousel container

embla__viewport

Carousel viewport

embla__container

Carousel track

embla__slide

Individual slide (33% width via --slide-size)

embla__button

Arrow button base

embla__button--prev

Previous arrow

embla__button--next

Next arrow

CSS variable

Fallback

--sticky-menu-color

#555

--sticky-menu-foreground-color

#fff

Positioning: position: fixed, bottom 0, full width, height 100px. Z-index: 100. Hidden by default (display: none), shown on mobile screens (≤ $largest-mobile-screen).

Removing the default registration#

config.unRegisterSlotComponent('aboveHeader', 'StickyMenu', 0);
config.unRegisterSlotComponent('preFooter', 'MobileStickyMenu', 0);

Registering a custom sticky menu component#

import MyMenu from './MyMenu';

config.registerSlotComponent({
  slot: 'aboveHeader',
  name: 'StickyMenu',
  component: MyMenu,
});

See also#

  • ListingBlockDisclaimer

  • Slots reference

previous

SearchTabs

next

Summary component

Contents
  • Backend behavior
    • Fields
  • Slot registration
  • Component: StickyMenu
    • Props
    • Behaviour
    • CSS
  • Component: MobileStickyMenu
    • Props
    • Behaviour
    • CSS
  • Removing the default registration
  • Registering a custom sticky menu component
  • See also

By kitconcept, GmbH

© Copyright 2026.

  • GitHub