npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@rootnative/icons

v0.0.0-alpha.14

Published

Icon library adapters for RootNative — Lucide, Phosphor, and @expo/vector-icons resolvers with MDI-name compatibility.

Downloads

1,262

Readme

@rootnative/icons

Icon-library adapters for RootNative UI. Pre-built iconResolver factories that route string icon names (leadingIcon="check") to the icon library of your choice — Lucide, Phosphor, any @expo/vector-icons set, or your own resolver.

Install

pnpm add @rootnative/icons

Then install the icon library you actually use — each is an optional peer dependency, so nothing is pulled in until you pick one:

pnpm add lucide-react-native      # for createLucideResolver
pnpm add phosphor-react-native    # for createPhosphorResolver
pnpm add @expo/vector-icons       # for createVectorIconsResolver

Adapters

| Helper | For | |--------|-----| | createLucideResolver({ icons }) | Lucide (lucide-react-native) | | createPhosphorResolver({ icons }) | Phosphor (phosphor-react-native) | | createVectorIconsResolver({ IconSet }) | Any @expo/vector-icons set (Ionicons, FontAwesome, …) | | withLegacyMdiFallback(resolver) | Wrap any custom resolver to add MDI-name compatibility |

Each adapter returns an IconResolver you pass straight to ThemeProvider from @rootnative/core.

Quick start (Lucide)

import { ThemeProvider } from '@rootnative/core'
import { createLucideResolver } from '@rootnative/icons'
import { Check, Search, ArrowRight, Heart } from 'lucide-react-native'

const resolver = createLucideResolver({
  icons: {
    check: Check,
    search: Search,
    'arrow-right': ArrowRight,
    heart: Heart,
  },
  mdiCompat: true, // accept legacy MDI names like "magnify", "delete"
  strokeWidth: 1.75, // optional — Lucide default is 2
})

export default function App() {
  return (
    <ThemeProvider iconResolver={resolver}>
      {/* String icon names now render through Lucide */}
    </ThemeProvider>
  )
}

Phosphor

import { createPhosphorResolver } from '@rootnative/icons'
import { Check, MagnifyingGlass, ArrowRight } from 'phosphor-react-native'

const resolver = createPhosphorResolver({
  icons: { Check, MagnifyingGlass, ArrowRight },
  weight: 'regular', // 'thin' | 'light' | 'regular' | 'bold' | 'fill' | 'duotone'
  mdiCompat: true,
})

@expo/vector-icons

Use a different vector-icon set than the default MaterialCommunityIcons, with an optional alias map:

import { Ionicons } from '@expo/vector-icons'
import { createVectorIconsResolver } from '@rootnative/icons'

const resolver = createVectorIconsResolver({
  IconSet: Ionicons,
  aliases: {
    check: 'checkmark',
    'arrow-right': 'arrow-forward',
  },
})

Names you don't alias are forwarded to the icon set verbatim.

MDI compatibility

mdiCompat: true enables a curated alias map so legacy MaterialCommunityIcons names keep working after switching libraries (magnifysearch, deletetrash-2, dots-verticalmore-vertical, …). Pass an object to extend or suppress entries:

mdiCompat: { magnify: 'binoculars', pencil: null }

For hand-rolled resolvers (SF Symbols, custom SVGs), wrap with withLegacyMdiFallback to get the same alias behavior:

import { withLegacyMdiFallback } from '@rootnative/icons'

const resolver = withLegacyMdiFallback(myResolver, { target: 'lucide' })

The base resolver is always tried first; the alias map is only consulted when it returns null.

Missing icons

When a name isn't found, the resolver console.warns once per missing name. Override with onMissing: 'silent' to mute, or pass another IconResolver to chain as a fallback.

Note: some components render system icons of their own (Checkbox uses check; Chip uses check and close). Map those names in your resolver, or the built-in mdiCompat map covers them.

Exports

  • createLucideResolver / LucideIconComponent / LucideResolverOptions
  • createPhosphorResolver / PhosphorIconComponent / PhosphorIconWeight / PhosphorResolverOptions
  • createVectorIconsResolver / VectorIconSet / VectorIconsResolverOptions
  • withLegacyMdiFallback / LegacyMdiTarget / WithLegacyMdiFallbackOptions
  • mdiToLucideAliases / mdiToPhosphorAliases — the raw alias maps
  • IconResolver / IconRenderProps — re-exported from @rootnative/core for convenience

Docs

Full guide (per-call icons, SF Symbols, custom SVGs): https://rootnative.github.io/ui/icons

LLM-optimized reference: https://rootnative.github.io/ui/llms-full.txt — or read node_modules/@rootnative/icons/llms.txt for the exact installed version.

License

MIT