# blockenberg/2.0.7/blocks/creative-button/frontend.js

Blockenberg — 600+ Advanced Gutenberg Blocks &amp; AI Agent for WordPress Block Editor, version 2.0.7. 156 lines.

- Page: https://pluginprobe.com/plugins/blockenberg/2.0.7/code/blocks/creative-button/frontend.js
- Raw: https://pluginprobe.com/plugins/blockenberg/2.0.7/raw/blocks/creative-button/frontend.js
- Modified: 2026-03-06T12:32:40+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/blockenberg/2.0.7/code/blocks/creative-button/frontend.js#L10-L20`.

```javascript
function typoCssVarsForEl(typo, prefix, el) {
    if (!typo || typeof typo !== 'object') return;
    var map = {
        family: 'font-family', weight: 'font-weight', style: 'font-style',
        transform: 'text-transform', decoration: 'text-decoration',
        sizeDesktop: 'font-size-d', sizeTablet: 'font-size-t', sizeMobile: 'font-size-m',
        sizeUnit: null,
        lineHeightDesktop: 'line-height-d', lineHeightTablet: 'line-height-t', lineHeightMobile: 'line-height-m',
        lineHeightUnit: null,
        letterSpacingDesktop: 'letter-spacing-d', letterSpacingTablet: 'letter-spacing-t', letterSpacingMobile: 'letter-spacing-m',
        letterSpacingUnit: null,
        wordSpacingDesktop: 'word-spacing-d', wordSpacingTablet: 'word-spacing-t', wordSpacingMobile: 'word-spacing-m',
        wordSpacingUnit: null
    };
    var sizeU = typo.sizeUnit || 'px';
    var lhU   = typo.lineHeightUnit || '';
    var lsU   = typo.letterSpacingUnit || 'px';
    var wsU   = typo.wordSpacingUnit || 'px';
    Object.keys(map).forEach(function (k) {
        var css = map[k]; if (!css) return;
        var v = typo[k]; if (v === undefined || v === '' || v === null) return;
        if (/size|spacing/i.test(k)) {
            var u = /letterSpacing/.test(k) ? lsU : /wordSpacing/.test(k) ? wsU : /lineHeight/.test(k) ? lhU : sizeU;
            v = v + u;
        }
        el.style.setProperty(prefix + css, v);
    });
}

wp.domReady(function () {
    document.querySelectorAll('.bkbg-creative-button-app').forEach(function (app) {
        var opts = {};
        try { opts = JSON.parse(app.getAttribute('data-opts') || '{}'); } catch (e) {}

        var label       = opts.label       || 'Get Started';
        var url         = opts.url         || '#';
        var openNewTab  = opts.openNewTab  === true;
        var effect      = opts.hoverEffect || 'slide';
        var btnStyle    = opts.buttonStyle || 'filled';
        var corners     = opts.corners     || 'rounded';
        var bgColor     = opts.bgColor     || '#7c3aed';
        var textColor   = opts.textColor   || '#ffffff';
        var hoverBg     = opts.hoverBg     || '#4f46e5';
        var hoverColor  = opts.hoverColor  || '#ffffff';
        var borderCol   = opts.borderColor || '#7c3aed';
        var borderWidth = opts.borderWidth !== undefined ? opts.borderWidth : 2;
        var gFrom       = opts.gradientFrom || '#7c3aed';
        var gTo         = opts.gradientTo   || '#2563eb';
        var fontSize    = opts.fontSize    || 16;
        var paddingH    = opts.paddingH    || 32;
        var paddingV    = opts.paddingV    || 14;
        var iconSize    = opts.iconSize    || 16;
        var showIcon    = opts.showIcon !== false;
        var icon        = opts.icon        || '→';
        var iconType    = opts.iconType    || 'custom-char';
        var iconDash    = opts.iconDashicon || '';
        var iconImg     = opts.iconImageUrl || '';
        var iconPos     = opts.iconPosition || 'right';
        var centered    = opts.centered !== false;
        var fullWidth   = opts.fullWidth === true;

        var radius = corners === 'pill' ? '999px' : corners === 'rounded' ? '8px' : '0';

        /* Wrapper */
        var wrap = document.createElement('div');
        wrap.className = 'bkbg-cb2-wrap';
        wrap.style.textAlign = centered ? 'center' : 'left';
        wrap.style.padding = '4px 0';

        /* Button */
        var btn = document.createElement('a');
        btn.className = 'bkbg-cb2-btn bkbg-cb2-btn--' + effect + (fullWidth ? ' bkbg-cb2-full-width' : '');
        btn.href = url;
        if (openNewTab) { btn.target = '_blank'; btn.rel = 'noopener noreferrer'; }

        /* Apply CSS custom props for hover effects */
        btn.style.setProperty('--bkbg-cb2-hover-bg', hoverBg);
        btn.style.setProperty('--bkbg-cb2-hover-color', hoverColor);
        btn.style.setProperty('--bkbg-cb2-ph', paddingH + 'px');
        btn.style.padding     = paddingV + 'px ' + paddingH + 'px';
        btn.style.borderRadius = radius;
        btn.style.border      = borderWidth + 'px solid ' + borderCol;

        /* Background / color based on button style */
        if (btnStyle === 'outline') {
            btn.style.background = 'transparent';
            btn.style.color      = bgColor;
        } else if (btnStyle === 'ghost') {
            btn.style.background = 'transparent';
            btn.style.color      = bgColor;
            btn.style.border     = 'none';
        } else if (btnStyle === 'gradient') {
            btn.style.background = 'linear-gradient(to right, ' + gFrom + ', ' + gTo + ')';
            btn.style.color      = textColor;
            btn.style.border     = 'none';
        } else {
            btn.style.background = bgColor;
            btn.style.color      = textColor;
        }

        /* Icon left */
        if (showIcon && iconPos === 'left') {
            var iLeft = document.createElement('span');
            iLeft.className = 'bkbg-cb2-icon';
            iLeft.style.fontSize = iconSize + 'px';
            if (iconType !== 'custom-char' && window.bkbgIconPicker) {
                iLeft.appendChild(window.bkbgIconPicker.buildFrontendIcon(iconType, icon, iconDash, iconImg, iconDashColor));
            } else {
                iLeft.textContent = icon;
            }
            btn.appendChild(iLeft);
        }

        /* Label */
        var lbl = document.createElement('span');
        lbl.className = 'bkbg-cb2-label';
        lbl.innerHTML = label;
        btn.appendChild(lbl);

        /* Icon right / arrow effect */
        if (showIcon && iconPos === 'right') {
            var iRight = document.createElement('span');
            iRight.className = 'bkbg-cb2-icon' + (effect === 'arrow' ? ' bkbg-cb2-arrow-icon' : '');
            iRight.style.fontSize = iconSize + 'px';
            if (iconType !== 'custom-char' && window.bkbgIconPicker) {
                iRight.appendChild(window.bkbgIconPicker.buildFrontendIcon(iconType, icon, iconDash, iconImg, iconDashColor));
            } else {
                iRight.textContent = icon;
            }
            btn.appendChild(iRight);
        }

        /* Ripple effect - click handler */
        if (effect === 'ripple') {
            btn.addEventListener('click', function (e) {
                var rect = btn.getBoundingClientRect();
                var size = Math.max(btn.offsetWidth, btn.offsetHeight) * 2;
                var x = e.clientX - rect.left - size / 2;
                var y = e.clientY - rect.top  - size / 2;
                var circle = document.createElement('span');
                circle.className = 'bkbg-cb2-ripple-circle';
                circle.style.width  = size + 'px';
                circle.style.height = size + 'px';
                circle.style.left   = x + 'px';
                circle.style.top    = y + 'px';
                btn.appendChild(circle);
                setTimeout(function () { if (circle.parentNode) circle.parentNode.removeChild(circle); }, 600);
            });
        }

        wrap.appendChild(btn);
        typoCssVarsForEl(opts.typoBtn, '--bkbg-cb2-btn-', wrap);
        app.parentNode.replaceChild(wrap, app);
    });
});

```
