{"_id":"@aiellie/avatars","_rev":"2-b687fd4ded788d0d8470ef0489a70676","name":"@aiellie/avatars","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@aiellie/avatars","version":"0.1.0","keywords":["avatar","svg","mesh-gradient","gradient","deterministic","generative","identicon"],"author":{"url":"https://aiellie.dev","name":"aiellie"},"license":"MIT","_id":"@aiellie/avatars@0.1.0","maintainers":[{"name":"aiellie","email":"aiellie.dev@gmail.com"}],"homepage":"https://github.com/aiellie/aiellie.avatars#readme","bugs":{"url":"https://github.com/aiellie/aiellie.avatars/issues"},"bin":{"aiellie-avatars":"dist/cli.js"},"dist":{"shasum":"b45a1193024f0244bbe9776ebdc1ce49c349a097","tarball":"https://registry.npmjs.org/@aiellie/avatars/-/avatars-0.1.0.tgz","fileCount":12,"integrity":"sha512-HB/wzvztMswtNA3cCyBDzMiGKEACCibZEwdjw9M3OF6f7NZ1S88Hsn1Gh2WgBdUmcq2LhkbPryqcHRFPtlSaog==","signatures":[{"sig":"MEQCIGZuVFu0+NpgCtHowkhNy1OVWL4tPRxnoCKw8VbAxaMyAiAXuoXsJv/syO9SHGWchGneAZ4DCRoezPlqKufQFScM5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51434},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"c010285407a813f0f8ef5d2d12589570230c4a54","scripts":{"test":"vitest run","build":"tsup src/index.ts src/cli.ts --format esm,cjs --dts --clean","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"aiellie","email":"aiellie.dev@gmail.com"},"repository":{"url":"git+https://github.com/aiellie/aiellie.avatars.git","type":"git"},"_npmVersion":"11.6.1","description":"Deterministic avatar, glass-gradient, and mesh-gradient SVG generation. Same seed, same image — zero dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","tsup":"^8.5.0","vitest":"^3.2.0","typescript":"^5.9.0","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/avatars_0.1.0_1784050299679_0.14826028743711395","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aiellie/avatars","version":"0.1.1","description":"Deterministic avatar, glass-gradient, and mesh-gradient SVG generation. Same seed, same image — zero dependencies.","keywords":["avatar","svg","mesh-gradient","gradient","deterministic","generative","identicon"],"author":{"name":"aiellie","url":"https://aiellie.dev"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/aiellie/aiellie.avatars.git"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"bin":{"aiellie-avatars":"dist/cli.js"},"publishConfig":{"access":"public"},"sideEffects":false,"engines":{"node":">=20"},"scripts":{"build":"tsup src/index.ts src/cli.ts --format esm,cjs --dts --clean","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"devDependencies":{"@types/node":"^24.0.0","tsup":"^8.5.0","tsx":"^4.23.1","typescript":"^5.9.0","vitest":"^3.2.0"},"gitHead":"381260bdadbef84ce48ddc6fd1d274062ab0e6a5","_id":"@aiellie/avatars@0.1.1","bugs":{"url":"https://github.com/aiellie/aiellie.avatars/issues"},"homepage":"https://github.com/aiellie/aiellie.avatars#readme","_nodeVersion":"22.18.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-avkuHWcXRLINduLEPHCnicYczZtdpGJqLVYRqca1lBC1vIBmnIqY7NpJsukMCaLcyVNdx9RaSdfK8n/8IRTRoQ==","shasum":"7832cb6595008849bc00b5bc281e28e1970e5834","tarball":"https://registry.npmjs.org/@aiellie/avatars/-/avatars-0.1.1.tgz","fileCount":12,"unpackedSize":51432,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBUCAvhYj1HKUMFAPo9swIFhoJTn2otBmp/acFOKGyGAAiBNWWy/B/Ha4BgQkRSAzHG22KFgLFwOoBIt32vg+ymqTA=="}]},"_npmUser":{"name":"aiellie","email":"aiellie.dev@gmail.com"},"directories":{},"maintainers":[{"name":"aiellie","email":"aiellie.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/avatars_0.1.1_1784050475558_0.3368936015310309"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-14T17:31:39.446Z","modified":"2026-07-14T17:34:35.802Z","0.1.0":"2026-07-14T17:31:39.797Z","0.1.1":"2026-07-14T17:34:35.692Z"},"bugs":{"url":"https://github.com/aiellie/aiellie.avatars/issues"},"author":{"name":"aiellie","url":"https://aiellie.dev"},"license":"MIT","homepage":"https://github.com/aiellie/aiellie.avatars#readme","keywords":["avatar","svg","mesh-gradient","gradient","deterministic","generative","identicon"],"repository":{"type":"git","url":"git+https://github.com/aiellie/aiellie.avatars.git"},"description":"Deterministic avatar, glass-gradient, and mesh-gradient SVG generation. Same seed, same image — zero dependencies.","maintainers":[{"name":"aiellie","email":"aiellie.dev@gmail.com"}],"readme":"# @aiellie/avatars\n\nDeterministic avatar, glass-gradient, and mesh-gradient SVG generation. **Same seed, same image** — on every platform, forever. Zero dependencies, works in Node and the browser, tree-shakeable.\n\nThis is the engine behind [avatar.aiellie.dev](https://avatar.aiellie.dev) and [aiellie.studio](https://aielliestudio.vercel.app), extracted as a library.\n\n## Install\n\n```bash\npnpm add @aiellie/avatars   # or npm / yarn / bun\n```\n\n## Generators\n\n### Gradient avatars\n\nName → hue via SHA-1 byte sum, paired with its triadic partner. Byte-compatible with the avatar.aiellie.dev API — the package and the API agree on every name.\n\n```ts\nimport { gradientAvatarSvg } from \"@aiellie/avatars\";\n\nconst svg = await gradientAvatarSvg(\"ellie\", { size: 120, rounded: 60 });\n```\n\n### Frosted-glass avatars\n\nSeeded blobs with radial gradients under an in-SVG `feGaussianBlur` — chosen over CSS `backdrop-filter` specifically so the frosted look survives rasterization to PNG.\n\n```ts\nimport { glassAvatarSvg } from \"@aiellie/avatars\";\n\nconst svg = glassAvatarSvg(\"ellie\", {\n  palette: \"aurora\", // aurora | sunset | ocean | candy | forest | mono | neon | peach\n  shape: \"squircle\", // squircle | circle | rounded\n  blobs: 2,\n  blur: 7,\n});\n```\n\n### Mesh gradients\n\nGrid-jittered blurred color blobs over a base fill — every color claims its own region, blended at the seams.\n\n```ts\nimport { meshSvg, seedFrom } from \"@aiellie/avatars\";\n\nconst svg = meshSvg({\n  colors: [\"#5eead4\", \"#818cf8\", \"#f472b6\"],\n  width: 1600,\n  height: 900,\n  seed: seedFrom(\"ellie\"),\n  softness: 0.6,\n});\n```\n\n## CLI\n\n```bash\nnpx @aiellie/avatars glass ellie --palette ocean -o avatar.svg\nnpx @aiellie/avatars gradient ellie --size 256 --rounded 128\nnpx @aiellie/avatars mesh ellie --colors \"#5eead4,#818cf8\" --width 1600 --height 900 -o bg.svg\n```\n\n## How determinism works\n\nStrings are hashed with xmur3 (or FNV-1a for mesh seeds) into a 32-bit seed driving a mulberry32 PRNG. Every visual decision — hue jitter, blob position, radius, opacity — draws from that stream, so a seed fully determines the image. The test suite locks the hash values so a refactor can never silently reshuffle everyone's avatars.\n\n## License\n\nMIT © [aiellie](https://aiellie.dev)\n","readmeFilename":"README.md"}