(function () { function halfStarHTML(color) { return ''; } function buildStars(rating, starColor) { var out = ''; for (var i = 1; i <= 5; i++) { if (rating >= i) out += ''; else if (rating >= i - 0.5) out += halfStarHTML(starColor); else out += ''; } return out; } function init() { document.querySelectorAll('.bkbg-tlc-app').forEach(function (el) { if (el.dataset.rendered) return; el.dataset.rendered = '1'; var opts; try { opts = JSON.parse(el.dataset.opts || '{}'); } catch (e) { opts = {}; } var o = Object.assign({ toolName: 'Notion', tagline: 'All-in-one workspace for notes, wikis, and projects', logoUrl: '', logoAlt: '', rating: 4.5, ratingCount: '2,300+ reviews', showRating: true, pricing: 'freemium', pricingNote: 'Free plan available · Paid from $8/mo', showPricing: true, description: 'Notion is a flexible all-in-one workspace that replaces your notes, wikis, tasks, and databases.', features: ['Unlimited pages and blocks', 'Real-time collaboration', 'Database views', 'API and integrations'], ctaLabel: 'Try Notion Free', ctaUrl: '#', badgeText: "Editor's Pick", showBadge: true, layout: 'horizontal', borderRadius: 12, bgColor: '#ffffff', borderColor: '#e2e8f0', accentColor: '#6366f1', nameColor: '#111827', taglineColor: '#6b7280', descColor: '#374151', featureColor: '#374151', starColor: '#f59e0b', pricingColor: '#374151', badgeBg: '#fef3c7', badgeColor: '#92400e', ctaBg: '#6366f1', ctaColor: '#ffffff' }, opts); var card = document.createElement('div'); card.className = 'bkbg-tlc-card layout-' + o.layout; card.style.cssText = 'background:' + o.bgColor + ';border-color:' + o.borderColor + ';border-radius:' + o.borderRadius + 'px;'; /* Sidebar */ var sidebar = document.createElement('div'); sidebar.className = 'bkbg-tlc-sidebar'; if (o.logoUrl) { var logo = document.createElement('img'); logo.className = 'bkbg-tlc-logo'; logo.src = o.logoUrl; logo.alt = o.logoAlt; logo.style.borderColor = o.borderColor; sidebar.appendChild(logo); } else { var placeholder = document.createElement('div'); placeholder.className = 'bkbg-tlc-logo-placeholder'; placeholder.style.background = o.accentColor + '22'; placeholder.textContent = '🔧'; sidebar.appendChild(placeholder); } if (o.showRating && o.layout !== 'compact') { var ratingDiv = document.createElement('div'); ratingDiv.className = 'bkbg-tlc-rating'; var stars = document.createElement('span'); stars.className = 'bkbg-tlc-stars'; stars.innerHTML = buildStars(o.rating, o.starColor); var rc = document.createElement('span'); rc.className = 'bkbg-tlc-rating-count'; rc.style.color = o.taglineColor; rc.textContent = o.ratingCount; ratingDiv.appendChild(stars); ratingDiv.appendChild(rc); sidebar.appendChild(ratingDiv); } if (o.showPricing && o.layout !== 'compact') { var pill = document.createElement('div'); pill.className = 'bkbg-tlc-pricing-pill'; pill.style.cssText = 'background:' + o.bgColor + ';border:1px solid ' + o.borderColor + ';'; var pModel = document.createElement('span'); pModel.className = 'bkbg-tlc-pricing-model'; pModel.style.color = o.accentColor; pModel.textContent = o.pricing; var pNote = document.createElement('span'); pNote.className = 'bkbg-tlc-pricing-note'; pNote.style.color = o.pricingColor; pNote.textContent = o.pricingNote; pill.appendChild(pModel); pill.appendChild(pNote); sidebar.appendChild(pill); } var cta = document.createElement('a'); cta.className = 'bkbg-tlc-cta-btn'; cta.href = o.ctaUrl; cta.textContent = o.ctaLabel; cta.style.cssText = 'background:' + o.ctaBg + ';color:' + o.ctaColor; sidebar.appendChild(cta); card.appendChild(sidebar); /* Content */ var content = document.createElement('div'); content.className = 'bkbg-tlc-content'; var header = document.createElement('div'); header.className = 'bkbg-tlc-header'; var name = document.createElement('h3'); name.className = 'bkbg-tlc-name'; name.style.color = o.nameColor; name.textContent = o.toolName; header.appendChild(name); if (o.showBadge && o.badgeText) { var badge = document.createElement('span'); badge.className = 'bkbg-tlc-badge'; badge.style.cssText = 'background:' + o.badgeBg + ';color:' + o.badgeColor; badge.textContent = o.badgeText; header.appendChild(badge); } content.appendChild(header); var tagline = document.createElement('p'); tagline.className = 'bkbg-tlc-tagline'; tagline.style.color = o.taglineColor; tagline.textContent = o.tagline; content.appendChild(tagline); var desc = document.createElement('p'); desc.className = 'bkbg-tlc-desc'; desc.style.color = o.descColor; desc.textContent = o.description; content.appendChild(desc); var ul = document.createElement('ul'); ul.className = 'bkbg-tlc-features'; (o.features || []).forEach(function (f) { var li = document.createElement('li'); li.style.color = o.featureColor; var check = document.createElement('span'); check.className = 'bkbg-tlc-check'; check.style.color = o.accentColor; check.textContent = '✓'; li.appendChild(check); li.appendChild(document.createTextNode(f)); ul.appendChild(li); }); content.appendChild(ul); card.appendChild(content); el.appendChild(card); }); } if (document.readyState !== 'loading') { init(); } else { document.addEventListener('DOMContentLoaded', init); } })();