{"_id":"@blumepage/dicebear-flowers","_rev":"8-0c606fa471537b5de10aefec4f67abe4","name":"@blumepage/dicebear-flowers","dist-tags":{"latest":"3.0.0"},"versions":{"0.2.0":{"name":"@blumepage/dicebear-flowers","version":"0.2.0","keywords":["dicebear","dicebear-style","avatar","flowers","svg","style","blume"],"license":"MIT","_id":"@blumepage/dicebear-flowers@0.2.0","maintainers":[{"name":"olavblj","email":"olavlj@me.com"}],"dist":{"shasum":"7433ad9d4b0754f933cb524edf2ae483bccae9b9","tarball":"https://registry.npmjs.org/@blumepage/dicebear-flowers/-/dicebear-flowers-0.2.0.tgz","fileCount":7,"integrity":"sha512-pVXUU6er+q+A1K/2Wh+d8Ji3s59b6WIlPRLa+GMF/ZnG1ULjXunexs0uKItN+4kWnqPkrUCNDbPDdzYnHSPv6A==","signatures":[{"sig":"MEQCIE+6KphIMwrsdvX/xSntKMCggpfUJSUXHu4irVGoPe93AiAwXlhGlAPJ6BSGkpTUXHwjFxKaDu8wTw1KuQIdY0BgTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78613},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"c53e543af858d5e42d02c022f08469646195847d","scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","build":"tsup src/index.ts --format esm,cjs --dts --clean","preview":"npm --prefix preview run dev","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build","preview:install":"npm --prefix preview install"},"_npmUser":{"name":"olavblj","email":"olavlj@me.com"},"_npmVersion":"10.9.2","description":"A DiceBear style that generates cheerful flower avatars — petals, stems, leaves, and styled backdrops with deterministic domain seeds.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.4.0","@dicebear/core":"^9.2.2"},"peerDependencies":{"@dicebear/core":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dicebear-flowers_0.2.0_1779226003671_0.9285342914633541","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@blumepage/dicebear-flowers","version":"0.2.1","keywords":["dicebear","dicebear-style","avatar","flowers","svg","style","blume"],"license":"MIT","_id":"@blumepage/dicebear-flowers@0.2.1","maintainers":[{"name":"olavblj","email":"olavlj@me.com"}],"dist":{"shasum":"f007543d5baff8f8f4cdffb1332d5a8d68a86822","tarball":"https://registry.npmjs.org/@blumepage/dicebear-flowers/-/dicebear-flowers-0.2.1.tgz","fileCount":7,"integrity":"sha512-NN8x/Dqu2UB/hrsi6dcDL0vEJh93BJZbt4d7lQ30YuUPjWKhRfjrsNXHLTrLsJptE3GepybqXsh7vKwSpkIuNQ==","signatures":[{"sig":"MEYCIQCOb9goeKMiVEPBft8Xt2KidW+ZmuCFQ/eIPvbi0OYfpQIhAPKROJWiwChy1W3nZw3VGrPYTfwwewNZeyRlB+PD1B7m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79725},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","build":"tsup src/index.ts --format esm,cjs --dts --clean","preview":"npm --prefix preview run dev","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build","preview:install":"npm --prefix preview install"},"_npmUser":{"name":"olavblj","email":"olavlj@me.com"},"_npmVersion":"10.9.2","description":"A DiceBear style that generates cheerful flower avatars — petals, stems, leaves, and styled backdrops with deterministic domain seeds.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.4.0","@dicebear/core":"^9.2.2"},"peerDependencies":{"@dicebear/core":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dicebear-flowers_0.2.1_1779715536651_0.9521210432934379","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@blumepage/dicebear-flowers","version":"0.2.2","keywords":["dicebear","dicebear-style","avatar","flowers","svg","style","blume"],"license":"MIT","_id":"@blumepage/dicebear-flowers@0.2.2","maintainers":[{"name":"olavblj","email":"olavlj@me.com"}],"dist":{"shasum":"db78cca4bea5632bd613139fa10514cc08ceb775","tarball":"https://registry.npmjs.org/@blumepage/dicebear-flowers/-/dicebear-flowers-0.2.2.tgz","fileCount":7,"integrity":"sha512-nUal/Wm33kaccMlDkGCyM9k2nOrWk77iiyU7OYFpMq0SO6rSXzKzId40QZuV1IibZ+lrokuroiyzu4kUpcKCCQ==","signatures":[{"sig":"MEYCIQDBPwPTuHuQBhRTlbmDEWcZVQlDMSqX4fKWtfEOH/sKfQIhAI+fdn/vPmSMQUTv5RVmUgWatIq6DS6r33s5HmADtJgZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80495},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","test":"npm run build && node test/domain-seeds.test.mjs","build":"tsup src/index.ts --format esm,cjs --dts --clean","preview":"npm --prefix preview run dev","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm test","preview:install":"npm --prefix preview install"},"_npmUser":{"name":"olavblj","email":"olavlj@me.com"},"_npmVersion":"10.9.2","description":"A DiceBear style that generates cheerful flower avatars — petals, stems, leaves, and styled backdrops with deterministic domain seeds.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.4.0","@dicebear/core":"^9.2.2"},"peerDependencies":{"@dicebear/core":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dicebear-flowers_0.2.2_1779722116633_0.4447231709726991","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@blumepage/dicebear-flowers","version":"0.2.3","keywords":["dicebear","dicebear-style","avatar","flowers","svg","style","blume"],"license":"MIT","_id":"@blumepage/dicebear-flowers@0.2.3","maintainers":[{"name":"olavblj","email":"olavlj@me.com"}],"dist":{"shasum":"dc25f257d8b5f75ad634fa39fe30262acc32774f","tarball":"https://registry.npmjs.org/@blumepage/dicebear-flowers/-/dicebear-flowers-0.2.3.tgz","fileCount":7,"integrity":"sha512-OdpTXY8QztoQELIAJQfGnvgezKhPL9ccuTsMEszOZfw//H0pxomFiA5N3kmxXJxTSji46tpCj9TWbL6FwC6j2A==","signatures":[{"sig":"MEUCIDS0h71EAkbWmHi//6Lj5WrBa45ilxw7hFx3iJIAesA3AiEA98c8w7W0Y440Ei3FpXaVBL5+W/oLmeNV1MrujbcLyu8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82979},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","test":"npm run build && node test/domain-seeds.test.mjs","build":"tsup src/index.ts --format esm,cjs --dts --clean","preview":"npm --prefix preview run dev","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm test","preview:install":"npm --prefix preview install"},"_npmUser":{"name":"olavblj","email":"olavlj@me.com"},"_npmVersion":"10.9.2","description":"A DiceBear style that generates cheerful flower avatars — petals, stems, leaves, and styled backdrops with deterministic domain seeds.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.4.0","@dicebear/core":"^9.2.2"},"peerDependencies":{"@dicebear/core":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dicebear-flowers_0.2.3_1779723357681_0.8055648053497828","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@blumepage/dicebear-flowers","version":"2.0.0","keywords":["dicebear","dicebear-style","avatar","flowers","svg","style","generative","blume"],"license":"MIT","_id":"@blumepage/dicebear-flowers@2.0.0","maintainers":[{"name":"olavblj","email":"olavlj@me.com"}],"dist":{"shasum":"c3c4d4be8c653881da6145a3d7e4adf684664485","tarball":"https://registry.npmjs.org/@blumepage/dicebear-flowers/-/dicebear-flowers-2.0.0.tgz","fileCount":16,"integrity":"sha512-eM8rUXA8XWkwpCpRdf8hsqpE1FcwiYjblgFOipkkrX1/kB3BAFlLcQeTZKfr9IOYMZQ+SEcrU4St1aaD/OAVYQ==","signatures":[{"sig":"MEUCIQDxsdsT8P/PCTrj094jatlzg6XvsF8hreY6+5mQ/QbxowIgMdItWCCeTtxt4YugbCfArqI5QHi5/ty7/7Rc9yFkgZo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235739},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./v1":{"types":"./dist/v1/index.d.ts","import":"./dist/v1/index.js","require":"./dist/v1/index.cjs"},"./v2":{"types":"./dist/v2/index.d.ts","import":"./dist/v2/index.js","require":"./dist/v2/index.cjs"}},"scripts":{"dev":"tsup src/index.ts src/v1/index.ts src/v2/index.ts --format esm,cjs --dts --watch","build":"tsup src/index.ts src/v1/index.ts src/v2/index.ts --format esm,cjs --dts --clean","preview":"npm --prefix preview run dev","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build","preview:install":"npm --prefix preview install"},"_npmUser":{"name":"olavblj","email":"olavlj@me.com"},"_npmVersion":"10.9.2","description":"Two generations of flower avatars: the original DiceBear style and a species-based v2 with project/conversation seeding.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.4.0","@dicebear/core":"^9.2.2"},"peerDependencies":{"@dicebear/core":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dicebear-flowers_2.0.0_1784030887177_0.6993768149039463","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@blumepage/dicebear-flowers","version":"2.0.1","keywords":["dicebear","dicebear-style","avatar","flowers","svg","style","generative","blume"],"license":"MIT","_id":"@blumepage/dicebear-flowers@2.0.1","maintainers":[{"name":"olavblj","email":"olavlj@me.com"}],"dist":{"shasum":"1735ec0fa38ee75e37a4ac88609c6b99e586ca35","tarball":"https://registry.npmjs.org/@blumepage/dicebear-flowers/-/dicebear-flowers-2.0.1.tgz","fileCount":16,"integrity":"sha512-ImB/j3nifr+/+M4yCU+gsDrR/wtB6SXpBBmOCDDkKX6dc1zF2kQpwJO7Qf97OvPvXpWFCwNmp8vTTjfE1Hd85g==","signatures":[{"sig":"MEUCIQCCfVARYpUOowN+ZkFMv7vmSg1uIYBAiUU+aqZbpAlNgwIgFQGQC8wDpc3endtVex4bQojmE1AYHgwHhioS5hRjh6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":236373},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./v1":{"types":"./dist/v1/index.d.ts","import":"./dist/v1/index.js","require":"./dist/v1/index.cjs"},"./v2":{"types":"./dist/v2/index.d.ts","import":"./dist/v2/index.js","require":"./dist/v2/index.cjs"}},"scripts":{"dev":"tsup src/index.ts src/v1/index.ts src/v2/index.ts --format esm,cjs --dts --watch","build":"tsup src/index.ts src/v1/index.ts src/v2/index.ts --format esm,cjs --dts --clean","preview":"npm --prefix preview run dev","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build","preview:install":"npm --prefix preview install"},"_npmUser":{"name":"olavblj","email":"olavlj@me.com"},"_npmVersion":"10.9.2","description":"Two generations of flower avatars: the original DiceBear style and a species-based v2 with project/conversation seeding.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.4.0","@dicebear/core":"^9.2.2"},"peerDependencies":{"@dicebear/core":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dicebear-flowers_2.0.1_1784032659379_0.5702682998882342","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@blumepage/dicebear-flowers","version":"2.0.2","keywords":["dicebear","dicebear-style","avatar","flowers","svg","style","generative","blume"],"license":"MIT","_id":"@blumepage/dicebear-flowers@2.0.2","maintainers":[{"name":"olavblj","email":"olavlj@me.com"}],"dist":{"shasum":"5098aa661b1e6cced06c530738706ad181bca711","tarball":"https://registry.npmjs.org/@blumepage/dicebear-flowers/-/dicebear-flowers-2.0.2.tgz","fileCount":16,"integrity":"sha512-REgrJW7KcJGFC2GmI/DYE2EXy2A2Q8GWF7gUHN5OE9DVY9R/ZJb+ZEXZTaaOJUD6jugc3kFywVYddVjTN/GlaQ==","signatures":[{"sig":"MEUCIQCs+24vHE1oVV8yYsSnVkz4zkmZaSqPM26pu3VeO9M+agIgfqYboQAGFE/2KxtyfSIx1UOpIIuClFRwNW8SriEdIh8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":236859},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./v1":{"types":"./dist/v1/index.d.ts","import":"./dist/v1/index.js","require":"./dist/v1/index.cjs"},"./v2":{"types":"./dist/v2/index.d.ts","import":"./dist/v2/index.js","require":"./dist/v2/index.cjs"}},"scripts":{"dev":"tsup src/index.ts src/v1/index.ts src/v2/index.ts --format esm,cjs --dts --watch","build":"tsup src/index.ts src/v1/index.ts src/v2/index.ts --format esm,cjs --dts --clean","preview":"npm --prefix preview run dev","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build","preview:install":"npm --prefix preview install"},"_npmUser":{"name":"olavblj","email":"olavlj@me.com"},"_npmVersion":"10.9.2","description":"Two generations of flower avatars: the original DiceBear style and a species-based v2 with project/conversation seeding.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.4.0","@dicebear/core":"^9.2.2"},"peerDependencies":{"@dicebear/core":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dicebear-flowers_2.0.2_1784034504029_0.38847263826761735","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@blumepage/dicebear-flowers","version":"3.0.0","description":"Three generations of flower avatars, including a cohesive parametrized v3 with project/conversation seeding.","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"},"./v1":{"types":"./dist/v1/index.d.ts","import":"./dist/v1/index.js","require":"./dist/v1/index.cjs"},"./v2":{"types":"./dist/v2/index.d.ts","import":"./dist/v2/index.js","require":"./dist/v2/index.cjs"},"./v3":{"types":"./dist/v3/index.d.ts","import":"./dist/v3/index.js","require":"./dist/v3/index.cjs"}},"sideEffects":false,"scripts":{"build":"tsup src/index.ts src/v1/index.ts src/v2/index.ts src/v3/index.ts --format esm,cjs --dts --clean","dev":"tsup src/index.ts src/v1/index.ts src/v2/index.ts src/v3/index.ts --format esm,cjs --dts --watch","typecheck":"tsc --noEmit","test":"npm run build && node --test test/*.test.mjs","prepublishOnly":"npm run typecheck && npm run build","preview":"npm --prefix preview run dev","preview:install":"npm --prefix preview install"},"keywords":["dicebear","dicebear-style","avatar","flowers","svg","style","generative","blume"],"license":"MIT","peerDependencies":{"@dicebear/core":"^9.0.0"},"devDependencies":{"@dicebear/core":"^9.2.2","tsup":"^8.0.0","typescript":"^5.4.0"},"_id":"@blumepage/dicebear-flowers@3.0.0","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-UKMm9R9JJ5bGcDbW+11VtrcykSgQcfDdHAQML+MscdOPyBEHitiuLNcszNTROgSTK4EhLr6VjehpPXudsX6EyQ==","shasum":"3d9d31ad91b2dac2b74af142c481fd4de439273d","tarball":"https://registry.npmjs.org/@blumepage/dicebear-flowers/-/dicebear-flowers-3.0.0.tgz","fileCount":23,"unpackedSize":511861,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD8hRCSgf7E64gLMCZULcvVuS7sA4UT5TridXqRbLmqHAIhAJ07Fb0EwEaQESWzy3kcY330IUavlm9KJNG2dGLqxeFs"}]},"_npmUser":{"name":"olavblj","email":"olavlj@me.com"},"directories":{},"maintainers":[{"name":"olavblj","email":"olavlj@me.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dicebear-flowers_3.0.0_1784292049862_0.7747645813953692"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-19T21:26:43.521Z","modified":"2026-07-17T12:40:50.163Z","0.2.0":"2026-05-19T21:26:43.848Z","0.2.1":"2026-05-25T13:25:36.820Z","0.2.2":"2026-05-25T15:15:16.787Z","0.2.3":"2026-05-25T15:35:57.821Z","2.0.0":"2026-07-14T12:08:07.313Z","2.0.1":"2026-07-14T12:37:39.535Z","2.0.2":"2026-07-14T13:08:24.191Z","3.0.0":"2026-07-17T12:40:49.989Z"},"license":"MIT","keywords":["dicebear","dicebear-style","avatar","flowers","svg","style","generative","blume"],"description":"Three generations of flower avatars, including a cohesive parametrized v3 with project/conversation seeding.","maintainers":[{"name":"olavblj","email":"olavlj@me.com"}],"readme":"# @blumepage/dicebear-flowers\n\nThree generations of flower avatars in one package:\n\n- **v1** — the original configurable DiceBear flower style.\n- **v2** — species-based crowns with two-level project/conversation\n  seeding. It works both as a DiceBear style and as a standalone SVG API.\n- **v3** — the cohesive final-pass flower set: approved species silhouettes,\n  one shared outline system, normalized project framing, and explicit\n  species-specific geometry parameters.\n\nFrom package 3.0.0, the package root is v3. Explicit `/v1` and `/v2` entry\npoints remain available for applications that need the earlier renderers.\n\n## Install\n\n```sh\nnpm install @dicebear/core @blumepage/dicebear-flowers\n```\n\n## Versioned entry points\n\n| Import | API |\n| --- | --- |\n| `@blumepage/dicebear-flowers` | v3 current API |\n| `@blumepage/dicebear-flowers/v1` | explicit v1 DiceBear style |\n| `@blumepage/dicebear-flowers/v2` | v2 DiceBear style and standalone renderers |\n| `@blumepage/dicebear-flowers/v3` | final-pass v3 DiceBear style and standalone renderers |\n\n## v3\n\nv3 keeps the v2 two-seed model, but replaces the crown layer with the final\ncurated system. Project crowns are always centered in the same frame, use the\nflower head for sizing, and receive only a very short connector when a\nside-profile flower needs one. Seeded size and position variation are reserved\nfor conversation settings—not project crowns.\n\n```ts\nimport {\n  projectAvatar,\n  conversationAvatar,\n} from '@blumepage/dicebear-flowers/v3';\n\nconst project = projectAvatar('my-project', {\n  species: { allow: ['dahlia'] },\n  lineWidth: { min: 1.15, max: 1.15 },\n  dahliaStyle: { allow: ['waterlily', 'ball'] },\n  ringCount: { min: 3, max: 5 },\n  twoTone: true,\n});\n\nconst conversation = conversationAvatar('my-project', 'conversation-7', {\n  crown: { species: { allow: ['dahlia'] } },\n  setting: { bgPattern: { allow: ['rings', 'wedges', 'bands'] } },\n});\n```\n\n### v3 parameter model\n\nv3 keeps the v2 parameter shapes:\n\n- `Choice<T>` — `{ allow?: T[], deny?: T[] }` for curated enums and colors.\n- `Span` — `{ min?: number, max?: number }`; equal values lock a number.\n- `boolean | undefined` — an explicit value locks the flag; `undefined` uses\n  the deterministic seeded default.\n\nThe system has four layers:\n\n1. **Identity** — species, palette, center treatment, and two-tone behavior.\n2. **Shared drawing grammar** — `lineWidth`, `petalLength`, `petalWidth`,\n   `centerRatio`, and `irregularity` work across the species that support them.\n3. **Species geometry** — named styles plus biologically meaningful counts,\n   proportions, and detail controls.\n4. **Setting** — v2's conversation-seeded stems, bouquets, foliage, harmonious\n   backgrounds, and background-pattern parameters.\n\nThe default `lineWidth` is fixed at `1.15`, so randomly generated species feel\ndrawn by the same hand. Callers can set it from `0.8` to `1.7`; the recommended\nproduction range is `0.95–1.35`.\n\n### Shared v3 crown parameters\n\n| Parameter | Range / values | Meaning |\n| --- | --- | --- |\n| `species` | 14 species | Approved flower renderer |\n| `petalColor` / `centerColor` | hex choices | Curated colors by default; custom colors supported |\n| `petalVariation` | boolean | Small deterministic variation around the base color |\n| `twoTone` | boolean | Enables the species' approved secondary-color placement |\n| `lineWidth` | `0.8–1.7` | Shared visible petal outline; default `1.15` |\n| `petalCount` | species-clamped | Petals, rays, or repeated major units |\n| `petalLength` | `0.78–1.18` | Multiplier around the approved silhouette |\n| `petalWidth` | `0.78–1.32` | Multiplier around the approved silhouette |\n| `centerRatio` | `0.08–0.44` | Center radius relative to the common head radius |\n| `irregularity` | `0–0.16` | Restrained organic variation; default stays subtle |\n| `rotation` / `spread` | v2-compatible | Explicit overrides; project defaults remain canonical |\n\n### Species-specific v3 parameters\n\n| Species | Style values | Geometry controls |\n| --- | --- | --- |\n| Daisy | final A11 family | `petalCount 14–24`, `petalLength`, `petalWidth`, `centerRatio`, `irregularity` |\n| Sunflower | `full`, `burgundyRing` | `petalCount 22–30`, `petalWidth`, `centerRatio` |\n| Rose | approved current family | `petalCount 7–12`, `ringCount 2–3`, `twoTone` |\n| Tulip | `classic`, `cup`, `bud`, `sculpted` | `tulipOpenness`, `tulipPetalShape`, `heightWidthRatio .85–1.15`, `twoTone` |\n| Poppy | `classic`, `corn` | `petalCount 4–6`, `centerRatio`, `blackBlotch` |\n| Forget-me-not | approved current family | fixed five petals, `petalWidth`, `centerRatio`, subtle `twoTone` |\n| Bluebell | `soft`, `sculpted` | `bellCount 3–7`, `racemeArc .15–.70`, `twoTone` |\n| Lantana | dense H11-derived dome | `floretCount 30–60`, `clusterSpread`, `floretSize`, `colorZones 1–3` |\n| Lily | approved current family | fixed six tepals, `petalWidth`, `spots`, `twoTone` |\n| Cosmos | approved broad-ray family | `petalCount 8–10`, `petalWidth`, `notchDepth`, `centerRatio` |\n| Anemone | `classic`, `coronaria` | `petalCount 6–8`, `centerRatio`, `stamenDensity 8–22` |\n| Dahlia | `classic`, `waterlily`, `ball` | `ringCount 3–5`, `petalWidth`, `colorPlacement`, `twoTone` |\n| Bellflower | `short`, `medium`, `tall` | `bellflowerFlare`, `bellflowerRim`, `mouthDepth`; connector stays fixed |\n| Marigold | `classic`, `frenchBicolor` | `ringCount 3–5`, `density 20–48`, `ruffle`, `twoTone` |\n\nThe v3 DiceBear entry exposes the same controls as arrays, following DiceBear's\nstyle convention. Numeric arrays become spans; enum and color arrays become\nallow-lists.\n\n```ts\nimport { createAvatar } from '@dicebear/core';\nimport { style } from '@blumepage/dicebear-flowers/v3';\n\nconst svg = createAvatar(style, {\n  seed: ['conversation-7'],\n  projectSeed: 'my-project',\n  species: ['bluebell'],\n  bluebellBellType: ['soft', 'sculpted'],\n  bellCount: [3, 7],\n  lineWidth: [1.15],\n}).toString();\n```\n\n### v1 with DiceBear\n\n```ts\nimport { createAvatar } from '@dicebear/core';\nimport { style } from '@blumepage/dicebear-flowers/v1';\n\nconst svg = createAvatar(style, { seed: 'rosie' }).toString();\n```\n\n### v2 with DiceBear\n\n```ts\nimport { createAvatar } from '@dicebear/core';\nimport { style } from '@blumepage/dicebear-flowers/v2';\n\nconst svg = createAvatar(style, {\n  seed: 'conversation-1',\n  projectSeed: 'my-project',\n  species: ['rose', 'tulip'],\n}).toString();\n```\n\nDiceBear's `seed` drives the setting by default. Set `projectSeed` to\nkeep the same crown across different avatar seeds. Set\n`mode: ['project']` to render only the crown tile. Project crowns use a\ncanonical centered 100% frame with zero rotation unless explicitly overridden.\nEvery crown receives one flat deterministic companion-color tile, with a\ncontrast guard for pale or unusually bright petals.\n\n### v2 standalone\n\n```ts\nimport {\n  projectAvatar,\n  conversationAvatar,\n} from '@blumepage/dicebear-flowers/v2';\n\nconst project = projectAvatar('my-project');\nconst convA = conversationAvatar('my-project', 'conversation-1');\nconst convB = conversationAvatar('my-project', 'conversation-2');\n// convA and convB show the same flower in visibly different settings.\n```\n\nThe standalone v2 renderer has no runtime dependencies and returns pure,\ndeterministic SVG strings.\n\n## v2 parameter model\n\nEvery tunable uses one of three shapes:\n\n- **`Choice<T>`** for enums: `{ allow?: T[], deny?: T[] }`. If `allow`\n  is present, only those values are used (whitelist). Otherwise the full\n  curated pool minus `deny` is used (blacklist).\n- **`Span`** for numbers: `{ min?, max? }`. Omitted sides keep the\n  curated default; `min === max` locks the value.\n- **plain `boolean | undefined`** for flags: `undefined` means the\n  seeded default.\n\n```ts\nconversationAvatar('proj', 'conv', {\n  crown: {\n    species: { allow: ['rose', 'tulip'] },   // only roses and tulips\n    twoTone: false,\n  },\n  setting: {\n    bgTone: { deny: ['bold'] },              // avoid the richest backgrounds\n    flowerCount: { allow: [1] },             // never bouquets\n    zoom: { min: 90, max: 110 },\n  },\n});\n```\n\n### Crown params (from the project seed)\n\n| Param | Shape | Notes |\n| --- | --- | --- |\n| `species` | `Choice<SpeciesId>` | 14 species, see below |\n| `petalColor` | `Choice<string>` | hex without `#`; whitelist may contain custom colors |\n| `petalVariation` | `boolean?` | gentle deterministic variation around curated base colors; explicit `petalColor.allow` stays exact unless this is `true` |\n| `centerColor` | `Choice<string>` | custom combos are luminance-guarded |\n| `centerStyle` | `Choice<'dot'\\|'ring'\\|'dotted'>` | |\n| `tulipOpenness` | `Choice<'closed'\\|'open'>` | tulip-only; sampled by project seed by default |\n| `tulipPetalShape` | `Choice<'rounded'\\|'sharp'>` | tulip-only; combines independently with openness |\n| `bellflowerFlare` | `Choice<'narrow'\\|'wide'>` | bellflower-only; keeps the same stem attachment point |\n| `bellflowerRim` | `Choice<'soft'\\|'ruffled'>` | bellflower-only; broad lobes or denser scallops |\n| `petalCount` | `Span` | clamped to per-species bounds |\n| `rotation` | `Span` (0–359°) | default 0; explicit override only |\n| `spread` | `Span` (88–108 %) | default 100%; explicit petal-size override |\n| `twoTone` | `boolean?` | variegated petals |\n\n### Setting params (from the conversation seed)\n\n| Param | Shape | Notes |\n| --- | --- | --- |\n| `stem` / `background` | `boolean?` | default on |\n| `flowerCount` | `Choice<number>` (1–3) | defaults to 25% single, 42% double, 33% triple |\n| `zoom` | `Span` (70–140 %) | bouquet-only; singles stay centered at 100% |\n| `stemStyle` | `Choice<'straight'\\|'bent'\\|'wavy'>` | |\n| `stemColor` / `leafColor` | `Choice<string>` | default: greens matched to bg luminance |\n| `leafShape` | `Choice<'thin'\\|'almond'\\|'round'\\|'strap'\\|'twin'>` | |\n| `leafCount` | `Choice<number>` (0–2) | |\n| `leafSize` | `Span` (60–120 %) | |\n| `leafAngle` | `Span` (−45..45°) | |\n| `bgLightness` | `Choice<'light'\\|'mid'>` | filters the tone pool by lightness class; combines with `bgTone` |\n| `bgTone` | `Choice<BgTone>` | see tones below |\n| `bgColorMode` | `Choice<'tonal'\\|'harmonic'>` | tonal shades, or two harmonic anchors with every additional color derived from one of them |\n| `bgPattern` | `Choice<BgPattern>` | `solid bands wedges dots corner gradient rings checker` |\n| `bgAngle` | `Span` (0–179°) | pattern angle |\n| `bgCount` | `Choice<number>` | rings are clamped to 1–3; other patterns use 2–8 and default to 2, 4, 6, or 8 |\n| `bgCenterX` / `bgCenterY` | `Span` (0–100) | center for rings, wedges and pattern phase |\n| `bgScale` | `Span` (50–160 %) | ring size, checker/dot scale, gradient spread; wedges may grow but never shrink below full-tile coverage |\n| `bgColor` | `string[]` | full base override; siblings derived, contrast-guarded |\n\n## Background tones\n\nA conversation with no explicit background color constraints uses the\n**companion carousel** by default. It rotates through eight broad hue\nrelationships around the locked flower color, pairing each direction with a\ndifferent pastel intensity. This gives conversations belonging to the same\nproject much stronger color distinction while every result remains relative to\nthe project's petal hue. The default is tonal: any third or later pattern color\nis therefore only a shade variation of the first.\n\nSetting `bgTone`, `bgLightness`, or `bgColor` opts into the corresponding\ncontrolled recipe below. `bgColorMode: harmonic` can also be combined with the\ncarousel when a consumer deliberately wants two hue anchors.\n\nA background is one flat *tone* — a self-contained recipe with its own hue\nsource. The three companion tones (`tint`, `soft`, `bold`) each sample a\nslice of **one shared intensity curve** (pale near-white → rich mid-tone);\nthe slices overlap, so the whole set sweeps continuously with no gap. That\ncontinuity is what makes intensity look *gradual* across a grid instead of\njumping between \"barely tinted\" and \"loud\". The palette is all light and\nmid by design — there are no dark tones.\n\nEach tone belongs to one lightness class (`light`, `mid`), and\n`bgLightness` filters the tone pool through that map — so \"light only\" is\none constraint, and it can't contradict a tone the way an independent mode\nflag could. An explicit `bgTone` whitelist wins if the two conflict.\n\n| Tone | Class | Recipe |\n| --- | --- | --- |\n| `tint` | light | companion hue, pale end of the intensity curve |\n| `wash` | light | pale wash of the petal's own hue |\n| `beige` | light | warm Blume neutral through pale sand |\n| `garden` | light | curated scenic tone (sky, sage, cream, blush, mint, lilac, sand) |\n| `soft` | mid | companion hue, middle of the intensity curve |\n| `bold` | mid | companion hue, rich end (saturation-capped, never within 40° of the petal hue) |\n\nCompanion hues are hand-tuned per petal hue band (red→sage/teal,\nyellow→lavender/sky, blue→butter/peach, …). Quality guards apply\neverywhere: chartreuse mid-tones are pulled back to butter, mid-lightness\nmagenta is desaturated, curated tones too close in hue to the petal are\nfiltered out, and a contrast guard nudges the background luminance away\nfrom the flower until it reads. Default patterns still favor quieter solid,\ngradient, corner, ring, and dot treatments, but parallel bands and radial\nwedges, rings, and checker fields now occur at restrained weights. Background\ncounts literally produce two, four, or six sections, with eight-section variants\nkept rarer. Radial origins and motif size are independently seeded and can be\nlocked with `bgCenterX`, `bgCenterY`, and `bgScale`. The default palette keeps\nenough chroma to remain visibly distinct\nin compact list avatars. Harmonic color mode\nlets patterns combine two or, in larger motifs, three companion hues. Most\npairs stay analogous—such as mint–lime or aqua–sky—while some use a wider\nsplit-complementary relationship. Tonal mode keeps single-hue shading.\n\n## Species\n\n| Species | Look |\n| --- | --- |\n| `daisy` | many slim petals, dotted seed center |\n| `sunflower` | two layered pointed-petal rings, big seed head |\n| `rose` | top-down concentric rings (2–3), spiral/bud/whorl hearts |\n| `tulip` | side-profile cup with a short project-tile connector, varied height/flare |\n| `poppy` | broad overlapping petals, dark center with stamens |\n| `forgetmenot` | five round petals, yellow eye |\n| `bluebell` | experimental nodding raceme of scalloped bell blooms |\n| `lantana` | experimental multicolor cluster of tiny four-lobed florets |\n| `lily` | long pointed petals with midribs |\n| `cosmos` | wide notched petals |\n| `anemone` | broad petals, big dark center ringed by stamens |\n| `dahlia` | pom-pom of three pointed-petal rings |\n| `bellflower` | side-profile bell with a scalloped mouth and short project-tile connector |\n| `marigold` | dense ruffled rings of scalloped petals |\n\nSpecies keep their recognizable color families at full weight, while curated\ncross-species colors occur at lower weight. This makes combinations such as\npurple or blue sunflowers possible without making classic yellow/orange\nsunflowers uncommon. Custom `petalColor` allow-lists still override the pool.\n\n## Lower-level API\n\n```ts\nimport {\n  createCrown,     // (projectSeed, CrownParams?) => CrownSpec\n  createSetting,   // (crown, conversationSeed, SettingParams?) => SettingSpec\n  renderCrown,     // (crown, { tile?, tileColor? }?) => svg\n  renderSetting,   // (spec) => svg\n} from '@blumepage/dicebear-flowers/v2';\n```\n\n## Preview panel\n\n```sh\nnpm install\nnpm run preview:install\nnpm run preview   # http://localhost:5180\n```\n\nSwitch between **conversation** and **project** modes, lock a project\nseed to see one flower across many conversation settings, and switch the\navatar size (16–100 px). Every param is editable: enum chips cycle\n**neutral → allow → deny** (matching the whitelist/blacklist semantics),\nspans use min/max sliders, flags are default/on/off. State persists in\n`localStorage`.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}