ai ile yapılan büyük güncelleme

This commit is contained in:
2026-07-28 10:21:14 +03:00
parent 371eecde2f
commit e71b6d4a91
9 changed files with 781 additions and 314 deletions
+129 -23
View File
@@ -1,30 +1,136 @@
export function renderDesktop() {
const html = `
<!-- absolute top-8 right-8 ile sağ üste sabitliyoruz -->
<div class="absolute top-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-2 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">Masaüstü</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>
import { gregorianToHijri } from "../utils/hijri.js";
import { fetchWeather, getWeatherIcon, getWeatherDesc } from "../utils/weather.js";
import { fetchPrayerTimes } from "../utils/prayerTimes.js";
<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">
🌙
export function renderDesktop(selectedCity = "İstanbul") {
const hijri = gregorianToHijri();
const today = new Date();
const dateStr = today.toLocaleDateString("tr-TR", {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric",
});
const html = `
<div class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-6 w-full max-w-6xl">
<div class="bg-slate-900/40 backdrop-blur-2xl border border-white/10 p-6 rounded-3xl shadow-2xl text-left space-y-3">
<div class="flex items-center gap-3">
<div class="inline-flex p-2 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">Masaüstü</h2>
</div>
<h2 class="text-xl font-bold text-white">Takvim</h2>
<p class="text-slate-300 text-xs leading-relaxed">
Arka planı değiştirmek için sol menüdeki <b>Ayarlar</b> sekmesine geçebilirsin.
</p>
</div>
<div class="bg-slate-900/40 backdrop-blur-2xl border border-white/10 p-6 rounded-3xl shadow-2xl text-left space-y-3">
<div class="flex items-center gap-3">
<div class="inline-flex p-2 bg-emerald-500/20 border border-emerald-500/30 rounded-xl text-emerald-300 text-xl">
📅
</div>
<h2 class="text-xl font-bold text-white">Hicri Takvim</h2>
</div>
<p class="text-slate-300 text-xs leading-relaxed">
<span class="text-white font-semibold">${hijri.weekday}</span><br />
${hijri.day} ${hijri.monthName} ${hijri.year}<br />
<span class="text-slate-400">${dateStr}</span>
</p>
</div>
<div class="bg-slate-900/40 backdrop-blur-2xl border border-white/10 p-6 rounded-3xl shadow-2xl text-left space-y-3">
<div class="flex items-center gap-3">
<div class="inline-flex p-2 bg-sky-500/20 border border-sky-500/30 rounded-xl text-sky-300 text-xl">
🌤️
</div>
<h2 class="text-xl font-bold text-white">Hava Durumu</h2>
</div>
<p class="text-slate-300 text-xs leading-relaxed" id="weatherWidget">
Yükleniyor...
</p>
</div>
<div class="bg-slate-900/40 backdrop-blur-2xl border border-white/10 p-6 rounded-3xl shadow-2xl text-left space-y-3">
<div class="flex items-center gap-3">
<div class="inline-flex p-2 bg-orange-500/20 border border-orange-500/30 rounded-xl text-orange-300 text-xl">
🌅
</div>
<h2 class="text-xl font-bold text-white">İmsakiye</h2>
</div>
<p class="text-slate-300 text-xs leading-relaxed" id="imsakiyeWidget">
Yükleniyor...
</p>
</div>
<div class="bg-slate-900/40 backdrop-blur-2xl border border-white/10 p-6 rounded-3xl shadow-2xl text-left space-y-3 cursor-pointer hover:border-white/20 transition-all" id="kazaShortcut">
<div class="flex items-center gap-3">
<div class="inline-flex p-2 bg-amber-500/20 border border-amber-500/30 rounded-xl text-amber-300 text-xl">
🕌
</div>
<h2 class="text-xl font-bold text-white">Kaza Namaz</h2>
</div>
<p class="text-slate-300 text-xs leading-relaxed">
Kaza namaz takibine geçmek için tıkla.
</p>
</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: () => {} };
return {
html,
initEvents: (container) => {
loadWeather(container, selectedCity);
loadImsakiye(container, selectedCity);
setupKazaShortcut(container);
},
};
}
async function loadWeather(container, selectedCity) {
const widget = container.querySelector("#weatherWidget");
if (!widget) return;
const data = await fetchWeather(selectedCity);
if (!data) {
widget.innerHTML = "Hava durumu alınamadı.";
return;
}
const icon = getWeatherIcon(data.weathercode);
const desc = getWeatherDesc(data.weathercode);
const temp = Math.round(data.temperature);
widget.innerHTML = `
<span class="text-2xl">${icon}</span> <span class="text-white font-semibold">${temp}°C</span>
<br />
${desc} <span class="text-slate-400">(${data.cityName})</span>
`;
}
async function loadImsakiye(container, selectedCity) {
const widget = container.querySelector("#imsakiyeWidget");
if (!widget) return;
const times = await fetchPrayerTimes(selectedCity);
if (!times) {
widget.innerHTML = "Namaz vakitleri alınamadı.";
return;
}
widget.innerHTML = `
🌅 İmsak: <span class="text-white font-semibold">${times.imsak}</span><br />
🕌 İftar: <span class="text-emerald-300 font-semibold">${times.maghrib}</span>
`;
}
function setupKazaShortcut(container) {
const shortcut = container.querySelector("#kazaShortcut");
if (!shortcut) return;
shortcut.addEventListener("click", () => {
const event = new CustomEvent("navigate", { detail: "kaza" });
window.dispatchEvent(event);
});
}