SplitView
Layout
탭을 드래그해 화면을 분할하는 에디터형 패널 레이아웃.
Usage
VS Code처럼 탭을 드래그해 좌우·상하로 패널을 나누는 편집 화면 외부 목록 항목을 패널로 드래그해 새 탭으로 여는 화면
import
import
SplitView 하나만 가져오면 SplitView.Root · SplitView.DndProvider · SplitView.Panel · SplitView.TabBar · SplitView.Item · SplitView.DragSource · SplitView.Overlay · SplitView.DropZone 를 그 아래에서 쓸 수 있다.
예제를 복사해 쓸 때 필요한 준비
• @mildang/styled-system 은 이 저장소에서 Panda 가 생성하는 산출물이다. 저장소 안에서는 turbo run ship 이후 쓸 수 있고, 패키지 소비자는 자기 Panda 산출물이나 다른 레이아웃 수단으로 바꿔야 한다.
Anatomy
tsx
부품
필수 여부
반복
위치
SplitView.DndProvider
SplitView.Root
SplitView.DndProvider 안에 둔다.
SplitView.Panel
여러 개 가능
renderPanel이 반환하는 패널 콘텐츠를 감싼다.
SplitView.TabBar
SplitView.Panel 안에 둔다.
SplitView.Item
여러 개 가능
SplitView.TabBar 안에 둔다.
SplitView.DropZone
직접 배치하지 않는다 — Panel의 showSplitDropZones로 노출 여부만 제어한다.
SplitView.DragSource
SplitView.DndProvider 안, Root 바깥 어디든 둔다.
SplitView.Overlay
SplitView.DndProvider 안에 둔다.
- DndProvider로 감싸지 않은 Root·DragSource·Overlay는 드래그 상태를 공유하지 못한다.
- DropZone은 Panel이 자동으로 렌더하므로 직접 조립할 필요가 없다.
API Reference
SplitView.DndProvider
드래그 컨텍스트·레이아웃·아이템 배치 state를 자손에 공급한다. maxHorizontal·maxVertical로 분할 상한을 제어한다.
Prop
Type
Default
ReactNode
지정 안 함
PanelLayout
지정 안 함
() => string
지정 안 함
() => PanelId
지정 안 함
TItem[]
지정 안 함
number
DEFAULT_SPLIT_CONSTRAINTS.maxHorizontal
number
DEFAULT_SPLIT_CONSTRAINTS.maxVertical
() => void
지정 안 함
(event: SplitViewDragMoveEvent<TData>) => void
지정 안 함
(event: SplitViewDragStartEvent<TData>) => void
지정 안 함
(event: SplitViewDropEvent<TData>) => void
지정 안 함
(event: SplitViewTargetChangeEvent<TData>) => void
지정 안 함
SplitView.Panel
패널 영역 자체를 drop target으로 등록하고, 드래그 중 4방향 split drop zone을 노출한다.
Prop
Type
Default
ReactNode
지정 안 함
string
지정 안 함
() => void
지정 안 함
boolean
true
SplitView.TabBar
패널 상단의 탭 컨테이너이자 drop target이다.
Prop
Type
Default
ReactNode
지정 안 함
string
지정 안 함
string
지정 안 함
SplitView.Item
탭 하나를 표현한다. 드래그 소스이자 재정렬 target으로 동시에 동작한다.
Prop
Type
Default
TData
지정 안 함
string
지정 안 함
string
지정 안 함
ReactNode
지정 안 함
string
지정 안 함
number
지정 안 함
SplitView.DropZone
패널을 4방향으로 나누는 분할 드롭존이다. SplitView.Panel이 내부에서 자동으로 렌더한다.
Prop
Type
Default
SplitDirection
지정 안 함
string
지정 안 함
"bottom" | "left" | "right" | "top"
지정 안 함
SplitPosition
지정 안 함
string
지정 안 함
SplitView.DragSource
사이드바·팔레트처럼 SplitView 바깥에서 탭으로 끌어오는 드래그 소스다.
Prop
Type
Default
TData
지정 안 함
string
지정 안 함
ReactNode
지정 안 함
string
지정 안 함
CSSProperties
지정 안 함
SplitView.Overlay
드래그 중 커서 옆에 표시되는 고스트 프리뷰 슬롯이다.
Prop
Type
Default
ReactNode
지정 안 함
예제
기본 사용
왼쪽 목록의 아이템을 패널로 드래그하면 탭으로 열리고, 탭을 다시 드래그하면 패널이 분할된다.