Sidebar 04
block sidebarFloating sidebar variant with rounded corners and inset margins. Uses Sidebar variant="floating" and SidebarMenuSub for nested routes. Sample data inlined so consumers edit routes in place.
Also available for React ->Installation
$ pnpm dlx shadcn-vue@latest add https://uipkge.dev/r/vue/sidebar-04.json$ npx shadcn-vue@latest add https://uipkge.dev/r/vue/sidebar-04.json$ yarn dlx shadcn-vue@latest add https://uipkge.dev/r/vue/sidebar-04.json$ bunx shadcn-vue@latest add https://uipkge.dev/r/vue/sidebar-04.json
Or with the named registry:
npx shadcn-vue@latest add @uipkge/sidebar-04
Examples
npm dependencies
Includes
Files (1)
-
app/components/blocks/sidebar-04/Sidebar04.vue 4.6 kB
<script setup lang="ts"> import { Sidebar, SidebarContent, SidebarGroup, SidebarHeader, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, } from '@/components/ui/sidebar' // This is sample data. const data = { navMain: [ { title: 'Getting Started', url: '#', items: [ { title: 'Installation', url: '#', }, { title: 'Project Structure', url: '#', }, ], }, { title: 'Building Your Application', url: '#', items: [ { title: 'Routing', url: '#', }, { title: 'Data Fetching', url: '#', isActive: true, }, { title: 'Rendering', url: '#', }, { title: 'Caching', url: '#', }, { title: 'Styling', url: '#', }, { title: 'Optimizing', url: '#', }, { title: 'Configuring', url: '#', }, { title: 'Testing', url: '#', }, { title: 'Authentication', url: '#', }, { title: 'Deploying', url: '#', }, { title: 'Upgrading', url: '#', }, { title: 'Examples', url: '#', }, ], }, { title: 'API Reference', url: '#', items: [ { title: 'Components', url: '#', }, { title: 'File Conventions', url: '#', }, { title: 'Functions', url: '#', }, { title: 'next.config.js Options', url: '#', }, { title: 'CLI', url: '#', }, { title: 'Edge Runtime', url: '#', }, ], }, { title: 'Architecture', url: '#', items: [ { title: 'Accessibility', url: '#', }, { title: 'Fast Refresh', url: '#', }, { title: 'Next.js Compiler', url: '#', }, { title: 'Supported Browsers', url: '#', }, { title: 'Turbopack', url: '#', }, ], }, { title: 'Community', url: '#', items: [ { title: 'Contribution Guide', url: '#', }, ], }, ], } </script> <template> <Sidebar variant="floating"> <SidebarHeader> <SidebarMenu> <SidebarMenuItem> <SidebarMenuButton size="lg" as-child> <a href="#"> <div class="bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg" > <svg viewBox="0 0 24 24" class="size-4" fill="currentColor" aria-hidden="true"> <rect x="2" y="2" width="9" height="9" rx="1.5" /> <rect x="13" y="2" width="9" height="9" rx="1.5" opacity="0.55" /> <rect x="2" y="13" width="9" height="9" rx="1.5" opacity="0.55" /> <rect x="13" y="13" width="9" height="9" rx="1.5" /> </svg> </div> <div class="flex flex-col gap-0.5 leading-none"> <span class="font-medium">uipkge</span> <span class="">v1.0.0</span> </div> </a> </SidebarMenuButton> </SidebarMenuItem> </SidebarMenu> </SidebarHeader> <SidebarContent> <SidebarGroup> <SidebarMenu class="gap-2"> <SidebarMenuItem v-for="item in data.navMain" :key="item.title"> <SidebarMenuButton as-child :is-active="item.isActive"> <a :href="item.url" class="font-medium"> {{ item.title }} </a> </SidebarMenuButton> <SidebarMenuSub v-if="item.items.length" class="ml-0 border-l-0 px-1.5"> <SidebarMenuSubItem v-for="childItem in item.items" :key="childItem.title"> <SidebarMenuSubButton as-child :is-active="childItem.isActive"> <a :href="childItem.url">{{ childItem.title }}</a> </SidebarMenuSubButton> </SidebarMenuSubItem> </SidebarMenuSub> </SidebarMenuItem> </SidebarMenu> </SidebarGroup> </SidebarContent> </Sidebar> </template>
Raw manifest: https://uipkge.dev/r/vue/sidebar-04.json