Changeset 50489c7 in Klonkt


Ignore:
Timestamp:
08/06/2026 02:19:49 AM (5 weeks ago)
Author:
Claude (agent) <aiclaude@…>
Branches:
main
Children:
39111c0
Parents:
a78a0ef
git-author:
Robin <roboburr@…> (08/06/2026 02:19:48 AM)
git-committer:
Claude (agent) <aiclaude@…> (08/06/2026 02:19:49 AM)
Message:

Draad viel uit de kaart: kop naast de bubbels en avatars buiten de rand

Twee fouten uit de vorige twee commits, allebei zichtbaar op Robins screenshot.

De draadkop stond NAAST de bubbels in plaats van erboven. Oorzaak: ik zette
.msg-thread { display: block } voor .msg-item { display: flex }, en bij gelijke
specificiteit wint de laatste regel. Het blok staat nu na .msg-item, met die
reden erbij zodat niemand het terugverplaatst.

De avatars van eigen bijdragen vielen buiten de kaart. Oorzaak: row-reverse om
je eigen berichten rechts te zetten. Dat duwt de avatar naar de rand zodra de
regel smaller wordt dan zijn inhoud, en dat is op een telefoon altijd. Eigen
bijdragen onderscheiden zich nu met een tint plus de accentlijn die .msg-sent al
had -- dat kan per definitie niet overlopen.

Verder mobiel dichtgezet: min-width:0 op de flexkinderen (anders duwt een lange
handle of URL de bubbel uit de kaart), .msg-line mag afbreken, en onder 560px
verdwijnt de 40px-avatar per bubbel -- de naam staat er al naast en de inhoud
heeft die breedte harder nodig. De kaartpadding krimpt daar mee, en de post-link
gaat van rechts uitgelijnd naar gewoon links, want uitlijnen op een regel die
toch al wrapt levert alleen een gat op.

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

File:
1 edited

