Observed since 20 Oct, 22:34 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
@0x30-ch/iconify-field
Custom iconify selection field with library selection in settings
A powerful Strapi 5 plugin that provides a custom iconify selection field with configurable icon libraries and advanced search capabilities.
npm install @0x30-ch/iconify-field
# or
yarn add @0x30-ch/iconify-field
# or
pnpm add @0x30-ch/iconify-field
Navigate to Settings > Iconify Field in your Strapi admin panel to configure:
Add the iconify field to your content types
Once configured, the iconify field appears as a searchable icon picker in your content type forms:
Access icon data in your code:
// Example API response
{
"data": {
"id": 1,
"icon": {"icon":"lucide:door-closed","set":"lucide","name":"door-closed"}, // Icon identifier
"title": "Homepage",
// ... other fields
}
}
Use the icon data in your frontend:
// React example
import { Icon } from '@iconify/react';
function MyComponent({ iconData }) {
return (
<div>
<Icon icon={iconData.icon.icon} width="24" height="24" />
<span>{iconData.title}</span>
</div>
);
}
<!-- Vue example -->
<template>
<div>
<Icon :icon="iconData.icon.icon" width="24" height="24" />
<span>{{ iconData.title }}</span>
</div>
</template>
<script setup>
import { Icon } from '@iconify/vue';
</script>
# Clone and install dependencies
git clone <repository-url>
cd strapi-iconify-field
pnpm install
# Start development
pnpm dev
# Build plugin
pnpm build
# Type checking
pnpm test:ts:front # Frontend types
pnpm test:ts:back # Backend types
packages/iconify-field/
├── admin/ # Frontend React components
│ ├── src/
│ │ ├── components/ # UI components
│ │ ├── pages/ # Admin pages (Settings)
│ │ ├── translations/ # i18n files
│ │ ├── utils/ # Utilities
│ │ └── index.ts # Plugin entry point
│ └── tsconfig.json
├── server/ # Backend logic
│ ├── src/
│ │ ├── controllers/ # API controllers
│ │ ├── services/ # Business logic
│ │ ├── routes/ # Route definitions
│ │ ├── config/ # Plugin config
│ │ └── index.ts # Server entry point
│ └── tsconfig.json
├── package.json
└── README.md
GET /iconify-field/icon-sets - Get available icon setsGET /iconify-field/icons - Get icons with paginationGET /iconify-field/icons/search - Search iconsGET /iconify-field/icons/:setId/popular - Get popular icons for a setGET /iconify-field/icons/:iconId - Get specific icon dataPOST /iconify-field/icons/validate - Validate icon existenceGET /iconify-field/settings - Get plugin settingsPUT /iconify-field/settings - Update plugin settingsGET /iconify-field/settings/enabled-sets - Get enabled icon setsgit checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)MIT License - see LICENSE file for details.
Made with ❤️ for the Strapi community
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
@iconify/reactEnvironment{
"local_name": "@iconify/react",
"alias": false,
"peer_metadata": null
} | ^6.0.2 | runtime |
@iconify/utilsEnvironment{
"local_name": "@iconify/utils",
"alias": false,
"peer_metadata": null
} | ^3.1.0 | runtime |
axiosEnvironment{
"local_name": "axios",
"alias": false,
"peer_metadata": null
} | ^1.13.2 | runtime |
react-intlEnvironment{
"local_name": "react-intl",
"alias": false,
"peer_metadata": null
} | ^7.1.11 | runtime |
@strapi/sdk-pluginEnvironment{
"local_name": "@strapi/sdk-plugin",
"alias": false,
"peer_metadata": null
} | ^5.3.2 | development |
@strapi/strapiEnvironment{
"local_name": "@strapi/strapi",
"alias": false,
"peer_metadata": null
} | ^5.31.3 | development |
@strapi/typescript-utilsEnvironment{
"local_name": "@strapi/typescript-utils",
"alias": false,
"peer_metadata": null
} | ^5.31.3 | development |
@types/jestEnvironment{
"local_name": "@types/jest",
"alias": false,
"peer_metadata": null
} | ^30.0.0 | development |
prettierEnvironment{
"local_name": "prettier",
"alias": false,
"peer_metadata": null
} | ^3.6.2 | development |
typescriptEnvironment{
"local_name": "typescript",
"alias": false,
"peer_metadata": null
} | ^5.8.3 | development |
@strapi/sdk-pluginEnvironment{
"local_name": "@strapi/sdk-plugin",
"alias": false,
"peer_metadata": null
} | ^5.3.2 | peer |
@strapi/strapiEnvironment{
"local_name": "@strapi/strapi",
"alias": false,
"peer_metadata": null
} | ^5.18.1 | peer |
@strapi/design-systemEnvironment{
"local_name": "@strapi/design-system",
"alias": false,
"peer_metadata": null
} | ^2.0.0 | peer |
@strapi/iconsEnvironment{
"local_name": "@strapi/icons",
"alias": false,
"peer_metadata": null
} | ^2.0.0 | peer |
reactEnvironment{
"local_name": "react",
"alias": false,
"peer_metadata": null
} | ^18.3.1 | peer |
react-domEnvironment{
"local_name": "react-dom",
"alias": false,
"peer_metadata": null
} | ^18.3.1 | peer |
react-router-domEnvironment{
"local_name": "react-router-dom",
"alias": false,
"peer_metadata": null
} | ^6.30.1 | peer |
styled-componentsEnvironment{
"local_name": "styled-components",
"alias": false,
"peer_metadata": null
} | ^6.1.19 | peer |
Source distribution
{
"integrity": "sha512-GcJ9EPSUhTmoRB+03xMIHY7j7Ldij9vhvD07Ejh1LDqdnI6DgTIQTeRQGet4lLvunxuZNrJk79ZBjMHgKsOazw==",
"shasum": "ad84d2c8416f0c106e30bdec6b541d4cb9a2d1bf",
"tarball": "https://registry.npmjs.org/@0x30-ch/iconify-field/-/iconify-field-1.0.1.tgz",
"fileCount": 260,
"unpackedSize": 65442580,
"signatures": [
{
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U",
"sig": "MEYCIQCfIVxpVnpKrkx1jzq5nb7XNe6ld11lTvkGxRRK2kb7SQIhAKu8xog/48f9KaxK1GrquL0ZIJgGbH+db2G5Kl3R4nRf"
}
]
}Observed since 20 Oct, 22:34 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:6f2f0d34b0b2a235fb3085b81cc42ca94240aa5d2cc0b20f20a9e8d4f11468b0