Getting StartedComponentsDesign TokensThemingTheme SynthesizerFrameworksAccessibilityUtilitiesServer RenderingBrowser SupportContributingChangelog App ShellAspect GridAuth ShellCenterClusterContainerDashboard GridDockFloat BarInsetMasonryPage HeaderPage LayoutResizableResponsive SwitcherSectionSettings LayoutSplit PaneStatus BarStickyToolbar Anchor NavBottom NavBreadcrumbBreadcrumb MenuCommand BarDrawerFooterLinkMenubarNavigation MenuPage IndicatorPaginationRailScroll IndicatorScroll SpyScroll To TopSidebarSkip LinkSpeed DialStepper NavTabsTop BarTree View AccordionAspect RatioAvatarAvatar GroupCalloutCardCarouselCollapsibleColor SwatchCTA BannerDividerEmpty StateFeature CardIconImageImage CompareImage HotspotsInfinite ScrollLightboxMarqueeQR CodeScroll AreaSeparatorSkeletonSpinnerStackVideoVirtual List Activity HeatmapAnimated NumberBadgeChartClockComparisonCountdown TimerData GridData TableDescription ListDiffEvent CalendarGaugeJSON TreeKanbanKey ValueLevel MeterListMeterSparklineStatStepperTableTagTimelineUptimeValue CardWaveform BlockquoteCode BlockGradient TextHighlightKbdKeyboard MapMarkdownNumber FormatProseTerminalTextTime AgoTruncateTypewriter ButtonButton GroupCalendarCheckboxChipColor PickerComboboxCopy ButtonDate PickerDate Range PickerFieldsetFile UploadFormHotkeyIcon ButtonImage CropperInline EditInputInput GroupKnobLabelMasked InputMulti SelectNumber InputOTP InputPassword InputPin InputRadio GroupRange SliderRatingSearchSegmented ControlSelectSignature PadSliderSortable ListSwitch GroupTag InputTextareaTheme ToggleTime PickerToggleTransfer ListTree Select AlertAnnouncementBannerCommand PaletteConfirmConnection StatusContext MenuConversationDialogDropdown MenuGuided TourHover CardInline MessageLoading OverlayModalNotification PanelPopoverProgressProgress ToastSheetSnackbarSpotlightToastTooltip
ARC UI ARC Radiant Components
v3.2 Docs Components Tokens Synthesizer
Getting StartedFrameworksServer Rendering Design TokensThemingTheme SynthesizerTypographyUtilities All ComponentsAccessibilityBrowser SupportChangelogContributingStats App ShellAspect GridAuth ShellCenterClusterContainerDashboard GridDockFloat BarInsetMasonryPage HeaderPage LayoutResizableResponsive SwitcherSectionSettings LayoutSplit PaneStatus BarStickyToolbar Anchor NavBottom NavBreadcrumbBreadcrumb MenuCommand BarDrawerFooterLinkMenubarNavigation MenuPage IndicatorPaginationRailScroll IndicatorScroll SpyScroll To TopSidebarSkip LinkSpeed DialStepper NavTabsTop BarTree View AccordionAspect RatioAvatarAvatar GroupCalloutCardCarouselCollapsibleColor SwatchCTA BannerDividerEmpty StateFeature CardIconImageImage CompareImage HotspotsInfinite ScrollLightboxMarqueeQR CodeScroll AreaSeparatorSkeletonSpinnerStackVideoVirtual List Activity HeatmapAnimated NumberBadgeChartClockComparisonCountdown TimerData GridData TableDescription ListDiffEvent CalendarGaugeJSON TreeKanbanKey ValueLevel MeterListMeterSparklineStatStepperTableTagTimelineUptimeValue CardWaveform BlockquoteCode BlockGradient TextHighlightKbdKeyboard MapMarkdownNumber FormatProseTerminalTextTime AgoTruncateTypewriter ButtonButton GroupCalendarCheckboxChipColor PickerComboboxCopy ButtonDate PickerDate Range PickerFieldsetFile UploadFormHotkeyIcon ButtonImage CropperInline EditInputInput GroupKnobLabelMasked InputMulti SelectNumber InputOTP InputPassword InputPin InputRadio GroupRange SliderRatingSearchSegmented ControlSelectSignature PadSliderSortable ListSwitch GroupTag InputTextareaTheme ToggleTime PickerToggleTransfer ListTree Select AlertAnnouncementBannerCommand PaletteConfirmConnection StatusContext MenuConversationDialogDropdown MenuGuided TourHover CardInline MessageLoading OverlayModalNotification PanelPopoverProgressProgress ToastSheetSnackbarSpotlightToastTooltip

Float Bar

Viewport-bottom floating toolbar with surface-overlay background, backdrop blur, and spring easing. For bulk actions, unsaved-changes prompts.

Components Float Bar
layout interactive
<arc-float-bar>

Overview

FloatBar is a floating action bar that appears at the bottom (or top) of the viewport to present contextual actions in response to a user selection or state change. It slides into view with spring easing, overlaying page content with a surface-overlay background and backdrop blur that keeps it visually distinct without fully obscuring the page beneath. The most common pattern is a bulk-action bar that appears when one or more items are selected in a data table or list: "3 items selected — Delete | Archive | Export." FloatBar also works well as an unsaved-changes prompt ("You have unsaved changes — Save | Discard") or a cookie consent banner. The bar fires arc-open and arc-close events so your application can track its visibility state. Unlike Dock, which auto-hides and reveals on hover, FloatBar is explicitly controlled via the `open` prop — it appears in response to application state (e.g. items selected, form dirty) and disappears when the triggering condition resolves. This makes FloatBar the right choice for transient contextual toolbars, while Dock is better for persistent utility panels.

