Changes in src/views/pages/admin-audio.ejs [5280532:6401681] in Klonkt
- File:
-
- 1 edited
-
src/views/pages/admin-audio.ejs (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/views/pages/admin-audio.ejs
r5280532 r6401681 1 <%# De gedeelde ax-*-primitieven. MOET boven het eigen style-blok van deze2 pagina staan: wat hieronder blijft staan wijkt bewust af en hoort dus3 later te komen, anders wint de partial ervan. %>4 <%- include('../partials/admin-styles') %>5 1 <div class="container ax-page"> 6 2 7 < %- include('../partials/admin-back') %>3 <p><a href="/admin" class="btn">← <%= t('nav.admin') %></a></p> 8 4 <%- include('../partials/media-tabs', { active: 'audio', audioOn: true }) %> 9 5 <header class="ax-header"> … … 154 150 padding: 0 1rem; 155 151 } 152 .ax-header { 153 display: flex; align-items: flex-start; gap: 0.75rem; 154 margin-bottom: 1.5rem; 155 } 156 .ax-header h1 { 157 font-family: var(--font-display, serif); 158 font-size: 1.75rem; 159 margin: 0 0 0.25rem; 160 } 161 .ax-tagline { 162 color: var(--ink-muted, var(--ink-soft)); 163 margin: 0; 164 font-size: 0.9rem; 165 line-height: 1.5; 166 } 167 .ax-tagline code { 168 background: var(--paper-2); 169 padding: 0.1em 0.4em; 170 border-radius: 4px; 171 font-size: 0.9em; 172 } 173 .ax-back { 174 display: inline-flex; align-items: center; justify-content: center; 175 width: 40px; height: 40px; 176 border: 1px solid var(--rule); 177 border-radius: 8px; 178 background: var(--paper); 179 color: var(--ink); 180 text-decoration: none; 181 font-size: 1.1rem; 182 flex-shrink: 0; 183 transition: border-color 120ms; 184 } 185 .ax-back:hover { border-color: var(--accent); } 186 187 /* ─── Flash messages ───────────────────────────────────────────── */ 188 .ax-flash { 189 padding: 0.75rem 1rem; 190 border-radius: 8px; 191 margin-bottom: 1rem; 192 font-size: 0.9rem; 193 } 194 .ax-flash-ok { background: rgba(40,160,90,.15); color: #2a9d5e; border: 1px solid rgba(40,160,90,.3); } 195 .ax-flash-err { background: rgba(200,60,60,.15); color: #c33; border: 1px solid rgba(200,60,60,.3); } 196 197 /* ─── Card sections ────────────────────────────────────────────── */ 198 .ax-card { 199 background: var(--paper); 200 border: 1px solid var(--rule); 201 border-radius: 12px; 202 padding: 1.25rem; 203 margin-bottom: 1rem; 204 } 156 205 .ax-card-title { 157 206 font-family: var(--font-display, serif); … … 254 303 .ax-form-actions[hidden] { display: none; } 255 304 305 /* ─── Buttons ──────────────────────────────────────────────────── */ 306 .ax-btn { 307 display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem; 308 padding: 0.55rem 1rem; 309 border: 1px solid var(--rule); 310 background: var(--paper-2); 311 color: var(--ink); 312 font-family: var(--font-ui, system-ui), sans-serif; 313 font-size: 0.9rem; font-weight: 500; 314 text-decoration: none; 315 border-radius: 6px; 316 cursor: pointer; 317 min-height: 40px; 318 transition: background 120ms, border-color 120ms; 319 -webkit-tap-highlight-color: transparent; 320 } 321 .ax-btn:hover { border-color: var(--accent); } 322 .ax-btn-secondary { background: var(--paper-2); } 323 .ax-btn-primary { 324 background: var(--accent); color: white; 325 border-color: var(--accent); 326 } 327 .ax-btn-primary:hover { opacity: 0.92; border-color: var(--accent); } 328 329 /* Tiny icon-only button for row actions */ 330 .ax-icon-btn { 331 display: inline-flex; align-items: center; justify-content: center; 332 width: 40px; height: 40px; 333 border: 1px solid var(--rule); 334 background: var(--paper-2); 335 color: var(--ink); 336 border-radius: 8px; 337 cursor: pointer; 338 font-size: 1rem; 339 transition: background 120ms, border-color 120ms, color 120ms; 340 } 341 .ax-icon-btn:hover { border-color: var(--accent); } 342 .ax-icon-btn-danger:hover { color: #dc2626; border-color: #dc2626; } 343 256 344 .ax-track-play.is-playing { 257 345 border-color: var(--accent); … … 260 348 } 261 349 .ax-track-play-icon { font-size: 0.85rem; line-height: 1; } 350 351 /* ─── Empty state ──────────────────────────────────────────────── */ 352 .ax-empty { 353 text-align: center; 354 padding: 2rem 1rem; 355 color: var(--ink-muted, var(--ink-soft)); 356 } 357 .ax-empty-icon { 358 font-size: 2.5rem; 359 font-family: var(--font-display, serif); 360 color: var(--ink-soft); 361 opacity: 0.4; 362 margin-bottom: 0.5rem; 363 } 364 .ax-empty p { margin: 0; } 365 366 /* ─── Track list (card per row) ────────────────────────────────── */ 367 .ax-list { 368 list-style: none; padding: 0; margin: 0; 369 display: flex; flex-direction: column; 370 gap: 0.6rem; 371 } 372 .ax-track { 373 display: grid; 374 grid-template-columns: 56px 1fr auto; 375 gap: 0.85rem; 376 align-items: center; 377 padding: 0.75rem; 378 background: var(--paper-2); 379 border: 1px solid var(--rule); 380 border-radius: 10px; 381 transition: border-color 120ms; 382 } 383 .ax-track:hover { border-color: var(--accent); } 384 .ax-track-cover { 385 width: 56px; height: 56px; 386 border-radius: 6px; 387 object-fit: cover; 388 background: var(--paper); 389 display: flex; align-items: center; justify-content: center; 390 font-family: var(--font-display, serif); 391 font-size: 1.5rem; 392 color: var(--accent); 393 flex-shrink: 0; 394 } 262 395 .ax-track-cover-empty { /* span variant */ } 396 .ax-track-meta { 397 min-width: 0; /* allow text-overflow on long titles */ 398 display: flex; flex-direction: column; gap: 0.2rem; 399 } 400 .ax-track-title { 401 font-weight: 600; 402 font-size: 0.95rem; 403 color: var(--ink); 404 overflow: hidden; 405 text-overflow: ellipsis; 406 white-space: nowrap; 407 } 408 .ax-track-sub { 409 font-size: 0.8rem; 410 color: var(--ink-muted, var(--ink-soft)); 411 display: flex; flex-wrap: wrap; gap: 0.3rem; align-items: center; 412 } 413 .ax-track-sep { opacity: 0.5; } 414 .ax-embed { 415 display: inline-block; 416 background: var(--paper); 417 padding: 0.15rem 0.5rem; 418 border-radius: 4px; 419 font-family: var(--font-mono, ui-monospace, monospace); 420 font-size: 0.75rem; 421 color: var(--ink-soft); 422 cursor: pointer; 423 user-select: all; 424 margin-top: 0.15rem; 425 word-break: break-all; 426 align-self: flex-start; 427 transition: background 120ms; 428 } 429 .ax-embed:hover { background: var(--rule); } 430 .ax-embed.is-copied { background: rgba(40,160,90,0.2); color: #2a9d5e; } 431 432 .ax-track-actions { 433 display: flex; gap: 0.4rem; 434 flex-shrink: 0; 435 } 263 436 .ax-track-delete { display: inline; } 264 437 265 438 /* ─── Mobile tweaks ───────────────────────────────────────────── */ 266 439 @media (max-width: 480px) { 440 .ax-track { 441 grid-template-columns: 48px 1fr; 442 grid-template-areas: "cover meta" "actions actions"; 443 gap: 0.6rem; 444 } 445 .ax-track-cover { grid-area: cover; width: 48px; height: 48px; } 446 .ax-track-meta { grid-area: meta; } 447 .ax-track-actions { 448 grid-area: actions; 449 justify-content: flex-end; 450 border-top: 1px solid var(--rule); 451 padding-top: 0.5rem; 452 margin-top: 0.25rem; 453 } 267 454 } 268 455
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)