Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Configure and use UnoCSS atomic CSS engine with presets like Wind (Tailwind-compatible), Icons, and Attributify.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/preset-icons.md
1---2name: preset-icons3description: Pure CSS icons using Iconify with any icon set4---56# Preset Icons78Use any icon as a pure CSS class, powered by Iconify.910## Installation1112```bash13pnpm add -D @unocss/preset-icons @iconify-json/[collection-name]14```1516Example: `@iconify-json/mdi` for Material Design Icons, `@iconify-json/carbon` for Carbon icons.1718```ts19import { defineConfig, presetIcons } from 'unocss'2021export default defineConfig({22presets: [23presetIcons(),24],25})26```2728## Usage2930Two naming conventions:31- `<prefix><collection>-<icon>` → `i-ph-anchor-simple-thin`32- `<prefix><collection>:<icon>` → `i-ph:anchor-simple-thin`3334```html35<!-- Phosphor anchor icon -->36<div class="i-ph-anchor-simple-thin" />3738<!-- Material Design alarm with color -->39<div class="i-mdi-alarm text-orange-400" />4041<!-- Large Vue logo -->42<div class="i-logos-vue text-3xl" />4344<!-- Dynamic: Sun in light mode, Moon in dark -->45<button class="i-carbon-sun dark:i-carbon-moon" />4647<!-- Hover effect -->48<div class="i-twemoji-grinning-face-with-smiling-eyes hover:i-twemoji-face-with-tears-of-joy" />49```5051Browse icons at [icones.js.org](https://icones.js.org/) or [Iconify](https://icon-sets.iconify.design/).5253## Icon Modes5455Icons automatically choose between `mask` (monochrome) and `background-img` (colorful).5657### Force Specific Mode5859- `?mask` - Render as mask (colorable with `currentColor`)60- `?bg` - Render as background image (preserves original colors)6162```html63<!-- Original with colors -->64<div class="i-vscode-icons:file-type-light-pnpm" />6566<!-- Force mask mode, apply custom color -->67<div class="i-vscode-icons:file-type-light-pnpm?mask text-red-300" />68```6970## Options7172```ts73presetIcons({74scale: 1.2, // Scale relative to font size75prefix: 'i-', // Class prefix (default)76mode: 'auto', // 'auto' | 'mask' | 'bg'77extraProperties: {78'display': 'inline-block',79'vertical-align': 'middle',80},81warn: true, // Warn on missing icons82autoInstall: true, // Auto-install missing icon sets83cdn: 'https://esm.sh/', // CDN for browser usage84})85```8687## Custom Icon Collections8889### Inline SVGs9091```ts92presetIcons({93collections: {94custom: {95circle: '<svg viewBox="0 0 120 120"><circle cx="60" cy="60" r="50"></circle></svg>',96},97}98})99```100101Usage: `<span class="i-custom:circle"></span>`102103### File System Loader104105```ts106import { FileSystemIconLoader } from '@iconify/utils/lib/loader/node-loaders'107108presetIcons({109collections: {110'my-icons': FileSystemIconLoader(111'./assets/icons',112svg => svg.replace(/#fff/, 'currentColor')113),114}115})116```117118### Dynamic Import (Browser)119120```ts121import presetIcons from '@unocss/preset-icons/browser'122123presetIcons({124collections: {125carbon: () => import('@iconify-json/carbon/icons.json').then(i => i.default),126}127})128```129130## Icon Customization131132```ts133presetIcons({134customizations: {135// Transform SVG136transform(svg, collection, icon) {137return svg.replace(/#fff/, 'currentColor')138},139// Global sizing140customize(props) {141props.width = '2em'142props.height = '2em'143return props144},145// Per-collection146iconCustomizer(collection, icon, props) {147if (collection === 'mdi') {148props.width = '2em'149}150}151}152})153```154155## CSS Directive156157Use `icon()` in CSS (requires transformer-directives):158159```css160.icon {161background-image: icon('i-carbon-sun');162}163.icon-colored {164background-image: icon('i-carbon-moon', '#fff');165}166```167168## Accessibility169170```html171<!-- With label -->172<a href="/profile" aria-label="Profile" class="i-ph:user-duotone"></a>173174<!-- Decorative -->175<a href="/profile">176<span aria-hidden="true" class="i-ph:user-duotone"></span>177My Profile178</a>179```180181<!--182Source references:183- https://unocss.dev/presets/icons184-->185