ultimate-jekyll-manager 0.0.97 → 0.0.98

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.
Files changed (47) hide show
  1. package/CLAUDE.md +42 -0
  2. package/README.md +66 -0
  3. package/_backup/checkout copy 2.html +392 -0
  4. package/_backup/checkout copy 3.html +376 -0
  5. package/_backup/checkout copy 4.html +365 -0
  6. package/_backup/checkout copy.html +331 -0
  7. package/_backup/checkout-semi.html +331 -0
  8. package/dist/assets/css/core/bindings.scss +7 -2
  9. package/dist/assets/css/core/utilities.scss +8 -2
  10. package/dist/assets/css/pages/payment/checkout/index.scss +52 -7
  11. package/dist/assets/js/core/complete.js +56 -0
  12. package/dist/assets/js/core/initialize.js +11 -0
  13. package/dist/assets/js/pages/app/index.js +72 -17
  14. package/dist/assets/js/pages/download/index.js +0 -6
  15. package/dist/assets/js/pages/payment/checkout/index.js +58 -52
  16. package/dist/assets/js/pages/payment/checkout/modules/discount-bindings.js +51 -0
  17. package/dist/assets/js/pages/payment/checkout/modules/pricing.js +55 -30
  18. package/dist/assets/js/pages/payment/checkout/modules/state.js +68 -14
  19. package/dist/assets/js/pages/payment/checkout/modules/ui-bindings.js +160 -0
  20. package/dist/assets/js/pages/payment/checkout/modules/ui.js +27 -42
  21. package/dist/assets/js/pages/payment/confirmation/index.js +58 -53
  22. package/dist/assets/js/pages/payment/confirmation/modules/bindings.js +28 -0
  23. package/dist/assets/js/pages/payment/confirmation/modules/state.js +19 -0
  24. package/dist/assets/js/ultimate-jekyll-manager.js +6 -2
  25. package/dist/assets/themes/classy/css/base/_spacing.scss +27 -0
  26. package/dist/defaults/dist/_includes/core/body.html +31 -0
  27. package/dist/defaults/dist/_includes/core/foot.html +35 -0
  28. package/dist/defaults/dist/_layouts/blueprint/payment/checkout.html +6 -1
  29. package/dist/defaults/dist/_layouts/blueprint/payment/confirmation.html +6 -1
  30. package/dist/defaults/dist/_layouts/core/root.html +1 -0
  31. package/dist/defaults/dist/_layouts/modules/utilities/redirect.html +43 -32
  32. package/dist/defaults/dist/_layouts/themes/classy/backend/core/base.html +0 -35
  33. package/dist/defaults/dist/_layouts/themes/classy/frontend/core/base.html +0 -34
  34. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/404.html +35 -44
  35. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/account/index.html +1 -1
  36. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/app.html +3 -3
  37. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/oauth2.html +37 -37
  38. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/reset.html +45 -45
  39. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/signin.html +2 -1
  40. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/signup.html +58 -58
  41. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/download.html +1 -4
  42. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/payment/checkout.html +291 -240
  43. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/payment/confirmation.html +43 -47
  44. package/dist/defaults/dist/pages/test/libraries/cover.html +1 -1
  45. package/firebase-debug.log +380 -0
  46. package/package.json +1 -1
  47. package/dist/assets/js/core/init.js +0 -36
@@ -35,3 +35,30 @@
35
35
  .min-vh-80 { min-height: 80vh !important; }
36
36
  .min-vh-90 { min-height: 90vh !important; }
37
37
  .min-vh-100 { min-height: 100vh !important; }
