# blockenberg/2.0.7/blocks/interview-block/frontend.js

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

- Page: https://pluginprobe.com/plugins/blockenberg/2.0.7/code/blocks/interview-block/frontend.js
- Raw: https://pluginprobe.com/plugins/blockenberg/2.0.7/raw/blocks/interview-block/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/interview-block/frontend.js#L10-L20`.

```javascript
wp.domReady(function () {
    /* ── typography CSS-var helper ──────────────────────────── */
    var _typoKeys = {
        family:'font-family', weight:'font-weight', style:'font-style',
        decoration:'text-decoration', transform:'text-transform',
        sizeDesktop:'font-size-d', sizeTablet:'font-size-t', sizeMobile:'font-size-m',
        lineHeightDesktop:'line-height-d', lineHeightTablet:'line-height-t', lineHeightMobile:'line-height-m',
        letterSpacingDesktop:'letter-spacing-d', letterSpacingTablet:'letter-spacing-t', letterSpacingMobile:'letter-spacing-m',
        wordSpacingDesktop:'word-spacing-d', wordSpacingTablet:'word-spacing-t', wordSpacingMobile:'word-spacing-m'
    };
    function typoCssVarsForEl(el, obj, prefix) {
        if (!obj || typeof obj !== 'object') return;
        Object.keys(_typoKeys).forEach(function (k) {
            var v = obj[k];
            if (v === undefined || v === '' || v === null) return;
            if (k === 'sizeDesktop' || k === 'sizeTablet' || k === 'sizeMobile') v = v + (obj.sizeUnit || 'px');
            else if (k === 'lineHeightDesktop' || k === 'lineHeightTablet' || k === 'lineHeightMobile') v = v + (obj.lineHeightUnit || '');
            else if (k === 'letterSpacingDesktop' || k === 'letterSpacingTablet' || k === 'letterSpacingMobile') v = v + (obj.letterSpacingUnit || 'px');
            else if (k === 'wordSpacingDesktop' || k === 'wordSpacingTablet' || k === 'wordSpacingMobile') v = v + (obj.wordSpacingUnit || 'px');
            el.style.setProperty(prefix + _typoKeys[k], String(v));
        });
    }

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

        var layout  = opts.layout  || 'classic';
        var items   = opts.items   || [];
        var radius  = (opts.borderRadius || 12) + 'px';

        var wrap = document.createElement('div');
        wrap.className = 'bkbg-ib-wrap bkbg-ib-wrap--' + layout;
        wrap.style.setProperty('--bkbg-ib-accent',      opts.accentColor   || '#7c3aed');
        wrap.style.setProperty('--bkbg-ib-divider',     opts.dividerColor  || '#f3f4f6');
        wrap.style.setProperty('--bkbg-ib-radius',      radius);
        wrap.style.setProperty('--bkbg-ib-card-border', opts.cardBorderColor || '#e5e7eb');
        if (opts.bgColor) wrap.style.background = opts.bgColor;
        wrap.style.paddingTop    = (opts.paddingTop    || 48) + 'px';
        wrap.style.paddingBottom = (opts.paddingBottom || 48) + 'px';

        typoCssVarsForEl(wrap, opts.questionTypo, '--bkbg-ib-q-');
        typoCssVarsForEl(wrap, opts.answerTypo, '--bkbg-ib-a-');

        var inner = document.createElement('div');
        inner.className = 'bkbg-ib-inner';
        inner.style.maxWidth = (opts.maxWidth || 800) + 'px';

        // Speaker header
        if (opts.showSpeakerHeader !== false) {
            var header = document.createElement('div');
            header.className = 'bkbg-ib-header';
            header.style.background    = opts.headerBg    || '#f9fafb';
            header.style.borderRadius  = radius;

            if (opts.intervieweeAvatarUrl) {
                var img = document.createElement('img');
                img.className = 'bkbg-ib-avatar';
                img.src = opts.intervieweeAvatarUrl;
                img.alt = opts.intervieweeName || '';
                header.appendChild(img);
            } else {
                var ph = document.createElement('div');
                ph.className   = 'bkbg-ib-avatar-placeholder';
                ph.style.background = opts.prefixBg || '#7c3aed';
                ph.style.color      = opts.prefixColor || '#fff';
                ph.textContent = (opts.intervieweeName || 'I').charAt(0).toUpperCase();
                header.appendChild(ph);
            }

            var info = document.createElement('div');
            if (opts.intervieweeName) {
                var name = document.createElement('div');
                name.className = 'bkbg-ib-name';
                name.style.fontSize = (opts.nameSize || 18) + 'px';
                name.style.color    = opts.nameColor || '#111827';
                name.textContent    = opts.intervieweeName;
                info.appendChild(name);
            }
            if (opts.intervieweeRole) {
                var role = document.createElement('div');
                role.className = 'bkbg-ib-role';
                role.style.color = opts.roleColor || '#6b7280';
                role.textContent = opts.intervieweeRole;
                info.appendChild(role);
            }
            if (opts.interviewerName) {
                var iwr = document.createElement('div');
                iwr.className = 'bkbg-ib-interviewer';
                iwr.textContent = 'Interviewed by: ' + opts.interviewerName;
                info.appendChild(iwr);
            }
            header.appendChild(info);
            inner.appendChild(header);
        }

        // Q&A items
        items.forEach(function (item, i) {
            var itemEl = document.createElement('div');
            itemEl.className = 'bkbg-ib-item';
            if (layout === 'card') {
                itemEl.style.background = opts.cardBg || '#ffffff';
            }

            function buildRow(text, isQ) {
                var row = document.createElement('div');
                row.className = 'bkbg-ib-row ' + (isQ ? 'bkbg-ib-q-row' : 'bkbg-ib-a-row');

                if (opts.showPrefixLabel !== false && layout !== 'minimal') {
                    var prefix = document.createElement('span');
                    prefix.className = 'bkbg-ib-prefix ' + (isQ ? 'bkbg-ib-prefix-q' : 'bkbg-ib-prefix-a');

                    if (layout === 'magazine') {
                        prefix.style.color = isQ ? (opts.accentColor || '#7c3aed') : (opts.answerColor || '#374151');
                    } else {
                        prefix.style.background = isQ ? (opts.prefixBg || '#7c3aed') : 'transparent';
                        prefix.style.color       = isQ ? (opts.prefixColor || '#fff') : (opts.accentColor || '#7c3aed');
                        if (!isQ) prefix.style.border = '2px solid ' + (opts.accentColor || '#7c3aed');
                        prefix.style.fontSize    = (opts.prefixSize || 13) + 'px';
                    }
                    prefix.textContent = isQ ? (opts.questionPrefix || 'Q') : (opts.answerPrefix || 'A');
                    row.appendChild(prefix);
                }

                var p = document.createElement('p');
                p.className   = isQ ? 'bkbg-ib-q-text' : 'bkbg-ib-a-text';
                p.style.color      = isQ ? (opts.questionColor || '#111827') : (opts.answerColor || '#374151');
                p.innerHTML = text || '';
                row.appendChild(p);
                return row;
            }

            itemEl.appendChild(buildRow(item.question, true));
            itemEl.appendChild(buildRow(item.answer, false));

            inner.appendChild(itemEl);

            if (opts.showDivider !== false && layout !== 'card' && i < items.length - 1) {
                var div = document.createElement('hr');
                div.className = 'bkbg-ib-divider';
                inner.appendChild(div);
            }
        });

        wrap.appendChild(inner);
        app.parentNode.replaceChild(wrap, app);
    });
});

```
