anasayfaya takvim ekleme deneme.

This commit is contained in:
2026-07-28 03:05:11 +02:00
parent 1561da3ad1
commit 465e39c4d3
4 changed files with 103 additions and 70 deletions
+15 -3
View File
@@ -12,7 +12,19 @@ export function renderDesktop() {
Modüler mimariye geçtik! Arka planı değiştirmek için sol menüdeki <b>Ayarlar</b> sekmesine geçebilirsin.
</p>
</div>
`
return { html, initEvents: () => {} }
}
<div class="absolute middle-8 right-8 bg-slate-900/40 backdrop-blur-2xl border border-white/10 p-6 rounded-3xl shadow-2xl max-w-md w-full text-left space-y-3">
<div class="flex items-center gap-3">
<div class="inline-flex p-1 bg-indigo-500/20 border border-indigo-500/30 rounded-xl text-indigo-300 text-xl">
🌙
</div>
<h2 class="text-xl font-bold text-white">Takvim</h2>
</div>
<p class="text-slate-300 text-xs leading-relaxed">
Modüler mimariye geçtik! Arka planı değiştirmek için sol menüdeki <b>Ayarlar</b> sekmesine geçebilirsin.
</p>
</div>
`;
return { html, initEvents: () => {} };
}
+33 -25
View File
@@ -1,15 +1,15 @@
export async function renderSettings(pb, currentBg, onBgSelect) {
let bgList = []
let bgList = [];
try {
const records = await pb.collection('backgrounds').getFullList()
bgList = records.map(item => ({
const records = await pb.collection("backgrounds").getFullList();
bgList = records.map((item) => ({
id: item.id,
title: item.title || 'Duvar Kağıdı',
url: `https://pocketbase.iontalp.com/api/files/${item.collectionId}/${item.id}/${item.image || item.file}`
}))
title: item.title || "Duvar Kağıdı",
url: `https://pocketbase.iontalp.com/api/files/${item.collectionId}/${item.id}/${item.image || item.file}`,
}));
} catch (err) {
console.error('Görseller yüklenemedi:', err)
console.error("Görseller yüklenemedi:", err);
}
const html = `
@@ -20,35 +20,43 @@ export async function renderSettings(pb, currentBg, onBgSelect) {
<div class="flex-1 overflow-y-auto pr-2">
<h3 class="text-sm font-semibold text-slate-300 mb-4">Arka Plan Galerisi (${bgList.length})</h3>
${bgList.length === 0 ? `
${
bgList.length === 0
? `
<div class="text-center py-12 border border-dashed border-white/10 rounded-2xl text-slate-500">
PocketBase 'backgrounds' koleksiyonunda henüz görsel bulunamadı.
</div>
` : `
`
: `
<div class="grid grid-cols-2 md:grid-cols-3 gap-4">
${bgList.map(bg => `
<div data-url="${bg.url}" class="bg-card group relative h-40 rounded-2xl overflow-hidden border-2 cursor-pointer transition-all duration-300 hover:scale-[1.02] ${currentBg === bg.url ? 'border-indigo-500 ring-4 ring-indigo-500/20' : 'border-white/10 hover:border-white/30'}">
${bgList
.map(
(bg) => `
<div data-url="${bg.url}" class="bg-card group relative h-40 rounded-2xl overflow-hidden border-2 cursor-pointer transition-all duration-300 hover:scale-[1.02] ${currentBg === bg.url ? "border-indigo-500 ring-4 ring-indigo-500/20" : "border-white/10 hover:border-white/30"}">
<img src="${bg.url}" alt="${bg.title}" class="w-full h-full object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-slate-950/80 via-transparent to-transparent opacity-80 group-hover:opacity-100 transition-opacity flex items-end p-3">
<div class="absolute inset-0 bg-linear-to-t from-slate-950/80 via-transparent to-transparent opacity-80 group-hover:opacity-100 transition-opacity flex items-end p-3">
<span class="text-xs font-medium text-white truncate">${bg.title}</span>
</div>
</div>
`).join('')}
`,
)
.join("")}
</div>
`}
`
}
</div>
</div>
`
`;
return {
html,
initEvents: (container) => {
container.querySelectorAll('.bg-card').forEach(card => {
card.addEventListener('click', () => {
const selectedUrl = card.getAttribute('data-url')
onBgSelect(selectedUrl)
})
})
}
}
}
container.querySelectorAll(".bg-card").forEach((card) => {
card.addEventListener("click", () => {
const selectedUrl = card.getAttribute("data-url");
onBgSelect(selectedUrl);
});
});
},
};
}