PluginProbe
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor / 2.0.7
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor v2.0.7
2.0.13 2.0.12 2.0.11 2.0.10 2.0.9 trunk 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8
blockenberg / blocks / service-details / frontend.js

frontend.js in Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor 2.0.7, at blocks/service-details/frontend.js

176 lines 7.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function () {
2 var _typoKeys = {
3 family:'font-family', weight:'font-weight', style:'font-style',
4 decoration:'text-decoration', transform:'text-transform',
5 sizeDesktop:'font-size-d', sizeTablet:'font-size-t', sizeMobile:'font-size-m',
6 lineHeightDesktop:'line-height-d', lineHeightTablet:'line-height-t', lineHeightMobile:'line-height-m',
7 letterSpacingDesktop:'letter-spacing-d', letterSpacingTablet:'letter-spacing-t', letterSpacingMobile:'letter-spacing-m',
8 wordSpacingDesktop:'word-spacing-d', wordSpacingTablet:'word-spacing-t', wordSpacingMobile:'word-spacing-m'
9 };
10 function typoCssVarsForEl(el, obj, prefix) {
11 if (!obj || typeof obj !== 'object') return;
12 Object.keys(_typoKeys).forEach(function (k) {
13 var v = obj[k];
14 if (v === undefined || v === '' || v === null) return;
15 if (k === 'sizeDesktop' || k === 'sizeTablet' || k === 'sizeMobile') v = v + (obj.sizeUnit || 'px');
16 else if (k === 'lineHeightDesktop' || k === 'lineHeightTablet' || k === 'lineHeightMobile') v = v + (obj.lineHeightUnit || '');
17 else if (k === 'letterSpacingDesktop' || k === 'letterSpacingTablet' || k === 'letterSpacingMobile') v = v + (obj.letterSpacingUnit || 'px');
18 else if (k === 'wordSpacingDesktop' || k === 'wordSpacingTablet' || k === 'wordSpacingMobile') v = v + (obj.wordSpacingUnit || 'px');
19 el.style.setProperty(prefix + _typoKeys[k], String(v));
20 });
21 }
22
23 document.querySelectorAll('.bkbg-svd-app').forEach(function (app) {
24 var opts = {};
25 try { opts = JSON.parse(app.dataset.opts || '{}'); } catch (e) { }
26
27 var imageUrl = opts.imageUrl || '';
28 var imageAlt = opts.imageAlt || '';
29 var imageRadius = opts.imageRadius !== undefined ? opts.imageRadius : 12;
30 var layout = opts.layout || 'image-left';
31 var eyebrow = opts.eyebrow || '';
32 var showEyebrow = opts.showEyebrow !== false;
33 var heading = opts.heading || '';
34 var subtext = opts.subtext || '';
35 var bodyText = opts.bodyText || '';
36 var features = opts.features || [];
37 var showFeatures = opts.showFeatures !== false;
38 var ctaEnabled = opts.ctaEnabled !== false;
39 var ctaLabel = opts.ctaLabel || '';
40 var ctaUrl = opts.ctaUrl || '#';
41 var cta2Enabled = opts.cta2Enabled !== false;
42 var cta2Label = opts.cta2Label || '';
43 var cta2Url = opts.cta2Url || '#';
44 var bgColor = opts.bgColor || '#ffffff';
45 var eyebrowColor = opts.eyebrowColor || '#7c3aed';
46 var headingColor = opts.headingColor || '#111827';
47 var headingSize = opts.headingSize || 36;
48 var bodyColor = opts.bodyColor || '#374151';
49 var bodySize = opts.bodySize || 16;
50 var featureColor = opts.featureColor || '#374151';
51 var checkBg = opts.checkBg || '#ede9fe';
52 var checkColor = opts.checkColor || '#7c3aed';
53 var ctaBg = opts.ctaBg || '#7c3aed';
54 var ctaColor = opts.ctaColor || '#ffffff';
55 var cta2Color = opts.cta2Color || '#7c3aed';
56 var maxWidth = opts.maxWidth || 1060;
57 var paddingTop = opts.paddingTop !== undefined ? opts.paddingTop : 64;
58 var paddingBottom = opts.paddingBottom !== undefined ? opts.paddingBottom : 64;
59 var isRight = layout === 'image-right';
60 var isCentered = layout === 'centered';
61
62 var wrap = document.createElement('div');
63 wrap.className = 'bkbg-svd-wrap';
64 wrap.style.cssText = 'background:' + bgColor + ';padding-top:' + paddingTop + 'px;padding-bottom:' + paddingBottom + 'px;';
65
66 typoCssVarsForEl(wrap, opts.headingTypo, '--bksd-ht-');
67 typoCssVarsForEl(wrap, opts.eyebrowTypo, '--bksd-et-');
68 typoCssVarsForEl(wrap, opts.bodyTypo, '--bksd-bt-');
69
70 var inner = document.createElement('div');
71 inner.className = 'bkbg-svd-inner' + (isCentered ? ' bkbg-svd-inner--centered' : isRight ? ' bkbg-svd-inner--right' : '');
72 inner.style.maxWidth = maxWidth + 'px';
73 wrap.appendChild(inner);
74
75 /* image column */
76 var imgCol = document.createElement('div');
77 imgCol.className = 'bkbg-svd-image-col';
78 if (imageUrl) {
79 var img = document.createElement('img');
80 img.className = 'bkbg-svd-img';
81 img.src = imageUrl;
82 img.alt = imageAlt;
83 img.style.borderRadius = imageRadius + 'px';
84 imgCol.appendChild(img);
85 } else {
86 var ph = document.createElement('div');
87 ph.className = 'bkbg-svd-img';
88 ph.style.cssText = 'background:#f3f4f6;display:flex;align-items:center;justify-content:center;font-size:48px;color:#d1d5db;border-radius:' + imageRadius + 'px;min-height:320px;';
89 ph.textContent = '🖼️';
90 imgCol.appendChild(ph);
91 }
92 inner.appendChild(imgCol);
93
94 /* text column */
95 var textCol = document.createElement('div');
96 textCol.className = 'bkbg-svd-text-col';
97
98 if (showEyebrow && eyebrow) {
99 var ey = document.createElement('p');
100 ey.className = 'bkbg-svd-eyebrow';
101 ey.style.color = eyebrowColor;
102 ey.textContent = eyebrow;
103 textCol.appendChild(ey);
104 }
105
106 if (heading) {
107 var h = document.createElement('h2');
108 h.className = 'bkbg-svd-heading';
109 h.style.color = headingColor;
110 h.textContent = heading;
111 textCol.appendChild(h);
112 }
113
114 if (subtext) {
115 var sub = document.createElement('p');
116 sub.className = 'bkbg-svd-subtext';
117 sub.style.color = bodyColor;
118 sub.textContent = subtext;
119 textCol.appendChild(sub);
120 }
121
122 if (bodyText) {
123 var bod = document.createElement('p');
124 bod.className = 'bkbg-svd-body';
125 bod.style.color = bodyColor;
126 bod.textContent = bodyText;
127 textCol.appendChild(bod);
128 }
129
130 if (showFeatures && features.length) {
131 var ul = document.createElement('ul');
132 ul.className = 'bkbg-svd-features';
133 features.forEach(function (feat) {
134 var li = document.createElement('li');
135 li.className = 'bkbg-svd-feature';
136 var check = document.createElement('span');
137 check.className = 'bkbg-svd-check';
138 check.style.cssText = 'background:' + checkBg + ';color:' + checkColor;
139 check.textContent = feat.icon || '';
140 li.appendChild(check);
141 var txt = document.createElement('span');
142 txt.style.color = featureColor;
143 txt.textContent = feat.text || '';
144 li.appendChild(txt);
145 ul.appendChild(li);
146 });
147 textCol.appendChild(ul);
148 }
149
150 if (ctaEnabled || cta2Enabled) {
151 var ctaRow = document.createElement('div');
152 ctaRow.className = 'bkbg-svd-ctas';
153 if (ctaEnabled && ctaLabel) {
154 var cta = document.createElement('a');
155 cta.className = 'bkbg-svd-cta';
156 cta.href = ctaUrl;
157 cta.style.cssText = 'background:' + ctaBg + ';color:' + ctaColor;
158 cta.textContent = ctaLabel;
159 ctaRow.appendChild(cta);
160 }
161 if (cta2Enabled && cta2Label) {
162 var cta2 = document.createElement('a');
163 cta2.className = 'bkbg-svd-cta2';
164 cta2.href = cta2Url;
165 cta2.style.color = cta2Color;
166 cta2.textContent = cta2Label;
167 ctaRow.appendChild(cta2);
168 }
169 textCol.appendChild(ctaRow);
170 }
171
172 inner.appendChild(textCol);
173 app.replaceWith(wrap);
174 });
175 })();
176