% // Site-chrome (topnav + profielkop + view-switcher) in één vaste slot #pcms-chrome. // // Waarom een slot: bij htmx-navigatie verversen we deze hele chrome out-of-band // (oob=true), zodat de kop ALTIJD bij de nieuwe pagina/artiest hoort — terwijl de // audioplayer (los in document.body, buiten dit slot) blijft leven → geen // verspringen. Op de hub-landing (bareChrome) is het slot leeg: hero = de header. // // Wordt zowel door shell.ejs (oob niet gezet) als door render.js bij partials // (oob=true) gerenderd. De logica staat hier zodat beide identiek zijn. // // _isAuth → focus-scherm (in/uitloggen): helemaal geen chrome. // _headerless → hub-homepagina én de Prutter-chat: WÉL de mini topnav-balk, // GEEN profielkop (hub: hero = header; chat: full-height view). // anders → topnav + profielkop (+ view-switcher buiten admin). var _isAdmin = typeof bodyClass === 'string' && bodyClass.indexOf('on-admin') >= 0; var _isAuth = typeof bodyClass === 'string' && bodyClass.indexOf('on-auth') >= 0; var _isChat = typeof bodyClass === 'string' && bodyClass.indexOf('on-chat') >= 0; var hubLanding = (typeof bodyClass === 'string' && bodyClass.indexOf('on-hub') >= 0) || ((typeof tenancy !== 'undefined' && tenancy === 'hub') && !siteUrlBase && !_isAdmin); // Zelfstandige premium-feature-pagina's hebben hun eigen kop → geen profielkop/ // switcher, wél de topnav (Robin 2026-06-18: "bovenste weg, behoud de nav"). // NB: on-shows (agenda) én on-downloads (de downloads-LIJST) horen hier NIET bij — // die willen de volledige chrome (profielkop + pill) behouden. De downloads-lijst is // vaak gepind en prominent, dus hij mag niet kaal zijn. De losse e-mail-capture // (/download/:id → on-download) blijft wél een focus-pagina zonder kop. var _featurePage = typeof bodyClass === 'string' && bodyClass.indexOf('on-downloads') < 0 && ['on-epk', 'on-download', 'on-linkbio', 'on-newsletter'].some(function (c) { return bodyClass.indexOf(c) >= 0; }); var _headerless = hubLanding || _isChat || _featurePage; %>