Phase 1 PWA: prayer times, qibla, quran, hijri, tasbih, 99 names

This commit is contained in:
Hermes Bot
2026-08-06 11:55:47 +08:00
parent 4def05d0ef
commit 0d37e7ec1e
10869 changed files with 959465 additions and 18 deletions
File diff suppressed because one or more lines are too long
+2
View File
File diff suppressed because one or more lines are too long
+10
View File
@@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<defs>
<linearGradient id="g" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#0f766e"/>
<stop offset="100%" style="stop-color:#0d9488"/>
</linearGradient>
</defs>
<rect width="100" height="100" rx="20" fill="url(#g)"/>
<text x="50" y="68" text-anchor="middle" fill="white" font-family="Georgia,serif" font-size="52" font-weight="bold">ن</text>
</svg>

After

Width:  |  Height:  |  Size: 469 B

+17
View File
@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<meta name="theme-color" content="#0f766e" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<title>Nūr — Muslim Companion</title>
<link rel="preconnect" href="https://api.alquran.cloud" crossorigin />
<link rel="preconnect" href="https://api.aladhan.com" crossorigin />
<script type="module" crossorigin src="/assets/index-CkXeBeTu.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-C2A4MjAB.css">
<link rel="manifest" href="/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script></head>
<body>
<div id="app"></div>
</body>
</html>
+1
View File
@@ -0,0 +1 @@
{"name":"Nūr — Muslim Companion","short_name":"Nūr","description":"Prayer times, Quran, Qibla, and more — your daily Islamic companion","start_url":"/","display":"standalone","background_color":"#f0fdfa","theme_color":"#0f766e","lang":"en","scope":"/","orientation":"portrait-primary","icons":[{"src":"/icon-192.png","sizes":"192x192","type":"image/png"},{"src":"/icon-512.png","sizes":"512x512","type":"image/png"}]}
+1
View File
@@ -0,0 +1 @@
if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('/sw.js', { scope: '/' })})}
Vendored
+1
View File
@@ -0,0 +1 @@
if(!self.define){let e,i={};const n=(n,s)=>(n=new URL(n+".js",s).href,i[n]||new Promise(i=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=i,document.head.appendChild(e)}else e=n,importScripts(n),i()}).then(()=>{let e=i[n];if(!e)throw new Error(`Module ${n} didnt register its module`);return e}));self.define=(s,r)=>{const t=e||("document"in self?document.currentScript.src:"")||location.href;if(i[t])return;let o={};const l=e=>n(e,t),u={module:{uri:t},exports:o,require:l};i[t]=Promise.all(s.map(e=>u[e]||l(e))).then(e=>(r(...e),o))}}define(["./workbox-a3c94b52"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"index.html",revision:"2b9caef846fc2e731fde4419df302e35"},{url:"favicon.svg",revision:"7f6b8f01b9ce546420c77570a13eb4b8"},{url:"assets/index-CkXeBeTu.js",revision:null},{url:"assets/index-C2A4MjAB.css",revision:null},{url:"manifest.webmanifest",revision:"1d566eaa55b023baa509a8833b950281"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html"))),e.registerRoute(/^https:\/\/api\.alquran\.cloud\/.*/i,new e.StaleWhileRevalidate({cacheName:"quran-api",plugins:[new e.ExpirationPlugin({maxEntries:50,maxAgeSeconds:604800})]}),"GET")});
+1
View File
File diff suppressed because one or more lines are too long