{"_id":"@arshiash80/strapi-plugin-iconhub","_rev":"9-623fec1412d805590f1c068f63642fc8","name":"@arshiash80/strapi-plugin-iconhub","dist-tags":{"latest":"1.3.1"},"versions":{"1.0.0":{"name":"@arshiash80/strapi-plugin-iconhub","version":"1.0.0","keywords":["strapi","strapi-plugin","strapi-v5","strapi-custom-field","icon-picker","icon-input","svg-picker","custom-input","strapi-design-system","strapi-admin","icon-library","iconify","iconify-icons","iconify-integration","svg-icons","visual-icon-picker","icon-selector","frontend-component","strapi-icon-picker"],"author":{"name":"Arshia Shahidi","email":"admin@arshiash80.com"},"license":"MIT","_id":"@arshiash80/strapi-plugin-iconhub@1.0.0","maintainers":[{"name":"arshiash80","email":"admin@arshiash80.com"}],"homepage":"https://github.com/Arshiash80/strapi-plugin-iconhub#readme","bugs":{"url":"https://github.com/Arshiash80/strapi-plugin-iconhub/issues"},"dist":{"shasum":"4e76ce951aa3d204d8516711982846c28645e025","tarball":"https://registry.npmjs.org/@arshiash80/strapi-plugin-iconhub/-/strapi-plugin-iconhub-1.0.0.tgz","fileCount":37,"integrity":"sha512-1isFN1d/iWBvb/jf0t0Wj7s9zuJL1fypP/dl9ALHOyxzrRd7WAttUWjCh4O3uxgs8hnN1Y2NmDvMQbO6zQdK8Q==","signatures":[{"sig":"MEUCIQDoZBc82lnxswt0QFv0wb9x5vEzvyRtscg7LuRYFs03YgIgNFN60OTR9m5IWlBKeh15UgfRPVTYwrl5obpoWeJ8Cmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":251277},"type":"commonjs","strapi":{"kind":"plugin","name":"strapi-plugin-iconhub","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","displayName":"IconHub"},"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":"462ab2d3faf6e2546e34222514fb8060e6d3a427","scripts":{"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":"arshiash80","email":"admin@arshiash80.com"},"repository":{"url":"git+ssh://git@github.com/Arshiash80/strapi-plugin-iconhub.git","type":"git"},"_npmVersion":"10.8.1","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"react-intl":"^7.1.7","tailwindcss":"^4.0.15","@strapi/icons":"^2.0.0-rc.18","@iconify/react":"^5.2.0","lodash.debounce":"^4.0.8","@tailwindcss/vite":"^4.0.15","@strapi/design-system":"^2.0.0-rc.18","@types/lodash.debounce":"^4.0.9"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.5.3","react-dom":"^18.3.1","typescript":"^5.8.2","@types/react":"^19.0.12","@strapi/strapi":"^5.11.3","@types/react-dom":"^19.0.4","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2","@strapi/typescript-utils":"^5.11.3"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.11.3","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/strapi-plugin-iconhub_1.0.0_1742941071693_0.17433887852289276","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@arshiash80/strapi-plugin-iconhub","version":"1.0.1","keywords":["strapi","strapi-plugin","strapi-v5","strapi-custom-field","icon-picker","icon-input","svg-picker","custom-input","strapi-design-system","strapi-admin","icon-library","iconify","iconify-icons","iconify-integration","svg-icons","visual-icon-picker","icon-selector","frontend-component","strapi-icon-picker"],"author":{"name":"Arshia Shahidi","email":"admin@arshiash80.com"},"license":"MIT","_id":"@arshiash80/strapi-plugin-iconhub@1.0.1","maintainers":[{"name":"arshiash80","email":"admin@arshiash80.com"}],"homepage":"https://github.com/Arshiash80/strapi-plugin-iconhub#readme","bugs":{"url":"https://github.com/Arshiash80/strapi-plugin-iconhub/issues"},"dist":{"shasum":"0e82c8bae8b054429e1d54a5a4b91eab5d0db11c","tarball":"https://registry.npmjs.org/@arshiash80/strapi-plugin-iconhub/-/strapi-plugin-iconhub-1.0.1.tgz","fileCount":37,"integrity":"sha512-AddMLmkb3FmTn/uMjrVwQ3MjCSH/FC45seHaWNFhDwRWZ3b70jlzDYdVpT6q5f8RdJl9Md7mU7VBG6vuinSxww==","signatures":[{"sig":"MEUCIQDbG2dp+urcrjCkFLh7zjg9FUhnV+dUpy0w6XJ33rR/mwIgcq0XxRIgn4h3VWTnxeVco71PiDP5WhRfVaQ9aNCVQ34=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":255882},"type":"commonjs","strapi":{"kind":"plugin","name":"strapi-plugin-iconhub","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","displayName":"IconHub"},"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":"1d95725e4cd7dfab0ee5a4b732b2ae79e1e09f9e","scripts":{"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":"arshiash80","email":"admin@arshiash80.com"},"repository":{"url":"git+ssh://git@github.com/Arshiash80/strapi-plugin-iconhub.git","type":"git"},"_npmVersion":"10.8.2","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"react-intl":"^7.1.7","tailwindcss":"^4.0.15","@strapi/icons":"^2.0.0-rc.18","@iconify/react":"^5.2.0","lodash.debounce":"^4.0.8","@tailwindcss/vite":"^4.0.15","@strapi/design-system":"^2.0.0-rc.18","@types/lodash.debounce":"^4.0.9"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.5.3","react-dom":"^18.3.1","typescript":"^5.8.2","@types/react":"^19.0.12","@strapi/strapi":"^5.11.3","@types/react-dom":"^19.0.4","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2","@strapi/typescript-utils":"^5.11.3"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.11.3","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/strapi-plugin-iconhub_1.0.1_1746728367228_0.44850879343759553","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@arshiash80/strapi-plugin-iconhub","version":"1.0.2","keywords":["strapi","strapi-plugin","strapi-v5","strapi-custom-field","icon-picker","icon-input","svg-picker","custom-input","strapi-design-system","strapi-admin","icon-library","iconify","iconify-icons","iconify-integration","svg-icons","visual-icon-picker","icon-selector","frontend-component","strapi-icon-picker"],"author":{"name":"Arshia Shahidi","email":"admin@arshiash80.com"},"license":"MIT","_id":"@arshiash80/strapi-plugin-iconhub@1.0.2","maintainers":[{"name":"arshiash80","email":"admin@arshiash80.com"}],"homepage":"https://github.com/Arshiash80/strapi-plugin-iconhub#readme","bugs":{"url":"https://github.com/Arshiash80/strapi-plugin-iconhub/issues"},"dist":{"shasum":"03dd3ec55cf4381fe7cf5d9b8c684cedc855eed1","tarball":"https://registry.npmjs.org/@arshiash80/strapi-plugin-iconhub/-/strapi-plugin-iconhub-1.0.2.tgz","fileCount":37,"integrity":"sha512-libkEMhQuH1UdXBCt5rjQcfLAQshVNHqgDgxTNhFfjob9smCTc5x2QOE/4VpWainKF/yXL6lxab4c3rl9vfQtg==","signatures":[{"sig":"MEQCIFl5S9c4PyqU5/yaxepmvAT2eL8Dc2iQgD4ZiqfvHNvaAiAJV6twaktAF5PHd17bBz/9X5mlpiCilnniO44CmU79GQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":255976},"type":"commonjs","strapi":{"kind":"plugin","name":"strapi-plugin-iconhub","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","displayName":"IconHub"},"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":"ca83dcc10734f7851220ca1a41c1771d10161ce2","scripts":{"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":"arshiash80","email":"admin@arshiash80.com"},"repository":{"url":"git+ssh://git@github.com/Arshiash80/strapi-plugin-iconhub.git","type":"git"},"_npmVersion":"10.8.2","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"react-intl":"^7.1.7","tailwindcss":"^4.0.15","@strapi/icons":"^2.0.0-rc.18","@iconify/react":"^5.2.0","lodash.debounce":"^4.0.8","@tailwindcss/vite":"^4.0.15","@strapi/design-system":"^2.0.0-rc.18","@types/lodash.debounce":"^4.0.9"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.5.3","react-dom":"^18.3.1","typescript":"^5.8.2","@types/react":"^19.0.12","@strapi/strapi":"^5.11.3","@types/react-dom":"^19.0.4","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2","@strapi/typescript-utils":"^5.11.3"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.11.3","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/strapi-plugin-iconhub_1.0.2_1746857142525_0.7862988856180946","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@arshiash80/strapi-plugin-iconhub","version":"1.0.3","keywords":["strapi","strapi-plugin","strapi-v5","strapi-custom-field","icon-picker","icon-input","svg-picker","custom-input","strapi-design-system","strapi-admin","icon-library","iconify","iconify-icons","iconify-integration","svg-icons","visual-icon-picker","icon-selector","frontend-component","strapi-icon-picker"],"author":{"name":"Arshia Shahidi","email":"admin@arshiash80.com"},"license":"MIT","_id":"@arshiash80/strapi-plugin-iconhub@1.0.3","maintainers":[{"name":"arshiash80","email":"admin@arshiash80.com"}],"homepage":"https://github.com/Arshiash80/strapi-plugin-iconhub#readme","bugs":{"url":"https://github.com/Arshiash80/strapi-plugin-iconhub/issues"},"dist":{"shasum":"67d3f621c778f401235a64766ad18d67ad11109d","tarball":"https://registry.npmjs.org/@arshiash80/strapi-plugin-iconhub/-/strapi-plugin-iconhub-1.0.3.tgz","fileCount":37,"integrity":"sha512-bmdlIdt87fK2ehU3e3wmW3gpebh5BoF9O9ljfrtcuCEzVtork8QKRN59x7yrAJf7Dlt2H0KpCMx3/oaRRwoo+w==","signatures":[{"sig":"MEUCIQDrzgFJCUt/dMAABfKNcjcTX1iGY+TKlRCi77PQ8U0v2gIgaDoch3V75+MnzZSuenrk9KpxSqVSWgu3Dbf1579HQPo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":256189},"type":"commonjs","strapi":{"kind":"plugin","name":"strapi-plugin-iconhub","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","displayName":"IconHub"},"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":"5419e20e2705f39b3931b0e6c7709d226a1d2808","scripts":{"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":"arshiash80","actor":{"name":"arshiash80","type":"user","email":"admin@arshiash80.com"},"email":"admin@arshiash80.com"},"repository":{"url":"git+ssh://git@github.com/Arshiash80/strapi-plugin-iconhub.git","type":"git"},"_npmVersion":"10.8.2","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"react-intl":"^7.1.7","tailwindcss":"^4.0.15","@strapi/icons":"^2.0.0-rc.18","@iconify/react":"^5.2.0","lodash.debounce":"^4.0.8","@tailwindcss/vite":"^4.0.15","@strapi/design-system":"^2.0.0-rc.18","@types/lodash.debounce":"^4.0.9"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.5.3","react-dom":"^18.3.1","typescript":"^5.8.2","@types/react":"^19.0.12","@strapi/strapi":"^5.11.3","@types/react-dom":"^19.0.4","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2","@strapi/typescript-utils":"^5.11.3"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.11.3","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/strapi-plugin-iconhub_1.0.3_1751964418942_0.22155545290880507","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@arshiash80/strapi-plugin-iconhub","version":"1.1.0","keywords":["strapi","strapi-plugin","strapi-v5","strapi-custom-field","icon-picker","icon-input","svg-picker","custom-input","strapi-design-system","strapi-admin","icon-library","iconify","iconify-icons","iconify-integration","svg-icons","visual-icon-picker","icon-selector","frontend-component","strapi-icon-picker"],"author":{"name":"Arshia Shahidi","email":"admin@arshiash80.com"},"license":"MIT","_id":"@arshiash80/strapi-plugin-iconhub@1.1.0","maintainers":[{"name":"arshiash80","email":"admin@arshiash80.com"}],"homepage":"https://github.com/Arshiash80/strapi-plugin-iconhub#readme","bugs":{"url":"https://github.com/Arshiash80/strapi-plugin-iconhub/issues"},"dist":{"shasum":"6eba2638adb42a0a1619563640d49032c5b6df4f","tarball":"https://registry.npmjs.org/@arshiash80/strapi-plugin-iconhub/-/strapi-plugin-iconhub-1.1.0.tgz","fileCount":279,"integrity":"sha512-2jRHV6NtyLwDkjPAgnLtanq/eoacYZjiACNlgEZAN1hC6xfsycxLVqTpea1NXY1IL9EJIfY9oprzgqjvUu4+xg==","signatures":[{"sig":"MEQCIAJJUEU/DzxiW7i9J96aEsqFxOB0ODzgYB4uwkSuUBMOAiBXeOsPBMupBRg5fM6SdEY/fOY1UGG1aWQn6WdI+HK1hA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41409002},"type":"commonjs","strapi":{"kind":"plugin","name":"strapi-plugin-iconhub","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","displayName":"IconHub"},"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":"1f4ae21bd11c2c2f0b36bd28946b12deaafde90c","scripts":{"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":"arshiash80","email":"admin@arshiash80.com"},"repository":{"url":"git+ssh://git@github.com/Arshiash80/strapi-plugin-iconhub.git","type":"git"},"_npmVersion":"10.8.2","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"react-intl":"^7.1.7","tailwindcss":"^4.0.15","@strapi/icons":"^2.0.0-rc.18","@iconify/react":"^5.2.0","lodash.debounce":"^4.0.8","@tailwindcss/vite":"^4.0.15","@strapi/design-system":"^2.0.0-rc.18","@types/lodash.debounce":"^4.0.9"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.5.3","react-dom":"^18.3.1","typescript":"^5.8.2","@types/react":"^19.0.12","@strapi/strapi":"^5.11.3","@types/react-dom":"^19.0.4","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2","@strapi/typescript-utils":"^5.11.3"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.11.3","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/strapi-plugin-iconhub_1.1.0_1754938059809_0.2869076537849864","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@arshiash80/strapi-plugin-iconhub","version":"1.1.1","keywords":["strapi","strapi-plugin","strapi-v5","strapi-custom-field","icon-picker","icon-input","svg-picker","custom-input","strapi-design-system","strapi-admin","icon-library","iconify","iconify-icons","iconify-integration","svg-icons","visual-icon-picker","icon-selector","frontend-component","strapi-icon-picker"],"author":{"name":"Arshia Shahidi","email":"admin@arshiash80.com"},"license":"MIT","_id":"@arshiash80/strapi-plugin-iconhub@1.1.1","maintainers":[{"name":"arshiash80","email":"admin@arshiash80.com"}],"homepage":"https://github.com/Arshiash80/strapi-plugin-iconhub#readme","bugs":{"url":"https://github.com/Arshiash80/strapi-plugin-iconhub/issues"},"dist":{"shasum":"617b0caf11f7a7786d03dfc573fea65bf69bba52","tarball":"https://registry.npmjs.org/@arshiash80/strapi-plugin-iconhub/-/strapi-plugin-iconhub-1.1.1.tgz","fileCount":279,"integrity":"sha512-tL2MSham2H4ROn0I91xn1uu0cDupxBDEOnBfKEsVD4Cn8uxiPZ28mzo4qc8mbTYzyfhrisKtmSHrq10PAygGjQ==","signatures":[{"sig":"MEQCIELAutWOtDPef/JZcbi45NDYg5XcwZqN9TzgGL/6vIlRAiAHA4LHOunqe9Nr3YtHsfF+hxFQP8uQxHslbFKpFao3eQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41409775},"type":"commonjs","strapi":{"kind":"plugin","name":"strapi-plugin-iconhub","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","displayName":"IconHub"},"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":"c1fa37d10589e2b7d47fb09381c431b768d81b15","scripts":{"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":"arshiash80","email":"admin@arshiash80.com"},"repository":{"url":"git+ssh://git@github.com/Arshiash80/strapi-plugin-iconhub.git","type":"git"},"_npmVersion":"10.8.2","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"react-intl":"^7.1.7","tailwindcss":"^4.0.15","@strapi/icons":"^2.0.0-rc.18","@iconify/react":"^5.2.0","lodash.debounce":"^4.0.8","@tailwindcss/vite":"^4.0.15","@strapi/design-system":"^2.0.0-rc.18","@types/lodash.debounce":"^4.0.9"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.5.3","react-dom":"^18.3.1","typescript":"^5.8.2","@types/react":"^19.0.12","@strapi/strapi":"^5.11.3","@types/react-dom":"^19.0.4","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2","@strapi/typescript-utils":"^5.11.3"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.11.3","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/strapi-plugin-iconhub_1.1.1_1754938983404_0.44394895994497996","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@arshiash80/strapi-plugin-iconhub","version":"1.2.0","keywords":["strapi","strapi-plugin","strapi-v5","strapi-custom-field","icon-picker","icon-input","svg-picker","custom-input","strapi-design-system","strapi-admin","icon-library","iconify","iconify-icons","iconify-integration","svg-icons","visual-icon-picker","icon-selector","frontend-component","strapi-icon-picker"],"author":{"name":"Arshia Shahidi","email":"admin@arshiash80.com"},"license":"MIT","_id":"@arshiash80/strapi-plugin-iconhub@1.2.0","maintainers":[{"name":"arshiash80","email":"admin@arshiash80.com"}],"homepage":"https://github.com/Arshiash80/strapi-plugin-iconhub#readme","bugs":{"url":"https://github.com/Arshiash80/strapi-plugin-iconhub/issues"},"dist":{"shasum":"14ef6b5be01fa1ad4b8198b1cc6efd50e57d01ba","tarball":"https://registry.npmjs.org/@arshiash80/strapi-plugin-iconhub/-/strapi-plugin-iconhub-1.2.0.tgz","fileCount":58,"integrity":"sha512-+CiGwmypXmFRGJx/NiINt7UN0qOr1zOJdBxyOhxUpRxwbpbxRFNz90as++tLM4D0BB7Foa7lw7j6hlBOwPiOdw==","signatures":[{"sig":"MEYCIQDi4FIcr8ssfiwOX8f9235M0AgMDy5lO8e7hxnSkAcgtgIhAIubESDUJ1XsfFnFiqPEysgC9S3evqc1jPIRpgsdWfvb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3016451},"type":"commonjs","strapi":{"kind":"plugin","name":"strapi-plugin-iconhub","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","displayName":"IconHub"},"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":"9eec466e30ea01777a585b06a91c12a2add93b9b","scripts":{"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":"arshiash80","email":"admin@arshiash80.com"},"repository":{"url":"git+ssh://git@github.com/Arshiash80/strapi-plugin-iconhub.git","type":"git"},"_npmVersion":"11.6.1","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","directories":{},"_nodeVersion":"23.11.0","dependencies":{"react-intl":"^7.1.7","tailwindcss":"^4.0.15","@strapi/icons":"^2.0.0-rc.18","@iconify/react":"^5.2.0","lodash.debounce":"^4.0.8","@tailwindcss/vite":"^4.0.15","@strapi/design-system":"^2.0.0-rc.18","@types/lodash.debounce":"^4.0.9"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.5.3","react-dom":"^18.3.1","typescript":"^5.8.2","@types/react":"^19.0.12","@strapi/strapi":"^5.11.3","@types/react-dom":"^19.0.4","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2","@strapi/typescript-utils":"^5.11.3"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.11.3","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/strapi-plugin-iconhub_1.2.0_1774838878577_0.6322628665190833","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@arshiash80/strapi-plugin-iconhub","version":"1.3.0","keywords":["strapi","strapi-plugin","strapi-v5","strapi-custom-field","icon-picker","icon-input","svg-picker","custom-input","strapi-design-system","strapi-admin","icon-library","iconify","iconify-icons","iconify-integration","svg-icons","visual-icon-picker","icon-selector","frontend-component","strapi-icon-picker"],"author":{"name":"Arshia Shahidi","email":"admin@arshiash80.com"},"license":"MIT","_id":"@arshiash80/strapi-plugin-iconhub@1.3.0","maintainers":[{"name":"arshiash80","email":"admin@arshiash80.com"}],"homepage":"https://github.com/Arshiash80/strapi-plugin-iconhub#readme","bugs":{"url":"https://github.com/Arshiash80/strapi-plugin-iconhub/issues"},"dist":{"shasum":"49ccd9da62bcd3966d51db54e6896075243ace58","tarball":"https://registry.npmjs.org/@arshiash80/strapi-plugin-iconhub/-/strapi-plugin-iconhub-1.3.0.tgz","fileCount":556,"integrity":"sha512-hnzwjMjFQucbKEyjEPNMXJDNoR8sbtxEcL72uJL968cq/wAEeeCcJNNyGhvFOqknYrvboQ94PZ5D353r/DHoYg==","signatures":[{"sig":"MEYCIQCdx0K3gr5f+TjPH1Yv2LMbygNV55uMygcU66pNsrkZ/QIhAPjRuCVb98r9FDPxt9Y+vGSNNpHoRo5nLOvOLCbLJjpL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104346536},"type":"commonjs","strapi":{"kind":"plugin","name":"strapi-plugin-iconhub","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","displayName":"IconHub"},"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":"774ea9657123a25843142c57c42221d72ede70fe","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","docs:readme":"node scripts/generate-readme.mjs","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json"},"_npmUser":{"name":"arshiash80","email":"admin@arshiash80.com"},"repository":{"url":"git+ssh://git@github.com/Arshiash80/strapi-plugin-iconhub.git","type":"git"},"_npmVersion":"11.6.1","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","directories":{},"_nodeVersion":"23.11.0","dependencies":{"react-intl":"^7.1.7","tailwindcss":"^4.0.15","@strapi/icons":"^2.0.0-rc.18","@iconify/react":"^5.2.0","lodash.debounce":"^4.0.8","@tailwindcss/vite":"^4.0.15","@strapi/design-system":"^2.0.0-rc.18","@types/lodash.debounce":"^4.0.9"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.5.3","react-dom":"^18.3.1","typescript":"^5.8.2","@types/react":"^19.0.12","@strapi/strapi":"^5.11.3","@types/react-dom":"^19.0.4","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2","@strapi/typescript-utils":"^5.11.3"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.11.3","react-router-dom":"^6.30.0","styled-components":"^6.1.16","@strapi/sdk-plugin":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/strapi-plugin-iconhub_1.3.0_1776470886378_0.913793977124574","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"version":"1.3.1","keywords":["strapi","strapi-plugin","strapi-v5","strapi-custom-field","icon-picker","icon-input","svg-picker","custom-input","strapi-design-system","strapi-admin","icon-library","iconify","iconify-icons","iconify-integration","svg-icons","visual-icon-picker","icon-selector","frontend-component","strapi-icon-picker"],"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","watch":"strapi-plugin watch","watch:link":"strapi-plugin watch:link","verify":"strapi-plugin verify","docs:sync-media":"node scripts/sync-readme-assets-to-cloudinary.mjs","docs:readme":"node scripts/generate-readme.mjs","test:ts:front":"run -T tsc -p admin/tsconfig.json","test:ts:back":"run -T tsc -p server/tsconfig.json"},"dependencies":{"@iconify/react":"^5.2.0","@strapi/design-system":"^2.0.0-rc.18","@strapi/icons":"^2.0.0-rc.18","@tailwindcss/vite":"^4.0.15","@types/lodash.debounce":"^4.0.9","lodash.debounce":"^4.0.8","react-intl":"^7.1.7","tailwindcss":"^4.0.15"},"devDependencies":{"@strapi/sdk-plugin":"^5.3.2","@strapi/strapi":"^5.11.3","@strapi/typescript-utils":"^5.11.3","@types/react":"^19.0.12","@types/react-dom":"^19.0.4","prettier":"^3.5.3","react":"^18.3.1","react-dom":"^18.3.1","react-router-dom":"^6.30.0","styled-components":"^6.1.16","typescript":"^5.8.2"},"peerDependencies":{"@strapi/sdk-plugin":"^5.3.2","@strapi/strapi":"^5.11.3","react":"^18.3.1","react-dom":"^18.3.1","react-router-dom":"^6.30.0","styled-components":"^6.1.16"},"strapi":{"kind":"plugin","name":"strapi-plugin-iconhub","displayName":"IconHub","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering."},"name":"@arshiash80/strapi-plugin-iconhub","description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/Arshiash80/strapi-plugin-iconhub.git"},"bugs":{"url":"https://github.com/Arshiash80/strapi-plugin-iconhub/issues"},"homepage":"https://github.com/Arshiash80/strapi-plugin-iconhub#readme","author":{"name":"Arshia Shahidi","email":"admin@arshiash80.com"},"gitHead":"7fd484e985cddbd243ca279ad0656772b97c0dbc","_id":"@arshiash80/strapi-plugin-iconhub@1.3.1","_nodeVersion":"23.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-R1Pu4zYkp0mAA2C3IP+NFXK/aN2k6v4OLOBLGuqPFVefEXK+B/MOk1MaTPtJJgwNF/px98ZymDl1znbCICkaIw==","shasum":"41ee26c6db35e41da0b03000c02f861ce50bb53c","tarball":"https://registry.npmjs.org/@arshiash80/strapi-plugin-iconhub/-/strapi-plugin-iconhub-1.3.1.tgz","fileCount":556,"unpackedSize":104347597,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD/l3/ACR79RaXG8XXFn+TiJ5tfxc1/DxBemBmV+2F0hQIgaJZbVHlJXC773l/FXA+cratCYvdCw8jaSgw6VgLngDg="}]},"_npmUser":{"name":"arshiash80","email":"admin@arshiash80.com"},"directories":{},"maintainers":[{"name":"arshiash80","email":"admin@arshiash80.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/strapi-plugin-iconhub_1.3.1_1776601367796_0.7548290994477156"},"_hasShrinkwrap":false}},"time":{"created":"2025-03-25T22:17:51.560Z","modified":"2026-04-19T12:22:48.726Z","1.0.0":"2025-03-25T22:17:51.929Z","1.0.1":"2025-05-08T18:19:27.474Z","1.0.2":"2025-05-10T06:05:42.738Z","1.0.3":"2025-07-08T08:46:59.169Z","1.1.0":"2025-08-11T18:47:40.152Z","1.1.1":"2025-08-11T19:03:03.819Z","1.2.0":"2026-03-30T02:47:58.746Z","1.3.0":"2026-04-18T00:08:07.239Z","1.3.1":"2026-04-19T12:22:48.635Z"},"bugs":{"url":"https://github.com/Arshiash80/strapi-plugin-iconhub/issues"},"author":{"name":"Arshia Shahidi","email":"admin@arshiash80.com"},"license":"MIT","homepage":"https://github.com/Arshiash80/strapi-plugin-iconhub#readme","keywords":["strapi","strapi-plugin","strapi-v5","strapi-custom-field","icon-picker","icon-input","svg-picker","custom-input","strapi-design-system","strapi-admin","icon-library","iconify","iconify-icons","iconify-integration","svg-icons","visual-icon-picker","icon-selector","frontend-component","strapi-icon-picker"],"repository":{"type":"git","url":"git+ssh://git@github.com/Arshiash80/strapi-plugin-iconhub.git"},"description":"Icon picker plugin for Strapi with Iconify integration — search, select, and store icons with raw SVG for high-performance rendering.","maintainers":[{"name":"arshiash80","email":"admin@arshiash80.com"}],"readme":"<!-- Edit this file, then run `npm run docs:readme` to regenerate README.md. -->\n\n# Strapi IconHub\n\n![Strapi IconHub](assets/docs/og-image.jpg)\n\nIconHub is a custom field for Strapi that brings the Iconify catalog into the admin panel. Editors can browse icon sets, search globally, inspect a single set in detail, apply colors, and store either the Iconify name, raw SVG, or both.\n\n[![Strapi](https://img.shields.io/badge/Strapi-v4%20%7C%20v5-2F2E8B?style=flat&logo=strapi)](https://strapi.io)\n[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-3178C6?style=flat&logo=typescript)](https://www.typescriptlang.org)\n[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n\n## Table of contents\n\n- [Demo](#demo)\n- [Why IconHub](#why-iconhub)\n- [Compatibility](#compatibility)\n- [Installation](#installation)\n- [Add the field to a content type](#add-the-field-to-a-content-type)\n- [Field configuration](#field-configuration)\n- [Editor workflow](#editor-workflow)\n- [Stored value shape](#stored-value-shape)\n- [Frontend rendering](#frontend-rendering)\n- [Development](#development)\n- [Documentation assets](#documentation-assets)\n- [License](#license)\n\n## Demo\n\n[Open the demo video directly](assets/docs/IconHubPluginDemo.mp4)\n\nThe demo covers the picker flow, icon set browsing, icon editing, and color customization.\n\n## Why IconHub\n\n- Built for Strapi editors, not just developers wiring icons in code\n- Access to 200,000+ icons through Iconify without shipping a bundled icon pack\n- Category-level restrictions in Content-Type Builder to keep fields focused\n- Collection-first browsing flow for teams that do not know the exact icon name\n- Raw SVG storage support for fast frontend rendering and external-API independence\n\n## Compatibility\n\n- Strapi v4 and v5\n- TypeScript-ready admin and server packages\n- Frontends that render Iconify names, raw SVG, or both\n\n## Installation\n\n```bash\nnpm i @arshiash80/strapi-plugin-iconhub\n```\n\nRebuild the admin panel after installation:\n\n```bash\nnpm run build\nnpm run develop\n```\n\nVerify the plugin in **Settings > Plugins**.\n\n![Plugin verification](assets/docs/plugin-verification.png)\n\n## Add the field to a content type\n\nOpen **Content-Type Builder**, add a new custom field, and select **IconHub**.\n\n![Custom field tab](assets/docs/custom-field-tab.png)\n![IconHub custom field selection](assets/docs/iconhub-custom-field-selection.png)\n\nThe field then appears in the content entry UI like any other Strapi input.\n\n![Empty IconHub field input](assets/docs/icon-custom-field-input.png)\n\n## Field configuration\n\n### Storage strategy\n\nIconHub supports three storage modes:\n\n- `iconName`: store the Iconify identifier, such as `mdi:home`\n- `iconData`: store raw SVG markup\n- both: keep the identifier and SVG together for maximum flexibility\n\nThis is configured in the field settings.\n\n![Configure storage preferences](assets/docs/configure-storage-preferences.png)\n\n### Restrict available icon set categories\n\nIn **Basic Settings**, you can decide which Iconify collection categories are available for this field. This is the main control for narrowing the picker to a design system, brand icon family, emoji-only field, and similar editorial use cases.\n\n![Configure available icon set categories](assets/docs/configure-available-icon-set-categories.png)\n\n## Editor workflow\n\n### 1. Browse icon sets\n\nThe default picker state is built around icon-set discovery. Editors can browse allowed categories first, then open a set when they want a tighter visual search space.\n\n![Picker default state example 1](assets/docs/icon-picker-modal-default-state-with-icons-sets-and-no-search-example.png)\n![Picker default state example 2](assets/docs/icon-picker-modal-default-state-with-icons-sets-and-no-search-example-2.png)\n![Picker default state example 3](assets/docs/icon-picker-modal-default-state-with-icons-sets-and-no-search-example-3.png)\n\n### 2. Refine the available sets\n\nThe discovery view supports metadata-driven filtering for common browsing patterns:\n\n- tag filtering\n- grid / icon height filtering\n- palette and license filtering\n\n![Filter icon sets by tag](assets/docs/icon-picker-modal-default-state-with-icons-sets-and-no-search-filter-by-tag-example.png)\n![Filter icon sets by grid](assets/docs/icon-picker-modal-default-state-with-icons-sets-and-no-search-filter-by-grid-example.png)\n![Filter icon sets by palette and license](assets/docs/icon-picker-modal-default-state-with-icons-sets-and-no-search-filter-by-palette-and-license-example.png)\n\n### 3. Search globally or open a specific set\n\nEditors can search across all allowed sets from the main toolbar, or open a single set for focused browsing and in-set search.\n\n![Google Material Icons set view](assets/docs/icon-picker-modal-google-material-icons-icon-set-example-state-for-showing-search-inside-iconset.png)\n\nThe set browser keeps the current set context visible:\n\n- set name and author\n- icon count\n- palette information\n- in-set category chips\n- set-local search input\n\n### 4. Review different icon families\n\nThe picker works well across both monotone and multicolor sets.\n\n![Material Design icons example](assets/docs/icon-picker-modal-icons-demo-material-design-icons-iconset-example.png)\n![Fluent UI System Color icons example](assets/docs/icon-picker-modal-icons-demo-fluent-ui-system-color-icons-iconset-example.png)\n![Emoji One icons example](assets/docs/icon-picker-modal-icons-demo-emoji-one-icons-iconset-example.png)\n![Stickies color icons example](assets/docs/icon-picker-modal-icons-demo-stickies-color-icons-iconset-example.png)\n\n### 5. Edit and customize the selected icon\n\nOnce an icon is selected, the field shows the chosen icon in the entry form and exposes an edit action for further adjustments.\n\n![Field input with selected icon and color](assets/docs/icon-custom-field-input-with-selected-icon-and-color.png)\n![Edit button on field input](assets/docs/icon-custom-field-input-edit-button.png)\n\nThe edit modal includes:\n\n- live preview\n- visual color picker\n- hex input\n- icon name and raw SVG editing controls\n- download actions for exported assets\n\n![Icon edit modal](assets/docs/icon-picker-edit-modal.png)\n![Visual color picker](assets/docs/icon-picker-edit-modal-color-picker.png)\n\n## Stored value shape\n\nDepending on configuration, IconHub stores some or all of the following fields:\n\n```ts\ntype IconFieldValue = {\n  iconName: string | null;\n  iconData: string | null;\n  width: number | null;\n  height: number | null;\n  color?: string | null;\n  isSvgEditable?: boolean;\n  isIconNameEditable?: boolean;\n};\n```\n\n## Frontend rendering\n\n### Render from `iconName`\n\nUse this when you want Iconify to resolve the icon on the frontend:\n\n```tsx\nimport { Icon } from '@iconify/react';\n\ntype IconValue = {\n  iconName: string | null;\n  width: number | null;\n  height: number | null;\n  color?: string | null;\n};\n\nexport function IconFromName({ value }: { value: IconValue }) {\n  if (!value.iconName) return null;\n\n  return (\n    <Icon\n      icon={value.iconName}\n      width={value.width ?? 24}\n      height={value.height ?? 24}\n      color={value.color ?? undefined}\n    />\n  );\n}\n```\n\n### Render from `iconData`\n\nUse this when you want full control over the SVG and do not want runtime icon lookups:\n\n```tsx\ntype IconValue = {\n  iconData: string | null;\n  width: number | null;\n  height: number | null;\n  color?: string | null;\n};\n\nexport function IconFromSvg({ value }: { value: IconValue }) {\n  if (!value.iconData) return null;\n\n  return (\n    <svg\n      width={value.width ?? 24}\n      height={value.height ?? 24}\n      viewBox={`0 0 ${value.width ?? 24} ${value.height ?? 24}`}\n      style={{ color: value.color ?? undefined }}\n      dangerouslySetInnerHTML={{ __html: value.iconData }}\n    />\n  );\n}\n```\n\n## Development\n\nUseful local commands:\n\n```bash\nnpm run build\nnpm run watch\nnpm run watch:link\nnpm run verify\nnpm run docs:sync-media\nnpm run docs:readme\n```\n\nType-checking can be run directly with `tsc`:\n\n```bash\nnpx tsc -p admin/tsconfig.json --noEmit\nnpx tsc -p server/tsconfig.json --noEmit\n```\n\n## Documentation assets\n\nDocumentation images and videos are stored in `assets/docs/`. Update `README.source.md`, sync changed assets to Cloudinary, then regenerate the published README:\n\n```bash\nnpm run docs:sync-media\nnpm run docs:readme\n```\n\nThe Cloudinary sync script uploads only changed README assets, stores their content hashes in `docs/readme-media-manifest.json`, and lets `README.md` use Cloudinary delivery URLs for marketplace-safe media rendering. Unsynced assets fall back to jsDelivr URLs.\n\n## License\n\nMIT\n","readmeFilename":"README.source.md"}