Docs
Resizable
Resizable
Accessible resizable panel groups and layouts with keyboard support.
Loading...
<script lang="ts">
import * as Resizable from "$lib/components/ui/resizable/index.js";
</script>
<Resizable.PaneGroup direction="horizontal" class="max-w-md rounded-lg border">
<Resizable.Pane defaultSize={50}>
<div class="flex h-[200px] items-center justify-center p-6">
<span class="font-semibold">One</span>
</div>
</Resizable.Pane>
<Resizable.Handle />
<Resizable.Pane defaultSize={50}>
<Resizable.PaneGroup direction="vertical">
<Resizable.Pane defaultSize={25}>
<div class="flex h-full items-center justify-center p-6">
<span class="font-semibold">Two</span>
</div>
</Resizable.Pane>
<Resizable.Handle />
<Resizable.Pane defaultSize={75}>
<div class="flex h-full items-center justify-center p-6">
<span class="font-semibold">Three</span>
</div>
</Resizable.Pane>
</Resizable.PaneGroup>
</Resizable.Pane>
</Resizable.PaneGroup>
<script lang="ts">
import * as Resizable from "$lib/components/ui/resizable/index.js";
</script>
<Resizable.PaneGroup direction="horizontal" class="max-w-md rounded-lg border">
<Resizable.Pane defaultSize={50}>
<div class="flex h-[200px] items-center justify-center p-6">
<span class="font-semibold">One</span>
</div>
</Resizable.Pane>
<Resizable.Handle />
<Resizable.Pane defaultSize={50}>
<Resizable.PaneGroup direction="vertical">
<Resizable.Pane defaultSize={25}>
<div class="flex h-full items-center justify-center p-6">
<span class="font-semibold">Two</span>
</div>
</Resizable.Pane>
<Resizable.Handle />
<Resizable.Pane defaultSize={75}>
<div class="flex h-full items-center justify-center p-6">
<span class="font-semibold">Three</span>
</div>
</Resizable.Pane>
</Resizable.PaneGroup>
</Resizable.Pane>
</Resizable.PaneGroup>
About
The Resizable
component is built on top of PaneForge by Huntabyte. Visit the PaneForge documentation for all the available props and abilities of the Resizable
component.
Installation
npx shadcn-svelte@latest add resizable
Usage
<script lang="ts">
import * as Resizable from "$lib/components/ui/resizable";
</script>
<Resizable.PaneGroup direction="horizontal">
<Resizable.Pane>One</Resizable.Pane>
<Resizable.Handle />
<Resizable.Pane>Two</Resizable.Pane>
</Resizable.PaneGroup>
Examples
Vertical
Use the direction
prop to set the direction of the resizable panels.
Loading...
<script lang="ts">
import * as Resizable from "$lib/components/ui/resizable/index.js";
</script>
<Resizable.PaneGroup
direction="vertical"
class="min-h-[200px] max-w-md rounded-lg border"
>
<Resizable.Pane defaultSize={25}>
<div class="flex h-full items-center justify-center p-6">
<span class="font-semibold">Header</span>
</div>
</Resizable.Pane>
<Resizable.Handle />
<Resizable.Pane defaultSize={75}>
<div class="flex h-full items-center justify-center p-6">
<span class="font-semibold">Content</span>
</div>
</Resizable.Pane>
</Resizable.PaneGroup>
<script lang="ts">
import * as Resizable from "$lib/components/ui/resizable/index.js";
</script>
<Resizable.PaneGroup
direction="vertical"
class="min-h-[200px] max-w-md rounded-lg border"
>
<Resizable.Pane defaultSize={25}>
<div class="flex h-full items-center justify-center p-6">
<span class="font-semibold">Header</span>
</div>
</Resizable.Pane>
<Resizable.Handle />
<Resizable.Pane defaultSize={75}>
<div class="flex h-full items-center justify-center p-6">
<span class="font-semibold">Content</span>
</div>
</Resizable.Pane>
</Resizable.PaneGroup>
<script lang="ts">
import * as Resizable from "$lib/components/ui/resizable";
</script>
<Resizable.PaneGroup direction="vertical">
<Resizable.Pane>One</Resizable.Pane>
<Resizable.Handle />
<Resizable.Pane>Two</Resizable.Pane>
</Resizable.PaneGroup>
Handle
You can set or hide the handle by using the withHandle
prop on the ResizableHandle
component.
Loading...
<script lang="ts">
import * as Resizable from "$lib/components/ui/resizable/index.js";
</script>
<Resizable.PaneGroup
direction="horizontal"
class="min-h-[200px] max-w-md rounded-lg border"
>
<Resizable.Pane defaultSize={25}>
<div class="flex h-full items-center justify-center p-6">
<span class="font-semibold">Sidebar</span>
</div>
</Resizable.Pane>
<Resizable.Handle withHandle />
<Resizable.Pane defaultSize={75}>
<div class="flex h-full items-center justify-center p-6">
<span class="font-semibold">Content</span>
</div>
</Resizable.Pane>
</Resizable.PaneGroup>
<script lang="ts">
import * as Resizable from "$lib/components/ui/resizable/index.js";
</script>
<Resizable.PaneGroup
direction="horizontal"
class="min-h-[200px] max-w-md rounded-lg border"
>
<Resizable.Pane defaultSize={25}>
<div class="flex h-full items-center justify-center p-6">
<span class="font-semibold">Sidebar</span>
</div>
</Resizable.Pane>
<Resizable.Handle withHandle />
<Resizable.Pane defaultSize={75}>
<div class="flex h-full items-center justify-center p-6">
<span class="font-semibold">Content</span>
</div>
</Resizable.Pane>
</Resizable.PaneGroup>
<script lang="ts">
import * as Resizable from "$lib/components/ui/resizable";
</script>
<Resizable.PaneGroup direction="vertical">
<Resizable.Pane>One</Resizable.Pane>
<Resizable.Handle withHandle />
<Resizable.Pane>Two</Resizable.Pane>
</Resizable.PaneGroup>
On This Page