Changeset 39dab6b in Klonkt for src/views/pages


Ignore:
Timestamp:
08/12/2026 09:43:20 PM (3 months ago)
Author:
Robin <roboburr@…>
Children:
5e0fea7
Parents:
2086ea2
Message:

Ward-PWA: de mini-speler, de themakleur en een breder kaartraster

Drie dingen in een ronde.

DE THEMAKLEUR (SkyPalette). De acht presets en de luminantie-regel komen
LETTERLIJK uit Shaer: dezelfde kleuren, en dezelfde beslissing welke
tekst erop leesbaar is (donker op zon, wit op nacht). Een handgehouden
lijstje zou uit de pas lopen; luminantie beslist. De keuze kleurt het
accent (knoppen, bubbels, de (+)), tint de achtergrond zacht, en laat de
hemel zijn placeholder-schijfjes bijkleuren. Opgeslagen per apparaat.

DE MINI-SPELER. Een feed-kaart rendert een gewone audio, maar de feed
wordt bij elke verversing opnieuw getekend en dan sterft dat element:
de muziek stopt midden in een nummer. Daarom is er EEN blijvende speler
buiten de feed; een audiotegel geeft alleen zijn bron door (gevangen in
de capture-fase) en pauzeert zichzelf. Zo overleeft het geluid een
herteken en een wissel naar de hemel, precies als in de app.

HET KAARTRASTER (Robins wens, 12-8). Op desktop net als op mobiel en
tablet MEER kolommen: auto-fill met een minimum van 280px vult zelf op,
een op een smalle telefoon, twee op een tablet, drie of meer breed.

New file:
src/assets/js/ward-theme.js

  • presets, onSky (luminantie), load/save/apply

Changed files:
src/assets/js/ward.js

  • wireTheme (swatches), wireMiniPlayer (gedeelde audio)
  • de hemel skint bij op een themawissel

src/assets/js/ward-sky.js

  • buildAtlas neemt het accent; reskin() bij een kleurwissel

src/views/pages/ward.ejs

  • themaknop, themadialoog, mini-speler-balk

src/assets/css/ward.css

  • accent/achtergrond als variabelen, mini-speler, swatches, responsief raster (auto-fill minmax 280px)

src/services/i18n.js

  • kleur + play/pause in nl, en, de

test/ward-theme.test.js

  • acht presets, en de tekstkleur volgt luminantie

remarks: 905 tests groen. Slepen en het echt doorspelen van audio zijn
in code getest, niet met oor en vinger; dat is aan Robin op dev.

-robo
Co-Authored-By: Claude Opus 4.8 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/pages/ward.ejs

    r2086ea2 r39dab6b  
    1919    <div class="topbar">
    2020      <h1><%= state.strings.title %></h1>
     21      <button id="theme-open" type="button" class="icon-btn" aria-label="<%= state.strings.theme %>">🎨</button>
    2122      <button id="mode" type="button" aria-pressed="false"><%= state.strings.toSky %></button>
    2223    </div>
    … …  
    141142  </dialog>
    142143
     144  <!-- De mini-speler: één blijvende <audio> buiten de feed, zodat het geluid
     145       een herteken en een wissel naar de hemel overleeft. -->
     146  <div id="mini-player" hidden>
     147    <audio id="mini-audio" preload="none"></audio>
     148    <button id="mini-toggle" type="button" aria-label="<%= state.strings.playPause %>">▶</button>
     149    <span id="mini-title"></span>
     150    <button id="mini-close" type="button" aria-label="<%= state.strings.close %>">✕</button>
     151  </div>
     152
     153  <!-- De themakiezer (SkyPalette): acht kleuren, de keuze kleurt de hele ward. -->
     154  <dialog id="theme-dialog">
     155    <h2><%= state.strings.theme %></h2>
     156    <div id="theme-swatches" class="swatches"></div>
     157    <button id="theme-close" type="button"><%= state.strings.cancel %></button>
     158  </dialog>
     159
    143160  <!-- De begintoestand reist als JSON mee, zodat de pagina meteen compleet is
    144161       en niet eerst leeg staat te wachten op een fetch. Geen inline script:
Note: See TracChangeset for help on using the changeset viewer.