Pular para o conteúdo

FloatButton

Botão de ação flutuante que permanece fixo na página para acesso rápido a ações comuns.

import { FloatButton } from 'asterui'

Básico

Botão de ação flutuante simples.

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

Com Tooltip

Botão flutuante com tooltip ao passar o mouse.

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

Tipos

Tipos de botão padrão e primário.

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

Formas

Formas de botão círculo e quadrado.

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

Com Badge

Botão flutuante com badge de notificação.

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

Grupo de FloatButton

Grupo de botões flutuantes que expandem ao clicar.

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

Voltar ao Topo

Botão de rolar para o topo que aparece após rolar para baixo.

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
PropriedadeDescriçãoTipoPadrão
iconÍcone para exibir no botãoReact.ReactNode-
descriptionTexto de descrição abaixo do íconeReact.ReactNode-
typeTipo/cor do botão'default' | 'primary''default'
shapeForma do botão'circle' | 'square''circle'
tooltipTexto do tooltip ao passar o mousestring-
tooltipPlacementPosição do tooltip'left' | 'right' | 'top' | 'bottom''left'
badgeConteúdo do badge a mostrarnumber | React.ReactNode-
hrefURL do link (renderiza como âncora)string-
targetAlvo do linkstring-
onClickManipulador de evento de clique() => void-
classNameClasses CSS adicionaisstring-
data-testidID de teste para testesstring-
PropriedadeDescriçãoTipoPadrão
childrenComponentes FloatButton para agruparReact.ReactNode-
flowerOrganizar botões em layout de quarto de círculo (radial)booleanfalse
shapeForma do botão para filhos'circle' | 'square''circle'
iconÍcone do botão acionador principalReact.ReactNode-
mainActionÍcone do botão de ação principal (substitui acionador quando aberto)React.ReactNode-
onMainActionManipulador de clique para botão de ação principal() => void-
showCloseMostrar botão de fechar quando abertobooleanfalse
typeTipo/cor do botão'default' | 'primary''default'
positionPosição na tela'bottom-right' | 'bottom-left' | 'top-right' | 'top-left''bottom-right'
offsetDistância da borda em pixelsnumber24
data-testidID de teste para testesstring-
PropriedadeDescriçãoTipoPadrão
visibilityHeightDistância de rolagem antes do botão aparecer (pixels)number400
targetElemento alvo de rolagem() => HTMLElement | Window-
onClickManipulador de evento de clique (chamado antes de rolar)() => void-
iconÍcone personalizadoReact.ReactNode-
durationDuração da animação de rolagem em msnumber450
positionPosição na tela'bottom-right' | 'bottom-left''bottom-right'
offsetDistância da borda em pixelsnumber24
data-testidID de teste para testesstring-
  • Usa elemento <button> nativo para suporte adequado de teclado
  • Suporta prop href para renderizar como âncora para funcionalidade de link
  • Tooltips fornecem contexto para leitores de tela quando presentes
  • Estados de foco são claramente visíveis para navegação por teclado
  • Expansão do grupo é acessível via teclado
  • Botão BackTop aparece/desaparece com base na posição de rolagem