Resizable

隣接する作業領域の幅や高さを、利用者が調整する場合に使います。

プレビュー

一覧と詳細の分割

横方向の 40/60 比率から開始し、一覧と詳細の最小領域を確保します。

プレビューを読み込んでいます。

インストール

この Registry を初めて使う場合は、先に 基本設定と共通スタイルの導入 を完了してください。

npx shadcn@latest add @neumorphism-ui/resizable

共有 base を一度導入した後、CLI でコンポーネントと依存関係を追加します。

Registry JSON

使い方

ResizablePanelGroup の方向を指定し、パネル間に ResizableHandle を置きます。初期サイズと制限を設定し、外側の領域にもサイズを指定します。

"use client";

import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable";

export default function Example() {
  return (
    <div className="h-48">
      <ResizablePanelGroup orientation="horizontal">
        <ResizablePanel defaultSize="40%" minSize="20%"><div className="p-4">List</div></ResizablePanel>
        <ResizableHandle withHandle />
        <ResizablePanel defaultSize="60%" minSize="20%"><div className="p-4">Details</div></ResizablePanel>
      </ResizablePanelGroup>
    </div>
  );
}

API リファレンス

サイズ計算と separator のアクセシビリティは react-resizable-panels に任せます。ニューモーフィズムはパネル境界と handle の表面だけを担当します。

コンポーネントプロパティ型デフォルト説明
ResizablePanelGrouporientation"horizontal" | "vertical""horizontal"パネルの分割方向を指定します。
ResizablePaneldefaultSizenumber | string—初期パネルサイズを指定します。
ResizablePanelminSize / maxSizenumber | string—パネルが縮小・拡大できる範囲を制限します。
ResizableHandlewithHandlebooleanfalseseparator 中央に視覚的な grip を表示します。
ResizableHandledisabledbooleanfalseseparator を表示したままリサイズを無効にします。

アクセシビリティ

  • 01

    ResizableHandle はライブラリの separator 意味と現在値を使用するため、偽の slider を追加しません。

  • 02

    キーボード利用者は separator にフォーカスし、方向キーでパネルサイズを変更できます。

  • 03

    視覚的 grip は aria-hidden とし、操作の意味は separator 自体が担当します。