Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ Much more than just an overlay - Social Stream Ninja is a complete chat ecosyste
- versus.cam (test chat page at https://versus.cam/?testchat)
- patreon
- velora.tv (no popup; just channel watch page)
- blaze.stream (no popup; just channel watch page)

There are additional sites supported, but not listed; refer to the sources folder for a more complete listing.

Expand Down
6 changes: 6 additions & 0 deletions docs/css/services.css
Original file line number Diff line number Diff line change
Expand Up @@ -260,8 +260,12 @@
margin-bottom: 1.5rem;
overflow-x: auto;
padding-bottom: 0.5rem;
overflow: hidden;
}

.portfolio-modal-img{
display:block!important;
}
.portfolio-thumb {
width: 8rem;
height: 6rem;
Expand Down Expand Up @@ -676,6 +680,8 @@
max-width: 90%;
max-height: 90%;
border-radius: var(--radius-md);
object-fit: contain;
display: block;
}

.portfolio-modal-close {
Expand Down
13 changes: 9 additions & 4 deletions docs/js/services.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,10 @@

// Add click handlers for portfolio images
document.querySelectorAll('.portfolio-thumb').forEach(img => {
img.addEventListener('click', () => openPortfolioModal(img.src));
img.addEventListener('click', (e) => {
e.stopPropagation();
openPortfolioModal(img.dataset.fullSrc || img.src);
});
});

// Add click handlers for reveal links (SEO protection)
Expand Down Expand Up @@ -114,8 +117,8 @@
`<span class="service-type-tag">${t}</span>`
).join('');

const portfolio = (service.portfolio || []).slice(0, 3).map(url =>
`<img src="${escapeHtml(url)}" alt="Portfolio" class="portfolio-thumb">`
const portfolio = (service.portfolio || []).slice(0, 5).map(url =>
`<img src="${escapeHtml(url)}" alt="Portfolio" class="portfolio-thumb" data-full-src="${escapeHtml(url)}">`
).join('');

const socials = createSocialLinks(service.socials || {});
Expand Down Expand Up @@ -598,9 +601,11 @@
function openPortfolioModal(src) {
const modal = document.getElementById('portfolio-modal');
const img = document.getElementById('portfolio-modal-img');
if (modal && img) {
if (modal && img && src) {
img.src = src;
modal.classList.add('active');
// Force reflow to ensure modal displays
modal.offsetHeight;
}
}

Expand Down
23 changes: 23 additions & 0 deletions docs/js/sites.js
Original file line number Diff line number Diff line change
Expand Up @@ -553,6 +553,18 @@ document.addEventListener('DOMContentLoaded', function() {
<li>Just pause the video while keeping the chat open</li>
</ul>
`
},
{
name: 'Blaze.stream',
icon: 'blaze.png',
description: 'Live streaming platform.',
type: 'standard',
instructions: `
<ul>
<li>No pop out chat support</li>
<li>Just pause the video while keeping the chat open</li>
</ul>
`
},
{
name: 'BandLab',
Expand Down Expand Up @@ -1339,6 +1351,17 @@ document.addEventListener('DOMContentLoaded', function() {
</ul>
`
},
{
name: 'Blaze',
icon: 'blaze.png',
description: 'Social streaming platform.',
type: 'standard',
instructions: `
<ul>
<li>URL: https://blaze.stream/*</li>
</ul>
`
},
{
name: 'Versus.cam',
icon: 'versuscam.png',
Expand Down
Loading