Upload 7 files
Browse files- .gitattributes +2 -0
- app.g6K9u-9J.js +0 -0
- assets/build_entry._h0TfevK.css +1 -0
- icons/icon-192.png +3 -0
- icons/icon-512.png +3 -0
- index.html +16 -17
- manifest.webmanifest +35 -0
- sw.js +1 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
icons/icon-192.png filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
icons/icon-512.png filter=lfs diff=lfs merge=lfs -text
|
app.g6K9u-9J.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/build_entry._h0TfevK.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
:root{--pink:#ec4899;--rose:#fb7185;--deep:#9f1239;--ink:#4a1734;--muted:#7d5a6e;--line:#f5cfe1;--soft:#fff0f7;--shadow:0 14px 40px #ec48991a}*{box-sizing:border-box}body{color:var(--ink);background:radial-gradient(circle at 10% 0,#fff 0,#fff7fb 48%,#ffeef7 100%);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,textarea,select{font:inherit}button{border:1px solid var(--line);color:var(--deep);cursor:pointer;background:#fff;border-radius:13px;padding:10px 13px;font-weight:800}button.primary{background:linear-gradient(135deg,var(--pink),var(--rose));color:#fff;border-color:#0000;box-shadow:0 8px 22px #ec489938}.wrap{max-width:1180px;margin:auto;padding:14px 16px}.top{z-index:50;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);background:#ffffffe6;position:sticky;top:0}.topin{justify-content:space-between;align-items:center;gap:10px;max-width:1180px;margin:auto;padding:10px 16px;display:flex}.brand h1{margin:0;font-size:17px}.brand small{color:var(--muted);font-size:11px}.actions{gap:8px;display:flex}.hero{padding:20px 0 12px}.hero h2{margin:0 0 6px;font-size:29px}.hero p{color:var(--muted);margin:0}.stats{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.stat,.panel{border:1px solid var(--line);box-shadow:var(--shadow);background:#ffffffe6;border-radius:20px}.stat{padding:13px}.stat b{font-size:19px;display:block}.stat span,.note{color:var(--muted);font-size:12px}.panel{margin:12px 0;padding:15px}.panel h3{margin:0 0 11px}.calhead,.sectiontitle{justify-content:space-between;align-items:end;gap:10px;display:flex}.calendar{grid-template-columns:repeat(7,1fr);gap:7px;display:grid}.dow{text-align:center;color:var(--muted);padding:4px;font-size:11px;font-weight:800}.day{text-align:left;cursor:pointer;border-radius:14px;min-height:75px;padding:9px;transition:background .15s}.day:hover{background:var(--soft)}.day.active{outline:2px solid var(--pink);background:var(--soft)}.daynum{font-size:16px;font-weight:900}.tiny{color:var(--muted);margin-top:5px;font-size:10px}.check{color:var(--deep);font-weight:900}.mealgrid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.meal{border:1px solid var(--line);background:#fff;border-radius:17px;padding:13px;transition:border-color .15s}.meal.selected{background:linear-gradient(#fff1f8,#fff);border-color:#ee83b1}.meal h4{margin:0 0 7px;font-size:15px}.meta{flex-wrap:wrap;gap:6px;display:flex}.pill,.tag{border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 8px;font-size:11px;display:inline-flex}.tag{color:var(--deep);background:#fff0f7}.detail{color:#6b5360;margin:8px 0;font-size:12px;line-height:1.45}.meal button{width:100%;margin-top:8px}.waterbuttons{flex-wrap:wrap;gap:7px;display:flex}.waterbar{background:#fde3ef;border-radius:999px;height:11px;margin-top:10px;overflow:hidden}.bar{background:linear-gradient(90deg,var(--pink),var(--rose));height:100%;transition:width .4s}.selection-summary{grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0;display:grid}.summary{border:1px solid var(--line);border-radius:14px;padding:10px}.summary b{font-size:12px;display:block}.summary span{color:var(--muted);font-size:11px}.loggrid{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.field label{color:var(--muted);margin-bottom:5px;font-size:11px;font-weight:800;display:block}.field input,.field textarea,.field select{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:12px;padding:10px}.field textarea{resize:vertical;min-height:86px}.full{grid-column:1/-1}.toast{color:#fff;z-index:100;pointer-events:none;background:#4a1734;border-radius:999px;padding:10px 14px;font-size:12px;animation:.2s fadein;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}@keyframes fadein{0%{opacity:0;transform:translate(-50%)translateY(10px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@media (width<=850px){.stats{grid-template-columns:repeat(2,1fr)}.mealgrid{grid-template-columns:1fr}.loggrid,.selection-summary{grid-template-columns:1fr 1fr}}@media (width<=520px){.wrap{padding:10px}.topin{padding:9px 10px}.actions button:not(.primary){display:none}.hero h2{font-size:23px}.calendar{gap:4px}.day{min-height:67px;padding:7px}.panel{padding:11px}.loggrid,.selection-summary{grid-template-columns:1fr}.daynum{font-size:14px}}
|
icons/icon-192.png
ADDED
|
|
Git LFS Details
|
icons/icon-512.png
ADDED
|
|
Git LFS Details
|
index.html
CHANGED
|
@@ -1,19 +1,18 @@
|
|
| 1 |
<!doctype html>
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
</div>
|
| 18 |
-
</body>
|
| 19 |
</html>
|
|
|
|
|
|
| 1 |
<!doctype html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
|
| 6 |
+
<meta name="theme-color" content="#ec4899">
|
| 7 |
+
<meta name="description" content="Monthly Gujarati-friendly fat loss planner with daily logs.">
|
| 8 |
+
<link rel="manifest" href="./manifest.webmanifest">
|
| 9 |
+
<link rel="icon" href="./icons/icon-192.png">
|
| 10 |
+
<title>LeanCut — Monthly Planner</title>
|
| 11 |
+
<script type="module" crossorigin src="./app.g6K9u-9J.js"></script>
|
| 12 |
+
<link rel="stylesheet" crossorigin href="./assets/build_entry._h0TfevK.css">
|
| 13 |
+
</head>
|
| 14 |
+
<body>
|
| 15 |
+
<div id="root"></div>
|
| 16 |
+
</body>
|
|
|
|
|
|
|
| 17 |
</html>
|
| 18 |
+
|
manifest.webmanifest
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "LeanCut — Gujarati Planner",
|
| 3 |
+
"short_name": "LeanCut",
|
| 4 |
+
"start_url": "./",
|
| 5 |
+
"display": "standalone",
|
| 6 |
+
"orientation": "portrait",
|
| 7 |
+
"background_color": "#fffafd",
|
| 8 |
+
"theme_color": "#ec4899",
|
| 9 |
+
"description": "Monthly Gujarati-friendly fat loss planner with daily meal logs, water, steps and gym tracking.",
|
| 10 |
+
"lang": "en",
|
| 11 |
+
"scope": "./",
|
| 12 |
+
"icons": [
|
| 13 |
+
{
|
| 14 |
+
"src": "./icons/icon-192.png",
|
| 15 |
+
"sizes": "192x192",
|
| 16 |
+
"type": "image/png",
|
| 17 |
+
"purpose": "any"
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"src": "./icons/icon-512.png",
|
| 21 |
+
"sizes": "512x512",
|
| 22 |
+
"type": "image/png",
|
| 23 |
+
"purpose": "any maskable"
|
| 24 |
+
}
|
| 25 |
+
],
|
| 26 |
+
"categories": ["health", "fitness", "food"],
|
| 27 |
+
"shortcuts": [
|
| 28 |
+
{
|
| 29 |
+
"name": "Today's Plan",
|
| 30 |
+
"short_name": "Today",
|
| 31 |
+
"description": "Open today's meal plan",
|
| 32 |
+
"url": "./"
|
| 33 |
+
}
|
| 34 |
+
]
|
| 35 |
+
}
|
sw.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const CACHE="lean-cut-react-v1";const ASSETS=["./","./index.html","./app.js","./styles.css","./manifest.webmanifest","./icon.svg"];self.addEventListener("install",e=>e.waitUntil(caches.open(CACHE).then(c=>c.addAll(ASSETS)).then(()=>self.skipWaiting())));self.addEventListener("activate",e=>e.waitUntil(self.clients.claim()));self.addEventListener("fetch",e=>e.respondWith(caches.match(e.request).then(r=>r||fetch(e.request).then(res=>{const c=res.clone();caches.open(CACHE).then(x=>x.put(e.request,c));return res}).catch(()=>caches.match("./index.html")))))
|