✨ We just launched fimo.ai - an AI Website Builder to create websites in minutes - Try it now

Strapi plugin logo for Strapi Lucide Icons

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.

Strapi Lucide Icons

Strapi Lucide Icons

NPM Version GitHub Stars Strapi v5 Compatible Translations Included Responsive


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

License

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

Install now

npm install strapi-lucide-icons

STATS

3 GitHub starsNot downloaded this week

Last updated

3 days ago

Strapi Version

5.36.0 and above

Author

github profile image for Hadjiu Sorin
Hadjiu Sorin

Useful links

Create your own plugin

Check out the available plugin resources that will help you to develop your plugin or provider and get it listed on the marketplace.