4rn0/statamic-image-colors
A Statamic addon that extracts dominant colors from uploaded images, so you can build palettes for backgrounds, overlays, and theme accents directly in your templates. Lightweight, easy to configure, and handy for dynamic, image-driven design.
:is_pinned) plus an auto-extracted palette, editors can accept the sampled color or override it. That is the difference between a feature that ships to non-designers and one that generates "can you set the color for me" tickets.imagecolors:color:is_dark, color:contrast >= 4.5), so you can decide layout and text treatment at render time instead of hardcoding it per entry. This is the single most valuable item in the release — it turns a color picker into a theming primitive.:contrast measures against the solid color, not the photo, so it can support "put the title on a color band" but cannot back a "WCAG-safe text over image" claim. Scope the roadmap on what the data actually proves.ImageColors GraphQL type, batch backfill on existing asset libraries.Adopt when all of these hold:
ImageColors type.imagecolors key is free. The addon deliberately refuses to touch assets where that key already carries a value it did not write. Good citizenship, but it is a hard gate: audit existing blueprints and asset data before rollout or you will get a silent no-op with the reason buried in the log.Look elsewhere, or defer, when:
{{ hero:color }} / {{ hero:colors }}. Those are removed in a patch release. If any template uses them, that is a silent empty render, not an error. Audit and migrate first.For executives: A small Statamic addon that pulls a usable color palette out of each uploaded image so editors can theme pages without a designer in the loop. Version 1.0.1 fixes a real defect (conditional color logic never fired), makes bulk extraction report failures honestly, and corrects documentation that overstated its accessibility guarantees. Cost is low; the value is removing a recurring design-request queue. Caveat worth stating plainly: it's still a young package — the 1.0.1 release renamed template tags — so treat it as pin-and-monitor, not load-bearing infrastructure.
For engineering:
imagecolors asset key holding colors, stamp, and pinned color. The addon refuses to sample or overwrite when that key is occupied by foreign data — collision-safe, but validate your existing blueprints and asset data before enabling.{{ hero:imagecolors }} with :color, :colors, :is_pinned. The standalone {{ hero:color }} and {{ hero:colors }} tags are gone; sweep templates for them. GraphQL mirrors this with an ImageColors type.:contrast is measured against the solid color, not the photograph. Don't build accessibility logic on the wrong assumption — this was previously mis-documented.if). No action needed, but it's the reason dark-mode and contrast branching now behaves.How can I help you explore Laravel packages today?