Skip to content

Commit f0b7ae2

Browse files
authored
Merge pull request #131 from DenisValeev/codex/reduce-font-size-and-show-two-cards
Show next Total Recall card alongside the current one
2 parents 72fcf9b + b286f59 commit f0b7ae2

2 files changed

Lines changed: 68 additions & 18 deletions

File tree

apps/total-recall/app.js

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
(function () {
22
const notesInput = document.querySelector('[data-notes-input]');
3-
const entryEl = document.querySelector('[data-entry-text]');
3+
const currentEntryEl = document.querySelector('[data-current-text]');
4+
const previewEntryEl = document.querySelector('[data-preview-text]');
5+
const previewCard = document.querySelector('[data-preview-card]');
46
const counterEl = document.querySelector('[data-counter]');
57
const prevButton = document.querySelector('[data-prev]');
68
const nextButton = document.querySelector('[data-next]');
@@ -11,7 +13,9 @@
1113

1214
if (
1315
!notesInput ||
14-
!entryEl ||
16+
!currentEntryEl ||
17+
!previewEntryEl ||
18+
!previewCard ||
1519
!counterEl ||
1620
!prevButton ||
1721
!nextButton ||
@@ -30,6 +34,7 @@
3034
"I told my computer I needed a break, and it said 'No problem — I'll go to sleep.'",
3135
'Why did the scarecrow get a promotion? He was outstanding in his field.'
3236
].join('\n\n');
37+
const PREVIEW_PLACEHOLDER = 'Add another note to preview the upcoming card.';
3338

3439
let entries = [];
3540
let deckOrder = [];
@@ -177,8 +182,11 @@
177182

178183
function renderEmptyState() {
179184
counterEl.textContent = '0 of 0';
180-
entryEl.textContent = 'No notes yet. Add entries below to start reviewing.';
181-
entryEl.classList.add('is-empty');
185+
currentEntryEl.textContent = 'No notes yet. Add entries below to start reviewing.';
186+
currentEntryEl.classList.add('is-empty');
187+
previewEntryEl.textContent = PREVIEW_PLACEHOLDER;
188+
previewEntryEl.classList.add('is-empty');
189+
previewCard.setAttribute('aria-hidden', 'true');
182190
prevButton.disabled = true;
183191
nextButton.disabled = true;
184192
shuffleButton.disabled = true;
@@ -200,13 +208,25 @@
200208
const currentEntryIndex = deckOrder[index];
201209
const current = entries[currentEntryIndex];
202210

203-
entryEl.textContent = current;
204-
entryEl.classList.remove('is-empty');
211+
currentEntryEl.textContent = current;
212+
currentEntryEl.classList.remove('is-empty');
205213
counterEl.textContent = `${index + 1} of ${deckOrder.length}`;
206214
const disableNav = deckOrder.length <= 1;
207215
prevButton.disabled = disableNav;
208216
nextButton.disabled = disableNav;
209217
shuffleButton.disabled = deckOrder.length <= 1;
218+
219+
if (deckOrder.length > 1) {
220+
const previewEntryIndex = deckOrder[(index + 1) % deckOrder.length];
221+
const preview = entries[previewEntryIndex];
222+
previewEntryEl.textContent = preview;
223+
previewEntryEl.classList.remove('is-empty');
224+
previewCard.removeAttribute('aria-hidden');
225+
} else {
226+
previewEntryEl.textContent = PREVIEW_PLACEHOLDER;
227+
previewEntryEl.classList.add('is-empty');
228+
previewCard.setAttribute('aria-hidden', 'true');
229+
}
210230
}
211231

212232
function showNext() {

apps/total-recall/index.html

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,13 @@
111111
border: 0;
112112
}
113113

114+
.card-grid {
115+
display: grid;
116+
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
117+
gap: clamp(18px, 4vw, 28px);
118+
align-items: stretch;
119+
}
120+
114121
.card {
115122
background: var(--surface);
116123
border-radius: 24px;
@@ -121,7 +128,7 @@
121128
display: flex;
122129
flex-direction: column;
123130
gap: 18px;
124-
min-height: 260px;
131+
min-height: 220px;
125132
}
126133

127134
.card__meta {
@@ -144,14 +151,22 @@
144151

145152
.card__text {
146153
margin: 0;
147-
font-size: clamp(1.25rem, 2.2vw + 1rem, 2.05rem);
148-
line-height: 1.55;
154+
font-size: clamp(1.1rem, 1.8vw + 0.95rem, 1.7rem);
155+
line-height: 1.5;
149156
white-space: pre-line;
150157
}
151158

152159
.card__text.is-empty {
153160
color: var(--text-secondary);
154-
font-size: clamp(1rem, 1.4vw + 0.85rem, 1.2rem);
161+
font-size: clamp(0.95rem, 1.2vw + 0.85rem, 1.1rem);
162+
}
163+
164+
.card--preview {
165+
opacity: 0.92;
166+
}
167+
168+
.card--preview[aria-hidden="true"] {
169+
opacity: 0.6;
155170
}
156171

157172
.controls {
@@ -316,6 +331,10 @@
316331
gap: 28px;
317332
}
318333

334+
.card-grid {
335+
grid-template-columns: 1fr;
336+
}
337+
319338
.card {
320339
padding: clamp(24px, 8vw, 36px);
321340
}
@@ -347,14 +366,25 @@
347366
<span>Home</span>
348367
</a>
349368
</nav>
350-
<article class="card" aria-live="polite">
351-
<div class="card__meta">
352-
<span id="card-counter" data-counter>0 of 0</span>
353-
</div>
354-
<div class="card__body">
355-
<p id="entry-text" class="card__text is-empty" data-entry-text>Add notes below to get started.</p>
356-
</div>
357-
</article>
369+
<section class="card-grid" aria-live="polite">
370+
<article class="card card--current">
371+
<div class="card__meta">
372+
<span id="card-counter" data-counter>0 of 0</span>
373+
<span>Now playing</span>
374+
</div>
375+
<div class="card__body">
376+
<p id="entry-text" class="card__text is-empty" data-current-text>Add notes below to get started.</p>
377+
</div>
378+
</article>
379+
<article class="card card--preview" data-preview-card aria-label="Next card">
380+
<div class="card__meta">
381+
<span>Next up</span>
382+
</div>
383+
<div class="card__body">
384+
<p class="card__text is-empty" data-preview-text>Add another note to preview the upcoming card.</p>
385+
</div>
386+
</article>
387+
</section>
358388
<div class="controls" role="group" aria-label="Deck controls">
359389
<button class="control-button control-button--secondary" type="button" data-prev>
360390
Previous

0 commit comments

Comments
 (0)