BBC's guide to development
  • General

    • About
    • Tools
    • Git(hub)
    • Showpad
    • Hosting
    • Maintenance
    • Security
    • Go live checklist
  • Front-end development

    • Bundlers
    • CSS/SCSS
    • Javascript
    • Vue
    • PHP
    • Mails
    • Dev Faq
  • Functions
  • Mixins
  • General

    • OOP Structure
  • Component Classes

    • Accordion
    • App
    • Component
    • HighwayApp
    • Popup
    • PNG Sequencer
    • Tab
  • Manager Classes

    • BountListenerMgr
    • Cache
    • Configuration
    • InViewStateMgr
    • Instance Manager
    • Event dispatcher
  • Factories

    • SwiperFactory
  • PDF

    • AssetLoader
    • BasePdfDoc
    • TemplatePdfDoc
    • CustomPdfDoc
  • Utility functions

    • canvas
    • Connection Status
    • css
    • dev
    • placeholder
    • dom
    • fetch
    • json
    • object
    • scroll
    • scrollbar
    • spreadsheets
    • string
    • url
  • General

    • ComponentMgr
    • ThreeJsViewer
  • Components

    • ComponentMgr
    • GltfModel
    • Snappable
    • Socket
    • ThreeJsViewer
    • ThreeJsViewerCamera
  • Loaders

    • ConfigurationSerializer
    • GltfBlockParser
  • Utils

    • CanvasInputAdapter
    • CollisionManager
    • SocketGridExpander
    • blender
    • headless
  • General

    • Troubleshooting
    • Legacy
  • Components

    • AssetBar
    • ConfigGenerator
    • ShowpadApp
  • Managers

    • Assets
    • AppsDb
    • Config
  • Utils

    • Connection Status
    • general
    • showpad-interactive
    • showpad-upload
  • Components

    • Accordion
    • BackButton
    • Breadcrumb
    • ByltButton
    • Hamburger
    • Icon
    • Logo
    • Loader
    • Modal
    • Popup
    • Prompt
    • ProgressBar
    • TextLoader
  • Composables

    • useDebugMode
    • useConnectionStatus
  • Utils

    • dom
    • props
  • General

    • General
    • Tracking
  • Components

    • Accordion
    • ActionButton
    • AssetItem
    • AssetList
    • BackButton
    • ConfigGenButton
    • Logo
    • Media
    • Modal
    • Popup
    • Prompt
    • SPButton
    • SPRouterView
    • SPTrackedRouterLink
    • TextLoader
    • View
  • Composables

    • useConnectionStatus
  • Stores

    • useAppsDbStore
    • useBreadcrumbStore
    • useShowpadAPIStore
    • useShowpadSDKStore
    • useSpConfigStore
    • useSpStore
    • useSpTrackingStore
  • The New Kit

    • General
    • Installation & Usage
    • ACF Blocks
    • PHPCS
    • Functions
    • Vite
    • WP Config
    • Staging Deployment
  • Best Practices

    • Page Structure
    • Fonts/Typography
  • Todo