38
+
39
+ // ============================================
40
+ // Max Width Utilities (Bootstrap Breakpoints)
41
+ // ============================================
42
+ // Max width utility classes based on Bootstrap grid breakpoints
43
+ // Usage: mw-sm, mw-md, mw-lg, mw-xl, mw-xxl
44
+ // These set the max-width to match Bootstrap's container breakpoints
45
+
46
+ .mw-sm {
47
+ max-width: 576px !important;
48
+ }
49
+
50
+ .mw-md {
51
+ max-width: 768px !important;
52
+ }
53
+
54
+ .mw-lg {
55
+ max-width: 992px !important;
56
+ }
57
+
58
+ .mw-xl {
59
+ max-width: 1200px !important;
60
+ }
61
+
62
+ .mw-xxl {
63
+ max-width: 1400px !important;
64
+ }
@@ -34,3 +34,34 @@
34
34
  Save <strong>15%</strong> at checkout—today only! <a href="{{ site.url }}/pricing" target="_blank">Claim discount</a>.
35
35
  </div>
36
36
  </div>
37
+
38
+ <!-- Script to prevent clicks on disabled elements during page load -->
39
+ <script type="text/javascript">
40
+ (function() {
41
+ 'use strict';
42
+ // Attach click listener immediately to prevent clicks on disabled elements
43
+ document.addEventListener('click', function(e) {
44
+ var target = e.target;
45
+
46
+ // Check if click is on a disabled element OR a button/form element during page load
47
+ if (
48
+ target.closest('*[disabled], *.disabled, :disabled')
49
+ || (
50
+ document.documentElement.hasAttribute('data-page-loading')
51
+ && target.closest('button, input[type="submit"], input[type="button"], input[type="reset"], .btn-action')
52
+ )
53
+ ) {
54
+ // Log disabled click attempt in development
55
+ if (window.location.hostname === 'localhost' || window.location.hostname.startsWith('192.168')) {
56
+ console.log('Click prevented (disabled):', target);
57
+ }
58
+
59
+ // Prevent all actions
60
+ e.preventDefault();
61
+ e.stopImmediatePropagation();
62
+ e.stopPropagation();
63
+ return false;
64
+ }
65
+ }, { capture: true });
66
+ }());
67
+ </script>
@@ -78,6 +78,41 @@
78
78
  <!-- JS Bundle -->
79
79
  <script type="text/javascript" src="{{ site.url }}/assets/js/main.bundle.js?cb={{ site.uj.cache_breaker }}" async></script>
80
80
 
81
+ <!-- Script to quickly handle nav user state -->
82
+ <script type="text/javascript">
83
+ try {
84
+ (function() {
85
+ 'use strict';
86
+ // Read and parse localStorage data
87
+ var managerData = localStorage.getItem('_manager');
88
+ var parsedData = managerData ? JSON.parse(managerData) : null;
89
+ var isLoggedIn = !!(parsedData && parsedData.auth && parsedData.auth.user && parsedData.auth.user.uid);
90
+
91
+ // Quit if NOT logged in
92
+ if (!isLoggedIn) {
93
+ return;
94
+ }
95
+
96
+ // Process binds
97
+ var $bindElements = document.querySelectorAll('[data-wm-bind]');
98
+
99
+ $bindElements.forEach(function($el) {
100
+ var bindValue = $el.getAttribute('data-wm-bind');
101
+
102
+ if (bindValue === '@show auth.user') {
103
+ // Show element when user is logged in
104
+ $el.removeAttribute('hidden');
105
+ } else if (bindValue === '@show !auth.user') {
106
+ // Hide element when user is logged in (show when not logged in)
107
+ $el.setAttribute('hidden', '');
108
+ }
109
+ });
110
+ }());
111
+ } catch (error) {
112
+ console.error('Error occurred while selecting elements:', error);
113
+ }
114
+ </script>
115
+
81
116
  <!-- Script - Google Analytics Tracking Script -->
82
117
  {% iftruthy page.resolved.tracking.google-analytics %}
83
118
  <script type="text/javascript" src="https://www.googletagmanager.com/gtag/js?id={{ site.tracking.google-analytics }}" async></script>
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  ### ALL PAGES ###
3
- layout: themes/[ site.theme.id ]/frontend/pages/payment/checkout
3
+ layout: themes/classy/frontend/pages/payment/checkout
4
+
5
+ ### THEME CONFIG ###
6
+ theme:
7
+ css:
8
+ bundle: "classy"
4
9
 
