Editor split
Let readers allocate space between a file list and an editor.
Components / Layout
Keyboard- and pointer-resizable horizontal or vertical panel groups.
Explorer
<script setup>
const project = ref('Aurora')
const ready = computed(() => true)
</script>Aurora preview
Live workspace panel
Let readers allocate space between a file list and an editor.
Resize source and preview panes while preserving minimum useful widths.
<ResizableGroup class="h-64" orientation="horizontal">
<ResizablePanel :default-size="35">Navigation</ResizablePanel>
<ResizableHandle aria-label="Resize navigation" />
<ResizablePanel :default-size="65">
<ResizableGroup class="h-full w-full" orientation="vertical">
<ResizablePanel :default-size="55">Editor</ResizablePanel>
<ResizableHandle aria-label="Resize editor and preview" />
<ResizablePanel :default-size="45">Preview</ResizablePanel>
</ResizableGroup>
</ResizablePanel>
</ResizableGroup>Default percentages add up to the available group space.
<script setup lang="ts">
import ResizableGroup from './components/ui/resizable/ResizableGroup.vue'
import ResizableHandle from './components/ui/resizable/ResizableHandle.vue'
import ResizablePanel from './components/ui/resizable/ResizablePanel.vue'
</script>
<template>
<ResizableGroup class="h-80" orientation="horizontal">
<ResizablePanel :default-size="30" :min-size="20">Files</ResizablePanel>
<ResizableHandle aria-label="Resize file list" />
<ResizablePanel :default-size="70" :min-size="35">Editor</ResizablePanel>
</ResizableGroup>
</template>The same contract also works from top to bottom.
<script setup lang="ts">
import ResizableGroup from './components/ui/resizable/ResizableGroup.vue'
import ResizableHandle from './components/ui/resizable/ResizableHandle.vue'
import ResizablePanel from './components/ui/resizable/ResizablePanel.vue'
</script>
<template>
<ResizableGroup class="h-96" orientation="vertical" :default-value="[60, 40]">
<ResizablePanel :min-size="25">Preview</ResizablePanel>
<ResizableHandle aria-label="Resize preview and logs" />
<ResizablePanel :min-size="20">Build logs</ResizablePanel>
</ResizableGroup>
</template>The most useful props, models, slots, events, and methods for this component.
| Name | Type | Default or requirement |
|---|---|---|
v-model / defaultValue | number[] | panel defaults |
orientation | horizontal | vertical | horizontal |
direction | ltr | rtl | ltr |
Panel minSize / maxSize | number, percent | 10 / 100 |
Handles expose separator values and support arrows, Home, End, Enter, pointer dragging, nesting, and collapsible constraints.