resizable
Three-panel layout with animated pill handles
Three-panel layout with animated pill handles
Загрузка превью…
src/resizable/c-resizable-9.vue
<script setup lang="ts">
import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable"
const pillClasses =
"before:pointer-events-none before:absolute before:top-1/2 before:left-1/2 before:z-10 before:h-6 before:w-1 before:-translate-x-1/2 before:-translate-y-1/2 before:rounded-full before:bg-muted-foreground/25 before:transition-all before:duration-300 before:ease-[cubic-bezier(0.32,0.72,0,1)] hover:before:h-10 hover:before:bg-muted-foreground/40 active:before:h-12 active:before:w-1.5 active:before:bg-primary"
</script>
<template>
<div class="mx-auto w-full max-w-lg">
<ResizablePanelGroup direction="horizontal" class="rounded-2xl min-h-[200px] border">
<ResizablePanel :default-size="25" :min-size="15">
<div class="flex h-full items-center justify-center p-6">
<span class="text-sm font-semibold">Files</span>
</div>
</ResizablePanel>
<ResizableHandle :class="pillClasses" />
<ResizablePanel :default-size="50" :min-size="25">
<div class="flex h-full items-center justify-center p-6">
<span class="text-sm font-semibold">Editor</span>
</div>
</ResizablePanel>
<ResizableHandle :class="pillClasses" />
<ResizablePanel :default-size="25" :min-size="15">
<div class="flex h-full items-center justify-center p-6">
<span class="text-sm font-semibold">Preview</span>
</div>
</ResizablePanel>
</ResizablePanelGroup>
</div>
</template>
Установка
npx shadcn-vue@latest add https://revueui.rootapi.dev/r/c-resizable-9.jsonЗависимости реестра
Источник: порт из ReUI (Keenthemes, MIT)