5
10
  ### REGULAR PAGES ###
6
11
  meta:
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  ### ALL PAGES ###
3
- layout: themes/[ site.theme.id ]/frontend/pages/payment/confirmation
3
+ layout: themes/classy/frontend/pages/payment/confirmation
4
+
5
+ ### THEME CONFIG ###
6
+ theme:
7
+ css:
8
+ bundle: "classy"
4
9
 
5
10
  ### REGULAR PAGES ###
6
11
  meta:
@@ -18,6 +18,7 @@ layout: null
18
18
  data-asset-path="{{ page.resolved.asset_path }}"
19
19
 
20
20
  data-page-loading="true"
21
+ aria-busy="true"
21
22
  >
22
23
  <head>
23
24
  <!-- Head -->
@@ -13,40 +13,51 @@ meta:
13
13
  {% capture querystring %}{{ page.resolved.redirect.querystring }}{% endcapture %}
14
14
  {% capture modifier %}{{ page.resolved.redirect.modifier | default: "" }}{% endcapture %}
15
15
 
16
- <div class="d-flex justify-content-center align-items-center flex-column">
17
- <div class="mb-3">
18
- <a href="{{ site.url }}">
19
- <div class="avatar avatar-xl">
20
- <img id="main-logo" src="{{ site.brand.images.brandmark }}?cb={{ site.uj.cache_breaker }}" alt="{{ site.brand.name }}"/>
16
+ <section class="col-12 col-md-8 col-lg-6 col-xl-5 mw-sm">
17
+ <div class="card border-0 shadow-lg">
18
+ <div class="card-body p-3 p-md-5">
19
+ <!-- Logo -->
20
+ <div class="text-center mb-3">
21
+ <a href="{{ site.url }}">
22
+ <div class="avatar avatar-xl">
23
+ <img src="{{ site.brand.images.brandmark }}?cb={{ site.uj.cache_breaker }}" alt="{{ site.brand.name }}"/>
24
+ </div>
25
+ </a>
26
+ </div>
27
+
28
+ <!-- Header -->
29
+ <div class="text-center mb-4">
30
+ <div class="d-inline-flex align-items-center">
31
+ <h1 class="h3 mb-0">Redirecting...</h1>
32
+ <div class="spinner-border spinner-border-sm text-primary ms-3" role="status">
33
+ <span class="visually-hidden">Loading...</span>
34
+ </div>
35
+ </div>
36
+ <p class="text-muted mt-2 mb-0">
37
+ Taking you to the page you requested
38
+ </p>
39
+ </div>
40
+
41
+ <!-- Action Buttons -->
42
+ <div class="d-grid gap-2 d-sm-block text-center">
43
+ <a id="home-button" class="btn btn-outline-adaptive btn-lg mb-2 mb-sm-0 me-sm-2" href="{{ site.url }}">
44
+ <span class="d-inline-flex align-items-center">
45
+ {% uj_icon "house", "fa-lg me-2" %}
46
+ Return home
47
+ </span>
48
+ </a>
49
+ <noscript>
50
+ <a id="redirect-button" class="btn btn-adaptive btn-lg mb-2 mb-sm-0" href="{{ url }}">
51
+ <span class="d-inline-flex align-items-center">
52
+ {% uj_icon "rocket", "fa-lg me-2" %}
53
+ Take me there
54
+ </span>
55
+ </a>
56
+ </noscript>
21
57
  </div>
22
- </a>
23
- </div>
24
- <div class="d-inline-flex justify-content-between align-items-center">
25
- <h1 class="h1">Redirecting...</h1>
26
- <div class="spinner-border spinner-border-md text-primary ms-3" role="status">
27
- <span class="visually-hidden">Loading...</span>
28
58
  </div>
29
59
  </div>
