ultimate-jekyll-manager 0.0.96 → 0.0.97
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.playwright-mcp/page-2025-10-22T19-11-27-666Z.png +0 -0
- package/.playwright-mcp/page-2025-10-22T19-11-57-357Z.png +0 -0
- package/_backup/cover-old.html +55 -0
- package/dist/assets/css/core/utilities.scss +3 -1
- package/dist/assets/js/pages/app/index.js +16 -32
- package/dist/defaults/dist/{redirects/authentication/helpers/well-known-change-password.html → .well-known/change-password.html} +4 -1
- package/dist/defaults/dist/.well-known/security.txt +15 -0
- package/dist/defaults/dist/_layouts/blueprint/app.html +1 -1
- package/dist/defaults/dist/_layouts/modules/utilities/redirect.html +1 -1
- package/dist/defaults/dist/_layouts/themes/classy/frontend/core/cover.html +6 -9
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/app.html +83 -0
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/oauth2.html +44 -46
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/reset.html +58 -60
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/signin.html +67 -70
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/signup.html +79 -81
- package/dist/defaults/dist/humans.txt +25 -0
- package/dist/defaults/dist/opensearch.xml +26 -0
- package/dist/defaults/dist/pages/test/account/dashboard.html +3 -0
- package/dist/defaults/dist/pages/test/index.md +2 -2
- package/dist/defaults/dist/pages/test/libraries/ads.html +3 -0
- package/dist/defaults/dist/pages/test/libraries/bootstrap-components.html +11 -2
- package/dist/defaults/dist/pages/test/libraries/cover.html +47 -0
- package/dist/defaults/dist/pages/test/libraries/error.html +3 -0
- package/dist/defaults/dist/pages/test/libraries/lazy-loading.html +3 -0
- package/dist/defaults/dist/pages/test/redirect/external.md +3 -0
- package/dist/defaults/dist/pages/test/redirect/internal.md +3 -0
- package/dist/defaults/dist/pages/test/translation/index.md +2 -2
- package/dist/defaults/dist/redirects/authentication/helpers/change-password.html +1 -1
- package/dist/defaults/dist/redirects/authentication/helpers/forgot.html +1 -1
- package/dist/defaults/dist/redirects/authentication/helpers/recover.html +1 -1
- package/dist/defaults/dist/redirects/authentication/helpers/reset-password.html +1 -1
- package/dist/defaults/dist/sitemap.html +112 -28
- package/dist/defaults/dist/sitemap.xml +6 -1
- package/firebase-debug.log +8 -0
- package/package.json +1 -1
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
### FULLSCREEN LAYOUT ###
|
|
3
|
+
layout: themes/[ site.theme.id ]/frontend/core/base
|
|
4
|
+
|
|
5
|
+
### FULLSCREEN PAGES ###
|
|
6
|
+
theme:
|
|
7
|
+
nav:
|
|
8
|
+
enabled: false
|
|
9
|
+
main:
|
|
10
|
+
class: "d-flex align-items-{{ page.resolved.theme.main.align | default: 'center' }} justify-content-center_ pt-0"
|
|
11
|
+
footer:
|
|
12
|
+
enabled: false
|
|
13
|
+
### CORE CONFIG ###
|
|
14
|
+
# core:
|
|
15
|
+
# cover:
|
|
16
|
+
# class: "align-top" # USED TO HAVE {{ page.resolved.theme.core.cover.class }} IN THE TOP LEVEL CLASS WITH w-100
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
<!-- Critical inline CSS to prevent FOUC on cover pages -->
|
|
20
|
+
<style>
|
|
21
|
+
main.d-flex {
|
|
22
|
+
display: flex !important;
|
|
23
|
+
min-height: calc(100vh);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
main.d-flex.align-items-center {
|
|
27
|
+
align-items: center !important;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
main.d-flex.justify-content-center {
|
|
31
|
+
justify-content: center !important;
|
|
32
|
+
}
|
|
33
|
+
</style>
|
|
34
|
+
|
|
35
|
+
<!-- <div class="w-100">
|
|
36
|
+
<div class="row justify-content-center">
|
|
37
|
+
<div class="col-12 text-center">
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
</div> -->
|
|
41
|
+
|
|
42
|
+
<!-- <div class="w-100">
|
|
43
|
+
<div class="row justify-content-center">
|
|
44
|
+
<div class="col-12 text-center px-0">
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</div> -->
|
|
48
|
+
|
|
49
|
+
<div class="w-100">
|
|
50
|
+
<div class="d-flex justify-content-center">
|
|
51
|
+
{{ content | uj_content_format }}
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
let webManager = null;
|
|
3
3
|
|
|
4
4
|
// Global variables
|
|
5
|
-
let hasLostFocus = false;
|
|
6
5
|
let launchTimeout;
|
|
7
6
|
let errorTimeout;
|
|
8
7
|
|
|
@@ -10,6 +9,7 @@ let errorTimeout;
|
|
|
10
9
|
let $launchButton;
|
|
11
10
|
let $downloadButton;
|
|
12
11
|
let $errorAlert;
|
|
12
|
+
let $spinner;
|
|
13
13
|
|
|
14
14
|
// Module
|
|
15
15
|
export default (Manager, options) => {
|
|
@@ -33,27 +33,17 @@ function setupPage() {
|
|
|
33
33
|
$launchButton = document.getElementById('launch-button');
|
|
34
34
|
$downloadButton = document.getElementById('download-button');
|
|
35
35
|
$errorAlert = document.getElementById('error-alert');
|
|
36
|
+
$spinner = document.querySelector('.spinner-border');
|
|
36
37
|
const urlParams = window.location.search;
|
|
37
38
|
|
|
38
39
|
// Enable both buttons
|
|
39
40
|
[$launchButton, $downloadButton].forEach(button => {
|
|
40
|
-
button
|
|
41
|
-
|
|
41
|
+
if (button) {
|
|
42
|
+
button.removeAttribute('disabled');
|
|
43
|
+
button.classList.remove('disabled');
|
|
44
|
+
}
|
|
42
45
|
});
|
|
43
46
|
|
|
44
|
-
// window.addEventListener('blur', () => {
|
|
45
|
-
// hasLostFocus = true;
|
|
46
|
-
// if (launchTimeout) {
|
|
47
|
-
// clearTimeout(launchTimeout);
|
|
48
|
-
// }
|
|
49
|
-
// });
|
|
50
|
-
|
|
51
|
-
// window.addEventListener('focus', () => {
|
|
52
|
-
// if (hasLostFocus) {
|
|
53
|
-
// window.close();
|
|
54
|
-
// }
|
|
55
|
-
// });
|
|
56
|
-
|
|
57
47
|
// Build app URL with parameters
|
|
58
48
|
const baseUrl = $launchButton.getAttribute('href');
|
|
59
49
|
const appUrl = `${baseUrl}${urlParams}`;
|
|
@@ -67,14 +57,6 @@ function setupPage() {
|
|
|
67
57
|
event.preventDefault();
|
|
68
58
|
launchApp(appUrl);
|
|
69
59
|
});
|
|
70
|
-
|
|
71
|
-
// Close window after 5 seconds regardless
|
|
72
|
-
// launchTimeout = setTimeout(() => {
|
|
73
|
-
// if (!hasLostFocus) {
|
|
74
|
-
// console.log('App did not launch, closing window');
|
|
75
|
-
// }
|
|
76
|
-
// window.close();
|
|
77
|
-
// }, 5000)
|
|
78
60
|
}
|
|
79
61
|
|
|
80
62
|
function launchApp(appUrl) {
|
|
@@ -86,13 +68,15 @@ function launchApp(appUrl) {
|
|
|
86
68
|
clearTimeout(errorTimeout);
|
|
87
69
|
$errorAlert.setAttribute('hidden', true);
|
|
88
70
|
|
|
89
|
-
// Check if deep link failed after
|
|
71
|
+
// Check if deep link failed after a delay
|
|
72
|
+
// Since browser prompts don't trigger blur, we can't reliably detect if app launched
|
|
73
|
+
// We'll show download options after a delay - user can dismiss if app actually launched
|
|
90
74
|
errorTimeout = setTimeout(() => {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
},
|
|
75
|
+
// Hide spinner
|
|
76
|
+
$spinner.setAttribute('hidden', true);
|
|
77
|
+
|
|
78
|
+
// Show download options
|
|
79
|
+
console.log('Showing download options after timeout');
|
|
80
|
+
$errorAlert.removeAttribute('hidden');
|
|
81
|
+
}, 2000);
|
|
98
82
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
### ALL PAGES ###
|
|
3
|
+
layout: null
|
|
4
|
+
permalink: /.well-known/security.txt
|
|
5
|
+
|
|
6
|
+
### REGULAR PAGES ###
|
|
7
|
+
sitemap:
|
|
8
|
+
include: false
|
|
9
|
+
---
|
|
10
|
+
Contact: mailto:{{ site.brand.email }}
|
|
11
|
+
Contact: {{ site.url }}/contact
|
|
12
|
+
Preferred-Languages: en
|
|
13
|
+
Canonical: {{ site.url }}/.well-known/security.txt
|
|
14
|
+
Policy: {{ site.url }}/privacy
|
|
15
|
+
Expires: {{ site.time | date: "%Y" | plus: 1 }}-12-31T23:59:59.000Z
|
|
@@ -58,4 +58,4 @@ meta:
|
|
|
58
58
|
</div>
|
|
59
59
|
|
|
60
60
|
<!-- Load redirect module script -->
|
|
61
|
-
<script type="text/javascript" src="{{ site.url }}/assets/js/modules/redirect.bundle.js?cb={{ site.uj.cache_breaker }}" async></script>
|
|
61
|
+
<!-- <script type="text/javascript" src="{{ site.url }}/assets/js/modules/redirect.bundle.js?cb={{ site.uj.cache_breaker }}" async></script> -->
|
|
@@ -7,13 +7,9 @@ theme:
|
|
|
7
7
|
nav:
|
|
8
8
|
enabled: false
|
|
9
9
|
main:
|
|
10
|
-
class: "d-flex align-items-{{ page.resolved.theme.main.align | default: 'center' }}
|
|
10
|
+
class: "d-flex align-items-{{ page.resolved.theme.main.align | default: 'center' }} py-5"
|
|
11
11
|
footer:
|
|
12
12
|
enabled: false
|
|
13
|
-
### CORE CONFIG ###
|
|
14
|
-
# core:
|
|
15
|
-
# cover:
|
|
16
|
-
# class: "align-top" # USED TO HAVE {{ page.resolved.theme.core.cover.class }} IN THE TOP LEVEL CLASS WITH w-100
|
|
17
13
|
---
|
|
18
14
|
|
|
19
15
|
<!-- Critical inline CSS to prevent FOUC on cover pages -->
|
|
@@ -32,10 +28,11 @@ theme:
|
|
|
32
28
|
}
|
|
33
29
|
</style>
|
|
34
30
|
|
|
35
|
-
|
|
31
|
+
<!-- Cover container with flexible column sizing -->
|
|
32
|
+
<div class="container-fluid">
|
|
36
33
|
<div class="row justify-content-center">
|
|
37
|
-
|
|
38
|
-
{{ content | uj_content_format }}
|
|
39
|
-
</div>
|
|
34
|
+
{{ content | uj_content_format }}
|
|
40
35
|
</div>
|
|
41
36
|
</div>
|
|
37
|
+
|
|
38
|
+
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
### ALL PAGES ###
|
|
3
|
+
layout: themes/[ site.theme.id ]/frontend/core/cover
|
|
4
|
+
asset_path: app/index
|
|
5
|
+
|
|
6
|
+
### PAGE CONFIG ###
|
|
7
|
+
app:
|
|
8
|
+
protocol: "{{ site.brand.id | default: site.brand.name | slugify }}://"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<!-- App Launch Section -->
|
|
12
|
+
<section class="col-12 col-md-8 col-lg-6 col-xl-5" style="max-width: 540px;">
|
|
13
|
+
<div class="card border-0 shadow-lg">
|
|
14
|
+
<div class="card-body p-3 p-md-5">
|
|
15
|
+
<!-- Logo -->
|
|
16
|
+
<div class="text-center mb-3">
|
|
17
|
+
<div class="avatar avatar-xl">
|
|
18
|
+
<img src="{{ site.brand.images.brandmark }}?cb={{ site.uj.cache_breaker }}" alt="{{ site.brand.name }} Logo"/>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<!-- Header -->
|
|
23
|
+
<div class="text-center mb-4">
|
|
24
|
+
<h1 class="h3 mb-2">Opening {{ site.brand.name }}...</h1>
|
|
25
|
+
<p class="text-muted">Launching your desktop application</p>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<!-- Loading Spinner -->
|
|
29
|
+
<div class="text-center mb-4">
|
|
30
|
+
<div class="spinner-border text-primary" role="status">
|
|
31
|
+
<span class="visually-hidden">Loading...</span>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<!-- Error Alert (Hidden by default) -->
|
|
36
|
+
<div id="error-alert" class="alert alert-warning mb-4" role="alert" hidden>
|
|
37
|
+
<div class="d-flex align-items-center">
|
|
38
|
+
{% uj_icon "triangle-exclamation", "me-2" %}
|
|
39
|
+
<div>
|
|
40
|
+
<strong>App not installed?</strong><br>
|
|
41
|
+
<small>Download {{ site.brand.name }} for your platform below.</small>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<!-- Action Buttons -->
|
|
47
|
+
<div class="d-grid gap-2 mb-4">
|
|
48
|
+
<a id="launch-button" href="{{ page.resolved.app.protocol }}" class="btn btn-primary" disabled>
|
|
49
|
+
{% uj_icon "rocket", "me-2" %}
|
|
50
|
+
<span>Launch App</span>
|
|
51
|
+
</a>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<!-- Download Section -->
|
|
55
|
+
<div class="text-center">
|
|
56
|
+
<p class="text-muted small mb-3">Don't have the app?</p>
|
|
57
|
+
|
|
58
|
+
<a id="download-button" href="/download" class="btn btn-adaptive" disabled>
|
|
59
|
+
{% uj_icon "download", "me-2" %}
|
|
60
|
+
<span>Download App</span>
|
|
61
|
+
</a>
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<!-- Alternative Actions -->
|
|
65
|
+
<div class="mt-4 pt-4 border-top text-center">
|
|
66
|
+
<p class="text-muted small mb-2">Having trouble?</p>
|
|
67
|
+
<div class="btn-group" role="group">
|
|
68
|
+
<a href="/" class="btn btn-sm btn-outline-adaptive">
|
|
69
|
+
{% uj_icon "house", "me-1" %}
|
|
70
|
+
<span>Go to Website</span>
|
|
71
|
+
</a>
|
|
72
|
+
<a href="/contact" class="btn btn-sm btn-outline-adaptive">
|
|
73
|
+
{% uj_icon "headset", "me-1" %}
|
|
74
|
+
<span>Get Help</span>
|
|
75
|
+
</a>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
</section>
|
|
81
|
+
|
|
82
|
+
{{ content | uj_content_format }}
|
|
83
|
+
|
|
@@ -5,60 +5,58 @@ layout: themes/[ site.theme.id ]/frontend/core/cover
|
|
|
5
5
|
### PAGE CONFIG ###
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<
|
|
9
|
-
<div class="
|
|
10
|
-
<div class="card
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
<div class="
|
|
14
|
-
<
|
|
15
|
-
<img src="{{ site.brand.images.brandmark }}?cb={{ site.uj.cache_breaker }}" alt="{{ site.brand.name }} Logo"/>
|
|
16
|
-
</div>
|
|
8
|
+
<section class="col-12 col-md-8 col-lg-6 col-xl-5" style="max-width: 540px;">
|
|
9
|
+
<div class="card border-0 shadow-lg">
|
|
10
|
+
<div class="card-body p-3 p-md-5">
|
|
11
|
+
<!-- Logo -->
|
|
12
|
+
<div class="text-center mb-3">
|
|
13
|
+
<div class="avatar avatar-xl">
|
|
14
|
+
<img src="{{ site.brand.images.brandmark }}?cb={{ site.uj.cache_breaker }}" alt="{{ site.brand.name }} Logo"/>
|
|
17
15
|
</div>
|
|
16
|
+
</div>
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
<!-- Loading State -->
|
|
19
|
+
<div id="oauth2-loading" class="text-center">
|
|
20
|
+
<h1 class="h3 mb-2">Authorizing <span id="oauth2-provider">Provider</span>...</h1>
|
|
21
|
+
<p class="text-muted">Please wait while we complete the connection.</p>
|
|
22
|
+
<div class="spinner-border text-primary mb-0" role="status">
|
|
23
|
+
<span class="visually-hidden">Loading...</span>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
27
26
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
<!-- Result State -->
|
|
28
|
+
<div id="oauth2-result" class="d-none">
|
|
29
|
+
<!-- Success -->
|
|
30
|
+
<div id="result-success" class="d-none text-center">
|
|
31
|
+
<h1 class="h3 mb-2">Success!</h1>
|
|
32
|
+
<p class="text-muted mb-4">Your account has been connected. Redirecting you now...</p>
|
|
33
|
+
</div>
|
|
35
34
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
<!-- Error -->
|
|
36
|
+
<div id="result-error" class="d-none mb-3">
|
|
37
|
+
<div class="text-center mb-3">
|
|
38
|
+
<h1 class="h3 mb-2">Connection Failed</h1>
|
|
39
|
+
</div>
|
|
40
|
+
<div class="alert alert-danger mb-3" role="alert">
|
|
41
|
+
<p id="error-message" class="mb-0">An error occurred while connecting your account.</p>
|
|
42
|
+
</div>
|
|
43
|
+
<div class="text-center mb-0">
|
|
44
|
+
<a id="return-button" href="/account#connections" class="btn btn-primary">
|
|
45
|
+
{% uj_icon "arrow-left", "me-2" %}<span class="button-text">Return to Account</span>
|
|
46
|
+
</a>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
40
49
|
</div>
|
|
41
|
-
<div class="alert alert-danger mb-3" role="alert">
|
|
42
|
-
<p id="error-message" class="mb-0">An error occurred while connecting your account.</p>
|
|
43
|
-
</div>
|
|
44
|
-
<div class="text-center mb-0">
|
|
45
|
-
<a id="return-button" href="/account#connections" class="btn btn-primary">
|
|
46
|
-
{% uj_icon "arrow-left", "me-2" %}<span class="button-text">Return to Account</span>
|
|
47
|
-
</a>
|
|
48
|
-
</div>
|
|
49
|
-
</div>
|
|
50
|
-
</div>
|
|
51
50
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
</div>
|
|
51
|
+
<!-- Footer Links -->
|
|
52
|
+
<div class="mt-3 pt-4 border-top text-center">
|
|
53
|
+
<p class="text-muted small mb-2">Need help?</p>
|
|
54
|
+
<a href="/contact" class="btn btn-outline-adaptive btn-sm">
|
|
55
|
+
{% uj_icon "headset", "me-1" %}<span class="button-text">Contact Support</span>
|
|
56
|
+
</a>
|
|
59
57
|
</div>
|
|
60
58
|
</div>
|
|
61
59
|
</div>
|
|
62
|
-
</
|
|
60
|
+
</section>
|
|
63
61
|
|
|
64
62
|
{{ content | uj_content_format }}
|
|
@@ -5,75 +5,73 @@ layout: themes/[ site.theme.id ]/frontend/core/cover
|
|
|
5
5
|
### PAGE CONFIG ###
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<
|
|
9
|
-
<div class="
|
|
10
|
-
<div class="card
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
<div class="
|
|
14
|
-
<
|
|
15
|
-
<img src="{{ site.brand.images.brandmark }}?cb={{ site.uj.cache_breaker }}" alt="{{ site.brand.name }} Logo"/>
|
|
16
|
-
</div>
|
|
8
|
+
<section class="col-12 col-md-8 col-lg-6 col-xl-5" style="max-width: 540px;">
|
|
9
|
+
<div class="card border-0 shadow-lg">
|
|
10
|
+
<div class="card-body p-3 p-md-5">
|
|
11
|
+
<!-- Logo -->
|
|
12
|
+
<div class="text-center mb-3">
|
|
13
|
+
<div class="avatar avatar-xl">
|
|
14
|
+
<img src="{{ site.brand.images.brandmark }}?cb={{ site.uj.cache_breaker }}" alt="{{ site.brand.name }} Logo"/>
|
|
17
15
|
</div>
|
|
16
|
+
</div>
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
<!-- Header -->
|
|
19
|
+
<div class="text-center mb-4">
|
|
20
|
+
<h1 class="h3 mb-2">Reset Your Password</h1>
|
|
21
|
+
<p class="text-muted">Enter your email address and we'll send you a link to reset your password.</p>
|
|
22
|
+
</div>
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
<!-- Reset Form -->
|
|
25
|
+
<form id="reset-form" autocomplete="on" novalidate>
|
|
26
|
+
<div class="mb-4 text-start">
|
|
27
|
+
<label for="email" class="form-label fw-semibold">
|
|
28
|
+
Email <span class="text-danger">*</span>
|
|
29
|
+
</label>
|
|
30
|
+
<input type="email" class="form-control form-control-md" id="email" name="email" placeholder="Enter your email" autocomplete="email" autofocus required>
|
|
31
|
+
</div>
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
<button type="submit" class="btn btn-success _btn-lg w-100 mb-4" data-provider="email" disabled>
|
|
34
|
+
{% uj_icon "paper-plane", "me-2" %}
|
|
35
|
+
<span class="button-text">Send Reset Link</span>
|
|
36
|
+
</button>
|
|
37
|
+
</form>
|
|
39
38
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
39
|
+
<!-- Back to Sign In -->
|
|
40
|
+
<div class="text-center">
|
|
41
|
+
<p class="text-muted mb-0">
|
|
42
|
+
Remember your password?
|
|
43
|
+
<a href="/signin" class="text-decoration-none fw-semibold">
|
|
44
|
+
Sign in
|
|
45
|
+
</a>
|
|
46
|
+
</p>
|
|
47
|
+
</div>
|
|
49
48
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
49
|
+
<!-- Help Section -->
|
|
50
|
+
<div class="mt-4 pt-4 border-top text-center">
|
|
51
|
+
<p class="text-muted small mb-2">Need help?</p>
|
|
52
|
+
<a href="/contact" class="btn btn-outline-adaptive btn-sm">
|
|
53
|
+
{% uj_icon "headset", "me-1" %}
|
|
54
|
+
Contact Support
|
|
55
|
+
</a>
|
|
56
|
+
</div>
|
|
58
57
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
58
|
+
<!-- Additional Info -->
|
|
59
|
+
{% comment %}
|
|
60
|
+
<div class="text-center mt-4">
|
|
61
|
+
<div class="bg-body rounded-3 p-4">
|
|
62
|
+
<div class="d-flex align-items-center justify-content-center mb-3">
|
|
63
|
+
{% uj_icon "shield-check", "text-success fs-3 me-2" %}
|
|
64
|
+
<h3 class="h6 fw-bold mb-0">Secure & Private</h3>
|
|
65
|
+
</div>
|
|
66
|
+
<p class="text-muted small mb-0">
|
|
67
|
+
We'll only send a password reset link to your registered email address.
|
|
68
|
+
The link expires in 1 hour for your security.
|
|
69
|
+
</p>
|
|
70
|
+
</div>
|
|
66
71
|
</div>
|
|
67
|
-
|
|
68
|
-
We'll only send a password reset link to your registered email address.
|
|
69
|
-
The link expires in 1 hour for your security.
|
|
70
|
-
</p>
|
|
71
|
-
</div>
|
|
72
|
-
</div>
|
|
73
|
-
{% endcomment %}
|
|
74
|
-
</div>
|
|
72
|
+
{% endcomment %}
|
|
75
73
|
</div>
|
|
76
74
|
</div>
|
|
77
|
-
</
|
|
75
|
+
</section>
|
|
78
76
|
|
|
79
77
|
{{ content | uj_content_format }}
|