Skip to main content

Menu

Choose a theme and configure high-contrast mode. Preferences are saved in your browser only.

User Preferences

Theme

Pick a palette or follow your system preference.

High Contrast

Sharper text and borders. System follows your OS setting.

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>