{"_id":"@0x30-ch/iconify-field","_rev":"2-2a2bc34a754394b7b1005bf376b1a9e6","name":"@0x30-ch/iconify-field","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@0x30-ch/iconify-field","version":"1.0.0","keywords":[],"license":"MIT","_id":"@0x30-ch/iconify-field@1.0.0","maintainers":[{"name":"monsieurjanvier","email":"damien.grossfeld@gmail.com"}],"dist":{"shasum":"6bdf9774f5e3cae34b6015c3c9d30b286d7ac95c","tarball":"https://registry.npmjs.org/@0x30-ch/iconify-field/-/iconify-field-1.0.0.tgz","fileCount":62,"integrity":"sha512-Js89DbObQJ4vigBw8bcqqdThidSAidY/qMpV5FDAQ0Mu1giVd28yZnnL4XutSy/DmuFfeip9ubtbQhatzkPdgA==","signatures":[{"sig":"MEYCIQC4wTAVcon2Ed2HBgQPvRtGhmGB9w5RWhSt9F8WefFzugIhALMcWhUwxisxs4A403dz3HfKt2z8dv/Pf3PgmRHXh8y6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1795596},"type":"commonjs","strapi":{"kind":"plugin","name":"iconify-field","description":"Custom iconify selection field with library selection in settings","displayName":"Iconify custom field"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"d690c948b298592569f9cd30d807fdc7d0bf24cd","scripts":{"dev":"strapi-plugin watch","build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json"},"_npmUser":{"name":"monsieurjanvier","email":"damien.grossfeld@gmail.com"},"_npmVersion":"10.9.3","description":"Custom iconify selection field with library selection in settings","directories":{},"_nodeVersion":"22.18.0","dependencies":{"axios":"^1.7.9","react-intl":"^7.1.11","@strapi/icons":"^2.0.0-rc.29","@iconify/react":"^5.0.2","@iconify/utils":"^2.2.1","@strapi/design-system":"^2.0.0-rc.29"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.6.2","react-dom":"^18.3.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/react":"^19.1.10","@strapi/strapi":"^5.23.0","@types/react-dom":"^19.1.7","react-router-dom":"^6.30.1","styled-components":"^6.1.19","@strapi/sdk-plugin":"^5.3.2","@strapi/typescript-utils":"^5.23.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.23.0","react-router-dom":"^6.30.1","styled-components":"^6.1.19","@strapi/sdk-plugin":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/iconify-field_1.0.0_1756023520556_0.7565340975386439","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"version":"1.0.1","keywords":[],"type":"commonjs","exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","source":"./admin/src/index.ts","import":"./dist/admin/index.mjs","require":"./dist/admin/index.js","default":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","source":"./server/src/index.ts","import":"./dist/server/index.mjs","require":"./dist/server/index.js","default":"./dist/server/index.js"}},"scripts":{"build":"strapi-plugin build","dev":"strapi-plugin watch","watch":"strapi-plugin watch","watch:link":"strapi-plugin watch:link","verify":"strapi-plugin verify","test:ts:front":"run -T tsc -p admin/tsconfig.json","test:ts:back":"run -T tsc -p server/tsconfig.json"},"dependencies":{"@iconify/react":"^6.0.2","@iconify/utils":"^3.1.0","axios":"^1.13.2","react-intl":"^7.1.11"},"devDependencies":{"@strapi/sdk-plugin":"^5.3.2","@strapi/strapi":"^5.31.3","@strapi/typescript-utils":"^5.31.3","@types/jest":"^30.0.0","prettier":"^3.6.2","typescript":"^5.8.3"},"peerDependencies":{"@strapi/sdk-plugin":"^5.3.2","@strapi/strapi":"^5.18.1","@strapi/design-system":"^2.0.0","@strapi/icons":"^2.0.0","react":"^18.3.1","react-dom":"^18.3.1","react-router-dom":"^6.30.1","styled-components":"^6.1.19"},"strapi":{"kind":"plugin","name":"iconify-field","displayName":"Iconify custom field","description":"Custom iconify selection field with library selection in settings"},"name":"@0x30-ch/iconify-field","description":"Custom iconify selection field with library selection in settings","license":"MIT","_id":"@0x30-ch/iconify-field@1.0.1","gitHead":"4cbe5e6adecc7feecdabfe3d64ec911f77b5a7ba","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"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"}]},"_npmUser":{"name":"monsieurjanvier","email":"damien.grossfeld@gmail.com"},"directories":{},"maintainers":[{"name":"monsieurjanvier","email":"damien.grossfeld@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/iconify-field_1.0.1_1770676319715_0.2236645577912988"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-24T08:18:40.490Z","modified":"2026-02-09T22:32:00.348Z","1.0.0":"2025-08-24T08:18:40.784Z","1.0.1":"2026-02-09T22:32:00.237Z"},"license":"MIT","keywords":[],"description":"Custom iconify selection field with library selection in settings","maintainers":[{"name":"monsieurjanvier","email":"damien.grossfeld@gmail.com"}],"readme":"# Strapi Iconify Field Plugin\n\nA powerful Strapi 5 plugin that provides a custom iconify selection field with configurable icon libraries and advanced search capabilities.\n\n![Plugin Demo](https://img.shields.io/badge/Strapi-5.x-blue) ![License](https://img.shields.io/badge/license-MIT-green) ![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue)\n\n## ✨ Features\n\n- **🎨 Rich Icon Selection**: Browse and search through thousands of icons from popular icon libraries\n- **⚙️ Configurable Icon Sets**: Enable/disable specific icon libraries in plugin settings\n- **🔍 Smart Search**: Intelligent search functionality across enabled icon sets only\n- **📊 Admin Settings**: Easy configuration through Strapi admin panel\n\n## 🚀 Installation\n\n```bash\nnpm install @0x30-ch/iconify-field\n# or\nyarn add @0x30-ch/iconify-field\n# or\npnpm add @0x30-ch/iconify-field\n```\n\n## 🔧 Configuration\n\n\n### 1. Configure Icon Sets\n\nNavigate to **Settings > Iconify Field** in your Strapi admin panel to configure:\n\n- **Enabled Icon Sets**: Choose which icon libraries to make available\n\n### 2. Add to Content Types\n\nAdd the iconify field to your content types\n\n## 📖 Usage\n\n### Basic Usage\n\nOnce configured, the iconify field appears as a searchable icon picker in your content type forms:\n\n1. Click the field to open the icon selection modal\n2. Browse popular icons or use the search functionality\n3. Select an icon to save it to your content\n\n### Programmatic Access\n\nAccess icon data in your code:\n\n```typescript\n// Example API response\n{\n  \"data\": {\n    \"id\": 1,\n    \"icon\": {\"icon\":\"lucide:door-closed\",\"set\":\"lucide\",\"name\":\"door-closed\"}, // Icon identifier\n    \"title\": \"Homepage\",\n    // ... other fields\n  }\n}\n```\n\n### Frontend Integration\n\nUse the icon data in your frontend:\n\n```jsx\n// React example\nimport { Icon } from '@iconify/react';\n\nfunction MyComponent({ iconData }) {\n  return (\n    <div>\n      <Icon icon={iconData.icon.icon} width=\"24\" height=\"24\" />\n      <span>{iconData.title}</span>\n    </div>\n  );\n}\n```\n\n```vue\n<!-- Vue example -->\n<template>\n  <div>\n    <Icon :icon=\"iconData.icon.icon\" width=\"24\" height=\"24\" />\n    <span>{{ iconData.title }}</span>\n  </div>\n</template>\n\n<script setup>\nimport { Icon } from '@iconify/vue';\n</script>\n```\n\n## 🏗️ Development\n\n### Prerequisites\n\n- Node.js >= 18.0.0\n- Strapi 5.x\n- TypeScript support\n\n### Setup\n\n```bash\n# Clone and install dependencies\ngit clone <repository-url>\ncd strapi-iconify-field\npnpm install\n\n# Start development\npnpm dev\n\n# Build plugin\npnpm build\n\n# Type checking\npnpm test:ts:front  # Frontend types\npnpm test:ts:back   # Backend types\n```\n\n### Project Structure\n\n```\npackages/iconify-field/\n├── admin/                 # Frontend React components\n│   ├── src/\n│   │   ├── components/    # UI components\n│   │   ├── pages/         # Admin pages (Settings)\n│   │   ├── translations/  # i18n files\n│   │   ├── utils/         # Utilities\n│   │   └── index.ts       # Plugin entry point\n│   └── tsconfig.json\n├── server/                # Backend logic\n│   ├── src/\n│   │   ├── controllers/   # API controllers\n│   │   ├── services/      # Business logic\n│   │   ├── routes/        # Route definitions\n│   │   ├── config/        # Plugin config\n│   │   └── index.ts       # Server entry point\n│   └── tsconfig.json\n├── package.json\n└── README.md\n```\n\n## 🔌 API Reference\n\n### Endpoints\n\n- `GET /iconify-field/icon-sets` - Get available icon sets\n- `GET /iconify-field/icons` - Get icons with pagination\n- `GET /iconify-field/icons/search` - Search icons\n- `GET /iconify-field/icons/:setId/popular` - Get popular icons for a set\n- `GET /iconify-field/icons/:iconId` - Get specific icon data\n- `POST /iconify-field/icons/validate` - Validate icon existence\n\n### Settings API\n\n- `GET /iconify-field/settings` - Get plugin settings\n- `PUT /iconify-field/settings` - Update plugin settings\n- `GET /iconify-field/settings/enabled-sets` - Get enabled icon sets\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Development Guidelines\n\n- Follow TypeScript best practices\n- Use Strapi Design System v2 components\n- Write comprehensive tests\n- Follow existing code patterns\n- Update documentation\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- [Iconify](https://iconify.design/) - For the amazing icon ecosystem\n- [Strapi](https://strapi.io/) - For the excellent CMS framework\n- [0x30](https://github.com/0x30-ch) - Original plugin author\n- All icon library contributors\n\n## 📞 Support\n\n- 📋 [Issues](https://github.com/0x30-ch/strapi-plugins/issues)\n- 📖 [Documentation](https://github.com/0x30-ch/strapi-plugins/tree/main/packages/iconify-field)\n- 💬 [Community](https://strapi.io/community)\n\n---\n\nMade with ❤️ for the Strapi community","readmeFilename":"README.md"}