Changeset 102d2f0 in Klonkt
- Timestamp:
- 06/14/2026 11:12:05 PM (3 months ago)
- Branches:
- main
- Children:
- 67d4067
- Parents:
- ddecd9a
- Location:
- src
- Files:
-
- 2 edited
-
assets/css/audio.css (modified) (2 diffs)
-
views/shell.ejs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/assets/css/audio.css
rddecd9a r102d2f0 377 377 } 378 378 379 /* (De grote tablet/auto-variant staat onderaan deze sectie — NÁ de basis cover/ 380 info/controls-regels — anders overschrijft de basis die overrides.) */ 381 382 .audio-sheet-panel.is-dragging { 383 transition: none; 384 will-change: transform; 385 } 386 [data-theme="dark"] .audio-sheet-panel { 387 background: var(--paper, #1a1a1a); 388 box-shadow: 0 -20px 60px rgba(0, 0, 0, .5); 389 } 390 391 .audio-sheet-drag-zone { 392 flex-shrink: 0; 393 display: flex; 394 flex-direction: column; 395 align-items: stretch; 396 gap: 1rem; 397 /* MUST be 'none' so pointer events reach JS (drag-down-to-close handler). 398 'pan-y' would let the browser claim the vertical gesture for scroll. */ 399 touch-action: none; 400 user-select: none; 401 -webkit-user-select: none; 402 cursor: grab; 403 margin: -.75rem -1.5rem 0; 404 padding: .75rem 1.5rem 0; 405 } 406 .audio-sheet-drag-zone:active { cursor: grabbing; } 407 408 @media (hover: hover) and (pointer: fine) { 409 .audio-sheet-drag-zone { 410 touch-action: auto; 411 cursor: default; 412 pointer-events: none; 413 } 414 .audio-sheet-drag-zone .audio-sheet-handle { 415 pointer-events: auto; 416 cursor: pointer; 417 } 418 } 419 420 .audio-sheet-handle { 421 display: block; 422 width: 48px; height: 4px; 423 border-radius: 2px; 424 background: color-mix(in srgb, var(--ink, #000) 25%, transparent); 425 border: 0; padding: 0; 426 margin: 0 auto .5rem; 427 cursor: pointer; 428 flex-shrink: 0; 429 position: relative; 430 } 431 .audio-sheet-handle::before { 432 content: ""; position: absolute; 433 inset: -10px -20px; 434 } 435 436 .audio-sheet-cover { 437 width: 100%; 438 max-width: 320px; 439 aspect-ratio: 1; 440 margin: 0 auto; 441 border-radius: 12px; 442 background: 443 linear-gradient(135deg, 444 var(--accent, #c2410c), 445 color-mix(in srgb, var(--accent, #c2410c) 55%, #000)); 446 background-size: cover; background-position: center; 447 display: flex; align-items: center; justify-content: center; 448 color: rgba(255,255,255,0.9); 449 box-shadow: 0 8px 32px rgba(0,0,0,0.18); 450 } 451 .audio-sheet-cover svg { width: 30%; height: 30%; } 452 .audio-sheet-cover.has-image svg { display: none; } 453 454 .audio-sheet-info { text-align: center; min-width: 0; } 455 .audio-sheet-title { font-family: var(--font-display, serif); font-size: 1.5rem; font-weight: 600; line-height: 1.2; } 456 .audio-sheet-artist { color: var(--ink-soft, rgba(0,0,0,.55)); margin-top: .25rem; } 457 .audio-sheet-album { color: var(--ink-muted, rgba(0,0,0,.45)); font-size: 0.85rem; margin-top: .15rem; } 458 459 .audio-sheet-progress { 460 display: flex; 461 gap: .75rem; 462 align-items: center; 463 padding: 0 1rem; 464 } 465 466 .audio-sheet-controls { 467 display: flex; 468 justify-content: center; 469 align-items: center; 470 gap: 1rem; 471 flex-wrap: nowrap; 472 min-height: 64px; 473 } 474 .audio-sheet-btn { width: 48px; height: 48px; } 475 .audio-sheet-btn svg { width: 22px; height: 22px; } 476 .audio-sheet-play { 477 background: var(--accent, #c2410c); 478 color: #fff; 479 width: 64px; height: 64px; 480 border-radius: 50%; 481 padding: 0; 482 } 483 .audio-sheet-play svg { width: 24px; height: 24px; } 484 .audio-sheet-play .icon-pause { display: none; } 485 /* Both descendant AND sibling — works whether the sheet is nested in 486 .audio-player (legacy) or detached as a body sibling (current fix). */ 487 .audio-player.is-playing .audio-sheet-play .icon-play, 488 .audio-player.is-playing ~ .audio-sheet .audio-sheet-play .icon-play, 489 body.audio-is-playing .audio-sheet-play .icon-play { display: none; } 490 .audio-player.is-playing .audio-sheet-play .icon-pause, 491 .audio-player.is-playing ~ .audio-sheet .audio-sheet-play .icon-pause, 492 body.audio-is-playing .audio-sheet-play .icon-pause { display: block; } 493 494 .audio-sheet-queue { 495 border-top: 1px solid var(--rule); 496 padding-top: 1rem; 497 } 498 .audio-sheet-queue-label { 499 font-size: 0.85rem; 500 color: var(--ink-muted, rgba(0,0,0,.55)); 501 text-transform: uppercase; 502 letter-spacing: 0.05em; 503 margin-bottom: 0.5rem; 504 } 505 .audio-sheet-queue-list { 506 list-style: none; 507 margin: 0; padding: 0; 508 } 509 .audio-sheet-queue-item { 510 display: flex; 511 align-items: baseline; 512 gap: 0.4rem; 513 padding: 0.5rem 0.6rem; 514 border-radius: 4px; 515 cursor: pointer; 516 font-size: 0.95rem; 517 } 518 .audio-sheet-queue-item:hover { background: color-mix(in srgb, var(--ink, #000) 5%, transparent); } 519 .audio-sheet-queue-item.is-current { color: var(--accent); font-weight: 600; } 520 .audio-sheet-queue-item .aqi-num { color: var(--ink-muted, rgba(0,0,0,.45)); min-width: 1.6em; } 521 .audio-sheet-queue-item .aqi-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } 522 .audio-sheet-queue-item .aqi-artist { 523 color: var(--ink-muted, rgba(0,0,0,.45)); 524 font-size: 0.85rem; 525 margin-left: auto; 526 } 527 379 528 /* TABLET / AUTO (768–1199px): grote, landscape, knop-vriendelijke full-player 380 529 voor tablets + een tablet-in-de-auto. Bewust full-screen + grote touch-targets. 381 Desktop (≥1200px) opent de full player NIET (afgehandeld in audio-player.js), 382 dus daar is geen sheet-styling nodig. */ 530 STAAT BEWUST NA de basis-sheet-regels hierboven, anders overschrijft de basis 531 deze overrides (cascade-volgorde). Desktop (≥1200px) opent de full player NIET 532 (afgehandeld in audio-player.js), dus daar is geen sheet-styling nodig. */ 383 533 @media (min-width: 768px) and (max-width: 1199.98px) { 384 534 .audio-sheet-panel { … … 411 561 } 412 562 413 .audio-sheet-panel.is-dragging {414 transition: none;415 will-change: transform;416 }417 [data-theme="dark"] .audio-sheet-panel {418 background: var(--paper, #1a1a1a);419 box-shadow: 0 -20px 60px rgba(0, 0, 0, .5);420 }421 422 .audio-sheet-drag-zone {423 flex-shrink: 0;424 display: flex;425 flex-direction: column;426 align-items: stretch;427 gap: 1rem;428 /* MUST be 'none' so pointer events reach JS (drag-down-to-close handler).429 'pan-y' would let the browser claim the vertical gesture for scroll. */430 touch-action: none;431 user-select: none;432 -webkit-user-select: none;433 cursor: grab;434 margin: -.75rem -1.5rem 0;435 padding: .75rem 1.5rem 0;436 }437 .audio-sheet-drag-zone:active { cursor: grabbing; }438 439 @media (hover: hover) and (pointer: fine) {440 .audio-sheet-drag-zone {441 touch-action: auto;442 cursor: default;443 pointer-events: none;444 }445 .audio-sheet-drag-zone .audio-sheet-handle {446 pointer-events: auto;447 cursor: pointer;448 }449 }450 451 .audio-sheet-handle {452 display: block;453 width: 48px; height: 4px;454 border-radius: 2px;455 background: color-mix(in srgb, var(--ink, #000) 25%, transparent);456 border: 0; padding: 0;457 margin: 0 auto .5rem;458 cursor: pointer;459 flex-shrink: 0;460 position: relative;461 }462 .audio-sheet-handle::before {463 content: ""; position: absolute;464 inset: -10px -20px;465 }466 467 .audio-sheet-cover {468 width: 100%;469 max-width: 320px;470 aspect-ratio: 1;471 margin: 0 auto;472 border-radius: 12px;473 background:474 linear-gradient(135deg,475 var(--accent, #c2410c),476 color-mix(in srgb, var(--accent, #c2410c) 55%, #000));477 background-size: cover; background-position: center;478 display: flex; align-items: center; justify-content: center;479 color: rgba(255,255,255,0.9);480 box-shadow: 0 8px 32px rgba(0,0,0,0.18);481 }482 .audio-sheet-cover svg { width: 30%; height: 30%; }483 .audio-sheet-cover.has-image svg { display: none; }484 485 .audio-sheet-info { text-align: center; min-width: 0; }486 .audio-sheet-title { font-family: var(--font-display, serif); font-size: 1.5rem; font-weight: 600; line-height: 1.2; }487 .audio-sheet-artist { color: var(--ink-soft, rgba(0,0,0,.55)); margin-top: .25rem; }488 .audio-sheet-album { color: var(--ink-muted, rgba(0,0,0,.45)); font-size: 0.85rem; margin-top: .15rem; }489 490 .audio-sheet-progress {491 display: flex;492 gap: .75rem;493 align-items: center;494 padding: 0 1rem;495 }496 497 .audio-sheet-controls {498 display: flex;499 justify-content: center;500 align-items: center;501 gap: 1rem;502 flex-wrap: nowrap;503 min-height: 64px;504 }505 .audio-sheet-btn { width: 48px; height: 48px; }506 .audio-sheet-btn svg { width: 22px; height: 22px; }507 .audio-sheet-play {508 background: var(--accent, #c2410c);509 color: #fff;510 width: 64px; height: 64px;511 border-radius: 50%;512 padding: 0;513 }514 .audio-sheet-play svg { width: 24px; height: 24px; }515 .audio-sheet-play .icon-pause { display: none; }516 /* Both descendant AND sibling — works whether the sheet is nested in517 .audio-player (legacy) or detached as a body sibling (current fix). */518 .audio-player.is-playing .audio-sheet-play .icon-play,519 .audio-player.is-playing ~ .audio-sheet .audio-sheet-play .icon-play,520 body.audio-is-playing .audio-sheet-play .icon-play { display: none; }521 .audio-player.is-playing .audio-sheet-play .icon-pause,522 .audio-player.is-playing ~ .audio-sheet .audio-sheet-play .icon-pause,523 body.audio-is-playing .audio-sheet-play .icon-pause { display: block; }524 525 .audio-sheet-queue {526 border-top: 1px solid var(--rule);527 padding-top: 1rem;528 }529 .audio-sheet-queue-label {530 font-size: 0.85rem;531 color: var(--ink-muted, rgba(0,0,0,.55));532 text-transform: uppercase;533 letter-spacing: 0.05em;534 margin-bottom: 0.5rem;535 }536 .audio-sheet-queue-list {537 list-style: none;538 margin: 0; padding: 0;539 }540 .audio-sheet-queue-item {541 display: flex;542 align-items: baseline;543 gap: 0.4rem;544 padding: 0.5rem 0.6rem;545 border-radius: 4px;546 cursor: pointer;547 font-size: 0.95rem;548 }549 .audio-sheet-queue-item:hover { background: color-mix(in srgb, var(--ink, #000) 5%, transparent); }550 .audio-sheet-queue-item.is-current { color: var(--accent); font-weight: 600; }551 .audio-sheet-queue-item .aqi-num { color: var(--ink-muted, rgba(0,0,0,.45)); min-width: 1.6em; }552 .audio-sheet-queue-item .aqi-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }553 .audio-sheet-queue-item .aqi-artist {554 color: var(--ink-muted, rgba(0,0,0,.45));555 font-size: 0.85rem;556 margin-left: auto;557 }558 559 563 /* ============================================================ 560 564 External-link variant ([[link:url]]) -
src/views/shell.ejs
rddecd9a r102d2f0 168 168 anywhere (admin previews, post embeds, etc). The player itself is 169 169 a singleton — see the script tag near </body>. --> 170 <link rel="stylesheet" href="/assets/css/audio.css?v= 2">170 <link rel="stylesheet" href="/assets/css/audio.css?v=3"> 171 171 172 172 <%- include('partials/shared-styles') %>
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)