// Shared helpers + small components.
function ytId(url){
if(!url) return null;
const m = String(url).match(/(?:youtu\.be\/|v=|embed\/|shorts\/)([A-Za-z0-9_-]{11})/);
return m ? m[1] : null;
}
// Inline SVG icons
function Icon({ name, size=18, stroke=2 }){
const p = { width:size, height:size, viewBox:'0 0 24 24', fill:'none',
stroke:'currentColor', strokeWidth:stroke, strokeLinecap:'round', strokeLinejoin:'round' };
const paths = {
user: ,
dots: ,
gear: ,
book: ,
play: ,
pause: ,
prev: ,
next: ,
first: ,
last: ,
arrowL: ,
arrowR: ,
plus: ,
expand: ,
logo:
};
return ;
}
window.ytId = ytId;
window.Icon = Icon;