diff --git a/README.md b/README.md index 9d8578f..bcf1a43 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,8 @@ - π·οΈ **Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅Π³ΠΎΠ² Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· Π·Π°ΠΌΠ΅ΡΠΎΠΊ** (NEW!) - π **ΠΠΎΠΈΡΠΊ ΠΏΠΎ Π·Π°ΠΌΠ΅ΡΠΊΠ°ΠΌ Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ²** (NEW!) - π **ΠΠΈΠ½ΠΈ-ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡ Π΄Π»Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ ΠΏΠΎ Π΄Π°ΡΠ°ΠΌ Π·Π°ΠΌΠ΅ΡΠΎΠΊ** (NEW!) +- π± **ΠΠ΄Π°ΠΏΡΠΈΠ²Π½ΡΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ Ρ Π±ΠΎΠΊΠΎΠ²ΡΠΌ ΡΠ»Π°ΠΉΠ΄Π΅ΡΠΎΠΌ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ** (NEW!) +- β° **ΠΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΡΠ»Π°ΠΉΠ΄Π΅Ρ Ρ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡΠΌ, ΠΏΠΎΠΈΡΠΊΠΎΠΌ ΠΈ ΡΠ΅Π³Π°ΠΌΠΈ** (NEW!) - π¨ ΠΡΠΎΡΡΠΎΠΉ ΠΈ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ - π± ΠΠ΄Π°ΠΏΡΠΈΠ²Π½ΡΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ @@ -128,6 +130,32 @@ npm start ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ "πͺ ΠΡΠΉΡΠΈ" Π² Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°ΠΌΠ΅ΡΠΎΠΊ +## ΠΠΎΠ±ΠΈΠ»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ + +### ΠΠΎΠΊΠΎΠ²ΠΎΠΉ ΡΠ»Π°ΠΉΠ΄Π΅Ρ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ + +ΠΠ° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ (ΡΠΈΡΠΈΠ½Π° ΡΠΊΡΠ°Π½Π° Π΄ΠΎ 768 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ) Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΉ Π»Π΅Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ **Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΡΠ»Π°ΠΉΠ΄Π΅Ρ** Ρ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ "β°" Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ. + +**Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π°ΠΉΠ΄Π΅ΡΠ°:** + +1. **ΠΠ½ΠΎΠΏΠΊΠ° ΠΎΡΠΊΡΡΡΠΈΡ** - Π½Π°ΠΆΠΌΠΈΡΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ "β°" Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ ΡΠΊΡΠ°Π½Π° +2. **Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ»Π°ΠΉΠ΄Π΅ΡΠ°** Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ: + - π **ΠΠ°Π»Π΅Π½Π΄Π°ΡΡ** - ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡ ΠΌΠ΅ΡΡΡΠ° Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠ΅ΠΉ + - π **ΠΠΎΠ»Π΅ ΠΏΠΎΠΈΡΠΊΠ°** - ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΠΎΠ»Π΅ΠΌ ΠΏΠΎΠΈΡΠΊΠ° + - π·οΈ **Π’Π΅Π³ΠΈ** - Π²ΡΠ΅ ΡΠ΅Π³ΠΈ Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π·Π°ΠΌΠ΅ΡΠΎΠΊ +3. **ΠΠ°ΠΊΡΡΡΠΈΠ΅ ΡΠ»Π°ΠΉΠ΄Π΅ΡΠ°**: + - ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ β Π² Π²Π΅ΡΡ Π½Π΅ΠΌ ΠΏΡΠ°Π²ΠΎΠΌ ΡΠ³Π»Ρ ΡΠ»Π°ΠΉΠ΄Π΅ΡΠ° + - ΠΠ°ΠΆΠΌΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ (ΠΎΠ²Π΅ΡΠ»Π΅ΠΉ) ΡΠΏΡΠ°Π²Π° +4. **Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ** - ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ»Π°ΠΉΠ΄Π΅ΡΠ΅ (Π²ΡΠ±ΠΎΡ Π΄Π°ΡΡ, Π²Π²ΠΎΠ΄ ΡΠ΅ΠΊΡΡΠ°, ΠΊΠ»ΠΈΠΊ Π½Π° ΡΠ΅Π³) Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΠ Π²Π΅ΡΡΠΈΠ΅ΠΉ + +**ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π°ΠΉΠ΄Π΅ΡΠ°:** + +- β ΠΠΎΠ»Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΊΠ°ΠΊ Π² ΠΠ Π²Π΅ΡΡΠΈΠΈ +- β ΠΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΌΠ΅ΡΡΠ° Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° +- β ΠΠ΅Π³ΠΊΠΎΠ΅ ΠΎΡΠΊΡΡΡΠΈΠ΅/Π·Π°ΠΊΡΡΡΠΈΠ΅ +- β Π£Π΄ΠΎΠ±Π½Π°Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ Π·Π°ΠΌΠ΅ΡΠΊΠ°ΠΌ +- β ΠΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ²Π΅ΡΠ»Π΅ΠΉ) + ## Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° ``` diff --git a/public/app.js b/public/app.js index ecb498d..b5b74ca 100644 --- a/public/app.js +++ b/public/app.js @@ -1116,3 +1116,367 @@ function initSearch() { } }); } + +// ==================== ΠΠΠΠΠΠ¬ΠΠ«Π Π‘ΠΠΠΠΠΠ ==================== + +// Π€ΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠ»Π°ΠΉΠ΄Π΅ΡΠ΅ +function renderCalendarMobile() { + const calendarDays = document.getElementById("calendarDaysMobile"); + const monthYear = document.getElementById("monthYearMobile"); + + // ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡ Π΄Π»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ + if (!calendarDays || !monthYear) return; + + const year = currentDate.getFullYear(); + const month = currentDate.getMonth(); + + // ΠΠ°ΡΡΠΈΠ² Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΌΠ΅ΡΡΡΠ΅Π² + const monthNames = [ + "Π―Π½Π²Π°ΡΡ", + "Π€Π΅Π²ΡΠ°Π»Ρ", + "ΠΠ°ΡΡ", + "ΠΠΏΡΠ΅Π»Ρ", + "ΠΠ°ΠΉ", + "ΠΡΠ½Ρ", + "ΠΡΠ»Ρ", + "ΠΠ²Π³ΡΡΡ", + "Π‘Π΅Π½ΡΡΠ±ΡΡ", + "ΠΠΊΡΡΠ±ΡΡ", + "ΠΠΎΡΠ±ΡΡ", + "ΠΠ΅ΠΊΠ°Π±ΡΡ", + ]; + + // Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΌΠ΅ΡΡΡΠ° ΠΈ Π³ΠΎΠ΄Π° + monthYear.textContent = `${monthNames[month]} ${year}`; + + // ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ Π΄Π΅Π½Ρ ΠΌΠ΅ΡΡΡΠ° + const firstDay = new Date(year, month, 1); + // ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π΄Π΅Π½Ρ ΠΌΠ΅ΡΡΡΠ° + const lastDay = new Date(year, month + 1, 0); + // ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄Π΅Π½Ρ Π½Π΅Π΄Π΅Π»ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π΄Π½Ρ (0 - Π²ΠΎΡΠΊΡΠ΅ΡΠ΅Π½ΡΠ΅, 1 - ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊ ΠΈ Ρ.Π΄.) + let firstDayOfWeek = firstDay.getDay(); + // ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊ Π±ΡΠ» ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π½Π΅ΠΌ (0) + firstDayOfWeek = firstDayOfWeek === 0 ? 6 : firstDayOfWeek - 1; + + // ΠΡΠΈΡΠ°Π΅ΠΌ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡ + calendarDays.innerHTML = ""; + + // Π‘ΠΎΠ·Π΄Π°ΡΠΌ Set Π΄Π°Ρ, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ Π·Π°ΠΌΠ΅ΡΠΊΠΈ + const noteDates = new Set(); + allNotes.forEach((note) => { + noteDates.add(note.date); + }); + + // ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π΄Π΅Π½Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΡΡΠ° + const prevMonthLastDay = new Date(year, month, 0).getDate(); + const prevMonth = month === 0 ? 11 : month - 1; + const prevYear = month === 0 ? year - 1 : year; + + // ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΄Π½ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΡΡΠ° + for (let i = firstDayOfWeek - 1; i >= 0; i--) { + const day = prevMonthLastDay - i; + const dateStr = `${String(day).padStart(2, "0")}.${String( + prevMonth + 1 + ).padStart(2, "0")}.${prevYear}`; + + const dayDiv = document.createElement("div"); + dayDiv.classList.add("calendar-day", "other-month"); + dayDiv.textContent = day; + dayDiv.dataset.date = dateStr; + + // ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π΅ΡΡΡ Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΊΠΈ Π½Π° ΡΡΠΎΡ Π΄Π΅Π½Ρ + if (noteDates.has(dateStr)) { + dayDiv.classList.add("has-notes"); + } + + // ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π²ΡΠ±ΡΠ°Π½ Π»ΠΈ ΡΡΠΎΡ Π΄Π΅Π½Ρ + if (selectedDateFilter === dateStr) { + dayDiv.classList.add("selected"); + } + + // ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΊΠ»ΠΈΠΊΠ° + dayDiv.addEventListener("click", handleDayClickMobile); + + calendarDays.appendChild(dayDiv); + } + + // ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΄Π½ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΡΡΠ° + const today = new Date(); + for (let day = 1; day <= lastDay.getDate(); day++) { + const dateStr = `${String(day).padStart(2, "0")}.${String( + month + 1 + ).padStart(2, "0")}.${year}`; + + const dayDiv = document.createElement("div"); + dayDiv.classList.add("calendar-day"); + dayDiv.textContent = day; + dayDiv.dataset.date = dateStr; + + // ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π΄Π΅Π½Ρ ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΌ + if ( + day === today.getDate() && + month === today.getMonth() && + year === today.getFullYear() + ) { + dayDiv.classList.add("today"); + } + + // ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π΅ΡΡΡ Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΊΠΈ Π½Π° ΡΡΠΎΡ Π΄Π΅Π½Ρ + if (noteDates.has(dateStr)) { + dayDiv.classList.add("has-notes"); + } + + // ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π²ΡΠ±ΡΠ°Π½ Π»ΠΈ ΡΡΠΎΡ Π΄Π΅Π½Ρ + if (selectedDateFilter === dateStr) { + dayDiv.classList.add("selected"); + } + + // ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΊΠ»ΠΈΠΊΠ° + dayDiv.addEventListener("click", handleDayClickMobile); + + calendarDays.appendChild(dayDiv); + } + + // ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΄Π½ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΡΡΠ° + const totalCells = calendarDays.children.length; + const remainingCells = 42 - totalCells; // 6 Π½Π΅Π΄Π΅Π»Ρ ΠΏΠΎ 7 Π΄Π½Π΅ΠΉ + const nextMonth = month === 11 ? 0 : month + 1; + const nextYear = month === 11 ? year + 1 : year; + + for (let day = 1; day <= remainingCells; day++) { + const dateStr = `${String(day).padStart(2, "0")}.${String( + nextMonth + 1 + ).padStart(2, "0")}.${nextYear}`; + + const dayDiv = document.createElement("div"); + dayDiv.classList.add("calendar-day", "other-month"); + dayDiv.textContent = day; + dayDiv.dataset.date = dateStr; + + // ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π΅ΡΡΡ Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΊΠΈ Π½Π° ΡΡΠΎΡ Π΄Π΅Π½Ρ + if (noteDates.has(dateStr)) { + dayDiv.classList.add("has-notes"); + } + + // ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π²ΡΠ±ΡΠ°Π½ Π»ΠΈ ΡΡΠΎΡ Π΄Π΅Π½Ρ + if (selectedDateFilter === dateStr) { + dayDiv.classList.add("selected"); + } + + // ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΊΠ»ΠΈΠΊΠ° + dayDiv.addEventListener("click", handleDayClickMobile); + + calendarDays.appendChild(dayDiv); + } +} + +// ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΊΠ»ΠΈΠΊΠ° Π½Π° Π΄Π΅Π½Ρ Π² ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ΅ Π΄Π»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ +function handleDayClickMobile(event) { + const clickedDate = event.target.dataset.date; + + // ΠΡΠ»ΠΈ ΠΊΠ»ΠΈΠΊΠ½ΡΠ»ΠΈ Π½Π° ΡΠΎΡ ΠΆΠ΅ Π΄Π΅Π½Ρ, ΡΠ½ΠΈΠΌΠ°Π΅ΠΌ ΡΠΈΠ»ΡΡΡ + if (selectedDateFilter === clickedDate) { + selectedDateFilter = null; + } else { + selectedDateFilter = clickedDate; + } + + // ΠΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΡΠ²Π°Π΅ΠΌ Π·Π°ΠΌΠ΅ΡΠΊΠΈ, ΠΎΠ±Π° ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡ ΠΈ ΡΠ΅Π³ΠΈ + renderNotes(allNotes); + renderCalendar(); + renderCalendarMobile(); + renderTags(); + renderTagsMobile(); + updateFilterIndicator(); +} + +// Π€ΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π³ΠΎΠ² Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠ»Π°ΠΉΠ΄Π΅ΡΠ΅ +function renderTagsMobile() { + const tagsContainer = document.getElementById("tagsContainerMobile"); + if (!tagsContainer) return; + + const tagCounts = getAllTags(allNotes); + const sortedTags = Object.keys(tagCounts).sort(); + + if (sortedTags.length === 0) { + tagsContainer.innerHTML = + '