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

strapi-lucide-icons

v1.8.0

Published

Lucide icon picker custom field for Strapi.

Downloads

603

Readme

Strapi Lucide Icons


Strapi Lucide Icons adds a custom field to Strapi so editors can pick any Lucide icon from a searchable list. The saved value is the icon name, so you can render it anywhere on the client side with lucide-react, lucide-svelte, lucide-vue, lucide-solid, or any other Lucide package.

✨ Features

  • Custom field: icon (string)
  • Full Lucide icon catalog with categories
  • Searchable dialog with icon preview
  • Light/Dark theme support
  • Responsive layout (mobile → desktop)
  • Built-in i18n with extensible translations

✅ Requirements

  • Strapi v5

🚀 Usage

  1. Install the plugin in your Strapi app.
  2. Enable the plugin.
  3. In Content-Type Builder, add the Lucide Icons custom field.
  4. Pick an icon and save.

The saved value is the icon name (e.g. alarm-clock, chart-no-axes-gantt).

🎨 Theme Support

Light theme

Light Theme

Dark theme

Dark Theme

📱 Responsive

The dialog layout adapts to smaller screens, stacking the category list and icon grid for a better mobile experience.

🌍 i18n (Translations)

This plugin ships with translations and can be extended from the host app.

Translation keys

strapi-lucide-icons.input.label
strapi-lucide-icons.input.description
strapi-lucide-icons.input.search
strapi-lucide-icons.input.search_placeholder
strapi-lucide-icons.input.empty
strapi-lucide-icons.input.selected
strapi-lucide-icons.input.none
strapi-lucide-icons.input.clear
strapi-lucide-icons.input.browse
strapi-lucide-icons.input.close
strapi-lucide-icons.input.showing
strapi-lucide-icons.form.attribute.item.requiredField
strapi-lucide-icons.form.attribute.item.requiredField.description
strapi-lucide-icons.form.attribute.item.privateField
strapi-lucide-icons.form.attribute.item.privateField.description

Extending translations in your Strapi app

Create or update the admin translations file and override any key:

./src/admin/translations/en.json

{
  "strapi-lucide-icons.input.browse": "Select",
  "strapi-lucide-icons.input.none": "No icon"
}

Restart the admin build to apply the new strings.

🧩 Client-side rendering (example)

Because the field stores only the icon name, you can render it on the client with any Lucide package.

React

import dynamicIconImports from 'lucide-react/dynamicIconImports';

export async function renderIcon(name: string) {
  const importer = dynamicIconImports[name];
  if (!importer) return null;
  const { default: Icon } = await importer();
  return <Icon size={18} />;
}

Svelte

import dynamicIconImports from 'lucide-svelte/dynamicIconImports';

const loadIcon = async (name: string) => {
  const importer = dynamicIconImports[name];
  if (!importer) return null;
  const { default: Icon } = await importer();
  return Icon;
};

📦 Installation

npm

npm i strapi-lucide-icons

yarn

yarn add strapi-lucide-icons

Support

If this project helped you, you can support me here:

Buy Me a Coffee

License

  • This project is licensed under the MIT License. See LICENSE.
  • It uses lucide-react (ISC). See THIRD_PARTY_LICENSES.md.