GitHub
  • General

    • About
    • Tools
    • Git(hub)
    • Showpad
    • Hosting
    • Maintenance
    • Security
    • Go live checklist
  • Front-end development

    • Bundlers
    • CSS/SCSS
    • Javascript
    • Vue
    • PHP
    • Mails
    • Dev Faq
  • Functions
  • Mixins
  • General

    • OOP Structure
  • Component Classes

    • Accordion
    • App
    • Component
    • HighwayApp
    • Popup
    • PNG Sequencer
    • Tab
  • Manager Classes

    • BountListenerMgr
    • Cache
    • Configuration
    • InViewStateMgr
    • Instance Manager
    • Event dispatcher
  • Factories

    • SwiperFactory
  • PDF

    • AssetLoader
    • BasePdfDoc
    • TemplatePdfDoc
    • CustomPdfDoc
  • Utility functions

    • canvas
    • Connection Status
    • css
    • dev
    • placeholder
    • dom
    • fetch
    • json
    • object
    • scroll
    • scrollbar
    • spreadsheets
    • string
    • url
  • General

    • ComponentMgr
    • ThreeJsViewer
  • Components

    • ComponentMgr
    • GltfModel
    • Snappable
    • Socket
    • ThreeJsViewer
    • ThreeJsViewerCamera
  • Loaders

    • ConfigurationSerializer
    • GltfBlockParser
  • Utils

    • CanvasInputAdapter
    • CollisionManager
    • SocketGridExpander
    • blender
    • headless
  • General

    • Troubleshooting
    • Legacy
  • Components

    • AssetBar
    • ConfigGenerator
    • ShowpadApp
  • Managers

    • Assets
    • AppsDb
    • Config
  • Utils

    • Connection Status
    • general
    • showpad-interactive
    • showpad-upload
  • Components

    • Accordion
    • BackButton
    • Breadcrumb
    • ByltButton
    • Hamburger
    • Icon
    • Logo
    • Loader
    • Modal
    • Popup
    • Prompt
    • ProgressBar
    • TextLoader
  • Composables

    • useDebugMode
    • useConnectionStatus
  • Utils

    • dom
    • props
  • General

    • General
    • Tracking
  • Components

    • Accordion
    • ActionButton
    • AssetItem
    • AssetList
    • BackButton
    • ConfigGenButton
    • Logo
    • Media
    • Modal
    • Popup
    • Prompt
    • SPButton
    • SPRouterView
    • SPTrackedRouterLink
    • TextLoader
    • View
  • Composables

    • useConnectionStatus
  • Stores

    • useAppsDbStore
    • useBreadcrumbStore
    • useShowpadAPIStore
    • useShowpadSDKStore
    • useSpConfigStore
    • useSpStore
    • useSpTrackingStore
  • The New Kit

    • General
    • Installation & Usage
    • ACF Blocks
    • PHPCS
    • Functions
    • Vite
    • WP Config
    • Staging Deployment
  • Best Practices

    • Page Structure
    • Fonts/Typography
  • Todo
GitHub
  • ProgressBar

ProgressBar

import { ProgressBar } from '@bbc/front-end-kit/vue'

A flexible and interactive progress bar component supporting segmentation, click events, and slot-based customization. Useful for visualizing progress in steps or as a continuous bar.

Getting started

<template>
  <div>
    <ProgressBar :progress="0.5" :totalSegments="5" @click="onBarClick" />
  </div>
</template>

<script setup>
import { ProgressBar } from '@bbc/front-end-kit/vue'

function onBarClick(payload) {
  console.log(payload);
}
</script>

Preview

Guidelines

  • Always extend or wrap the component, provide it with default values, and ensure consistency across the project.
  • Use slots to customize the appearance of segments if needed.
  • Try use the css variables to adjust colors and sizing first for cleaner code.

Styling

.progress-bar {
  --progress-bar-track-color: var(--c-white);
  --progress-bar-progress-color: var(--c-black);
}

API

Properties

progress

The current progress value (from 0 to 1).

Values: Number (0–1)

Default: 0

totalSegments

The number of segments to divide the progress bar into.

Values: Number

Default: 1

SegmentErrorIcon

Props to pass to the given SegmentErrorIcon component. Values: Boolean | Vue Component

Default: undefined

segmentErrorIconProps

Props to pass to the given SegmentErrorIcon component. Values: Object

Default: undefined

Events

click

Emitted when a segment or the bar is clicked.

Payload:

  • currentProgress (Number): The current progress value.
  • progress (Number): The progress value at the click position (0–1).
  • segmentProgress (Number): The progress value of the clicked segment (0–1).
  • segmentIndex (Number): The index of the clicked segment (1-based).

Slots

track-segment

Customize each segment inside the foreground progress fill (.progress-bar__segment.--bar).

Properties
  • segment (Number): The segment number (1-based).
  • width (Number): The width of the segment in pixels.
  • index (Number): The segment index (1-based).

bar-segment

Customize each segment inside the background track (.progress-bar__segment.--track).

Properties
  • segment (Number): The segment number (1-based).
  • width (Number): The width of the segment in pixels.
  • index (Number): The segment index (1-based).

Styling

The component uses CSS variables for easy customization:

  • --progress-bar-progress: Progress width (set automatically)
  • --progress-bar-segment-width: Segment width (set automatically)
  • --progress-bar-transition-duration: Transition duration
  • --progress-bar-track-height: Height of the bar
  • --progress-bar-track-color: Track background color
  • --progress-bar-progress-color: Progress color
Edit this page
Last Updated: 4/27/26, 12:56 PM
Contributors: Nicolas Jaenen