30
- <p class="lead mb-3">
31
- Taking you to the page you requested.
32
- </p>
33
- <div class="d-grid gap-2 d-sm-block">
34
- <a id="home-button" class="btn btn-outline-primary btn-lg mb-2 mb-sm-0 me-md-2" href="{{ site.url }}">
35
- <span class="d-inline-flex align-items-center">
36
- {% uj_icon "house", "fa-lg me-2" %}
37
- Return home
38
- </span>
39
- </a>
40
- <noscript>
41
- <a id="redirect-button" class="btn btn-primary btn-lg mb-2 mb-sm-0 me-md-2" href="{{ url }}">
42
- <span class="d-inline-flex align-items-center">
43
- {% uj_icon "rocket", "fa-lg me-2" %}
44
- Take me there
45
- </span>
46
- </a>
47
- </noscript>
48
- </div>
49
- </div>
60
+ </section>
50
61
 
51
62
  <!-- Redirect configuration for external script -->
52
63
  <div id="redirect-config" style="display: none;"
@@ -58,4 +69,4 @@ meta:
58
69
  </div>
59
70
 
60
71
  <!-- 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> -->
72
+ <script type="text/javascript" src="{{ site.url }}/assets/js/modules/redirect.bundle.js?cb={{ site.uj.cache_breaker }}" async></script>
@@ -53,38 +53,3 @@ web_manager:
53
53
  </main>
54
54
  </div>
55
55
  </div>
56
-
57
- <!-- Script to quickly handle user state -->
58
- <script type="text/javascript">
59
- try {
60
- (function() {
61
- 'use strict';
62
- // Read and parse localStorage data
63
- var managerData = localStorage.getItem('_manager');
64
- var parsedData = managerData ? JSON.parse(managerData) : null;
65
- var isLoggedIn = !!(parsedData && parsedData.auth && parsedData.auth.user && parsedData.auth.user.uid);
66
-
67
- // Quit if NOT logged in
68
- if (!isLoggedIn) {
69
- return;
70
- }
71
-
72
- // Process binds
73
- var $bindElements = document.querySelectorAll('[data-wm-bind]');
74
-
75
- $bindElements.forEach(function($el) {
76
- var bindValue = $el.getAttribute('data-wm-bind');
77
-
78
- if (bindValue === '@show auth.user') {
79
- // Show element when user is logged in
80
- $el.removeAttribute('hidden');
81
- } else if (bindValue === '@show !auth.user') {
82
- // Hide element when user is logged in (show when not logged in)
83
- $el.setAttribute('hidden', '');
84
- }
85
- });
86
- }());
87
- } catch (error) {
88
- console.error('Error occurred while selecting elements:', error);
89
- }
90
- </script>
@@ -30,37 +30,3 @@ theme:
30
30
  {%- include /frontend/sections/footer.html -%}
31
31
  {% endunless %}
32
32
 
33
- <!-- Script to quickly handle nav user state -->
34
- <script type="text/javascript">
35
- try {
36
- (function() {
37
- 'use strict';
38
- // Read and parse localStorage data
39
- var managerData = localStorage.getItem('_manager');
40
- var parsedData = managerData ? JSON.parse(managerData) : null;
41
- var isLoggedIn = !!(parsedData && parsedData.auth && parsedData.auth.user && parsedData.auth.user.uid);
42
-
43
- // Quit if NOT logged in
44
- if (!isLoggedIn) {
45
- return;
46
- }
47
-
48
- // Process binds
49
- var $bindElements = document.querySelectorAll('[data-wm-bind]');
50
-
51
- $bindElements.forEach(function($el) {
52
- var bindValue = $el.getAttribute('data-wm-bind');
53
-
54
- if (bindValue === '@show auth.user') {
55
- // Show element when user is logged in
56
- $el.removeAttribute('hidden');
57
- } else if (bindValue === '@show !auth.user') {
58
- // Hide element when user is logged in (show when not logged in)
59
- $el.setAttribute('hidden', '');
60
- }
61
- });
62
- }());
63
- } catch (error) {
64
- console.error('Error occurred while selecting elements:', error);
65
- }
66
- </script>
@@ -22,56 +22,47 @@ suggested_pages:
22
22
  link: "/team"
23
23
  ---
24
24
 
