A clean and friendly icon family for Vue, too!
npm install @phosphor-icons/vue> ATTENTION: As part of a major update, we will be replacing the existing phosphor-vue package with @phosphor-icons/vue. We recommend using this new version, as it has improved performance and significantly smaller bundle size. No APIs have been changed, so drop-in replacement should be straightforward. The legacy package will continue to recieve maintenance, but will not be updated with new icons upstream. Take me to the legacy version ➜

Phosphor is a flexible icon family for interfaces, diagrams, presentations — whatever, really. Explore all our icons at phosphoricons.com.
  




Check out our playground in StackBlitz and start experimenting!

``bash`
yarn add @phosphor-icons/vue
or
`bash`
npm install @phosphor-icons/vue
`html
`
Allthough we strongly advise against installing your icons globally, you can do so by registering it in your app as follows:
`typescript
import { createApp } from 'vue'
import App from './App.vue'
import PhosphorIcons from "@phosphor-icons/vue"
let app = createApp(App)
app.use(PhosphorIcons)
app.mount('#app')
`
> Why do we advise against global installs?
>
> Bundlers such as Vite and Webpack rely on ESM imports to do tree-shaking. When you install entire library globally, you lose the ability to do tree-shaking, since all components are registered within vue, and the bundler cannot know which components are actually used in your app.
Icon components accept all attributes that you can pass to a normal SVG element, including inline height/width, x/y, opacity, plus @click and other v-on handlers. The main way of styling them will usually be with the following props:
- color?: string – Icon stroke/fill color. Can be any CSS color string, including hex, rgb, rgba, hsl, hsla, named colors, or the special currentColor variable.number | string
- size?: – Icon height & width. As with standard React elements, this can be a number, or a string with units in px, %, em, rem, pt, cm, mm, in."thin" | "light" | "regular" | "bold" | "fill" | "duotone"
- weight?: – Icon weight/style. Can be used, for example, to "toggle" an icon's state: a rating component could use Stars with weight="regular" to denote an empty star, and weight="fill" to denote a filled star.boolean
- mirrored?: – Flip the icon horizontally. Can be useful in RTL languages where normal icon orientation is not appropriate.
Phosphor takes advantage of Vue's provide/inject options to make applying a default style to all icons simple. Create a provide object or function at the root of the app (or anywhere above the icons in the tree) that returns a configuration object with props to be applied by default to all icons below it in the tree:
`html
`
You may create multiple providers for styling icons differently in separate regions of an application; icons use the nearest provider above them to determine their style.
Note: The color, size, weight, and mirrored properties are all _optional_ props when creating a context, but default to "currentColor", "1em", "regular" and false.
Components have a for arbitrary SVG elements, so long as they are valid children of the
The following will cause the Cube icon to rotate and pulse:
`html`
values="0;1;0"
dur="4s"
repeatCount="indefinite"
/>
attributeType="XML"
type="rotate"
dur="5s"
from="0 0 0"
to="360 0 0"
repeatCount="indefinite"
/>
Note: The coordinate space of slotted elements is relative to the contents of the icon viewBox, which is a 256x256 square. Only valid SVG elements will be rendered.
This repository leverages git-submodules to stay up-to-date with the phosphor-icons/core repository, which means that for local developoment, you'll need to clone this repository with the --recurse-submodules git clone flag.
After you've successfully cloned the repository, you will find a core directory containing the aforementioned core repository.
Now you can install all local dependencies with npm install and start developing.
/bin: Holds the assembly script, which uses the raw SVG icon files from the core directory to assemble all Vue components
/core: Git submodule directory for the core repository
/dist: Will be created upon building the library and holds all dist bundles
/node_modules: You should know by now what this directory is about
/src: Holds the entry point for this library
To assemble the Vue components you will need to run npm run assemble. This will loop through all icons in the /core/assets directory and create all Vue components including all weights and configuration props. These Vue components are then saved under /src/components which will then be used by the bundler to create the final package bundle.
NOTE: Upon cloning this repository, the /src/components directory does not exist yet. You will first need to run the assemble` script for this directory to be generated.
- phosphor-home ▲ Phosphor homepage and general info
- phosphor-react ▲ Phosphor icon component library for React
- phosphor-icons ▲ Phosphor icons for Vanilla JS
- phosphor-flutter ▲ Phosphor IconData library for Flutter
- phosphor-webcomponents ▲ Phosphor icons as Web Components
- phosphor-figma ▲ Phosphor icons Figma plugin
- phosphor-sketch ▲ Phosphor icons Sketch plugin
- phosphor-react-native ▲ Phosphor icon component library for React Native
- phosphor-svelte ▲ Phosphor icons for Svelte apps
- phosphor-r ▲ Phosphor icon wrapper for R documents and applications
- blade-phosphor-icons ▲ Phosphor icons in your Laravel Blade views
- ruby-phosphor-icons ▲ Phosphor icons for Ruby and Rails applications