Skip to content

Get Started

An interactive 3D icon cloud. Supports both images and SVG.

Install

Install packages using your favorite package manager

$ pnpm install vue-icon-cloud
$ npm install vue-icon-cloud
$ yarn add vue-icon-cloud

Usage

You can use the images prop to pass in an array of image URLs.

<template>
  <IconCloud
    :images="images"
  ></IconCloud>
</template>
<script setup lang="ts">
import IconCloud from 'vue-icon-cloud'

const slugs = ref([
  "typescript", "javascript", "dart", "react", "flutter", "android", "html5", "css3", 
  "nodedotjs", "express", "nextdotjs", "prisma", "postgresql", "firebase", "nginx", 
  "vercel", "testinglibrary", "jest", "cypress", "docker", "git", "jira", "github", 
  "gitlab", "androidstudio", "sonarqube", "figma"
])

const images = computed(() => {
  return slugs.value.map(
    (slug) => `https://cdn.simpleicons.org/${slug}/${slug}`,
  );
})
</script>

Or you can use the icons prop to pass in an array of SVG icons.

<template>
  <IconCloud :icons="[Icon1, Icon2, Icon3, Icon4, Icon5]" />
</template>
<script setup lang="ts">
import IconCloud from 'vue-icon-cloud'
import Icon1 from 'path/to/icon1.svg'
import Icon2 from 'path/to/icon2.svg'
import Icon3 from 'path/to/icon3.svg'
import Icon4 from 'path/to/icon4.svg'
import Icon5 from 'path/to/icon5.svg'
</script>

Recommended to use unplugin/unplugin-icons, which support using the large number of icons provided by iconify.

<template>
  <IconCloud
    :icons="[
      IconSvelte,IconAwesome,
      IconZig,IconGit,
      IconAstro,IconDocker,
      IconReact,IconNuxt,IconGo,
      IconVscode,IconSolidjs,IconGithubCopilot,
    ]"
  />
</template>
<script setup lang="ts">
import IconSvelte from '~icons/logos/svelte-icon'
import IconAwesome from '~icons/logos/awesome'
import IconZig from '~icons/logos/zig'
import IconAstro from '~icons/logos/astro-icon'
import IconDocker from '~icons/logos/docker'
import IconGit from '~icons/logos/git'
import IconReact from '~icons/logos/react'
import IconNuxt from '~icons/logos/nuxt'
import IconGo from '~icons/logos/go'
import IconVscode from '~icons/logos/visual-studio-code'
import IconSolidjs from '~icons/logos/solidjs-icon'
import IconGithubCopilot from '~icons/logos/github-copilot'

import IconCloud from 'vue-icon-cloud'
</script>

You can also control the size of the svg. The iconStyle property will directly apply to the <svg> element.

<template>
  <IconCloud
    :icons="[
      IconSvelte,IconAwesome,IconNuxtIcon,
      IconAstro,IconGit,IconReact,IconGo,
      IconVscode,IconSolidjs,IconGithubCopilot,
      IconHomeBrew,
    ]"
    :iconStyle="{
      'font-size': '40px',
    }"
  />
</template>
<script setup lang="ts">
import IconSvelte from '~icons/logos/svelte-icon'
import IconAwesome from '~icons/logos/awesome'
import IconNuxtIcon from '~icons/logos/nuxt-icon'
import IconAstro from '~icons/logos/astro-icon'
import IconGit from '~icons/logos/git'
import IconReact from '~icons/logos/react'
import IconGo from '~icons/logos/go'
import IconVscode from '~icons/logos/visual-studio-code'
import IconSolidjs from '~icons/logos/solidjs-icon'
import IconGithubCopilot from '~icons/logos/github-copilot'
import IconHomeBrew from '~icons/logos/homebrew'

import IconCloud from 'vue-icon-cloud'
</script>

Released under the MIT License.