Caroa UI

FloatingNav

画面下部(または上部)に固定表示されるフローティングナビゲーション。

インポート

import {
  FloatingNav,
  FloatingNavGroup,
  FloatingNavItem,
  FloatingNavLogo,
  FloatingNavAction,
  FloatingNavSeparator,
} from '@caroainc/ui-components/client'

基本的な使い方

Loading...
<FloatingNav>
  <FloatingNavGroup>
    <FloatingNavItem icon="Home" label="ホーム" href="/" />
    <FloatingNavItem icon="Search" label="検索" href="/search" />
    <FloatingNavItem icon="Bell" label="通知" href="/notifications" />
  </FloatingNavGroup>
</FloatingNav>

ロゴ付き

Loading...
<FloatingNav>
  <FloatingNavLogo href="/">
    <Image src="/logo.svg" alt="Logo" fill />
  </FloatingNavLogo>
  <FloatingNavGroup>
    <FloatingNavItem icon="Home" label="ホーム" href="/" />
    <FloatingNavItem icon="MessageSquare" label="メッセージ" href="/messages" />
    <FloatingNavItem icon="Settings" label="設定" href="/settings" />
  </FloatingNavGroup>
</FloatingNav>

アバター・ドロップダウン付き

Loading...
<FloatingNav>
  <FloatingNavLogo href="/">
    <Image src="/logo.svg" alt="Logo" fill />
  </FloatingNavLogo>
  <FloatingNavSeparator />
  <FloatingNavGroup>
    <FloatingNavItem icon="Home" label="ホーム" href="/" />
    <FloatingNavItem icon="MessageCircle" label="メッセージ" href="#" external />
    <FloatingNavItem icon="Share2" label="シェア" href="#" external />
  </FloatingNavGroup>
  <FloatingNavSeparator />
  <FloatingNavAction>
    <DropdownMenu>
      <DropdownMenuTrigger asChild>
        <button type="button">
          <Avatar className="h-8 w-8">
            <AvatarImage src={user.image} alt={user.name} />
            <AvatarFallback>{user.name[0]}</AvatarFallback>
          </Avatar>
        </button>
      </DropdownMenuTrigger>
      <DropdownMenuContent sideOffset={12}>
        <DropdownMenuItem>プロフィール</DropdownMenuItem>
        <DropdownMenuItem>設定</DropdownMenuItem>
        <DropdownMenuSeparator />
        <DropdownMenuItem>ログアウト</DropdownMenuItem>
      </DropdownMenuContent>
    </DropdownMenu>
  </FloatingNavAction>
</FloatingNav>

設定アイコン・ドロップダウン付き

FloatingNavAction にはアバター以外も配置できます。設定アイコン + DropdownMenuの例:

Loading...
<FloatingNav>
  <FloatingNavGroup>
    <FloatingNavItem icon="Home" label="ホーム" href="/" />
    <FloatingNavItem icon="Search" label="検索" href="/search" />
    <FloatingNavItem icon="Bell" label="通知" href="/notifications" />
  </FloatingNavGroup>
  <FloatingNavSeparator />
  <FloatingNavAction>
    <DropdownMenu>
      <DropdownMenuTrigger asChild>
        <Button variant="ghost" shape="circle">
          <Icon name="Settings" size="md" />
        </Button>
      </DropdownMenuTrigger>
      <DropdownMenuContent sideOffset={12}>
        <DropdownMenuItem>プロフィール</DropdownMenuItem>
        <DropdownMenuItem>テーマ</DropdownMenuItem>
        <DropdownMenuSeparator />
        <DropdownMenuItem>ログアウト</DropdownMenuItem>
      </DropdownMenuContent>
    </DropdownMenu>
  </FloatingNavAction>
</FloatingNav>

上部に配置

position="top" で画面上部に配置できます。

Loading...
<FloatingNav position="top">
  <FloatingNavGroup>
    <FloatingNavItem icon="Home" label="ホーム" href="/" />
    <FloatingNavItem icon="Search" label="検索" href="/search" />
  </FloatingNavGroup>
</FloatingNav>

形状(Shape)

shape で角丸の形状を変更できます。アイテムのボタン形状も連動して変わります。

  • pill(デフォルト): 完全な丸(アイテムも丸ボタン)
  • rounded: さりげない丸(アイテムは四角ボタン)
Loading...
{/* 完全な丸(デフォルト) */}
<FloatingNav shape="pill">...</FloatingNav>
 
{/* さりげない丸 */}
<FloatingNav shape="rounded">...</FloatingNav>

コンポーネント構成

コンポーネント説明
FloatingNavルートコンテナ。位置とスタイリングを担当
FloatingNavLogoロゴ表示エリア。hrefでリンク化可能
FloatingNavGroupアイテムのグループ化
FloatingNavItemアイコンボタン + ツールチップ
FloatingNavAction右端のアクションエリア(Avatar等)
FloatingNavSeparatorグループ間の区切り線

Props

FloatingNav

PropTypeDefaultDescription
position'bottom' | 'top''bottom'表示位置
shape'pill' | 'rounded''pill'形状(pill: 完全な丸, rounded: さりげない丸)
classNamestring-追加のクラス名
childrenReactNode-子要素

FloatingNavItem

PropTypeDefaultDescription
iconstring-アイコン名(lucide-react)
labelstring-ツールチップに表示するラベル
hrefstring-リンク先URL
onClick() => void-クリックハンドラ
externalbooleanfalse外部リンクとして開く(target="_blank")
disabledbooleanfalse無効状態
PropTypeDefaultDescription
hrefstring-リンク先URL(省略可)
childrenReactNode-ロゴ要素(Imageなど)

FloatingNavAction

PropTypeDefaultDescription
childrenReactNode-アクション要素(Avatar, Button等)

デザインについて

このコンポーネントは以下の特徴を持っています:

  • backdrop-blur - 背景をぼかすことでフローティング感を演出
  • shape - pill(完全な丸)または default(さりげない丸)を選択可能
  • shadow-lg - 浮いている印象を与える影
  • z-50 - 他の要素より前面に表示

参考: Aceternity UI - Floating Dock, BuouUI - Floating Dock

On this page