{"_id":"sanity-plugin-lucide-icon-picker","_rev":"6-1feb0a710da9e254f5d259a7c23e0780","name":"sanity-plugin-lucide-icon-picker","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"sanity-plugin-lucide-icon-picker","version":"1.0.0","keywords":["sanity","sanity-plugin","lucide","icons","lucide-icons","sanity-lucide","sanity-icons"],"author":{"name":"ContentWrap","email":"tamba@contentwrap.io"},"license":"MIT","_id":"sanity-plugin-lucide-icon-picker@1.0.0","maintainers":[{"name":"contentwrap","email":"tamba@contentwrap.io"}],"homepage":"https://github.com/contentwrap/sanity-plugin-lucide-icon-picker#readme","bugs":{"url":"https://github.com/contentwrap/sanity-plugin-lucide-icon-picker/issues"},"dist":{"shasum":"565ae112115281c0f5cae428abeb6f64ad0b4237","tarball":"https://registry.npmjs.org/sanity-plugin-lucide-icon-picker/-/sanity-plugin-lucide-icon-picker-1.0.0.tgz","fileCount":17,"integrity":"sha512-WfTap7+TgK9PgDFv57It2tb9MdoGiRdUqXVS1W3YDz4i6+BGN0oand47REml66oOsqlwId/uT/XbwvjAR1OAZw==","signatures":[{"sig":"MEUCIQDQ/YS4xxtZODAXQIWEwrXO+2uu0tybxV/d7q3cQNoFMAIgO9GRB7TWCc8LR0zXPRAauRuep1fOsq6mVqpGc2NWMaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":357972},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"import":"./dist/index.mjs","source":"./src/index.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"7a51fdf5742671347b33d1332ad5a00345b3219d","scripts":{"lint":"eslint .","build":"plugin-kit verify-package --silent && pkg-utils build --strict --check --clean","watch":"pkg-utils watch --strict","format":"prettier --write --cache --ignore-unknown .","link-watch":"plugin-kit link-watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"contentwrap","email":"tamba@contentwrap.io"},"repository":{"url":"git+https://github.com/contentwrap/sanity-plugin-lucide-icon-picker.git","type":"git"},"_npmVersion":"10.9.0","description":"Sanity plugin to choose Lucide icons","directories":{},"sideEffects":false,"_nodeVersion":"23.2.0","browserslist":"extends @sanity/browserslist-config","dependencies":{"@sanity/ui":"^2.16.2","lucide-react":"^0.532.0","@sanity/icons":"^3.7.4","@sanity/incompatible-plugin":"^1.0.5","@trivago/prettier-plugin-sort-imports":"^5.2.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.1+sha512.1acb565e6193efbebda772702950469150cf12bcc764262e7587e71d19dc98a423dff9536e57ea44c49bdf790ff694e83c27be5faa23d67e0c033b583be4bfcf","devDependencies":{"react":"^19.1.0","eslint":"^8.57.1","sanity":"^3.95.0","prettier":"^3.6.2","react-dom":"^19.1.0","typescript":"^5.8.3","@types/react":"^19.1.8","@sanity/pkg-utils":"^7.8.10","@sanity/plugin-kit":"^4.0.19","eslint-plugin-react":"^7.37.5","eslint-config-sanity":"^7.1.4","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.5.1","@typescript-eslint/parser":"^8.35.0","eslint-plugin-react-hooks":"^5.2.0","prettier-plugin-packagejson":"^2.5.17","@typescript-eslint/eslint-plugin":"^8.35.0"},"peerDependencies":{"react":"^18 || ^19","sanity":"^3"},"_npmOperationalInternal":{"tmp":"tmp/sanity-plugin-lucide-icon-picker_1.0.0_1753761858794_0.7836887843546692","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"sanity-plugin-lucide-icon-picker","version":"1.0.3","description":"Sanity plugin to select and preview Lucide icons in the Sanity Studio","keywords":["sanity","sanity-plugin","lucide","icons","sanity-studio","lucide-icons","sanity-lucide","sanity-icons"],"repository":{"type":"git","url":"git+https://github.com/contentwrap/sanity-plugin-lucide-icon-picker.git"},"homepage":"https://github.com/contentwrap/sanity-plugin-lucide-icon-picker#readme","bugs":{"url":"https://github.com/contentwrap/sanity-plugin-lucide-icon-picker/issues"},"license":"MIT","author":{"name":"ContentWrap","email":"tamba@contentwrap.io"},"sideEffects":false,"type":"module","exports":{".":{"source":"./src/index.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"main":"./dist/index.js","types":"./dist/index.d.ts","sanityPlugin":{"verifyPackage":{"eslintImports":false,"sanityV2Json":false}},"scripts":{"build":"plugin-kit verify-package --silent && pkg-utils build --strict --check --clean","format":"prettier --write --cache --ignore-unknown .","link-watch":"plugin-kit link-watch","lint":"eslint .","prepublishOnly":"npm run build","watch":"pkg-utils watch --strict"},"dependencies":{"lucide-react":"^0.532.0"},"devDependencies":{"@sanity/browserslist-config":"^1.0.5","@sanity/incompatible-plugin":"^1.0.5","@sanity/pkg-utils":"^7.8.10","@sanity/plugin-kit":"^4.0.19","@trivago/prettier-plugin-sort-imports":"^5.2.2","@types/react":"^19.1.8","@typescript-eslint/eslint-plugin":"^8.35.0","@typescript-eslint/parser":"^8.35.0","eslint":"^8.57.1","eslint-config-prettier":"^10.1.5","eslint-config-sanity":"^7.1.4","eslint-plugin-prettier":"^5.5.1","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.2.0","prettier":"^3.6.2","prettier-plugin-packagejson":"^2.5.17","typescript":"^5.8.3"},"peerDependencies":{"@sanity/icons":"^3.7.0","@sanity/ui":"^2.0.0","react":"^18 || ^19","sanity":"^3"},"browserslist":"extends @sanity/browserslist-config","engines":{"node":">=18"},"packageManager":"pnpm@9.15.1+sha512.1acb565e6193efbebda772702950469150cf12bcc764262e7587e71d19dc98a423dff9536e57ea44c49bdf790ff694e83c27be5faa23d67e0c033b583be4bfcf","_id":"sanity-plugin-lucide-icon-picker@1.0.3","gitHead":"a15e82149312708d4e058db96895eff1d490724d","_nodeVersion":"23.2.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-3KS2pE4pCJ/LbUVw0iA2cCg/0KjMSnbEei9VJW3blAtwQRgionRgpytDcCJ1pXMho9gZc6Aqa91Jpjn3TllccA==","shasum":"a5abf7a053f36dd61b692e0641657d4eaa91c949","tarball":"https://registry.npmjs.org/sanity-plugin-lucide-icon-picker/-/sanity-plugin-lucide-icon-picker-1.0.3.tgz","fileCount":12,"unpackedSize":27322,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDHqobXIt5z3L2MM43oOB3ZjEpiFvNyRWsZFZXKX6oCUQIhALZiG1FseGWHbvJ3bfiNQBKAJdCn3QAGS0I2JBSFp4+z"}]},"_npmUser":{"name":"contentwrap","email":"tamba@contentwrap.io"},"directories":{},"maintainers":[{"name":"contentwrap","email":"tamba@contentwrap.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sanity-plugin-lucide-icon-picker_1.0.3_1754171967588_0.9722646361067868"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-29T04:04:18.793Z","modified":"2025-08-02T21:59:27.968Z","1.0.0":"2025-07-29T04:04:19.042Z","1.0.2":"2025-08-02T21:25:42.455Z","1.0.1":"2025-08-02T21:30:42.188Z","1.0.3":"2025-08-02T21:59:27.776Z"},"bugs":{"url":"https://github.com/contentwrap/sanity-plugin-lucide-icon-picker/issues"},"author":{"name":"ContentWrap","email":"tamba@contentwrap.io"},"license":"MIT","homepage":"https://github.com/contentwrap/sanity-plugin-lucide-icon-picker#readme","keywords":["sanity","sanity-plugin","lucide","icons","sanity-studio","lucide-icons","sanity-lucide","sanity-icons"],"repository":{"type":"git","url":"git+https://github.com/contentwrap/sanity-plugin-lucide-icon-picker.git"},"description":"Sanity plugin to select and preview Lucide icons in the Sanity Studio","maintainers":[{"name":"contentwrap","email":"tamba@contentwrap.io"}],"readme":"<div align=\"center\">\n  <h1>Sanity Lucide Icon Picker</h1>\n  <h3>A beautiful icon picker plugin for Sanity Studio with 1,600+ Lucide icons.</h3>\n  <p><em>Developed and maintained by <a href=\"https://contentwrap.io\" target=\"_blank\">ContentWrap</a></em></p>\n\n  <img src=\"https://img.shields.io/npm/v/sanity-plugin-lucide-icon-picker\" alt=\"npm version\" />\n  <img src=\"https://img.shields.io/badge/TypeScript-007ACC?logo=typescript&logoColor=white\" alt=\"TypeScript\" />\n  <img src=\"https://img.shields.io/badge/Sanity-F03E2F?logo=sanity&logoColor=white\" alt=\"Sanity\" />\n  <img src=\"https://img.shields.io/npm/l/sanity-plugin-lucide-icon-picker?style&color=5D6D7E\" alt=\"MIT License\" />\n\n  <br>\n  <br>\n\n  <img src=\"demo.gif\" alt=\"Sanity Lucide Icon Picker Preview\" />\n</div>\n\n---\n\n## Features\n\n- **1,600+ icons**: Access to the complete Lucide Icons library\n- **Smart search**: Quickly find icons with intelligent search functionality\n- **Responsive design**: Works seamlessly on desktop and mobile devices\n- **High performance**: Virtualized rendering and lazy loading for smooth experience\n- **Configurable**: Flexible options for filtering icons\n- **Preview support**: Built-in preview function for Sanity Studio\n\n---\n\n## Installation\n\n```sh\npnpm add sanity-plugin-lucide-icon-picker\n# or\nyarn add sanity-plugin-lucide-icon-picker\n# or\nnpm install sanity-plugin-lucide-icon-picker\n```\n\n---\n\n## Usage\n\n**1. Add the plugin to your Sanity config:**\n\n```ts\n// sanity.config.ts\nimport { defineConfig } from 'sanity';\nimport { lucideIconPicker } from 'sanity-plugin-lucide-icon-picker';\n\nexport default defineConfig({\n  // ...\n  plugins: [lucideIconPicker()],\n});\n```\n\n**2. Use the `lucide-icon` type in your schema:**\n\n```ts\n// schemas/myDocument.ts\nimport { defineType } from 'sanity';\n\nexport default defineType({\n  name: 'myDocument',\n  title: 'My Document',\n  type: 'document',\n  fields: [\n    {\n      name: 'icon',\n      title: 'Icon',\n      type: 'lucide-icon',\n    },\n    // ... other fields\n  ],\n});\n```\n\n---\n\n## Configuration Options\n\n### Icon Filtering\n\nLimit available icons to a specific whitelist:\n\n```ts\n{\n  name: 'icon',\n  title: 'Social Icon',\n  type: 'lucide-icon',\n  options: {\n    allowedIcons: ['facebook', 'twitter', 'instagram', 'linkedin'],\n  }\n}\n```\n\nThe `allowedIcons` option accepts an array of icon names (in kebab-case format) to show only those specific icons in the picker.\n\n---\n\n## Frontend Integration\n\n### React with DynamicIcon\n\nIcons are stored as kebab-case strings (e.g., `\"arrow-right\"`, `\"chevron-down\"`). Use Lucide's `DynamicIcon` component to render them:\n\n```jsx\nimport { DynamicIcon } from 'lucide-react/dynamic';\n\n// Your Sanity data\nconst iconName = 'arrow-right'; // from your Sanity document\n\n// Usage\nexport default function MyComponent() {\n  return (\n    <div>\n      <DynamicIcon name={iconName} size={24} />\n    </div>\n  );\n}\n```\n\n---\n\n## Performance\n\nThe plugin is optimized for performance with:\n\n- **Virtualized rendering** - Only visible icons are rendered\n- **Lazy loading** - Icons load on-demand\n- **Efficient search** - Fast text-based search with debouncing\n- **Tree shaking** - Only imported icons are included in your bundle\n\nFor optimal frontend performance:\n\n1. Use dynamic imports to load only needed icons\n2. Consider using the `allowedIcons` option to limit available icons\n\n---\n\n## Requirements\n\n- Sanity Studio v3 or v4\n- React 18 or 19\n- TypeScript (recommended)\n\n---\n\n## License\n\nMIT © ContentWrap\n\n---\n\n## About the Developer\n\nThis package is developed and maintained by [ContentWrap](https://contentwrap.io), a digital product agency specializing in Sanity and modern web development.\n","readmeFilename":"README.md"}