source: Klonkt/src/assets/css/reply-editor.css@ f3c7a05

main
Last change on this file since f3c7a05 was f3c7a05, checked in by Robin <roboburr@…>, 4 weeks ago

Een Verzenden-knop, niet twee (reply-editor)

Robins melding. De oorzaak is een ontbrekende tegenhanger, geen dubbele knop in
de HTML: reply-editor.ejs heeft er twee met opzet -- .re-send-top in de
bovenbalk en .re-send in de voet -- en de CSS hoort er telkens een te
verbergen.

Die regel bestond maar in EEN richting:

.re-form.re-full .re-send { display: none; } /* send lives in the top bar */

.re-send-top had helemaal geen CSS. Buiten fullscreen bleven dus allebei staan,
twee keer Verzenden onder elkaar. Nu de tegenhanger erbij, en daarmee is de
regel wat het commentaar altijd al zei: de knop hoort in de bovenbalk OF in de
voet, nooit in allebei.

Een regel CSS, geen JS aangeraakt.

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

  • Property mode set to 100644
File size: 8.0 KB
Line 
1/* Rich reply editor (partials/reply-editor.ejs + js/reply-editor.js).
2 Styled as a small sibling of the post editor (pe-*): same 32px icon buttons,
3 same accent-active state, same framed feel, scaled down for a reply. */
4
5/* !important: site CSS gives forms inside comment threads `display: contents`,
6 which collapses the form to a 0x0 non-box — flex layout AND the fixed
7 full-screen overlay silently break. This component must own its box. */
8.re-form[data-re] { display: flex !important; flex-direction: column; gap: .5rem; }
9
10/* ── Toolbar (matches .pe-toolbar) ─────────────────────────────────────── */
11.re-toolbar { display: flex; align-items: center; gap: .1rem; flex-wrap: wrap; }
12.re-toolbar button {
13 display: inline-flex; align-items: center; justify-content: center;
14 width: 32px; height: 32px; padding: 0;
15 background: transparent; border: 1px solid transparent; border-radius: 6px;
16 color: var(--ink, currentColor); cursor: pointer;
17 touch-action: manipulation; -webkit-user-select: none; user-select: none;
18 -webkit-tap-highlight-color: transparent;
19 transition: background .15s ease, color .15s ease, border-color .15s ease;
20}
21.re-toolbar button svg { width: 16px; height: 16px; }
22@media (hover: hover) {
23 .re-toolbar button:hover { background: var(--paper-2, color-mix(in srgb, var(--ink, #000) 8%, transparent)); color: var(--accent, #06c); }
24}
25.re-toolbar button:active { transform: scale(.94); }
26.re-toolbar button.is-active { background: var(--accent, #06c); color: #fff; border-color: var(--accent, #06c); }
27.re-toolbar button.is-active svg { color: #fff; }
28.re-toolbar-sep { width: 1px; height: 18px; background: var(--rule, color-mix(in srgb, var(--ink, #000) 16%, transparent)); margin: 0 .3rem; flex-shrink: 0; }
29
30/* ── Editor box (matches .pe-editor) ───────────────────────────────────── */
31.re-editor {
32 min-height: 4rem; padding: .6rem .75rem; border-radius: 10px;
33 border: 1px solid var(--rule, color-mix(in srgb, var(--ink, #000) 16%, transparent));
34 background: var(--paper, transparent); color: inherit;
35 overflow-wrap: anywhere; outline: none; line-height: 1.5;
36 transition: border-color .15s ease, box-shadow .15s ease;
37}
38.re-editor:focus {
39 border-color: var(--accent, #06c);
40 box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #06c) 18%, transparent);
41}
42.re-editor:empty::before { content: attr(data-ph); color: color-mix(in srgb, var(--ink, #000) 40%, transparent); pointer-events: none; }
43.re-editor p { margin: 0 0 .5rem; }
44.re-editor p:last-child { margin-bottom: 0; }
45.re-editor ul, .re-editor ol { margin: .4rem 0; padding-left: 1.4rem; }
46.re-editor blockquote {
47 margin: .4rem 0; padding: .1rem 0 .1rem .75rem;
48 border-left: 3px solid color-mix(in srgb, var(--ink, #000) 22%, transparent);
49 color: color-mix(in srgb, var(--ink, #000) 78%, transparent);
50}
51.re-editor a { color: var(--accent, #06c); }
52.re-editor.re-drop { border-color: var(--accent, #06c); border-style: dashed; background: color-mix(in srgb, var(--accent, #06c) 6%, transparent); }
53
54/* ── Footer: language + send ───────────────────────────────────────────── */
55.re-foot { display: flex; align-items: center; gap: .6rem; }
56.re-foot .re-send { margin-left: auto; }
57.re-lang {
58 font: inherit; font-size: .82rem; padding: .32rem .5rem; border-radius: 8px;
59 border: 1px solid var(--rule, color-mix(in srgb, var(--ink, #000) 16%, transparent));
60 background: transparent; color: inherit; max-width: 11rem;
61}
62
63/* ── Mentions bar (u02): removable partner chips ───────────────────────── */
64.re-mentions { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem; }
65.re-mentions-label { font-size: .76rem; text-transform: uppercase; letter-spacing: .03em; color: color-mix(in srgb, var(--ink, #000) 50%, transparent); }
66.re-mention {
67 display: inline-flex; align-items: center; gap: .1rem;
68 padding: .12rem .2rem .12rem .5rem; border-radius: 999px; font-size: .78rem; line-height: 1.5;
69 background: color-mix(in srgb, var(--accent, #06c) 12%, transparent);
70 border: 1px solid color-mix(in srgb, var(--accent, #06c) 28%, transparent);
71 max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
72}
73.re-mention-del { display: inline-flex; align-items: center; justify-content: center; width: 1.2rem; height: 1.2rem; border: none; background: none; color: inherit; opacity: .65; font-size: 1rem; line-height: 1; cursor: pointer; }
74.re-mention-del:hover { opacity: 1; }
75
76/* ── Media attachment chips (while composing) ──────────────────────────── */
77.re-attachments { display: flex; flex-wrap: wrap; gap: .4rem; }
78.re-att {
79 display: inline-flex; align-items: center; gap: .4rem;
80 padding: .25rem .3rem .25rem .5rem; border-radius: 10px; font-size: .78rem;
81 background: var(--paper-2, color-mix(in srgb, var(--ink, #000) 7%, transparent));
82 border: 1px solid var(--rule, color-mix(in srgb, var(--ink, #000) 12%, transparent));
83 max-width: 100%; overflow: hidden;
84}
85.re-att img { width: 40px; height: 40px; object-fit: cover; border-radius: 7px; display: block; }
86.re-att-del { display: inline-flex; align-items: center; justify-content: center; width: 1.3rem; height: 1.3rem; border: none; background: none; color: inherit; opacity: .65; font-size: 1.05rem; line-height: 1; cursor: pointer; }
87.re-att-del:hover { opacity: 1; }
88.re-att-busy { opacity: .7; }
89.re-att-err { background: color-mix(in srgb, #c00 16%, transparent); border-color: color-mix(in srgb, #c00 35%, transparent); }
90
91/* ── Media on a sent reply in the thread (fedi-node) ───────────────────── */
92.re-reply-media { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .5rem; }
93.re-reply-media img { max-width: min(260px, 100%); max-height: 260px; border-radius: 12px; display: block; }
94.re-reply-media audio { max-width: 100%; }
95.re-reply-media video { max-width: min(320px, 100%); border-radius: 12px; }
96
97/* ── Full-screen compose (mobile). JS toggles .re-full on the form. ────── */
98.re-head { display: flex; align-items: center; gap: .6rem; padding-bottom: .2rem; border-bottom: 1px solid var(--rule, color-mix(in srgb, var(--ink, #000) 12%, transparent)); }
99.re-head-title { flex: 1; text-align: center; font-size: .95rem; font-weight: 600; }
100.re-cancel { display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; border: none; background: none; color: inherit; font-size: 1.5rem; line-height: 1; cursor: pointer; border-radius: 8px; }
101@media (hover: hover) { .re-cancel:hover { background: var(--paper-2, color-mix(in srgb, var(--ink, #000) 8%, transparent)); } }
102
103.re-form.re-full {
104 /* Above the bottom tab bar (1050) and the profile/audio sheets (1100). */
105 position: fixed; inset: 0; z-index: 1200;
106 background: var(--paper, #fff); padding: .8rem .9rem; gap: .55rem;
107 padding-top: calc(.8rem + env(safe-area-inset-top));
108 padding-bottom: calc(.8rem + env(safe-area-inset-bottom));
109}
110.re-form.re-full .re-head { order: -1; } /* the top bar stays topmost, above the mentions bar */
111.re-form.re-full .re-editor { flex: 1; min-height: 0; overflow-y: auto; border: none; box-shadow: none; padding: .4rem .1rem; }
112.re-form.re-full .re-editor:focus { border: none; box-shadow: none; }
113.re-form.re-full .re-send { display: none; } /* send lives in the top bar */
114/* ... EN ANDERSOM. Die regel hierboven stond er wel, deze niet: buiten
115 fullscreen bleven allebei de knoppen staan, dus twee keer Verzenden onder
116 elkaar. .re-send-top had helemaal geen CSS -- hij werd nooit verborgen.
117 Een knop hoort in de bovenbalk OF in de voet, nooit in allebei. */
118.re-form:not(.re-full) .re-send-top { display: none; }
119.re-form.re-full .re-foot { justify-content: flex-start; }
120html.re-lock, html.re-lock body { overflow: hidden; }
Note: See TracBrowser for help on using the repository browser.