Changeset 5280532 in Klonkt
- Timestamp:
- 08/16/2026 01:17:20 PM (3 weeks ago)
- Branches:
- main
- Children:
- 38d5e40
- Parents:
- daa8eb8
- Files:
-
- 4 edited
-
scripts/admin-css.mjs (modified) (3 diffs)
-
src/views/pages/admin-audio.ejs (modified) (2 diffs)
-
src/views/pages/admin-playlists.ejs (modified) (1 diff)
-
src/views/partials/admin-styles.ejs (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
scripts/admin-css.mjs
rdaa8eb8 r5280532 99 99 const PAGINAS = process.argv.filter((a) => a.endsWith('.ejs') && a !== PARTIAL); 100 100 const doen = process.argv.includes('--doen'); 101 // --forceer haalt OOK de regels weg die dezelfde selector hebben maar een 102 // andere waarde: de pagina neemt dan de vorm van de partial over. Apart van 103 // --doen omdat het iets anders is -- --doen verplaatst, dit VERANDERT hoe de 104 // pagina eruitziet, en dat hoort een expliciete keuze te zijn. 105 const forceer = process.argv.includes('--forceer'); 101 106 102 107 const gedeeld = new Map(); … … 120 125 console.log(` ${dubbel.length} identiek aan de partial -> weg`); 121 126 console.log(` ${anders.length} zelfde selector, ANDERE waarde -> blijft staan`); 122 for (const r of anders) console.log(` ${r.context ? r.context + ' ' : ''}${r.selector}`); 127 for (const r of anders) { 128 console.log(` ${r.context ? r.context + ' ' : ''}${r.selector}`); 129 if (process.argv.includes('--toon')) { 130 const g = gedeeld.get(`${r.context}||${r.selector}`); 131 // Alleen de eigenschappen die ECHT verschillen, anders verzuipt het 132 // verschil in twintig regels die identiek zijn. 133 const kaart = (v) => new Map(v.split('; ').map((d) => [d.split(':')[0].trim(), d])); 134 const [ga, ra] = [kaart(g), kaart(r.verklaringen)]; 135 for (const k of new Set([...ga.keys(), ...ra.keys()])) { 136 if (ga.get(k) !== ra.get(k)) console.log(` partial: ${ga.get(k) || '(niets)'}\n pagina : ${ra.get(k) || '(niets)'}`); 137 } 138 } 139 } 123 140 console.log(` ${eigen.length} alleen op deze pagina -> blijft staan`); 124 141 125 if (doen && dubbel.length) { 142 const weg = forceer ? [...dubbel, ...anders] : dubbel; 143 if (doen && weg.length) { 126 144 // Van achter naar voren knippen, anders schuiven de posities. 127 145 let css = blok.css; 128 for (const r of [... dubbel].sort((a, b) => b.van - a.van)) {146 for (const r of [...weg].sort((a, b) => b.van - a.van)) { 129 147 css = css.slice(0, r.van) + css.slice(r.tot); 130 148 } … … 132 150 const nieuw = blok.tekst.slice(0, blok.van) + css + blok.tekst.slice(blok.van + blok.css.length); 133 151 fs.writeFileSync(pad, nieuw); 134 console.log( ' geschreven');152 console.log(` geschreven (${weg.length} regels weg${forceer ? ', waarvan ' + anders.length + ' afwijkend' : ''})`); 135 153 } 136 154 console.log(); -
src/views/pages/admin-audio.ejs
rdaa8eb8 r5280532 254 254 .ax-form-actions[hidden] { display: none; } 255 255 256 /* ─── Buttons ──────────────────────────────────────────────────── */257 .ax-btn {258 display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem;259 padding: 0.55rem 1rem;260 border: 1px solid var(--rule);261 background: var(--paper-2);262 color: var(--ink);263 font-family: var(--font-ui, system-ui), sans-serif;264 font-size: 0.9rem; font-weight: 500;265 text-decoration: none;266 border-radius: 6px;267 cursor: pointer;268 min-height: 40px;269 transition: background 120ms, border-color 120ms;270 -webkit-tap-highlight-color: transparent;271 }272 273 256 .ax-track-play.is-playing { 274 257 border-color: var(--accent); … … 277 260 } 278 261 .ax-track-play-icon { font-size: 0.85rem; line-height: 1; } 279 .ax-empty-icon {280 font-size: 2.5rem;281 font-family: var(--font-display, serif);282 color: var(--ink-soft);283 opacity: 0.4;284 margin-bottom: 0.5rem;285 }286 .ax-track {287 display: grid;288 grid-template-columns: 56px 1fr auto;289 gap: 0.85rem;290 align-items: center;291 padding: 0.75rem;292 background: var(--paper-2);293 border: 1px solid var(--rule);294 border-radius: 10px;295 transition: border-color 120ms;296 }297 .ax-track-cover {298 width: 56px; height: 56px;299 border-radius: 6px;300 object-fit: cover;301 background: var(--paper);302 display: flex; align-items: center; justify-content: center;303 font-family: var(--font-display, serif);304 font-size: 1.5rem;305 color: var(--accent);306 flex-shrink: 0;307 }308 262 .ax-track-cover-empty { /* span variant */ } 309 .ax-track-meta {310 min-width: 0; /* allow text-overflow on long titles */311 display: flex; flex-direction: column; gap: 0.2rem;312 }313 .ax-track-title {314 font-weight: 600;315 font-size: 0.95rem;316 color: var(--ink);317 overflow: hidden;318 text-overflow: ellipsis;319 white-space: nowrap;320 }321 .ax-track-sub {322 font-size: 0.8rem;323 color: var(--ink-muted, var(--ink-soft));324 display: flex; flex-wrap: wrap; gap: 0.3rem; align-items: center;325 }326 .ax-embed {327 display: inline-block;328 background: var(--paper);329 padding: 0.15rem 0.5rem;330 border-radius: 4px;331 font-family: var(--font-mono, ui-monospace, monospace);332 font-size: 0.75rem;333 color: var(--ink-soft);334 cursor: pointer;335 user-select: all;336 margin-top: 0.15rem;337 word-break: break-all;338 align-self: flex-start;339 transition: background 120ms;340 }341 263 .ax-track-delete { display: inline; } 342 264 343 265 /* ─── Mobile tweaks ───────────────────────────────────────────── */ 344 266 @media (max-width: 480px) { 345 .ax-track {346 grid-template-columns: 48px 1fr;347 grid-template-areas: "cover meta" "actions actions";348 gap: 0.6rem;349 }350 .ax-track-cover { grid-area: cover; width: 48px; height: 48px; }351 267 } 352 268 -
src/views/pages/admin-playlists.ejs
rdaa8eb8 r5280532 87 87 88 88 .ax-page { max-width: 880px; margin: 1.5rem auto 4rem; padding: 0 1rem; } 89 .ax-btn-primary:hover { opacity: 0.92; }90 .ax-track-cover {91 width: 64px; height: 64px; border-radius: 8px;92 background: var(--paper-2);93 display: flex; align-items: center; justify-content: center;94 font-family: var(--font-display, serif);95 font-size: 1.5rem; color: var(--accent);96 flex-shrink: 0;97 }98 89 99 90 /* ─── Mobile ──────────────────────────────────────────────────── */ -
src/views/partials/admin-styles.ejs
rdaa8eb8 r5280532 133 133 } 134 134 .ax-track:hover { border-color: var(--accent); } 135 /* object-fit staat OOK op het element zelf, niet alleen op een img erbinnen: 136 admin-audio zet .ax-track-cover rechtstreeks op een <img>, admin-listeners 137 op een omhulsel met een img erin. Op een niet-vervangen element doet 138 object-fit niets, dus het kost de tweede vorm niets. */ 135 139 .ax-track-cover { 136 140 width: 64px; height: 64px; border-radius: 8px; … … 141 145 flex-shrink: 0; 142 146 overflow: hidden; 147 object-fit: cover; 143 148 } 144 149 .ax-track-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)