25
- <div class="d-flex justify-content-center align-items-center flex-column">
26
- <div class="col-12 col-lg-8">
27
- <!-- Logo -->
28
- <div class="mb-3">
29
- <a href="{{ site.url }}">
30
- <div class="avatar avatar-xl">
31
- <img id="main-logo" src="{{ site.brand.images.brandmark }}?cb={{ site.uj.cache_breaker }}" alt="{{ site.brand.name }}"/>
32
- </div>
33
- </a>
34
- </div>
35
-
36
- <!-- Main Content -->
37
- <h1 class="h1 text-primary mb-3">
38
- 404
39
- </h1>
40
- <h2 class="h3 mb-3">Oops! Page Not Found</h2>
41
- <p class="fs-5 text-muted mb-4">
42
- Sorry, the page you're looking for doesn't exist or has been moved. Don't worry, it happens to the best of us!
43
- </p>
25
+ <section class="col-12 col-md-10 col-lg-8 col-xl-6 mw-md">
26
+ <div class="card border-0 shadow-lg">
27
+ <div class="card-body p-3 p-md-5">
28
+ <!-- Header -->
29
+ <div class="text-center mb-4">
30
+ <h1 class="display-1 mb-3">404</h1>
31
+ <!-- <h2 class="h3 mb-3">Oops! Page Not Found</h2> -->
32
+ <p class="text-muted">
33
+ Sorry, the page you're looking for doesn't exist or has been moved. Don't worry, it happens to the best of us!
34
+ </p>
35
+ </div>
44
36
 
45
- <!-- URL Display -->
46
- <div class="card border-0 shadow-sm mb-4">
47
- <div class="card-body p-3">
48
- <small class="text-muted">
49
- <strong>Requested URL:</strong> <code id="page-url">{{ page.canonical.url }}</code>
37
+ <!-- URL Display -->
38
+ <div class="alert alert-warning text-center mb-4" role="alert">
39
+ <small class="text-body">
40
+ <strong>Requested URL:</strong> <span id="page-url" class="text-break">{{ page.canonical.url }}</span>
50
41
  </small>
51
42
  </div>
52
- </div>
53
43
 
54
- <!-- Primary CTA -->
55
- <div class="mb-5">
56
- <a href="{{ site.url }}" class="btn btn-primary btn-lg px-5 py-3 me-3">
57
- {% uj_icon "house", "me-2" %}
58
- Back to Home
59
- </a>
60
- <button class="btn btn-outline-primary btn-lg px-4 py-3" onclick="window.history.back()">
61
- {% uj_icon "arrow-left", "me-2" %}
62
- Go Back
63
- </button>
64
- </div>
44
+ <!-- Primary Actions -->
45
+ <div class="d-grid gap-2 d-sm-block text-center mb-4">
46
+ <a href="{{ site.url }}" class="btn btn-adaptive btn-lg mb-2 mb-sm-0 me-sm-2">
47
+ {% uj_icon "house", "me-2" %}
48
+ Back to Home
49
+ </a>
50
+ <button class="btn btn-outline-adaptive btn-lg mb-2 mb-sm-0" onclick="window.history.back()">
51
+ {% uj_icon "arrow-left", "me-2" %}
52
+ Go Back
53
+ </button>
54
+ </div>
65
55
 
66
- <!-- Help Section -->
67
- <div class="mt-5 pt-4 border-top">
68
- <p class="text-muted">
69
- Still can't find what you're looking for?
70
- <a href="/contact" class="text-decoration-none fw-semibold">Contact our support team</a>
71
- and we'll help you out!
72
- </p>
56
+ <!-- Help Section -->
57
+ <div class="text-center pt-4 border-top">
58
+ <p class="text-muted mb-0">
59
+ Still can't find what you're looking for?
60
+ <a href="/contact" class="text-decoration-none fw-semibold">Contact our support team</a>
61
+ and we'll help you out!
62
+ </p>
63
+ </div>
73
64
  </div>
74
65
  </div>
75
- </div>
66
+ </section>
76
67
 
