Version 2.5.0
@freshjuice/zest@2.5.0 fixes a real compliance problem: the default banner made Reject All visually weaker than Accept All. Regulators (ICO, CNIL) consider this coerced consent. This release introduces a buttonStyle config so both buttons always share the same visual weight.
Added
buttonStyle config
Controls the visual style of both Accept and Reject buttons. Both buttons always use the same style — no more “Accept bright, Reject muted” dark pattern.
'fill'(default) — solid buttons, equal visual weight'outline'— accent-colored border, transparent background
<script>
window.ZestConfig = { buttonStyle: "outline" };
</script>
<script src="https://cdn.jsdelivr.net/npm/@freshjuice/zest@2.5.0"></script>
Changed
Equal prominence by default
The default fill style now gives Reject All a visible border (1px solid var(--zest-border)) instead of blending into the banner background. Both buttons are the same size, same padding, same weight.
Removed .zest-btn--secondary selector block in customStyles sanitizer
Previously, customStyles could not style the Reject button at all — the sanitizer stripped any .zest-btn--secondary rule. This was overly aggressive and prevented legitimate customization. The selector block is no longer stripped; [data-action="reject-all"] and [data-action="accept-all"] attribute selectors are still blocked to prevent hiding buttons.
Install
npm install @freshjuice/zest
Or via CDN:
<script src="https://cdn.jsdelivr.net/npm/@freshjuice/zest@2.5.0"></script>