@@ -259,7 +279,11 @@
const gridSizeEl = document.getElementById('grid-size');
const gridSmallerEl = document.getElementById('grid-smaller');
const gridBiggerEl = document.getElementById('grid-bigger');
+ const gridSmallerMobileEl = document.getElementById('grid-smaller-mobile');
+ const gridBiggerMobileEl = document.getElementById('grid-bigger-mobile');
+ const labelsToggleEl = document.getElementById('labels-toggle');
const densityStorageKey = 'dewemoji_grid_density';
+ const labelsStorageKey = 'dewemoji_grid_show_labels';
const csrf = document.querySelector('meta[name="csrf-token"]')?.getAttribute('content');
const keywordEditModal = document.getElementById('keyword-edit-modal');
const keywordEditClose = document.getElementById('keyword-edit-close');
@@ -296,6 +320,16 @@
dark: 4,
};
+ function isLabelsEnabled() {
+ return localStorage.getItem(labelsStorageKey) === '1';
+ }
+
+ function applyLabelsToggleUI() {
+ const enabled = isLabelsEnabled();
+ grid.dataset.hideLabels = enabled ? '0' : '1';
+ if (labelsToggleEl) labelsToggleEl.textContent = `Labels: ${enabled ? 'On' : 'Off'}`;
+ }
+
if (initialQuery) qEl.value = initialQuery;
function slugify(text) {
@@ -558,19 +592,27 @@
return;
}
+ const showLabels = isLabelsEnabled();
items.forEach((item) => {
const renderedEmoji = emojiWithTone(item);
const card = document.createElement('div');
card.className = 'emoji-card relative aspect-square rounded-lg bg-white/5 hover:bg-white/10 transition-transform hover:scale-[1.02] border border-transparent hover:border-white/20 overflow-hidden group';
- card.innerHTML = `
-
- ${esc(renderedEmoji)}
-
-
- ${esc(item.name)}
-
-
- `;
+ card.innerHTML = showLabels
+ ? `
+
+ ${esc(renderedEmoji)}
+
+
+ ${esc(item.name)}
+
+
+ `
+ : `
+
+ ${esc(renderedEmoji)}
+
+
+ `;
const copyBtn = card.querySelector('.copy-btn');
if (copyBtn) {
copyBtn.addEventListener('click', (e) => {
@@ -704,8 +746,22 @@
gridSmallerEl.addEventListener('click', () => applyGridDensity(Number(gridSizeEl.value) - 1));
gridBiggerEl.addEventListener('click', () => applyGridDensity(Number(gridSizeEl.value) + 1));
}
+ gridSmallerMobileEl?.addEventListener('click', () => {
+ const base = Number(localStorage.getItem(densityStorageKey) ?? gridSizeEl?.value ?? 1);
+ applyGridDensity(base - 1);
+ });
+ gridBiggerMobileEl?.addEventListener('click', () => {
+ const base = Number(localStorage.getItem(densityStorageKey) ?? gridSizeEl?.value ?? 1);
+ applyGridDensity(base + 1);
+ });
+ labelsToggleEl?.addEventListener('click', () => {
+ localStorage.setItem(labelsStorageKey, isLabelsEnabled() ? '0' : '1');
+ applyLabelsToggleUI();
+ fetchEmojis(true);
+ });
(async () => {
+ applyLabelsToggleUI();
setToneControlValue(localStorage.getItem(toneStorageKey) || 'off');
await loadCategories();
if (initialCategory && state.categories[initialCategory]) {