resizable
Nested layout with animated pill handles
Nested layout with animated pill handles
Загрузка превью…
src/resizable/c-resizable-8.vue
<script setup lang="ts">
import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable"
const verticalPillClasses =
"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"
const horizontalPillClasses =
"before:pointer-events-none before:absolute before:top-1/2 before:left-1/2 before:z-10 before:h-1 before:w-6 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:w-10 hover:before:bg-muted-foreground/40 active:before:h-1.5 active:before:w-12 active:before:bg-primary"
</script>
<template>
<div class="mx-auto w-full max-w-lg">
<ResizablePanelGroup direction="horizontal" class="rounded-2xl min-h-[300px] border">
<ResizablePanel :default-size="30" :min-size="15">
<div class="flex h-full items-center justify-center p-6">
<span class="text-sm font-semibold">Nav</span>
</div>
</ResizablePanel>
<ResizableHandle :class="verticalPillClasses" />
<ResizablePanel :default-size="70">
<ResizablePanelGroup direction="vertical">
<ResizablePanel :default-size="25">
<div class="flex h-full items-center justify-center p-6">
<span class="text-sm font-semibold">Toolbar</span>
</div>
</ResizablePanel>
<ResizableHandle :class="horizontalPillClasses" />
<ResizablePanel :default-size="75">
<div class="flex h-full items-center justify-center p-6">
<span class="text-sm font-semibold">Editor</span>
</div>
</ResizablePanel>
</ResizablePanelGroup>
</ResizablePanel>
</ResizablePanelGroup>
</div>
</template>
Установка
npx shadcn-vue@latest add https://revueui.rootapi.dev/r/c-resizable-8.jsonЗависимости реестра
Источник: порт из ReUI (Keenthemes, MIT)