PageSourceSearch

https://my-diet-tracker.pages.dev/

html my-diet-tracker.pages.dev collected 2026-10-03 05:40:35 UTC 38,529 bytes, 328 lines download raw bytes

1<!doctype html>
2<html lang="ar" dir="rtl">
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="#123c2e" />
7  <meta name="description" content="My Diet Tracker - حساب السعرات وتسجيل الوجبات ومتابعة الوزن" />
8  <title>My Diet Tracker v7</title>
9  <link rel="manifest" href="manifest.json" />
10  <link rel="icon" href="icons/icon-192.png" />
11  <link rel="apple-touch-icon" href="icons/icon-192.png" />
12  <link rel="stylesheet" href="styles.css" />
13</head>
14<body>
15  <div class="app-shell">
16    <aside class="sidebar" aria-label="التنقل الرئيسي">
17      <div class="brand">
18        <div class="brand-mark" aria-hidden="true">M</div>
19        <div><strong>My Diet Tracker</strong><span>السعرات والدايت والتقدم</span></div>
20      </div>
21      <nav class="nav-list">
22        <button class="nav-item active" data-view="dashboard"><span>⌂</span>اليوم</button>
23        <button class="nav-item" data-view="add"><span>+</span>تسجيل وجبة</button>
24        <button class="nav-item" data-view="mealplanner"><span>◉</span>حاسبة الوجبة</button>
25        <button class="nav-item" data-view="explore"><span>⌕</span>استكشف الأطعمة</button>
26        <button class="nav-item" data-view="foods"><span>◫</span>مكتبتي</button>
27        <button class="nav-item" data-view="calculator"><span>∑</span>حاسبة السعرات</button>
28        <button class="nav-item" data-view="history"><span>▦</span>السجل</button>
29        <button class="nav-item" data-view="progress"><span>↗</span>التقدم</button>
30        <button class="nav-item" data-view="settings"><span>⚙</span>الإعدادات</button>
31      </nav>
32      <div class="sidebar-footer">
33        <button id="themeToggle" class="ghost-button full">الوضع الداكن</button>
34        <small id="storageStatus">الحفظ المحلي يعمل</small><small class="developer-credit">Developed by Hamido</small>
35      </div>
36    </aside>
37
38    <main class="main-content">
39      <header class="topbar">
40        <div><p class="eyebrow" id="todayLabel"></p><h1 id="pageTitle">اليوم</h1></div>
41        <div class="topbar-actions">
42          <button id="syncStatusButton" class="ghost-button compact" data-go="settings">محلي</button>
43          <button id="installButton" class="ghost-button" hidden>تثبيت</button>
44          <button class="primary-button compact" data-go="add">إضافة طعام</button>
45        </div>
46      </header>
47
48      <section id="toast" class="toast" role="status" aria-live="polite"></section>
49
50      <section id="dashboardView" class="view active-view">
51        <div class="hero-card">
52          <div class="hero-copy">
53            <div class="hero-badges"><span class="pill" id="dayModeBadge">الهدف الأساسي</span><button id="editTodayGoal" class="link-chip">تعديل هدف اليوم</button></div>
54            <h2><span id="heroRemaining">0</span><span id="heroRemainingLabel"> سعر متبقي</span></h2>
55            <p id="heroSummary">ابدأ بتسجيل أول وجبة اليوم.</p>
56            <div class="hero-actions">
57              <button class="primary-button" data-go="add">سجّل وجبة</button>
58              <button class="secondary-button" data-go="mealplanner">جرّب وجبة</button>
59              <button class="secondary-button" id="repeatYesterdayBtn">كرر أكل أمس</button>
60            </div>
61          </div>
62          <div class="calorie-ring" id="calorieRing" aria-label="نسبة السعرات المستهلكة">
63            <div><strong id="ringCalories">0</strong><span>من <b id="ringGoal">0</b></span></div>
64          </div>
65        </div>
66
67        <div class="stats-grid">
68          <article class="stat-card"><div class="stat-head"><span>البروتين</span><b id="proteinStat">0 / 0 جم</b></div><div class="progress-track"><i id="proteinBar"></i></div></article>
69          <article class="stat-card"><div class="stat-head"><span>الكربوهيدرات</span><b id="carbsStat">0 / 0 جم</b></div><div class="progress-track"><i id="carbsBar"></i></div></article>
70          <article class="stat-card"><div class="stat-head"><span>الدهون</span><b id="fatStat">0 / 0 جم</b></div><div class="progress-track"><i id="fatBar"></i></div></article>
71          <article class="stat-card"><div class="stat-head"><span>الماء</span><b id="waterStat">0 / 3 لتر</b></div><div class="water-actions"><button id="removeWater" aria-label="إنقاص ربع لتر ماء" title="− 0.25 لتر">−</button><div class="progress-track"><i id="waterBar"></i></div><button id="addWater" aria-label="إضافة ربع لتر ماء" title="+ 0.25 لتر">+</button></div><small class="water-hint">كل ضغطة = 0.25 لتر</small></article>
72        </div>
73
74        <div class="content-grid two-columns">
75          <article class="panel">
76            <div class="panel-header"><div><span class="eyebrow">وجبات اليوم</span><h3>تفاصيل الأكل</h3></div><button class="text-button" data-go="history">عرض السجل</button></div>
77            <div id="todayMeals" class="meal-list"></div>
78          </article>
79          <article class="panel">
80            <div class="panel-header"><div><span class="eyebrow">اقتراح ذكي</span><h3>ماذا يناسب المتبقي؟</h3></div><button class="text-button" data-go="explore">المزيد</button></div>
81            <div id="remainingSuggestions" class="suggestion-list"></div>
82          </article>
83        </div>
84
85        <div class="content-grid two-columns">
86          <article class="panel">
87            <div class="panel-header"><div><span class="eyebrow">آخر 7 أيام</span><h3>متوسط الالتزام</h3></div></div>
88            <div class="weekly-summary"><div><strong id="weeklyAverage">0</strong><span>متوسط السعرات</span></div><div><strong id="daysLogged">0</strong><span>أيام مسجلة</span></div><div><strong id="latestWeight">—</strong><span>آخر وزن</span></div></div>
89            <div id="weekBars" class="week-bars"></div>
90          </article>
91          <article class="panel">
92            <div class="panel-header"><div><span class="eyebrow">حسابك الحالي</span><h3>ملخص السعرات</h3></div><button class="text-button" data-go="calculator">افتح الحاسبة</button></div>
93            <div id="dashboardEnergySummary" class="energy-mini-grid"></div>
94          </article>
95        </div>
96      </section>
97
98      <section id="addView" class="view">
99        <div class="content-grid two-columns form-layout">
100          <article class="panel sticky-panel">
101            <div class="panel-header"><div><span class="eyebrow">تسجيل سريع</span><h3>إضافة طعام لليوم</h3></div></div>
102            <form id="logFoodForm" class="form-stack">
103              <div class="form-row"><label>التاريخ<input id="logDate" type="date" required /></label><label>الوجبة<select id="mealType" required><option value="breakfast">الفطار</option><option value="snack1">سناك 1</option><option value="lunch">الغداء</option><option value="snack2">سناك 2</option><option value="dinner">العشاء</option></select></label></div>
104              <label>ابحث عن الطعام<input id="foodSearch" type="search" placeholder="مثال: جبنة قريش أو رز" autocomplete="off" /></label>
105              <label>الطعام<select id="foodSelect" required></select></label>
106              <label>الكمية <span id="quantityHint" class="muted-inline"></span><input id="foodQuantity" type="number" min="0.1" step="0.1" value="100" required /></label>
107              <div class="nutrition-preview"><div><span>السعرات</span><strong id="previewCalories">0</strong></div><div><span>بروتين</span><strong id="previewProtein">0 جم</strong></div><div><span>كارب</span><strong id="previewCarbs">0 جم</strong></div><div><span>دهون</span><strong id="previewFat">0 جم</strong></div></div>
108              <button class="primary-button full" type="submit">إضافة للوجبة</button>
109              <button class="secondary-button full" type="button" data-go="foods">الأكلة غير موجودة؟ أضفها بسرعة</button>
110            </form>
111
112            <div class="section-divider"><span>المشروبات</span></div>
113            <form id="logDrinkForm" class="form-stack drink-form">
114              <p class="helper-card">المشروبات منفصلة عن قائمة الطعام. اختر المشروب، وعدد الأكواب، والسكر في كل كوب.</p>
115              <label>المشروب<select id="drinkSelect" required></select></label>
116              <div class="form-row">
117                <label>عدد الأكواب<input id="drinkCups" type="number" min="0.5" max="20" step="0.5" value="1" required /></label>
118                <label>ملاعق السكر لكل كوب<input id="drinkSugar" type="number" min="0" max="10" step="0.5" value="0" /></label>
119              </div>
120              <div id="drinkPreview" class="drink-preview"><strong>0 سعر</strong><span>0 جم كارب</span></div>
121              <button class="secondary-button full" type="submit">إضافة المشروب للوجبة</button>
122              <button class="ghost-button full" type="button" data-open-custom-drink="log">المشروب غير موجود؟ أضفه لمكتبتك</button>
123            </form>
124          </article>
125          <article class="panel">
126            <div class="panel-header"><div><span class="eyebrow">ملخص التاريخ المختار</span><h3 id="selectedDayTitle">اليوم</h3></div></div>
127            <div id="selectedDaySummary" class="day-summary-card"></div><div id="selectedDayEntries" class="meal-list"></div>
128          </article>
129        </div>
130      </section>
131
132      <section id="mealplannerView" class="view">
133        <article class="panel discovery-hero meal-planner-hero">
134          <div><span class="eyebrow">حساب بدون تسجيل</span><h2>جرّب الوجبة قبل ما تعتمدها</h2><p>أضف كل مكونات الوجبة وشاهد مجموع السعرات والماكروز. لن تتغير يومياتك إلا بعد الضغط على «إضافة الوجبة لليوم».</p></div>
135          <div id="draftGoalSummary" class="meal-fit-card"></div>
136        </article>
137
138        <div class="content-grid two-columns form-layout">
139          <article class="panel sticky-panel">
140            <div class="panel-header"><div><span class="eyebrow">مكونات الوجبة</span><h3>أضف من مكتبة الأطعمة</h3></div></div>
141            <form id="draftFoodForm" class="form-stack">
142              <label>ابحث عن الطعام<input id="draftFoodSearch" type="search" placeholder="مثال: أرز، فراخ، سكر..." autocomplete="off" /></label>
143              <label>الطعام<select id="draftFoodSelect" required></select></label>
144              <label>الكمية <span id="draftQuantityHint" class="muted-inline"></span><input id="draftFoodQuantity" type="number" min="0.1" step="0.1" value="100" required /></label>
145              <div class="nutrition-preview"><div><span>السعرات</span><strong id="draftPreviewCalories">0</strong></div><div><span>بروتين</span><strong id="draftPreviewProtein">0 جم</strong></div><div><span>كارب</span><strong id="draftPreviewCarbs">0 جم</strong></div><div><span>دهون</span><strong id="draftPreviewFat">0 جم</strong></div></div>
146              <button class="primary-button full" type="submit">أضف للتجربة فقط</button>
147            </form>
148
149            <div class="section-divider"><span>مشروب مع الوجبة</span></div>
150            <form id="draftDrinkForm" class="form-stack drink-form">
151              <label>المشروب<select id="draftDrinkSelect" required></select></label>
152              <div class="form-row">
153                <label>عدد الأكواب<input id="draftDrinkCups" type="number" min="0.5" max="20" step="0.5" value="1" required /></label>
154                <label>ملاعق السكر لكل كوب<input id="draftDrinkSugar" type="number" min="0" max="10" step="0.5" value="0" /></label>
155              </div>
156              <div id="draftDrinkPreview" class="drink-preview"><strong>0 سعر</strong><span>0 جم كارب</span></div>
157              <button class="secondary-button full" type="submit">أضف المشروب للتجربة فقط</button>
158              <button class="ghost-button full" type="button" data-open-custom-drink="draft">المشروب غير موجود؟ أضفه لمكتبتك</button>
159            </form>
160
161            <details class="advanced-details draft-custom-details">
162              <summary>مكوّن مؤقت غير موجود في المكتبة</summary>
163              <form id="draftCustomForm" class="details-body form-stack">
164                <label>اسم المكوّن <span class="required-mark">مطلوب</span><input id="draftCustomName" type="text" placeholder="مثال: صوص خاص" required /></label>
165                <label>إجمالي سعراته <span class="required-mark">مطلوب</span><input id="draftCustomCalories" type="number" min="0" step="0.1" placeholder="مثال: 120" required /></label>
166                <p class="helper-card">البروتين والكارب والدهون اختيارية. هذا المكوّن لن يُحفظ في مكتبتك إلا إذا أضفته لاحقًا من قسم «مكتبتي».</p>
167                <div class="form-row"><label>البروتين (جم)<input id="draftCustomProtein" type="number" min="0" step="0.1" placeholder="اختياري" /></label><label>الكارب (جم)<input id="draftCustomCarbs" type="number" min="0" step="0.1" placeholder="اختياري" /></label></div>
168                <label>الدهون (جم)<input id="draftCustomFat" type="number" min="0" step="0.1" placeholder="اختياري" /></label>
169                <button class="secondary-button full" type="submit">أضف المكوّن المؤقت</button>
170              </form>
171            </details>
172          </article>
173
174          <article class="panel">
175            <div class="panel-header wrap-header"><div><span class="eyebrow">النتيجة التجريبية</span><h3>إجمالي الوجبة</h3></div><button id="clearDraftMeal" class="ghost-button compact">مسح الوجبة</button></div>
176            <div id="draftMealTotals" class="draft-total-grid"></div>
177            <div id="draftMealItems" class="draft-list"></div>
178            <div class="draft-commit">
179              <div class="panel-header"><div><span class="eyebrow">بعد المراجعة فقط</span><h3>اعتماد الوجبة</h3></div></div>
180              <div class="form-row"><label>التاريخ<input id="draftCommitDate" type="date" /></label><label>الوجبة<select id="draftCommitMeal"><option value="breakfast">الفطار</option><option value="snack1">سناك 1</option><option value="lunch" selected>الغداء</option><option value="snack2">سناك 2</option><option value="dinner">العشاء</option></select></label></div>
181              <button id="commitDraftMeal" class="primary-button full" type="button">إضافة الوجبة لليوم</button>
182              <p class="mini-note">قبل الضغط على الزر، المكونات موجودة في الحاسبة فقط ولا تدخل ضمن سعرات يومك.</p>
183            </div>
184          </article>
185        </div>
186      </section>
187
188      <section id="exploreView" class="view">
189        <article class="panel discovery-hero">
190          <div><span class="eyebrow">استكشاف قبل التسجيل</span><h2>ابحث عن أكل يناسب هدفك</h2><p>قارن السعرات والبروتين، ثم أضف الطعام مباشرةً إلى يومك.</p></div>
191          <div class="discovery-controls"><input id="exploreSearch" type="search" placeholder="ابحث: فراخ، بطاطس، زبادي..." /><select id="exploreCategory"></select><select id="exploreFilter"><option value="all">كل الأطعمة</option><option value="highProtein">بروتين مرتفع</option><option value="lowCalorie">سعرات منخفضة</option><option value="lowFat">قليل الدهون</option><option value="highFiber">ألياف مرتفعة</option><option value="favorites">المفضلة</option></select><select id="exploreSort"><option value="recommended">الأنسب لهدف اليوم</option><option value="proteinDesc">الأعلى بروتينًا</option><option value="caloriesAsc">الأقل سعرات</option><option value="name">الاسم</option></select></div>
192        </article>
193
194        <div class="content-grid explore-layout">
195          <article class="panel">
196            <div class="panel-header wrap-header"><div><span class="eyebrow">قاعدة الأطعمة</span><h3 id="exploreCount">الأطعمة المتاحة</h3></div><button id="clearCompare" class="ghost-button compact">مسح المقارنة</button></div>
197            <div id="exploreFoods" class="food-card-grid"></div>
198          </article>
199          <aside class="panel compare-panel">
200            <div class="panel-header"><div><span class="eyebrow">حتى 3 أطعمة</span><h3>المقارنة</h3></div></div>
201            <div id="compareFoods" class="compare-box"></div>
202            <hr />
203            <div class="panel-header"><div><span class="eyebrow">
203بحث عالمي</span><h3>USDA اختياري</h3></div></div>
204            <div class="form-stack"><input id="usdaQuery" type="search" placeholder="اكتب بالإنجليزية مثل chicken breast" /><input id="usdaApiKey" type="text" placeholder="API Key أو اتركه لاستخدام DEMO_KEY" /><button id="searchUsda" class="secondary-button">بحث خارجي</button><div id="usdaResults" class="external-results"></div></div>
205          </aside>
206        </div>
207      </section>
208
209      <section id="foodsView" class="view">
210        <div class="content-grid two-columns form-layout">
211          <article class="panel sticky-panel">
212            <div class="panel-header"><div><span class="eyebrow">إضافة سريعة</span><h3 id="foodFormTitle">طعام جديد</h3></div></div>
213            <form id="customFoodForm" class="form-stack">
214              <input id="editingFoodId" type="hidden" />
215              <label>اسم الطعام <span class="required-mark">مطلوب</span><input id="customFoodName" type="text" placeholder="مثال: سلطة البيت" required /></label>
216              <label>السعرات الحرارية <span class="required-mark">مطلوب</span><input id="customCalories" type="number" min="0" step="0.1" placeholder="مثال: 180" required /></label>
217              <p class="helper-card">يكفي الاسم والسعرات فقط. كل التفاصيل التالية اختيارية، ويمكن تعديلها لاحقًا.</p>
218              <details class="advanced-details">
219                <summary>إضافة تفاصيل اختيارية</summary>
220                <div class="details-body form-stack">
221                  <div class="form-row"><label>القيمة لكل<input id="customFoodBasis" type="number" value="100" min="0.1" step="0.1" /></label><label>الوحدة<select id="customFoodUnit"><option value="g">جرام</option><option value="ml">مل</option><option value="piece">قطعة</option><option value="serving">حصة</option><option value="tbsp">ملعقة كبيرة</option><option value="cup">كوب</option></select></label></div>
222                  <div class="form-row"><label>البروتين (جم)<input id="customProtein" type="number" min="0" step="0.1" placeholder="اختياري" /></label><label>الكارب (جم)<input id="customCarbs" type="number" min="0" step="0.1" placeholder="اختياري" /></label></div>
223                  <div class="form-row"><label>الدهون (جم)<input id="customFat" type="number" min="0" step="0.1" placeholder="اختياري" /></label><label>الألياف (جم)<input id="customFiber" type="number" min="0" step="0.1" placeholder="اختياري" /></label></div>
224                  <label>التصنيف<select id="customCategory"></select></label>
225                  <div class="inline-create"><input id="newCategoryName" type="text" placeholder="تصنيف جديد مثل: أكل البيت" /><button id="addCategoryButton" class="ghost-button" type="button">إضافة تصنيف</button></div>
226                  <label>الماركة أو المصدر<input id="customBrand" type="text" placeholder="اختياري" /></label>
227                  <label>ملاحظات<textarea id="customNotes" rows="2" placeholder="اختياري: مطبوخ، بدون زيت، من الملصق..."></textarea></label>
228                  <label class="check-row"><input id="customFavorite" type="checkbox" /> أضفه للمفضلة</label>
229                </div>
230              </details>
231              <div id="macroCheck" class="macro-check" hidden></div>
232              <div class="button-row"><button class="primary-button" type="submit">حفظ الطعام</button><button id="cancelFoodEdit" class="ghost-button" type="button" hidden>إلغاء التعديل</button></div>
233            </form>
234          </article>
235          <article class="panel">
236            <div class="panel-header wrap-header"><div><span class="eyebrow">مكتبتك</span><h3>الأساسية والمخصصة</h3></div><div class="header-filters"><input id="foodsListSearch" class="inline-search" type="search" placeholder="بحث..." /><select id="foodsListCategory"></select></div></div>
237            <div id="foodsList" class="foods-list"></div>
238          </article>
239        </div>
240      </section>
241
242      <section id="calculatorView" class="view">
243        <div class="content-grid calculator-layout">
244          <article class="panel">
245            <div class="panel-header"><div><span class="eyebrow">BMR + TDEE</span><h3>حاسبة السعرات والهدف</h3></div><button id="loadMyProfile" class="ghost-button compact">استخدم بياناتي</button></div>
246            <form id="calculatorForm" class="form-stack">
247              <div class="form-row"><label>النوع<select id="calcSex" required><option value="male">ذكر</option><option value="female">أنثى</option></select></label><label>السن<input id="calcAge" type="number" min="18" max="100" required /></label></div>
248              <div class="form-row"><label>الطول (سم)<input id="calcHeight" type="number" min="120" max="230" required /></label><label>الوزن (كجم)<input id="calcWeight" type="number" min="30" max="400" step="0.1" required /></label></div>
249              <label>معدل النشاط<select id="calcActivity"><option value="1.2">قليل جدًا — جلوس أغلب اليوم ولا يوجد تمرين منتظم</option><option value="1.375">خفيف — حركة بسيطة أو تمرين 1–3 أيام</option><option value="1.5" selected>متوسط محافظ — جيم 3–5 أيام مع جلوس أغلب اليوم</option><option value="1.55">متوسط — حركة يومية وتمرين 3–5 أيام</option><option value="1.725">مرتفع — تمرين قوي 6–7 أيام أو عمل متحرك</option><option value="1.9">مرتفع جدًا — تدريب شاق وعمل بدني</option></select></label>
250              <p class="helper-card">سيحسب التطبيق تلقائيًا سعرات الثبات، واقتراحًا محافظًا للنزول، واقتراحًا محافظًا للزيادة. الخيارات التالية تتيح لك أيضًا تجربة عجز أو فائض مخصص.</p><div class="goal-builder">
251                <label>الهدف<select id="calcGoalType"><option value="maintain">ثبات</option><option value="deficit">خسارة وزن</option><option value="surplus">زيادة وزن</option></select></label>
252                <label>طريقة التعديل<select id="calcAdjustmentMode"><option value="percent">نسبة من سعرات الثبات</option><option value="calories">عدد سعرات ثابت</option></select></label>
253                <label id="calcAdjustmentLabel">النسبة %<input id="calcAdjustment" type="number" min="0" max="40" step="1" value="20" /></label>
254              </div>
255              <button class="primary-button full" type="submit">احسب السعرات</button>
256            </form>
257          </article>
258          <article class="panel result-panel">
259            <div class="panel-header"><div><span class="eyebrow">النتيجة</span><h3>تقدير الاحتياج اليومي</h3></div></div>
260            <div id="calculatorResults" class="calculator-results empty-state"><strong>أدخل البيانات واضغط احسب</strong><span>ستظهر سعرات الثبات واقتراحات تلقائية للنزول والزيادة، مع إمكانية تجربة هدف مخصص.</span></div>
261          </article>
262        </div>
263      </section>
264
265      <section id="historyView" class="view">
266        <article class="panel"><div class="panel-header wrap-header"><div><span class="eyebrow">
266السجل اليومي</span><h3>راجع أو عدّل أي يوم</h3></div><div class="button-row"><input id="historyDate" type="date" /><button id="copyPreviousDay" class="secondary-button">نسخ اليوم السابق</button></div></div><div id="historySummary" class="history-total"></div><div id="historyMeals" class="meal-list"></div></article>
267      </section>
268
269      <section id="progressView" class="view">
270        <div class="content-grid two-columns form-layout">
271          <article class="panel sticky-panel"><div class="panel-header"><div><span class="eyebrow">تسجيل القياس</span><h3>أضف وزنك</h3></div></div><form id="weightForm" class="form-stack"><label>التاريخ<input id="weightDate" type="date" required /></label><label>الوزن بالكيلوجرام<input id="weightValue" type="number" min="20" max="400" step="0.1" required /></label><label>ملاحظة اختيارية<textarea id="weightNote" rows="3" placeholder="مثال: صباحًا قبل الفطار"></textarea></label><button class="primary-button full" type="submit">حفظ الوزن</button></form><div class="mini-note">تابع متوسط الاتجاه الأسبوعي؛ رقم يوم واحد يتأثر بالمياه والملح وتوقيت القياس.</div></article>
272          <article class="panel"><div class="panel-header"><div><span class="eyebrow">تغير الوزن</span><h3>الرسم البياني</h3></div></div><div class="progress-cards"><div><span>البداية</span><strong id="startWeight">—</strong></div><div><span>الحالي</span><strong id="currentWeight">—</strong></div><div><span>التغير</span><strong id="weightChange">—</strong></div></div><canvas id="weightChart" height="260"></canvas><div id="weightEntries" class="weight-list"></div></article>
273        </div>
274      </section>
275
276      <section id="settingsView" class="view">
277        <div class="content-grid settings-grid">
278          <article class="panel"><div class="panel-header"><div><span class="eyebrow">بياناتك</span><h3>الملف الشخصي</h3></div></div><form id="profileForm" class="form-stack"><div class="form-row"><label>العمر<input id="profileAge" type="number" min="18" max="100" required /></label><label>النوع<select id="profileSex"><option value="unspecified">غير محدد</option><option value="male">ذكر</option><option value="female">أنثى</option></select></label></div><div class="form-row"><label>الطول (سم)<input id="profileHeight" type="number" min="120" max="230" required /></label><label>الوزن الحالي (كجم)<input id="profileWeight" type="number" min="20" max="400" step="0.1" required /></label></div><label>أيام الجيم أسبوعيًا<select id="profileWorkouts"><option value="0">لا أتمرن</option><option value="1">يوم</option><option value="2">يومان</option><option value="3">3 أيام</option><option value="4">4 أيام</option><option value="5">5 أيام</option><option value="6">6 أيام</option><option value="7">7 أيام</option></select></label><label>نشاط باقي اليوم<select id="profileDailyActivity"><option value="sedentary">قليل — جلوس في البيت غالبًا</option><option value="light">خفيف — حركة ومشاوير بسيطة</option><option value="active">نشط — حركة أو عمل بدني</option></select></label><button class="primary-button" type="submit">حفظ بياناتي</button></form></article>
279
280          <article class="panel goals-panel"><div class="panel-header"><div><span class="eyebrow">أهداف قابلة للتخصيص</span><h3>السعرات والماكروز</h3></div></div><div class="goal-tabs"><button class="goal-tab active" data-goal-profile="default">الأساسي</button><button class="goal-tab" data-goal-profile="training">يوم التمرين</button><button class="goal-tab" data-goal-profile="rest">يوم الراحة</button></div><form id="goalsForm" class="form-stack"><input id="activeGoalProfile" type="hidden" value="default" /><label>هدف السعرات<input id="goalCalories" type="number" min="500" max="8000" step="10" required /></label><div class="form-row"><label>البروتين (جم)<input id="goalProtein" type="number" min="0" max="500" required /></label><label>الكارب (جم)<input id="goalCarbs" type="number" min="0" max="1000" required /></label></div><div class="form-row"><label>الدهون (جم)<input id="goalFat" type="number" min="0" max="500" required /></label><label>هدف الماء (لتر)<input id="goalWater" type="number" min="0.5" max="10" step="0.25" required /></label></div><p class="mini-note">3 لترات هدف مبدئي قابل للتعديل، وليس حدÙ
280‹Ø§ طبيًا إلزاميًا للجميع.</p><button class="primary-button" type="submit">حفظ هذا الهدف</button></form></article>
281
282          <article class="panel cloud-panel"><div class="panel-header"><div><span class="eyebrow">اختياري</span><h3>المزامنة بين الأجهزة</h3></div><span id="cloudBadge" class="status-badge">غير متصل</span></div><p class="muted-copy">يستمر التطبيق في الحفظ محليًا. وللمزامنة بين الموبايل واللاب، اربطه بمشروع Supabase خاص بك.</p><details class="advanced-details"><summary>إعداد الاتصال السحابي</summary><div class="details-body form-stack"><label>Supabase Project URL<input id="supabaseUrl" type="url" placeholder="https://xxxx.supabase.co" /></label><label>Supabase anon key<textarea id="supabaseAnonKey" rows="3" placeholder="المفتاح العام anon key"></textarea></label><button id="saveCloudConfig" class="secondary-button" type="button">حفظ إعداد الاتصال</button></div></details><form id="cloudAuthForm" class="form-stack"><label>البريد الإلكتروني<input id="cloudEmail" type="email" autocomplete="email" /></label><label>كلمة المرور<input id="cloudPassword" type="password" minlength="6" autocomplete="current-password" /></label><div class="button-row"><button id="cloudLogin" class="primary-button" type="button">تسجيل الدخول</button><button id="cloudSignup" class="secondary-button" type="button">إنشاء حساب</button><button id="cloudLogout" class="ghost-button" type="button" hidden>تسجيل الخروج</button></div></form><div class="button-row cloud-actions"><button id="pushCloud" class="secondary-button" type="button">رفع بيانات هذا الجهاز</button><button id="pullCloud" class="secondary-button" type="button">تنزيل بيانات السحابة</button></div><p id="cloudMessage" class="mini-note">تحتاج إعداد الجدول وسياسات الأمان الموضحة في ملف README.</p></article>
283
284          <article class="panel"><div class="panel-header"><div><span class="eyebrow">النسخة الاحتياطية</span><h3>بياناتك ملكك</h3></div></div><div class="form-stack"><button id="exportBackup" class="secondary-button">تصدير نسخة JSON</button><button id="exportCsv" class="secondary-button">تصدير سجل الوجبات CSV</button><label class="file-button">استرجاع نسخة JSON<input id="importBackup" type="file" accept="application/json" hidden /></label><button id="resetData" class="danger-button">مسح كل البيانات</button></div></article>
285
286          <article class="panel"><div class="panel-header"><div><span class="eyebrow">عن النسخة</span><h3>My Diet Tracker v7</h3></div></div><div class="about-copy"><p>يعمل محليًا فورًا، وينقل بيانات النسخ السابقة تلقائيًا.</p><p><strong>Developed by Hamido</strong></p><p>قيم الأطعمة تقريبية وقد تختلف حسب المنتج وطريقة التسوية. عند توفر ملصق غذائي، استخدم قيم العبوة.</p></div></article>
287        </div>
288      </section>
289    </main>
290
291    <nav class="mobile-nav" aria-label="تنقل الموبايل">
292      <button class="mobile-nav-item active" data-view="dashboard"><span>⌂</span><small>اليوم</small></button>
293      <button class="mobile-nav-item" data-view="add"><span>+</span><small>إضافة</small></button>
294      <button class="mobile-nav-item" data-view="mealplanner"><span>◉</span><small>تجربة</small></button>
295      <button class="mobile-nav-item" data-view="explore"><span>⌕</span><small>استكشف</small></button>
296      <button class="mobile-nav-item" data-view="calculator"><span>∑</span><small>الحاسبة</small></button>
297      <button class="mobile-nav-item" data-view="settings"><span>⚙</span><small>المزيد</small></button>
298    </nav>
299  </div>
300
301  <dialog id="customDrinkDialog">
302    <form id="customDrinkForm" class="dialog-card form-stack">
303      <div class="panel-header"><div><span class="eyebrow">إضافة سريعة</span><h3>مشروب جديد</h3></div><button id="closeCustomDrinkDialog" class="icon-button" type="button" aria-label="إغلاق">×</button></div>
304      <label>اسم المشروب <span class="required-mark">مطلوب</span><input id="customDrinkName" type="text" placeholder="مثال: لاتيه منزلي" required /></label>
305      <label>السعرات في الكوب <span class="required-mark">مطلوب</span><input id="customDrinkCalories" type="number" min="0" step="0.1" placeholder="مثال: 90" required /></label>
306      <p class="helper-card">اكتب سعرات المشروب الأساسية في الكوب. السكر الذي تختاره عند تسجيل المشروب سيُضاف تلقائيًا. لو المشروب جاهز ومحلى، اكتب سعراته كاملة واترك ملاعق السكر صفرًا.</p>
307      <details class="advanced-details">
308        <summary>تفاصيل اختيارية</summary>
309        <div class="details-body form-stack">
310          <div class="form-row"><label>البروتين في الكوب (جم)<input id="customDrinkProtein" type="number" min="0" step="0.1" placeholder="اختياري" /></label><label>الكارب في الكوب (جم)<input id="customDrinkCarbs" type="number" min="0" step="0.1" placeholder="اختياري" /></label></div>
311          <div class="form-row"><label>الدهون في الكوب (جم)<input id="customDrinkFat" type="number" min="0" step="0.1" placeholder="اختياري" /></label><label>الألياف في الكوب (جم)<input id="customDrinkFiber" type="number" min="0" step="0.1" placeholder="اختياري" /></label></div>
312          <label>حجم الكوب التقريبي بالمل<input id="customDrinkMl" type="number" min="1" step="1" placeholder="اختياري: 250" /></label>
313          <label>الماركة أو المصدر<input id="customDrinkBrand" type="text" placeholder="اختياري" /></label>
314          <label>ملاحظات<textarea id="customDrinkNotes" rows="2" placeholder="اختياري: بحليب خالي الدسم، جاهز ومحلى..."></textarea></label>
315          <label class="check-row"><input id="customDrinkFavorite" type="checkbox" /> أضفه للمفضلة</label>
316        </div>
317      </details>
318      <div class="button-row"><button id="cancelCustomDrink" class="ghost-button" type="button">إلغاء</button><button class="primary-button" type="submit">حفظ المشروب</button></div>
319    </form>
320  </dialog>
321
322  <dialog id="confirmDialog"><form method="dialog" class="dialog-card"><h3 id="confirmTitle">تأكيد</h3><p id="confirmMessage"></p><div class="button-row"><button value="cancel" class="ghost-button">إلغاء</button><button value="confirm" class="danger-button">تأكيد</button></div></form></dialog>
323
324  <dialog id="todayGoalDialog"><form method="dialog" id="todayGoalForm" class="dialog-card form-stack"><h3>هدف اليوم</h3><label>نوع اليوم<select id="todayGoalMode"><option value="default">الهدف الأساسي</option><option value="training">يوم تمرين</option><option value="rest">يوم راحة</option><option value="custom">هدف مخصص لهذا اليوم</option></select></label><div id="todayCustomGoalFields" class="form-stack"><label>السعرات<input id="todayGoalCalories" type="number" min="500" max="8000" /></label><div class="form-row"><label>البروتين<input id="todayGoalProtein" type="number" min="0" /></label><label>الكارب<input id="todayGoalCarbs" type="number" min="0" /></label></div><div class="form-row"><label>الدهون<input id="todayGoalFat" type="number" min="0" /></label><label>الماء (لتر)<input id="todayGoalWater" type="number" min="0.5" max="10" step="0.25" /></label></div></div><div class="button-row"><button value="cancel" class="ghost-button">إلغاء</button><button id="resetTodayGoal" type="button" class="secondary-button">إزالة التخصيص</button><button id="saveTodayGoal" value="default" type="submit" class="primary-button">حفظ</button></div></form></dialog>
325
326  
326<script src="app.js" defer></script>
326
327</body>
328</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.