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 / webinar-section / frontend.js

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

284 lines 11.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function () {
2 'use strict';
3
4 document.querySelectorAll('.bkbg-wbn-app').forEach(function (root) {
5 var a;
6 try { a = JSON.parse(root.dataset.opts || '{}'); } catch (e) { return; }
7
8 var bg = a.bgColor || '#0f172a';
9 var ptop = a.paddingTop !== undefined ? a.paddingTop : 80;
10 var pbot = a.paddingBottom !== undefined ? a.paddingBottom : 80;
11 var maxW = a.maxWidth || 1100;
12 var isSplit = a.layout === 'split';
13
14 root.style.backgroundColor = bg;
15 root.style.paddingTop = ptop + 'px';
16 root.style.paddingBottom = pbot + 'px';
17
18 var inner = document.createElement('div');
19 inner.className = 'bkbg-wbn-inner';
20 inner.style.maxWidth = maxW + 'px';
21
22 // === Left column ===
23 var left = document.createElement('div');
24 left.className = 'bkbg-wbn-left';
25
26 // Badge
27 if (a.showBadge !== false && a.badge) {
28 var badge = document.createElement('span');
29 badge.className = 'bkbg-wbn-badge';
30 badge.style.cssText = 'background:' + (a.badgeBg || '#7c3aed') + ';color:' + (a.badgeColor || '#ffffff') + ';';
31 badge.textContent = a.badge;
32 left.appendChild(badge);
33 }
34
35 // Heading
36 var heading = document.createElement('h2');
37 heading.className = 'bkbg-wbn-heading';
38 heading.style.color = a.headingColor || '#ffffff';
39 heading.innerHTML = a.heading || '';
40 left.appendChild(heading);
41
42 // Subtext
43 if (a.showSubtext !== false && a.subtext) {
44 var subtext = document.createElement('p');
45 subtext.className = 'bkbg-wbn-subtext';
46 subtext.style.cssText = 'color:' + (a.subtextColor || '#94a3b8') + ';margin:0 0 28px;';
47 subtext.innerHTML = a.subtext;
48 left.appendChild(subtext);
49 }
50
51 // Date/time blocks
52 if (a.showDateTime !== false) {
53 var dateRow = document.createElement('div');
54 dateRow.className = 'bkbg-wbn-date-row';
55
56 [
57 { label: 'Date', value: a.eventDate || '' },
58 { label: 'Time', value: (a.eventTime || '2:00 PM') + ' ' + (a.eventTimezone || 'EST') }
59 ].forEach(function (item) {
60 if (!item.value) return;
61 var block = document.createElement('div');
62 block.className = 'bkbg-wbn-date-block';
63 block.style.cssText = 'background:' + (a.dateBg || '#1e293b') + ';border-color:' + (a.dateBorder || '#334155') + ';';
64 var lbl = document.createElement('p');
65 lbl.className = 'bkbg-wbn-date-block__label';
66 lbl.style.color = a.subtextColor || '#94a3b8';
67 lbl.textContent = item.label;
68 var val = document.createElement('p');
69 val.className = 'bkbg-wbn-date-block__value';
70 val.style.color = a.dateColor || '#e2e8f0';
71 val.textContent = item.value;
72 block.appendChild(lbl);
73 block.appendChild(val);
74 dateRow.appendChild(block);
75 });
76
77 left.appendChild(dateRow);
78 }
79
80 // Topics
81 if (a.showTopics !== false && a.topics && a.topics.length) {
82 var topicsWrap = document.createElement('div');
83 topicsWrap.className = 'bkbg-wbn-topics';
84
85 var topicsHeadingEl = document.createElement('h3');
86 topicsHeadingEl.className = 'bkbg-wbn-topics-heading';
87 topicsHeadingEl.style.color = a.headingColor || '#ffffff';
88 topicsHeadingEl.textContent = a.topicsHeading || "What You'll Learn";
89 topicsWrap.appendChild(topicsHeadingEl);
90
91 var ul = document.createElement('ul');
92 ul.className = 'bkbg-wbn-topic-list';
93
94 a.topics.forEach(function (t) {
95 var li = document.createElement('li');
96 li.className = 'bkbg-wbn-topic-item';
97 li.style.color = a.topicColor || '#e2e8f0';
98
99 var check = document.createElement('span');
100 check.className = 'bkbg-wbn-topic-check';
101 check.style.color = a.checkColor || '#a78bfa';
102 check.textContent = '';
103 li.appendChild(check);
104
105 var txt = document.createElement('span');
106 txt.textContent = t.text;
107 li.appendChild(txt);
108 ul.appendChild(li);
109 });
110
111 topicsWrap.appendChild(ul);
112 left.appendChild(topicsWrap);
113 }
114
115 // CTA
116 var ctaWrap = document.createElement('div');
117 ctaWrap.className = 'bkbg-wbn-cta-wrap';
118
119 var ctaLink = document.createElement('a');
120 ctaLink.className = 'bkbg-wbn-cta';
121 ctaLink.href = a.ctaUrl || '#';
122 ctaLink.textContent = a.ctaLabel || 'Reserve My Free Spot →';
123 ctaLink.style.cssText = 'background:' + (a.ctaBg || '#7c3aed') + ';color:' + (a.ctaColor || '#ffffff') + ';';
124 ctaWrap.appendChild(ctaLink);
125
126 if (a.showCtaSubtext !== false && a.ctaSubtext) {
127 var ctaNote = document.createElement('p');
128 ctaNote.className = 'bkbg-wbn-cta-note';
129 ctaNote.style.color = a.ctaSubtextColor || '#64748b';
130 ctaNote.textContent = a.ctaSubtext;
131 ctaWrap.appendChild(ctaNote);
132 }
133
134 left.appendChild(ctaWrap);
135
136 // === Right column ===
137 var right = document.createElement('div');
138 right.className = 'bkbg-wbn-right';
139
140 // Speakers
141 if (a.showSpeakers !== false && a.speakers && a.speakers.length) {
142 var speakersWrap = document.createElement('div');
143 speakersWrap.className = 'bkbg-wbn-speakers';
144
145 var speakersHeading = document.createElement('p');
146 speakersHeading.className = 'bkbg-wbn-speakers-heading';
147 speakersHeading.style.color = a.headingColor || '#ffffff';
148 speakersHeading.textContent = 'Your Hosts';
149 speakersWrap.appendChild(speakersHeading);
150
151 var spList = document.createElement('div');
152 spList.className = 'bkbg-wbn-speaker-list';
153
154 a.speakers.forEach(function (s) {
155 var card = document.createElement('div');
156 card.className = 'bkbg-wbn-speaker-card';
157 card.style.background = a.speakerCardBg || '#1e293b';
158
159 var avatarEl;
160 if (s.avatarUrl) {
161 avatarEl = document.createElement('img');
162 avatarEl.className = 'bkbg-wbn-speaker-avatar';
163 avatarEl.src = s.avatarUrl;
164 avatarEl.alt = s.name || '';
165 } else {
166 avatarEl = document.createElement('div');
167 avatarEl.className = 'bkbg-wbn-speaker-avatar-placeholder';
168 avatarEl.textContent = '🎤';
169 }
170 card.appendChild(avatarEl);
171
172 var info = document.createElement('div');
173 var nameEl = document.createElement('p');
174 nameEl.className = 'bkbg-wbn-speaker-name';
175 nameEl.style.color = a.speakerNameColor || '#f1f5f9';
176 nameEl.textContent = s.name;
177 info.appendChild(nameEl);
178
179 var titleEl = document.createElement('p');
180 titleEl.className = 'bkbg-wbn-speaker-title';
181 titleEl.style.color = a.speakerTitleColor || '#94a3b8';
182 titleEl.textContent = s.title;
183 info.appendChild(titleEl);
184
185 if (s.bio) {
186 var bioEl = document.createElement('p');
187 bioEl.className = 'bkbg-wbn-speaker-bio';
188 bioEl.style.color = a.subtextColor || '#94a3b8';
189 bioEl.textContent = s.bio;
190 info.appendChild(bioEl);
191 }
192
193 card.appendChild(info);
194 spList.appendChild(card);
195 });
196
197 speakersWrap.appendChild(spList);
198 right.appendChild(speakersWrap);
199 }
200
201 // Countdown
202 if (a.showCountdown !== false) {
203 var countdownWrap = document.createElement('div');
204 countdownWrap.className = 'bkbg-wbn-countdown';
205 countdownWrap.style.background = a.countdownBg || '#1e293b';
206
207 var cdLabel = document.createElement('p');
208 cdLabel.className = 'bkbg-wbn-countdown-label';
209 cdLabel.style.color = a.subtextColor || '#94a3b8';
210 cdLabel.textContent = 'Starts In';
211 countdownWrap.appendChild(cdLabel);
212
213 var cdRow = document.createElement('div');
214 cdRow.className = 'bkbg-wbn-countdown-row';
215
216 var units = ['Days', 'Hours', 'Mins', 'Secs'];
217 var numEls = [];
218 units.forEach(function (unit) {
219 var unitEl = document.createElement('div');
220 unitEl.className = 'bkbg-wbn-countdown-unit';
221
222 var numEl = document.createElement('span');
223 numEl.className = 'bkbg-wbn-countdown-num';
224 numEl.style.color = a.countdownNumColor || '#ffffff';
225 numEl.textContent = '00';
226 numEls.push(numEl);
227
228 var unitLabel = document.createElement('span');
229 unitLabel.className = 'bkbg-wbn-countdown-unit-label';
230 unitLabel.style.color = a.countdownLabelColor || '#64748b';
231 unitLabel.textContent = unit;
232
233 unitEl.appendChild(numEl);
234 unitEl.appendChild(unitLabel);
235 cdRow.appendChild(unitEl);
236 });
237
238 countdownWrap.appendChild(cdRow);
239 right.appendChild(countdownWrap);
240
241 // Live countdown if end date is set
242 if (a.countdownEnd) {
243 var endDate = new Date(a.countdownEnd).getTime();
244
245 function tick() {
246 var now = Date.now();
247 var diff = endDate - now;
248 if (diff <= 0) {
249 numEls.forEach(function (el) { el.textContent = '00'; });
250 return;
251 }
252 var d = Math.floor(diff / 86400000);
253 var h = Math.floor((diff % 86400000) / 3600000);
254 var m = Math.floor((diff % 3600000) / 60000);
255 var s = Math.floor((diff % 60000) / 1000);
256 [d, h, m, s].forEach(function (v, i) {
257 numEls[i].textContent = String(v).padStart(2, '0');
258 });
259 }
260
261 tick();
262 setInterval(tick, 1000);
263 }
264 }
265
266 // === Assemble layout ===
267 if (isSplit) {
268 var grid = document.createElement('div');
269 grid.className = 'bkbg-wbn-grid';
270 grid.style.gridTemplateColumns = '1fr 420px';
271 grid.appendChild(left);
272 grid.appendChild(right);
273 inner.appendChild(grid);
274 } else {
275 var centered = document.createElement('div');
276 centered.className = 'bkbg-wbn-centered';
277 centered.appendChild(left);
278 inner.appendChild(centered);
279 }
280
281 root.appendChild(inner);
282 });
283 })();
284