77
68
  {{ content | uj_content_format }}
@@ -101,7 +101,7 @@ badges:
101
101
  ---
102
102
 
103
103
  <!-- Fixed Header -->
104
- <header class="position-fixed top-0 start-0 w-100 bg-body-secondary border-bottom" style="z-index: 1030;">
104
+ <header class="position-fixed top-0 start-0 w-100 bg-body-secondary border-bottom shadow-sm" style="z-index: 1030;">
105
105
  <div class="container-fluid px-4">
106
106
  <div class="d-flex align-items-center justify-content-between py-3">
107
107
  <!-- Left: Brand -->
@@ -9,7 +9,7 @@ app:
9
9
  ---
10
10
 
11
11
  <!-- App Launch Section -->
12
- <section class="col-12 col-md-8 col-lg-6 col-xl-5" style="max-width: 540px;">
12
+ <section class="col-12 col-md-8 col-lg-6 col-xl-5 mw-sm">
13
13
  <div class="card border-0 shadow-lg">
14
14
  <div class="card-body p-3 p-md-5">
15
15
  <!-- Logo -->
@@ -45,7 +45,7 @@ app:
45
45
 
46
46
  <!-- Action Buttons -->
47
47
  <div class="d-grid gap-2 mb-4">
48
- <a id="launch-button" href="{{ page.resolved.app.protocol }}" class="btn btn-primary" disabled>
48
+ <a id="launch-button" href="{{ page.resolved.app.protocol }}" class="btn btn-primary">
49
49
  {% uj_icon "rocket", "me-2" %}
50
50
  <span>Launch App</span>
51
51
  </a>
@@ -55,7 +55,7 @@ app:
55
55
  <div class="text-center">
56
56
  <p class="text-muted small mb-3">Don't have the app?</p>
57
57
 
58
- <a id="download-button" href="/download" class="btn btn-adaptive" disabled>
58
+ <a id="download-button" href="/download" class="btn btn-adaptive">
59
59
  {% uj_icon "download", "me-2" %}
60
60
  <span>Download App</span>
61
61
  </a>
@@ -5,7 +5,7 @@ layout: themes/[ site.theme.id ]/frontend/core/cover
5
5
  ### PAGE CONFIG ###
6
6
  ---
7
7
 
8
- <section class="col-12 col-md-8 col-lg-6 col-xl-5" style="max-width: 540px;">
8
+ <section class="col-12 col-md-8 col-lg-6 col-xl-5 mw-sm">
9
9
  <div class="card border-0 shadow-lg">
10
10
  <div class="card-body p-3 p-md-5">
11
11
  <!-- Logo -->
@@ -15,45 +15,45 @@ layout: themes/[ site.theme.id ]/frontend/core/cover
15
15
  </div>
16
16
  </div>
17
17
 
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>
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>
26
26
 
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>
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>
34
34
 
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>
49
- </div>
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>
49
+ </div>
50
50
 
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>
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>
57
57
  </div>
58
58
  </div>
59
59
  </div>
@@ -5,7 +5,7 @@ layout: themes/[ site.theme.id ]/frontend/core/cover
5
5
  ### PAGE CONFIG ###
6
6
  ---
7
7
 
8
- <section class="col-12 col-md-8 col-lg-6 col-xl-5" style="max-width: 540px;">
8
+ <section class="col-12 col-md-8 col-lg-6 col-xl-5 mw-sm">
9
9
  <div class="card border-0 shadow-lg">
10
10
  <div class="card-body p-3 p-md-5">
11
11
  <!-- Logo -->
@@ -21,54 +21,54 @@ layout: themes/[ site.theme.id ]/frontend/core/cover
21
21
  <p class="text-muted">Enter your email address and we'll send you a link to reset your password.</p>
22
22
  </div>
23
23
 
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>
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>
32
32
 
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>
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>
38
38
 
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>
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>
48
48
 
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>
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>
57
57
 
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>
71
- </div>
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>
71
+ </div>
72
72
  {% endcomment %}
73
73
  </div>
74
74
  </div>