{"_id":"@cantileva/icons","_rev":"5-9edd157948dcbe7a96f1cdfb8e71adc6","name":"@cantileva/icons","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@cantileva/icons","version":"0.1.0","keywords":["icons","svg","react","cantileva"],"license":"MIT","_id":"@cantileva/icons@0.1.0","maintainers":[{"name":"romanocoronel","email":"coronelroman@gmail.com"}],"bin":{"cantileva":"sync.js"},"dist":{"shasum":"5bec2eebd809b322b860c1f1ec0a04e491d1cef6","tarball":"https://registry.npmjs.org/@cantileva/icons/-/icons-0.1.0.tgz","fileCount":7,"integrity":"sha512-m4DQP2t6YzqA9SK8pd80ea0r2ElftFC8gvsbV5CcIYSYTXudtDV1NgMzKEk/AV7OKuICCtApj+PCMlRha8D8bg==","signatures":[{"sig":"MEYCIQD9TppHz3Wybp1xn6CvnZ21yxN9q7fAM1UE+8o5a7WYegIhAMDruscrBAx6wP411AQ3kapupaCfNrnWcPPNbjuVsbFz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11314},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./runtime":{"types":"./runtime.d.ts","default":"./runtime.js"},"./package.json":"./package.json"},"scripts":{"postinstall":"node sync.js"},"_npmUser":{"name":"romanocoronel","email":"coronelroman@gmail.com"},"_npmVersion":"11.3.0","description":"Your Cantileva icon library, as React components.","directories":{},"sideEffects":false,"_nodeVersion":"23.6.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=18"},"_npmOperationalInternal":{"tmp":"tmp/icons_0.1.0_1781684613931_0.24551592501485375","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cantileva/icons","version":"0.1.1","keywords":["icons","svg","react","cantileva"],"license":"MIT","_id":"@cantileva/icons@0.1.1","maintainers":[{"name":"romanocoronel","email":"coronelroman@gmail.com"}],"bin":{"cantileva":"sync.js"},"dist":{"shasum":"987a4263b6db04e7b984caa284f1ba72071dd591","tarball":"https://registry.npmjs.org/@cantileva/icons/-/icons-0.1.1.tgz","fileCount":7,"integrity":"sha512-mlBV/RNFtJ1RprUU/Vf8Ycjuf2pWtvqAT6jCIpjCV01dovLhWoDhN2CB72RYtKhF7j9U1DrSwFvIJhrtSj60jg==","signatures":[{"sig":"MEUCIFPLLNpO9UW3qsH3yS/1kGr44A9UERjPfmPI5NSIpap0AiEA3iz9Ff6JAgDpL7EqtYLTxg5TqI++y7dIOxNefcm2Ve0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11835},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./runtime":{"types":"./runtime.d.ts","default":"./runtime.js"},"./package.json":"./package.json"},"scripts":{"postinstall":"node sync.js"},"_npmUser":{"name":"romanocoronel","email":"coronelroman@gmail.com"},"_npmVersion":"11.3.0","description":"Your Cantileva icon library, as React components.","directories":{},"sideEffects":false,"_nodeVersion":"23.6.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=18"},"_npmOperationalInternal":{"tmp":"tmp/icons_0.1.1_1781686130121_0.2241281376815587","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@cantileva/icons","version":"0.1.2","keywords":["icons","svg","react","cantileva"],"license":"MIT","_id":"@cantileva/icons@0.1.2","maintainers":[{"name":"romanocoronel","email":"coronelroman@gmail.com"}],"bin":{"cantileva":"sync.js"},"dist":{"shasum":"27c992f776cc82cd3e1ed3b3c5ecabf2616035b4","tarball":"https://registry.npmjs.org/@cantileva/icons/-/icons-0.1.2.tgz","fileCount":7,"integrity":"sha512-HtlGd0Pv1XpcbsAuS/cEi6frUlogs4lkGOQDAWyXdAO8Dq4Dh5Whmox/lwRjO+xnPVOdesmCDWsm4cmzwflxNQ==","signatures":[{"sig":"MEYCIQDQbTXn+f1D9JFbjqChpB7Fy6BHRB6/EhSDhjOKIAp+dgIhALS9x/ILjB9Oi4LqEXU24g63y3dukOofh3UaviYwxXb7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12453},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./runtime":{"types":"./runtime.d.ts","default":"./runtime.js"},"./package.json":"./package.json"},"gitHead":"874b003537a1dcbe4ad3b7907e33e1d8b82ce073","scripts":{"postinstall":"node sync.js"},"_npmUser":{"name":"romanocoronel","email":"coronelroman@gmail.com"},"_npmVersion":"11.3.0","description":"Your Cantileva icon library, as React components.","directories":{},"sideEffects":false,"_nodeVersion":"23.6.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=18"},"_npmOperationalInternal":{"tmp":"tmp/icons_0.1.2_1781699176104_0.07922076175836468","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@cantileva/icons","version":"0.2.0","keywords":["icons","svg","react","cantileva"],"license":"MIT","_id":"@cantileva/icons@0.2.0","maintainers":[{"name":"romanocoronel","email":"coronelroman@gmail.com"}],"bin":{"cantileva":"sync.js"},"dist":{"shasum":"de4ad78e665749c7a724e044c82a0cc1aac6ac7a","tarball":"https://registry.npmjs.org/@cantileva/icons/-/icons-0.2.0.tgz","fileCount":7,"integrity":"sha512-D2I4VdwlVvkDvz5iB993LnWqIEq424rWDIaa8qAm2XTZvL8QW2z5IaHSReEhLCZXAh8wV+N/2ECwNVL7pP1KHQ==","signatures":[{"sig":"MEYCIQDoT9ynyVWifSX4NlAvNhJ6yCP3yP+FQuVflGWvrapLVwIhAOWfutKXZzGH7UVUWF4+V4nQCrfkIogO8l8Fq9H4ShZ8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17206},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./runtime":{"types":"./runtime.d.ts","default":"./runtime.js"},"./package.json":"./package.json"},"gitHead":"874b003537a1dcbe4ad3b7907e33e1d8b82ce073","scripts":{"postinstall":"node sync.js"},"_npmUser":{"name":"romanocoronel","email":"coronelroman@gmail.com"},"_npmVersion":"11.3.0","description":"Your Cantileva icon library, as React components.","directories":{},"sideEffects":false,"_nodeVersion":"23.6.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=18"},"_npmOperationalInternal":{"tmp":"tmp/icons_0.2.0_1781699604247_0.9926428421307161","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@cantileva/icons","version":"0.2.1","description":"Your Cantileva icon library, as React components.","type":"module","bin":{"cantileva":"sync.js"},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./runtime":{"types":"./runtime.d.ts","default":"./runtime.js"},"./package.json":"./package.json"},"sideEffects":false,"scripts":{"postinstall":"node sync.js"},"peerDependencies":{"react":">=18"},"publishConfig":{"access":"public"},"keywords":["icons","svg","react","cantileva"],"license":"MIT","_id":"@cantileva/icons@0.2.1","gitHead":"6815ea2af6458247a6731173cd2967c5e82ca398","_nodeVersion":"23.6.1","_npmVersion":"11.3.0","dist":{"integrity":"sha512-OdRIjXXUC/D3Ol01z1fRg5CItr5gf9hI8xlwOEQjyBrRCTRx3FgF2e2oxeX6nT5TfiTeAn+H09JvELakWuKDlg==","shasum":"58a6513fd947007df05857be0f271e763ac2c0af","tarball":"https://registry.npmjs.org/@cantileva/icons/-/icons-0.2.1.tgz","fileCount":7,"unpackedSize":19567,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCO4IU3wyP6Hv1gGojoVsdlyrun4KPbiGUACnYgjxJYcAIgRZVRbwRc2mdpmuzpC7kj4+aXQAdVP+XO9e+FQEygZwU="}]},"_npmUser":{"name":"romanocoronel","email":"coronelroman@gmail.com"},"directories":{},"maintainers":[{"name":"romanocoronel","email":"coronelroman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/icons_0.2.1_1782395791871_0.6759196224497803"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-17T08:23:33.733Z","modified":"2026-06-25T13:56:32.157Z","0.1.0":"2026-06-17T08:23:34.070Z","0.1.1":"2026-06-17T08:48:50.280Z","0.1.2":"2026-06-17T12:26:16.231Z","0.2.0":"2026-06-17T12:33:24.395Z","0.2.1":"2026-06-25T13:56:32.018Z"},"license":"MIT","keywords":["icons","svg","react","cantileva"],"description":"Your Cantileva icon library, as React components.","maintainers":[{"name":"romanocoronel","email":"coronelroman@gmail.com"}],"readme":"# @cantileva/icons\n\nImport **your** Cantileva icons as React components:\n\n```tsx\nimport { TrashIcon } from \"@cantileva/icons\";\n\n<TrashIcon className=\"size-6 text-amber-500\" />\n```\n\nIt works by **syncing** — a one-time download (per your API key) of the icons you\nmade in the Cantileva app into this package as real components. No AI, no bundler\nplugin, no config: the bare import resolves in any bundler (Turbopack, Vite, webpack).\n\n## Setup\n\n```bash\nnpm i @cantileva/icons\n```\n\nSet your API key (from the app → Settings → API keys). The sync reads it from your\nenvironment or a `.env`:\n\n```bash\n# .env\nCANTILEVA_API_KEY=cnt_yourkey\n```\n\nThe icons sync automatically right after install. Commands:\n\n```bash\nnpx cantileva              # sync your whole library\nnpx cantileva list         # list your icons\nnpx cantileva add trash dog  # sync only these (smaller output)\nnpx cantileva watch        # re-sync on an interval while you work\n```\n\n## Icons\n\n```tsx\nimport { TrashIcon } from \"@cantileva/icons\";\n\n<TrashIcon className=\"size-6 text-amber-500\" />   // size + color (currentColor / 1em)\n<TrashIcon variant=\"stroke\" />                    // solid · stroke · duotone · bulk · twotone · slab\n<TrashIcon size={32} />                            // shorthand for width/height\n```\n\nEvery prop is forwarded to the `<svg>`, so `onClick`, `aria-label`, `style`, etc. all work.\n\n## Animations\n\nIcons you've animated also export a self-playing `…Animated` component (frames load\nlazily in their own chunk):\n\n```tsx\nimport { RocketShipAnimated } from \"@cantileva/icons\";\n\n<RocketShipAnimated />                  // loops on its own\n<RocketShipAnimated trigger=\"hover\" />  // also: \"click\" | \"inView\" | \"once\"\n<RocketShipAnimated fps={24} speed={2} direction=\"pingpong\" loop={3} onComplete={(n) => {}} />\n```\n\n| Prop | Values |\n|------|--------|\n| `trigger` | `auto` (default) · `hover` · `click` · `inView` · `once` |\n| `fps` / `speed` | number / multiplier |\n| `direction` | `forward` · `reverse` · `pingpong` |\n| `loop` | `true` · `false` · count |\n| `onComplete` | `(loops) => void` |\n| `size` | width/height shorthand |\n\n## Illustrations\n\nMulti-colour vector art you made in Cantileva syncs too — each becomes a\n`…Illustration` component (real fills, its own viewBox, not `currentColor`):\n\n```tsx\nimport { MountainLionIllustration } from \"@cantileva/icons\";\n\n<MountainLionIllustration className=\"w-80\" />   // width via className / size / width\n<MountainLionIllustration size={320} />          // height keeps the aspect ratio\n```\n\nRecolour in the app and re-sync — colours are baked into the SVG.\n\n## How it works (and how it's secured)\n\n`npm i` (and `npx cantileva`) run a **sync** that calls the Cantileva API with your\n`CANTILEVA_API_KEY`. The backend **verifies the key and returns only your icons** —\nno key, or an invalid one, and nothing is downloaded. The components are written\ninto the package, so importing them is a normal ESM import (no plugin, no runtime\nfetch, key never ships to the browser).\n\nThis is the same shape as `prisma generate`: a local codegen step, scoped to you.\n\n## Uninstall\n\n```bash\nnpm uninstall @cantileva/icons\n```\n\nThat's all — the synced components live inside the package, so removing it leaves\nnothing behind in your project.\n\n## Notes\n\n- **No key yet?** Install still succeeds; the sync just skips. Set the key and run\n  `npx cantileva`.\n- **CI:** set `CANTILEVA_API_KEY` as a secret; the postinstall sync picks it up. If\n  you run installs with `--ignore-scripts`, run `npx cantileva` as a build step.\n- **Self-hosted / local:** point at your instance with `CANTILEVA_API_URL`\n  (default is the hosted Cantileva).\n","readmeFilename":"README.md"}