Legend:

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

    ra78a0ef r50489c7  
    146146  .msg-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .55rem; }
    147147
    148   /* Een draad is geen regel maar een blok: kop met de context, daaronder de
    149      bubbels van oud naar nieuw. De verticale lijn links maakt zichtbaar dat ze
    150      bij elkaar horen -- dat was precies wat ontbrak toen verzonden en ontvangen
    151      in aparte chips zaten. */
    152   .msg-thread { display: block; }
    153   .msg-thread-head { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; margin-bottom: .35rem; }
    154   /* De tegenpartij is een labeltje bij het gesprek, geen kop erboven: een
    155      kleine verzonken uitsparing, zodat de bubbels eronder de ruimte krijgen.
    156      Het aantal zit in dezelfde uitsparing in plaats van ernaast. */
    157   .msg-thread-who { display: inline-flex; align-items: center; gap: .3rem;
    158     font-size: .78em; line-height: 1.5; font-weight: 500;
    159     padding: .05rem .5rem; border-radius: 999px;
    160     color: color-mix(in srgb, var(--ink, #000) 62%, transparent);
    161     background: color-mix(in srgb, var(--ink, #000) 5%, transparent);
    162     box-shadow: inset 0 1px 2px color-mix(in srgb, var(--ink, #000) 9%, transparent);
    163     max-width: 60%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    164   .msg-thread-count { font-variant-numeric: tabular-nums; opacity: .75;
    165     padding-inline-start: .3rem; border-inline-start: 1px solid color-mix(in srgb, var(--ink, #000) 14%, transparent); }
    166   .msg-thread-post { display: inline-flex; align-items: center; gap: .3rem; font-size: .85em;
    167     margin-inline-start: auto; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    168   .msg-thread-post svg { width: 13px; height: 13px; flex: none; }
    169   .msg-thread-msgs { list-style: none; margin: 0; padding: 0 0 0 .85rem; display: flex; flex-direction: column; gap: .45rem;
    170     border-inline-start: 2px solid color-mix(in srgb, var(--ink, #000) 10%, transparent); }
    171   .msg-sub { display: flex; gap: .8rem; align-items: flex-start; }
    172   /* Jouw eigen bijdrage staat aan de andere kant van de lijn, zodat je de
    173      beurten ziet zonder namen te lezen. */
    174   .msg-sub.msg-sent { flex-direction: row-reverse; text-align: end; }
    175   .msg-sub.msg-sent .msg-line { justify-content: flex-end; }
    176148
    177149  .msg-item { display: flex; gap: .8rem; padding: .85rem .95rem; border-radius: 14px; align-items: flex-start;
     
    184156    background: color-mix(in srgb, var(--accent, #06c) 4%, transparent); }
    185157  .msg-sent { border-left: 3px solid color-mix(in srgb, var(--accent, #06c) 55%, transparent); }
     158
     159  /* ── Gesprekken ──────────────────────────────────────────────────────
     160     NA .msg-item, en dat is geen smaak: .msg-item zet display:flex, en bij
     161     gelijke specificiteit wint de laatste regel. Stond dit ervoor, dan kwam de
     162     draadkop NAAST de bubbels te staan in plaats van erboven. */
     163  .msg-thread { display: block; }
     164  .msg-thread-head { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; margin-bottom: .4rem; }
     165  /* De tegenpartij is een labeltje bij het gesprek, geen kop erboven: een
     166     kleine verzonken uitsparing, zodat de bubbels eronder de ruimte krijgen.
     167     Het aantal zit in dezelfde uitsparing in plaats van ernaast. */
     168  .msg-thread-who { display: inline-flex; align-items: center; gap: .3rem; min-width: 0;
     169    font-size: .78em; line-height: 1.5; font-weight: 500;
     170    padding: .05rem .5rem; border-radius: 999px;
     171    color: color-mix(in srgb, var(--ink, #000) 62%, transparent);
     172    background: color-mix(in srgb, var(--ink, #000) 5%, transparent);
     173    box-shadow: inset 0 1px 2px color-mix(in srgb, var(--ink, #000) 9%, transparent);
     174    max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
     175  .msg-thread-count { font-variant-numeric: tabular-nums; opacity: .75; flex: 0 0 auto;
     176    padding-inline-start: .3rem; border-inline-start: 1px solid color-mix(in srgb, var(--ink, #000) 14%, transparent); }
     177  .msg-thread-post { display: inline-flex; align-items: center; gap: .3rem; font-size: .85em;
     178    margin-inline-start: auto; min-width: 0; max-width: 100%;
     179    overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
     180  .msg-thread-post svg { width: 13px; height: 13px; flex: none; }
     181  .msg-thread-msgs { list-style: none; margin: 0; padding: 0 0 0 .7rem; display: flex; flex-direction: column; gap: .5rem;
     182    border-inline-start: 2px solid color-mix(in srgb, var(--ink, #000) 10%, transparent); }
     183  .msg-sub { display: flex; gap: .6rem; align-items: flex-start; min-width: 0; }
     184  .msg-sub > .msg-body { min-width: 0; }
     185  /* Jouw eigen bijdrage onderscheidt zich met een tint en de accentlijn die
     186     .msg-sent al had -- niet met row-reverse: dat duwde de avatar buiten de
     187     kaart zodra de regel smaller werd dan zijn inhoud. */
     188  .msg-sub.msg-sent { border-radius: 10px; padding: .3rem .45rem;
     189    background: color-mix(in srgb, var(--accent, #06c) 5%, transparent); }
     190  /* Een lange naam of tijd mag de bubbel niet uit de kaart duwen. */
     191  .msg-sub .msg-line { flex-wrap: wrap; }
     192
     193  @media (max-width: 560px) {
     194    /* Op een telefoon is 40px avatar per bubbel puur verlies: de naam staat er
     195       al naast, en de inhoud heeft de breedte harder nodig. */
     196    .msg-sub > .msg-av { display: none; }
     197    .msg-thread-msgs { padding-inline-start: .55rem; }
     198    .msg-thread-post { margin-inline-start: 0; }
     199    .msg-item { padding: .7rem .6rem; gap: .6rem; }
     200  }
    186201
    187202  .msg-av { position: relative; flex: 0 0 40px; width: 40px; height: 40px; border-radius: 50%;
Note: See TracChangeset for help on using the changeset viewer.