Skip to content

FloatButton

Floating action button that stays fixed on the page for quick access to common actions.

import { FloatButton } from 'asterui'

Basic

Simple floating action button.

import { FloatButton } from 'asterui'

function App() {
  return (
      <div className="relative h-32 bg-base-200 rounded-lg">
        <FloatButton
          icon={<span className="text-lg">+</span>}
          onClick={() => alert('Button clicked!')}
          className="!absolute !right-4 !bottom-4"
        />
      </div>
    )
}

export default App

With Tooltip

Float button with tooltip on hover.

import { FloatButton } from 'asterui'

function App() {
  return (
      <div className="relative h-32 bg-base-200 rounded-lg">
        <FloatButton
          icon={<span className="text-lg">+</span>}
          tooltip="Add new item"
          type="primary"
          onClick={() => alert('Add clicked!')}
          className="!absolute !right-4 !bottom-4"
        />
      </div>
    )
}

export default App

Types

Default and primary button types.

import { FloatButton } from 'asterui'

function App() {
  return (
      <div className="relative h-32 bg-base-200 rounded-lg">
        <FloatButton
          icon={<span className="text-lg">+</span>}
          type="default"
          className="!absolute !right-20 !bottom-4"
        />
        <FloatButton
          icon={<span className="text-lg">♥</span>}
          type="primary"
          className="!absolute !right-4 !bottom-4"
        />
      </div>
    )
}

export default App

Shapes

Circle and square button shapes.

import { FloatButton } from 'asterui'

function App() {
  return (
      <div className="relative h-32 bg-base-200 rounded-lg">
        <FloatButton
          icon={<span className="text-lg">+</span>}
          shape="circle"
          className="!absolute !right-20 !bottom-4"
        />
        <FloatButton
          icon={<span className="text-lg">+</span>}
          shape="square"
          className="!absolute !right-4 !bottom-4"
        />
      </div>
    )
}

export default App

With Badge

Float button with notification badge.

5
import { FloatButton } from 'asterui'

function App() {
  return (
      <div className="relative h-32 bg-base-200 rounded-lg">
        <FloatButton
          icon={<span className="text-lg">💬</span>}
          badge={5}
          onClick={() => alert('You have 5 unread messages')}
          className="!absolute !right-4 !bottom-4"
        />
      </div>
    )
}

export default App

Float Button Group

Group of float buttons that expand on click.

import { FloatButton } from 'asterui'

function App() {
  return (
      <div className="relative h-48 bg-base-200 rounded-lg">
        <FloatButton.Group
          icon={<span className="text-lg">+</span>}
          className="!absolute !right-4 !bottom-4"
        >
          <FloatButton
            icon={<span>?</span>}
            onClick={() => alert('Help section')}
          />
          <FloatButton
            icon={<span>💬</span>}
            onClick={() => alert('Contact support')}
          />
          <FloatButton
            icon={<span>↻</span>}
            onClick={() => alert('Refreshing...')}
          />
        </FloatButton.Group>
      </div>
    )
}

export default App

Back to Top

Scroll to top button that appears after scrolling down.

BackTop button appears after scrolling down 400px

import { FloatButton } from 'asterui'

function App() {
  return (
      <div className="relative h-32 bg-base-200 rounded-lg flex items-center justify-center text-base-content/60">
        <p>BackTop button appears after scrolling down 400px</p>
      </div>
    )
}

export default App
PropertyDescriptionTypeDefault
iconIcon to display in the buttonReact.ReactNode-
descriptionDescription text below iconReact.ReactNode-
typeButton type/color'default' | 'primary''default'
shapeButton shape'circle' | 'square''circle'
tooltipTooltip text on hoverstring-
tooltipPlacementTooltip position'left' | 'right' | 'top' | 'bottom''left'
badgeBadge content to shownumber | React.ReactNode-
hrefLink URL (renders as anchor)string-
targetLink targetstring-
onClickClick event handler() => void-
classNameAdditional CSS classesstring-
data-testidTest ID for testingstring-
PropertyDescriptionTypeDefault
childrenFloatButton components to groupReact.ReactNode-
flowerArrange buttons in quarter-circle (radial) layoutbooleanfalse
shapeButton shape for children'circle' | 'square''circle'
iconMain trigger button iconReact.ReactNode-
mainActionMain action button icon (replaces trigger when open)React.ReactNode-
onMainActionClick handler for main action button() => void-
showCloseShow close button when openbooleanfalse
typeButton type/color'default' | 'primary''default'
positionPosition on screen'bottom-right' | 'bottom-left' | 'top-right' | 'top-left''bottom-right'
offsetDistance from edge in pixelsnumber24
data-testidTest ID for testingstring-
PropertyDescriptionTypeDefault
visibilityHeightScroll distance before button appears (pixels)number400
targetScroll target element() => HTMLElement | Window-
onClickClick event handler (called before scrolling)() => void-
iconCustom iconReact.ReactNode-
durationScroll animation duration in msnumber450
positionPosition on screen'bottom-right' | 'bottom-left''bottom-right'
offsetDistance from edge in pixelsnumber24
data-testidTest ID for testingstring-
  • Uses native <button> element for proper keyboard support
  • Supports href prop to render as anchor for link functionality
  • Tooltips provide context for screen readers when present
  • Focus states are clearly visible for keyboard navigation
  • Group expansion is keyboard accessible
  • BackTop button appears/disappears based on scroll position