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 / press-kit / frontend.js

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

240 lines 10.7 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 var typeIcons = { logo: '🎨', document: '📄', photo: '📷', other: '📦' };
24
25 function init() {
26 document.querySelectorAll('.bkbg-prk-app').forEach(function (el) {
27 if (el.dataset.rendered) return;
28 el.dataset.rendered = '1';
29
30 var opts;
31 try { opts = JSON.parse(el.dataset.opts || '{}'); } catch (e) { opts = {}; }
32
33 var o = Object.assign({
34 eyebrow: 'Press Room', heading: 'Media Kit & Brand Assets',
35 subtext: 'Everything you need to write about us.',
36 companyName: 'Acme Inc.',
37 companyBlurb: 'A leading provider of innovative software solutions.',
38 assets: [
39 { label: 'Logo Pack', description: 'SVG + PNG', fileUrl: '#', previewUrl: '', type: 'logo' },
40 { label: 'Brand Guidelines', description: 'PDF', fileUrl: '#', previewUrl: '', type: 'document' }
41 ],
42 brandColors: [
43 { name: 'Indigo', hex: '#6366f1' },
44 { name: 'Slate', hex: '#0f172a' }
45 ],
46 showBrandColors: true,
47 showDownloadAll: true,
48 downloadAllUrl: '#',
49 downloadAllLabel: 'Download Full Press Kit',
50 pressEmail: 'press@example.com',
51 showPressContact: true,
52 bgColor: '#ffffff',
53 headingColor: '#111827',
54 subColor: '#6b7280',
55 eyebrowColor: '#6366f1',
56 cardBg: '#f8fafc',
57 cardBorder: '#e2e8f0',
58 assetLabelColor: '#111827',
59 assetDescColor: '#6b7280',
60 downloadBg: '#6366f1',
61 downloadColor: '#ffffff',
62 accentColor: '#6366f1',
63 blurbColor: '#374151',
64 maxWidth: 1100,
65 paddingTop: 80,
66 paddingBottom: 80
67 }, opts);
68
69 el.parentElement && (el.parentElement.style.background = o.bgColor);
70
71 var inner = document.createElement('div');
72 inner.className = 'bkbg-prk-inner';
73 inner.style.cssText = 'max-width:' + o.maxWidth + 'px;margin:0 auto;padding:' + o.paddingTop + 'px 24px ' + o.paddingBottom + 'px;';
74
75 /* Header */
76 var header = document.createElement('div');
77 header.className = 'bkbg-prk-header';
78 var eyebrow = document.createElement('p');
79 eyebrow.className = 'bkbg-prk-eyebrow';
80 eyebrow.style.color = o.eyebrowColor;
81 eyebrow.innerHTML = o.eyebrow;
82 var heading = document.createElement('h2');
83 heading.className = 'bkbg-prk-heading';
84 heading.style.color = o.headingColor;
85 heading.innerHTML = o.heading;
86 var sub = document.createElement('p');
87 sub.className = 'bkbg-prk-sub';
88 sub.style.color = o.subColor;
89 sub.innerHTML = o.subtext;
90 header.appendChild(eyebrow);
91 header.appendChild(heading);
92 header.appendChild(sub);
93 inner.appendChild(header);
94
95 /* Company blurb */
96 var blurb = document.createElement('div');
97 blurb.className = 'bkbg-prk-blurb-box';
98 blurb.style.cssText = 'background:' + o.cardBg + ';border-color:' + o.cardBorder;
99
100 var blurbTitle = document.createElement('div');
101 blurbTitle.className = 'bkbg-prk-blurb-title';
102 blurbTitle.style.color = o.headingColor;
103 blurbTitle.textContent = 'About ' + o.companyName;
104
105 var blurbText = document.createElement('p');
106 blurbText.className = 'bkbg-prk-blurb-text';
107 blurbText.style.color = o.blurbColor;
108 blurbText.innerHTML = o.companyBlurb;
109
110 blurb.appendChild(blurbTitle);
111 blurb.appendChild(blurbText);
112 inner.appendChild(blurb);
113
114 /* Assets grid */
115 var grid = document.createElement('div');
116 grid.className = 'bkbg-prk-assets-grid';
117
118 (o.assets || []).forEach(function (asset) {
119 var card = document.createElement('div');
120 card.className = 'bkbg-prk-asset-card';
121 card.style.cssText = 'background:' + o.cardBg + ';border-color:' + o.cardBorder;
122
123 var icon = document.createElement('div');
124 icon.className = 'bkbg-prk-asset-icon';
125 icon.textContent = typeIcons[asset.type] || '📦';
126
127 var info = document.createElement('div');
128 info.className = 'bkbg-prk-asset-info';
129
130 var label = document.createElement('div');
131 label.className = 'bkbg-prk-asset-label';
132 label.style.color = o.assetLabelColor;
133 label.textContent = asset.label;
134
135 var desc = document.createElement('div');
136 desc.className = 'bkbg-prk-asset-desc';
137 desc.style.color = o.assetDescColor;
138 desc.textContent = asset.description;
139
140 info.appendChild(label);
141 info.appendChild(desc);
142
143 var dlBtn = document.createElement('a');
144 dlBtn.className = 'bkbg-prk-asset-dl';
145 dlBtn.href = asset.fileUrl;
146 dlBtn.download = '';
147 dlBtn.style.cssText = 'background:' + o.downloadBg + ';color:' + o.downloadColor;
148 dlBtn.textContent = '⬇ Download';
149
150 card.appendChild(icon);
151 card.appendChild(info);
152 card.appendChild(dlBtn);
153 grid.appendChild(card);
154 });
155 inner.appendChild(grid);
156
157 /* Brand colors */
158 if (o.showBrandColors && o.brandColors && o.brandColors.length) {
159 var colSection = document.createElement('div');
160 colSection.className = 'bkbg-prk-colors-section';
161
162 var colTitle = document.createElement('div');
163 colTitle.className = 'bkbg-prk-colors-title';
164 colTitle.style.color = o.headingColor;
165 colTitle.textContent = 'Brand Colors';
166 colSection.appendChild(colTitle);
167
168 var colRow = document.createElement('div');
169 colRow.className = 'bkbg-prk-colors-row';
170
171 o.brandColors.forEach(function (c) {
172 var swatch = document.createElement('div');
173 swatch.className = 'bkbg-prk-color-swatch';
174
175 var chip = document.createElement('div');
176 chip.className = 'bkbg-prk-color-chip';
177 chip.style.background = c.hex;
178
179 var name = document.createElement('div');
180 name.className = 'bkbg-prk-color-name';
181 name.style.color = o.headingColor;
182 name.textContent = c.name;
183
184 var hex = document.createElement('div');
185 hex.className = 'bkbg-prk-color-hex';
186 hex.style.color = o.subColor;
187 hex.textContent = c.hex;
188
189 swatch.appendChild(chip);
190 swatch.appendChild(name);
191 swatch.appendChild(hex);
192 colRow.appendChild(swatch);
193 });
194
195 colSection.appendChild(colRow);
196 inner.appendChild(colSection);
197 }
198
199 /* Footer */
200 var footer = document.createElement('div');
201 footer.className = 'bkbg-prk-footer';
202
203 if (o.showDownloadAll && o.downloadAllLabel) {
204 var dlAll = document.createElement('a');
205 dlAll.className = 'bkbg-prk-dl-all';
206 dlAll.href = o.downloadAllUrl;
207 dlAll.style.cssText = 'background:' + o.downloadBg + ';color:' + o.downloadColor;
208 dlAll.textContent = '📦 ' + o.downloadAllLabel;
209 footer.appendChild(dlAll);
210 }
211
212 if (o.showPressContact && o.pressEmail) {
213 var contact = document.createElement('a');
214 contact.className = 'bkbg-prk-contact-link';
215 contact.href = 'mailto:' + o.pressEmail;
216 contact.style.cssText = 'color:' + o.accentColor + ';border-color:' + o.accentColor;
217 contact.textContent = '✉️ ' + o.pressEmail;
218 footer.appendChild(contact);
219 }
220
221 inner.appendChild(footer);
222 el.appendChild(inner);
223
224 /* Apply typography CSS vars to the block wrapper */
225 var wrapper = el.parentElement;
226 if (wrapper) {
227 typoCssVarsForEl(wrapper, o.headingTypo, '--bkbg-prk-h-');
228 typoCssVarsForEl(wrapper, o.subtextTypo, '--bkbg-prk-st-');
229 typoCssVarsForEl(wrapper, o.eyebrowTypo, '--bkbg-prk-ey-');
230 typoCssVarsForEl(wrapper, o.bodyTypo, '--bkbg-prk-bd-');
231 typoCssVarsForEl(wrapper, o.assetLabelTypo, '--bkbg-prk-al-');
232 typoCssVarsForEl(wrapper, o.assetDescTypo, '--bkbg-prk-ad-');
233 }
234 });
235 }
236
237 if (document.readyState !== 'loading') { init(); }
238 else { document.addEventListener('DOMContentLoaded', init); }
239 })();
240