PageSourceSearch

https://gym-zones.com/gymowner

html gym-zones.com collected 2026-09-24 14:44:17 UTC 20,503 bytes, 644 lines download raw bytes

1<!DOCTYPE html>
2<html
3  lang="en"
4  class="light-style customizer-hide"
5  dir="ltr"
6  data-theme="theme-default"
7  data-assets-path="../../assets/"
8  data-template="vertical-menu-template">
9
10  <head>
11    <meta charset="utf-8" />
12    <meta
13      name="viewport"
14      content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" />
15
16    <title>Login | Gym Zones</title>
17
18    <meta name="description" content="" />
19
20    <!-- Favicon -->
21    <link rel="icon" type="image/x-icon" href="https://gym-zones.com/assets/img/favicon/favicon.ico" />
22
23    <!-- Fonts -->
24    <link rel="preconnect" href="https://fonts.googleapis.com" />
25    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
26    <link
27      href="https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"
28      rel="stylesheet" />
29
30    <!-- Icons -->
31    <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/fonts/fontawesome.css" />
32    <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/fonts/tabler-icons.css" />
33    <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/fonts/flag-icons.css" />
34
35    <!-- Core CSS -->
36    <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/css/rtl/core.css" class="template-customizer-core-css" />
37    <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/css/rtl/theme-default.css" class="template-customizer-theme-css" />
38    <link rel="stylesheet" href="https://gym-zones.com/assets/css/demo.css" />
39
40    <!-- Vendors CSS -->
41    <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/libs/perfect-scrollbar/perfect-scrollbar.css" />
42    <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/libs/node-waves/node-waves.css" />
43    <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/libs/typeahead-js/typeahead.css" />
44    <!-- Vendor -->
45    <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/libs/formvalidation/dist/css/formValidation.min.css" />
46
47    <!-- Page CSS -->
48    <!-- Page -->
49    <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/css/pages/page-auth.css" />
50    <!-- Helpers -->
51
52    <!--! Template customizer & Theme config files MUST be included after core stylesheets and helpers.js in the <head> section -->
53    <!--? Template customizer: To hide customizer set displayCustomizer value false in config.js.  -->
54    
54<script src="https://gym-zones.com/assets/vendor/js/template-customizer.js"></script>
54
55    <!--? Config:  Mandatory theme config file contain global vars & default theme options, Set your preferred theme option in this file.  -->
56    
56<script src="https://gym-zones.com/assets/js/config.js"></script>
56
57  </head>
58
59  <body>
60        
61<style>
62  .light-style .authentication-wrapper.authentication-bg {
63    background-color:rgb(255, 255, 255);
64    overflow-y: auto;
65    min-height: 100vh;
66  }
67
68  h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1, p, .form-label {
69    color: #ffffff;
70  }
71
72  .light-style .auth-cover-bg-color {
73    background-color:rgb(255, 255, 255);
74  }
75
76  .authentication-wrapper.authentication-cover .authentication-inner .auth-cover-bg .auth-illustration {
77    max-height: 100%;
78  }
79
80  /* Custom styles for the new design */
81  .login-form-container {
82    background: linear-gradient(135deg, #f8f9ff 0%, #ffffff 100%);
83    border-radius: 20px;
84    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
85    padding: 2rem;
86    max-height: 90vh;
87    overflow-y: auto;
88    position: relative;
89    /* Mobile responsive adjustments */
90    margin: 1rem;
91  }
92
93  /* Mobile specific styles */
94  @media (max-width: 768px) {
95    .login-form-container {
96      max-height: 95vh;
97      margin: 0.5rem;
98      padding: 1.5rem;
99      border-radius: 15px;
100    }
101    
102    .authentication-wrapper.authentication-bg {
103      padding: 0.5rem;
104    }
105    
106    .authentication-inner {
107      margin: 0;
108    }
109    
110    /* Ensure proper scrolling on mobile */
111    .d-flex.col-12.col-lg-5 {
112      padding: 0.5rem !important;
113      min-height: 100vh;
114      align-items: flex-start !important;
115      padding-top: 2rem !important;
116    }
117  }
118
119  /* Extra small devices */
120  @media (max-width: 576px) {
121    .login-form-container {
122      margin: 0.25rem;
123      padding: 1rem;
124      max-height: 98vh;
125    }
126    
127    .top-right-decoration {
128      width: 120px;
129      height: 120px;
130      top: -20px;
131      right: -20px;
132    }
133    
134    .logo-container img {
135      width: 60px !important;
136      height: 60px !important;
137    }
138    
139    /* Improve form spacing on very small screens */
140    .form-control {
141      padding: 10px 14px;
142      font-size: 14px;
143    }
144    
145    .btn-primary {
146      padding: 10px 20px;
147      font-size: 14px;
148    }
149  }
150
151  /* Smooth scrolling for better mobile experience */
152  .login-form-container {
153    -webkit-overflow-scrolling: touch;
154    scroll-behavior: smooth;
155  }
156
157  /* Ensure modal is also scrollable on mobile */
158  @media (max-width: 768px) {
159    .forgot-password-modal {
160      margin: 0.5rem;
161      max-height: 90vh;
162      overflow-y: auto;
163    }
164    
165    .modal-dialog {
166      margin: 0.5rem;
167    }
168  }
169
170  .form-control {
171    border: 2px solid #e9ecef;
172    border-radius: 12px;
173    padding: 12px 16px;
174    font-size: 16px;
175    transition: all 0.3s ease;
176  }
177
178  .form-control:focus {
179    border-color: #6f42c1;
180    box-shadow: 0 0 0 0.2rem rgba(111, 66, 193, 0.25);
181  }
182
183  .btn-primary {
184    background: linear-gradient(135deg, #6f42c1 0%, #8e44ad 100%);
185    border: none;
186    border-radius: 12px;
187    padding: 12px 24px;
188    font-weight: 600;
189    transition: all 0.3s ease;
190  }
191
192  .btn-primary:hover {
193    transform: translateY(-2px);
194    box-shadow: 0 8px 25px rgba(111, 66, 193, 0.3);
195  }
196
197  .logo-container img {
198    filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.1));
199  }
200
201  /* Top right decorative image */
202  .top-right-decoration {
203    position: absolute;
204    top: -30px;
205    right: -40px;
206    width: 180px;
207    height: 180px;
208    z-index: 1;
209    opacity: 0.9;
210    filter: drop-shadow(0 8px 20px rgba(111, 66, 193, 0.4));
211  }
212
213  .top-right-decoration img {
214    width: 100%;
215    height: 100%;
216    object-fit: contain;
217    filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.3));
218  }
219
220  /* Forgot Password Modal Styles */
221  .forgot-password-modal {
222    background: linear-gradient(135deg, #f8f9ff 0%, #ffffff 100%);
223    border-radius: 20px;
224    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
225  }
226
227  .forgot-password-modal .modal-header {
228    border-bottom: none;
229    padding-bottom: 0;
230  }
231
232  .forgot-password-modal .modal-body {
233    padding-top: 0;
234  }
235
236  .forgot-password-modal .form-control {
237    border: 2px solid #e9ecef;
238    border-radius: 12px;
239    padding: 12px 16px;
240    font-size: 16px;
241  }
242
243  .forgot-password-modal .btn-primary {
244    background: linear-gradient(135deg, #6f42c1 0%, #8e44ad 100%);
245    border: none;
246    border-radius: 12px;
247    padding: 12px 24px;
248    font-weight: 600;
249  }
250
251  /* Toast Notification Styles */
252  .toast-notification {
253    position: fixed;
254    top: 20px;
255    right: 20px;
256    z-index: 9999;
257    min-width: 300px;
258    background: white;
259    border-radius: 12px;
260    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
261    border-left: 4px solid #6f42c1;
262    transform: translateX(400px);
263    transition: transform 0.3s ease;
264  }
265
266  .toast-notification.show {
267    transform: translateX(0);
268  }
269
270  .toast-header {
271    padding: 15px 20px 10px;
272    border-bottom: 1px solid #e9ecef;
273  }
274
275  .toast-body {
276    padding: 15px 20px 20px;
277  }
278
279  .toast-progress {
280    height: 4px;
281    background: #e9ecef;
282    border-radius: 2px;
283    overflow: hidden;
284    margin-top: 10px;
285  }
286
287  .toast-progress-bar {
288    height: 100%;
289    background: linear-gradient(135deg, #6f42c1 0%, #8e44ad 100%);
290    width: 100%;
291    animation: progress 5s linear;
292  }
293
294  @keyframes progress {
295    from { width: 100%; }
296    to { width: 0%; }
297  }
298
299  .btn-sending {
300    position: relative;
301    pointer-events: none;
302  }
303
304  .btn-sending .spinner-border {
305    width: 1rem;
306    height: 1rem;
307    margin-right: 8px;
308  }
309
310  /* Forgot Password Modal Styles */
311  .forgot-password-modal {
312    background: linear-gradient(135deg, #f8f9ff 0%, #ffffff 100%);
313    border-radius: 20px;
314    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
315  }
316
317  .forgot-password-modal .modal-header {
318    border-bottom: none;
319    padding-bottom: 0;
320  }
321
322  .forgot-password-modal .modal-body {
323    padding-top: 0;
324  }
325
326  .forgot-password-modal .form-control {
327    border: 2px solid #e9ecef;
328    border-radius: 12px;
329    padding: 12px 16px;
330    font-size: 16px;
331  }
332
333  .forgot-password-modal .btn-primary {
334    background: linear-gradient(135deg, #6f42c1 0%, #8e44ad 100%);
335    border: none;
336    border-radius: 12px;
337    padding: 12px 24px;
338    font-weight: 600;
339  }
340</style>
341
342<!-- Content -->
343<div class="authentication-wrapper authentication-cover authentication-bg">
344  <div class="authentication-inner row">
345    <!-- Left Side - Gym Image -->
346    <div class="d-none d-lg-flex col-lg-7 p-0">
347      <div class="auth-cover-bg auth-cover-bg-color d-flex justify-content-center align-items-center">
348        <img
349          src="https://gym-zones.com/assets/img/gymowner/log-in.png"
350          alt="auth-login-cover"
351          class="img-fluid my-5 auth-illustration"
352          style="width: 732px; height: auto;"
353          data-app-light-img="gymowner/log-in.png"
354          data-app-dark-img="gymowner/log-in.png" />
355
356        <img
357          src="https://gym-zones.com/assets/img/illustrations/bg-shape-image-light.png"
358          alt="auth-login-cover"
359          class="platform-bg"
360          data-app-light-img="illustrations/bg-shape-image-light.png"
361          data-app-dark-img="illustrations/bg-shape-image-dark.png" />
362      </div>
363    </div>
364
365    <!-- Right Side - Login Form -->
366    <div class="d-flex col-12 col-lg-5 align-items-center justify-content-center p-4">
367      <div class="login-form-container w-100" style="max-width: 538px; ">
368        <!-- Top Right Decorative Image -->
369        <div class="top-right-decoration" style="z-index: 1000; position: absolute; top: 0; right: 0;">
370          <img src="https://gym-zones.com/assets/img/gymowner/Rectangle.png" 
371               alt="Decorative Element" 
372               class="img-fluid">
373        </div>
374
375        <!-- Logo Section -->
376        <div class="text-center mb-5 logo-container">
377          <div class="d-inline-block mb-3">
378            <img src="https://gym-zones.com/assets/img/favicon/favicon.ico" 
379                 alt="Gym Zones Logo" 
380                 style="width: 80px; height: 80px;">
381          </div>
382          <h2 class="h3 fw-bold text-primary mb-2">Gym Zones</h2>
383          <p class="text-muted mb-0">Every Gym. One Membership.</p>
384        </div>
385
386        <!-- Arabic Text -->
387        <div class="text-center mb-4">
388          <p class="h6 text-dark mb-1 fw-semibold">من فضلك</p>
389          <p class="text-muted">إملأ بياناتك للدخول إلى لوحة التحكم</p>
390        </div>
391
392        <!-- Login Form -->
393        <form action="https://gym-zones.com/authenticate" method="POST">
394          <input type="hidden" name="_token" value="NufSUZ81ARHCSgTtvsyi0i1kZSZkrbUkxY7iB1IJ" autocomplete="off">          
395          <!-- Email Field -->
396          <div class="mb-4">
397            <label for="email" class="form-label fw-semibold text-dark">البريد الإلكتروني</label>
398            <input type="email" 
399                   class="form-control " 
400                   id="email" 
401                   name="email" 
402                   placeholder="أدخل بريدك الإلكتروني" 
403                   value="" 
404                   required 
405                   autofocus>
406                      </div>
407
408          <!-- Password Field -->
409          <div class="mb-4">
410            <label for="password" class="form-label fw-semibold text-dark">كلمة المرور</label>
411            <div class="input-group">
412              <input type="password" 
413                     class="form-control " 
414                     id="password" 
415                     name="password" 
416                     placeholder="أدخل كلمة المرور" 
417                     required>
418              <button class="btn btn-outline-secondary" type="button" id="togglePassword">
419                <i class="ti ti-eye-off"></i>
420              </button>
421                          </div>
422            
423            <!-- Forgot Password Link -->
424            <div class="text-end mt-2">
425              <a href="#" class="text-decoration-none text-primary small" onclick="openForgotPasswordModal()">
426                نسيت كلمة المرور ؟
427              </a>
428            </div>
429          </div>
430
431          <!-- Login Button -->
432          <button type="submit" class="btn btn-primary w-100 mb-4 fw-semibold py-3">
433            تسجيل الدخول
434          </button>
435        </form>
436
437        <!-- Terms and Conditions -->
438        <div class="text-center">
439          <p class="text-muted small mb-0">
440            من خلال التسجيل أنت توافق على 
441            <a href="https://gym-zones.com/terms-and-conditions" class="text-decoration-none text-primary fw-semibold">الشروط والأحكام</a>
442          </p>
443        </div>
444      </div>
445    </div>
446  </div>
447</div>
448
449<!-- Forgot Password Modal -->
450<div class="modal fade" id="forgotPasswordModal" tabindex="-1" aria-labelledby="forgotPasswordModalLabel" aria-hidden="true">
451  <div class="modal-dialog modal-dialog-centered">
452    <div class="modal-content forgot-password-modal">
453      <div class="modal-header text-center border-0">
454        <div class="w-100">
455          <!-- Logo -->
456          <div class="text-center mb-3">
457            <img src="https://gym-zones.com/assets/img/favicon/favicon.ico" 
458                 alt="Gym Zones Logo" 
459                 style="width: 60px; height: 60px;">
460            <h4 class="fw-bold text-primary mb-1">Gym Zones</h4>
461          </div>
462          
463          <!-- Arabic Instructions -->
464          <div class="text-center mb-3">
465            <p class="h6 text-dark mb-1 fw-semibold">من فضلك</p>
466            <p class="text-muted">أدخل بريدك الإلكتروني لتغيير كلمة المرور</p>
467          </div>
468        </div>
469        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
470      </div>
471      
472      <div class="modal-body">
473        <form id="forgotPasswordForm" action="https://gym-zones.com/gymowner-forgot-password" method="POST">
474          <input type="hidden" name="_token" value="NufSUZ81ARHCSgTtvsyi0i1kZSZkrbUkxY7iB1IJ" autocomplete="off">          <div class="mb-4">
475            <label for="forgot_email" class="form-label fw-semibold text-dark">البريد الإلكتروني</label>
476            <input type="email" 
477                   class="form-control " 
478                   id="forgot_email" 
479                   name="email" 
480                   placeholder="أدخل بريدك الإلكتروني" 
481                   required>
482                      </div>
483          
484          <button type="submit" class="btn btn-primary w-100 mb-3 fw-semibold py-3">
485            إرسال
486          </button>
487        </form>
488      </div>
489    </div>
490  </div>
491</div>
492
493
494
495<!-- Password Toggle Script -->
496<script>
497document.getElementById('togglePassword').addEventListener('click', function() {
498  const passwordInput = document.getElementById('password');
499  const icon = this.querySelector('i');
500  
501  if (passwordInput.type === 'password') {
502    passwordInput.type = 'text';
503    icon.classList.remove('ti-eye-off');
504    icon.classList.add('ti-eye');
505  } else {
506    passwordInput.type = 'password';
507    icon.classList.remove('ti-eye');
508    icon.classList.add('ti-eye-off');
509  }
510});
511
512// Function to open forgot password modal
513function openForgotPasswordModal() {
514  const modal = new bootstrap.Modal(document.getElementById('forgotPasswordModal'));
515  modal.show();
516}
517
518// Handle forgot password form submission
519document.getElementById('forgotPasswordForm').addEventListener('submit', function(e) {
520  e.preventDefault();
521  
522  const submitBtn = this.querySelector('button[type="submit"]');
523  const originalText = submitBtn.innerHTML;
524  
525  // Show loading state
526  submitBtn.innerHTML = '<span class="spinner-border" role="status" aria-hidden="true"></span> جاري الإرسال...';
527  submitBtn.classList.add('btn-sending');
528  
529  const formData = new FormData(this);
530  
531  fetch(this.action, {
532    method: 'POST',
533    body: formData,
534    headers: {
535      'X-Requested-With': 'XMLHttpRequest'
536    }
537  })
538  .then(response => {
539    // Check if response is JSON
540    const contentType = response.headers.get('content-type');
541    if (contentType && contentType.includes('application/json')) {
542      return response.json();
543    } else {
544      // If not JSON, check status
545      if (response.ok) {
546        return { success: true, message: 'تم إرسال رابط إعادة تعيين كلمة المرور بنجاح' };
547      } else {
548        throw new Error('Network response was not ok');
549      }
550    }
551  })
552  .then(data => {
553    // Show success toast
554    
555    showToast('نجح الإرسال', 'تم إرسال رابط إعادة تعيين كلمة المرور إلى بريدك الإلكتروني', 'success');
556    
557    // Close modal
558    const modal = bootstrap.Modal.getInstance(document.getElementById('forgotPasswordModal'));
559    modal.hide();
560    
561    // Reset form
562    this.reset();
563  })
564  .catch(error => {
565    console.error('Error:', error);
566    // Show error toast
567    showToast('خطأ في الإرسال', 'حدث خطأ أثناء إرسال الطلب. يرجى المحاولة مرة أخرى.', 'error');
568  })
569  .finally(() => {
570    // Reset button state
571    submitBtn.innerHTML = originalText;
572    submitBtn.classList.remove('btn-sending');
573  });
574});
575
576
577// Function to show toast notification
578function showToast(title, message, type = 'info') {
579  // Remove existing toasts
580  const existingToasts = document.querySelectorAll('.toast-notification');
581  existingToasts.forEach(toast => toast.remove());
582  
583  // Create toast element
584  const toast = document.createElement('div');
585  toast.className = 'toast-notification';
586  
587  const borderColor = type === 'success' ? '#28a745' : type === 'error' ? '#dc3545' : '#6f42c1';
588  
589  toast.innerHTML = `
590    <div class="toast-header">
591      <h6 class="mb-0 fw-bold" style="color: ${borderColor};">${title}</h6>
592    </div>
593    <div class="toast-body">
594      <p class="mb-0 text-dark">${message}</p>
595      <div class="toast-progress">
596        <div class="toast-progress-bar" style="border-left-color: ${borderColor};"></div>
597      </div>
598    </div>
599  `;
600  
601  // Add to page
602  document.body.appendChild(toast);
603  
604  // Show toast
605  setTimeout(() => toast.classList.add('show'), 100);
606  
607  // Auto-hide after 5 seconds
608  setTimeout(() => {
609    toast.classList.remove('show');
610    setTimeout(() => toast.remove(), 300);
611  }, 5000);
612}
613</script>
613
614
615   
616     <!-- / Content -->
617
618    <!-- Core JS -->
619    <!-- build:js assets/vendor/js/core.js -->
620    
620<script src="https://gym-zones.com/assets/vendor/libs/jquery/jquery.js"></script>
620
621    
621<script src="https://gym-zones.com/assets/vendor/libs/popper/popper.js"></script>
621
622    
622<script src="https://gym-zones.com/assets/vendor/js/bootstrap.js"></script>
622
623    
623<script src="https://gym-zones.com/assets/vendor/libs/perfect-scrollbar/perfect-scrollbar.js"></script>
623
624    
624<script src="https://gym-zones.com/assets/vendor/libs/node-waves/node-waves.js"></script>
624
625
626    
626<script src="https://gym-zones.com/assets/vendor/libs/hammer/hammer.js"></script>
626
627    
627<script src="https://gym-zones.com/assets/vendor/libs/i18n/i18n.js"></script>
627
628    
628<script src="https://gym-zones.com/assets/vendor/libs/typeahead-js/typeahead.js"></script>
628
629
630    
630<script src="https://gym-zones.com/assets/vendor/js/menu.js"></script>
630
631    <!-- endbuild -->
632
633    <!-- Vendors JS -->
634    
634<script src="https://gym-zones.com/assets/vendor/libs/formvalidation/dist/js/FormValidation.min.js"></script>
634
635    
635<script src="https://gym-zones.com/assets/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js"></script>
635
636    
636<script src="https://gym-zones.com/assets/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js"></script>
636
637
638    <!-- Main JS -->
639    
639<script src="https://gym-zones.com/assets/js/main.js"></script>
639
640
641    <!-- Page JS -->
642    
642<script src="https://gym-zones.com/assets/js/pages-auth.js"></script>
642
643  </body>
644</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.