vue3-radial-list

Vue3 + TypeScript Radial list component
725
Install
npm install vue3-radial-list
Latest Version:0.1.0
Vue:3
Last Updated:Oct 26, 2025
Links: GitHub  ·  npm
Maintainer: peterbernstein

Vue3RadialList Circular Menu Logo

A Vue3Typescript component that displays a list of items in a circular layout.

Features

  • Circular arrangement of list items
  • Customizable radius and item size
  • Nested RadialLists
  • Responsive design

Installation

You can install RadialList via npm:

npm install vue3-radial-list

Usage

Import the RadialList component and use it in your Vue3 application:

Import RadialList component

import {RadialList} from "vue3-radial-list";
import type {RadialItem} from "vue3-radial-list";
import "vue3-radial-list/dist/vue3-radial-list.css"

Example Radial List Menu

<template>
  <div class="menu-wrapper">
    <RadialList :items="outerItems"
                :item-size="80"
                @select="onSelect">
      <RadialList :items="innerItems" @select="onSelect" :item-size="120">

      </RadialList>
    </RadialList>
  </div>
</template>

<script setup lang="ts">
import {RadialList} from "vue3-radial-list";
import type {RadialItem} from "vue3-radial-list";
import "vue3-radial-list/dist/vue3-radial-list.css"


interface Item {
  id: string
  label: string
  icon: string
}

const outerItems: Item[] = [
  { id: 'home', label: 'Home', icon: '🏠' },
  { id: 'search', label: 'Search', icon: 'πŸ”' },
  { id: 'settings', label: 'Settings', icon: 'βš™οΈ' },
  { id: 'help', label: 'Help', icon: '❓' },
  { id: 'logout', label: 'Logout', icon: 'πŸšͺ' },
  { id: 'info', label: 'Info', icon: 'ℹ️' }
]

const innerItems: Item[] = [
  { id: 'profile', label: 'Profile', icon: 'πŸ‘€' },
    { id: 'search', label: 'Search', icon: 'πŸ”' },
  { id: 'settings', label: 'Settings', icon: 'βš™οΈ' },
  { id: 'camera', label: 'Camera', icon: 'πŸ“·' },
  { id: 'music', label: 'Music', icon: '🎡' },
    { id: 'help', label: 'Help', icon: '❓' },
  { id: 'chat', label: 'Chat', icon: 'πŸ’¬' }
]

function onSelect(payload:{ item: RadialItem, index: number, event: Event }) {
  console.log(`Clicked on ${payload.item.label}`)
}
</script>

<style scoped>
.menu-wrapper {
  width: 100%;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  background: radial-gradient(circle at center, #fdfdfd, #eaeaea);
}
</style>

Related Packages

wkjp-list-page

Vue2 + ElementUI CommonListPage component

9,010
@vuecs/list

Compound list components for vuecs (List / Header / Body / Item / ItemText / Ite...

6,828 4
vue3-low-req

前端js η»„δ»ΆεΊ“οΌŒεΏ«ζ·εΌ€ε‘γ€η»„δ»Άε°θ£…

3,879

Version History

Version Released Vue License
0.1.0 ^3.0.0
0.0.1 ^3.0.0