Guidelines

When to use

  • Use for bulk-action bars that appear when items are selected in a table or list
  • Use for unsaved-changes prompts at the bottom of forms
  • Keep the content concise: a status message plus 2-3 action buttons
  • Dismiss the FloatBar automatically when the triggering condition resolves (e.g. selection cleared)
  • Combine with Button components for clear primary/secondary action hierarchy
  • Use position="bottom" for most cases; position="top" for cookie/consent banners

When not to use

  • Do not use FloatBar for permanent toolbars — use Toolbar instead
  • Do not put navigation links in a FloatBar — use TopBar or Dock
  • Do not leave the FloatBar open indefinitely — it should be transient and context-dependent
  • Do not place complex forms or multi-step flows inside a FloatBar
  • Do not show multiple Float Bars simultaneously at the same position
  • Do not use as a toast replacement — FloatBar is for actions, Toast is for notifications

Features

  • Viewport-fixed floating bar with spring easing slide-in animation
  • Surface-overlay background with backdrop-filter blur for visual layering
  • Configurable position: bottom (default) or top of the viewport
  • Controlled via `open` prop — appears in response to application state changes
  • Fires `arc-open` and `arc-close` events for state synchronization
  • Non-blocking overlay — does not lock body scroll or trap focus
  • Rounded corners and subtle shadow for floating appearance
  • CSS part: `bar` for targeted ::part() styling

Preview

Page content behind the float bar
3 items selected Archive Delete

Usage

This component requires JavaScript. No pure HTML/CSS version is available — use the Web Component directly or a framework wrapper.

<arc-float-bar id="bulk-actions" position="bottom">
  <span>3 items selected</span>
  <arc-button variant="secondary" size="sm">Archive</arc-button>
  <arc-button variant="secondary" size="sm">Delete</arc-button>
</arc-float-bar>

<script>
  const bar = document.querySelector('#bulk-actions');
  // Show when items are selected
  bar.open = true;
  bar.addEventListener('arc-close', () => console.log('Float bar hidden'));
</script>
import { FloatBar, Button } from '@arclux/arc-ui-react';

function BulkActions({ selectedCount }: { selectedCount: number }) {
  return (
    <FloatBar open={selectedCount > 0} position="bottom">
      <span>{selectedCount} items selected</span>
      <Button variant="secondary" size="sm">Archive</Button>
      <Button variant="secondary" size="sm">Delete</Button>
    </FloatBar>
  );
}
<script setup>
import { ref } from 'vue';
import { FloatBar, Button } from '@arclux/arc-ui-vue';

const selectedCount = ref(3);
</script>

<template>
  <FloatBar :open="selectedCount > 0" position="bottom">
    <span>{{ selectedCount }} items selected</span>
    <Button variant="secondary" size="sm">Archive</Button>
    <Button variant="secondary" size="sm">Delete</Button>
  </FloatBar>
</template>
<script>
  import { FloatBar, Button } from '@arclux/arc-ui-svelte';

  let selectedCount = $state(3);
</script>

<FloatBar open={selectedCount > 0} position="bottom">
  <span>{selectedCount} items selected</span>
  <Button variant="secondary" size="sm">Archive</Button>
  <Button variant="secondary" size="sm">Delete</Button>
</FloatBar>
import { Component } from '@angular/core';
import { FloatBar, Button } from '@arclux/arc-ui-angular';

@Component({
  imports: [FloatBar, Button],
  template: `
    <arc-float-bar [open]="selectedCount > 0" position="bottom">
      <span>{{ selectedCount }} items selected</span>
      <arc-button variant="secondary" size="sm">Archive</arc-button>
      <arc-button variant="secondary" size="sm">Delete</arc-button>
    </arc-float-bar>
  `,
})
export class BulkActionsComponent {
  selectedCount = 3;
}
import { createSignal } from 'solid-js';
import { FloatBar, Button } from '@arclux/arc-ui-solid';

function BulkActions() {
  const [selectedCount] = createSignal(3);

  return (
    <FloatBar open={selectedCount() > 0} position="bottom">
      <span>{selectedCount()} items selected</span>
      <Button variant="secondary" size="sm">Archive</Button>
      <Button variant="secondary" size="sm">Delete</Button>
    </FloatBar>
  );
}
import { useState } from 'preact/hooks';
import { FloatBar, Button } from '@arclux/arc-ui-preact';

function BulkActions() {
  const [selectedCount] = useState(3);

  return (
    <FloatBar open={selectedCount > 0} position="bottom">
      <span>{selectedCount} items selected</span>
      <Button variant="secondary" size="sm">Archive</Button>
      <Button variant="secondary" size="sm">Delete</Button>
    </FloatBar>
  );
}

API

open boolean false
Controls visibility of the float bar. Set to true when a triggering condition is met (e.g., items selected, form dirty) and false when the condition resolves.
position 'bottom' | 'top' 'bottom'
Which edge of the viewport the float bar appears at. Bottom is standard for bulk-action bars; top works for consent banners or global alerts.

Events

arc-open
Fired when the float bar becomes visible after the open prop is set to true.
arc-close
Fired when the float bar hides after the open prop is set to false.

See Also