ultimate-jekyll-manager 0.0.118 → 0.0.120
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/CLAUDE.md +409 -23
- package/README.md +171 -2
- package/TODO.md +10 -2
- package/_backup/form-manager.backup.js +1020 -0
- package/dist/assets/js/core/auth.js +5 -4
- package/dist/assets/js/core/cookieconsent.js +24 -17
- package/dist/assets/js/core/exit-popup.js +15 -12
- package/dist/assets/js/core/social-sharing.js +8 -4
- package/dist/assets/js/libs/auth/pages.js +78 -149
- package/dist/assets/js/libs/dev.js +192 -129
- package/dist/assets/js/libs/form-manager.js +643 -775
- package/dist/assets/js/pages/account/index.js +3 -2
- package/dist/assets/js/pages/account/sections/api-keys.js +37 -52
- package/dist/assets/js/pages/account/sections/connections.js +37 -46
- package/dist/assets/js/pages/account/sections/delete.js +57 -78
- package/dist/assets/js/pages/account/sections/profile.js +37 -56
- package/dist/assets/js/pages/account/sections/security.js +102 -125
- package/dist/assets/js/pages/admin/notifications/new/index.js +73 -151
- package/dist/assets/js/pages/blog/index.js +33 -53
- package/dist/assets/js/pages/contact/index.js +112 -173
- package/dist/assets/js/pages/download/index.js +39 -86
- package/dist/assets/js/pages/oauth2/index.js +17 -17
- package/dist/assets/js/pages/payment/checkout/index.js +23 -36
- package/dist/assets/js/pages/pricing/index.js +5 -2
- package/dist/assets/js/pages/test/libraries/form-manager/index.js +194 -0
- package/dist/assets/themes/classy/css/components/_cards.scss +2 -2
- package/dist/defaults/_.env +6 -0
- package/dist/defaults/_.gitignore +7 -1
- package/dist/defaults/dist/_includes/core/body.html +5 -13
- package/dist/defaults/dist/_includes/core/foot.html +1 -0
- package/dist/defaults/dist/_includes/themes/classy/frontend/sections/nav.html +51 -36
- package/dist/defaults/dist/_layouts/blueprint/admin/notifications/new.html +13 -2
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/about.html +84 -42
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/account/index.html +26 -21
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/signin.html +2 -2
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/signup.html +2 -2
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/blog/index.html +72 -58
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/blog/post.html +46 -29
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/contact.html +46 -53
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/download.html +111 -73
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/index.html +111 -56
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/pricing.html +127 -81
- package/dist/defaults/dist/pages/test/libraries/form-manager.html +181 -0
- package/dist/defaults/dist/pages/test/libraries/lazy-loading.html +1 -1
- package/dist/gulp/tasks/defaults.js +210 -1
- package/dist/gulp/tasks/serve.js +18 -0
- package/dist/lib/logger.js +1 -1
- package/firebase-debug.log +770 -0
- package/package.json +6 -6
- 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
|
@@ -6,48 +6,52 @@ layout: themes/[ site.theme.id ]/frontend/core/base
|
|
|
6
6
|
# Hero Section
|
|
7
7
|
hero:
|
|
8
8
|
headline: "About"
|
|
9
|
-
headline_accent: "
|
|
9
|
+
headline_accent: "us"
|
|
10
10
|
description: "Learn about the people, mission, and values driving {{ site.brand.name }} forward"
|
|
11
11
|
|
|
12
12
|
# Mission & Vision
|
|
13
13
|
mission:
|
|
14
|
-
title: "Our
|
|
14
|
+
title: "Our mission"
|
|
15
15
|
description: "To empower individuals and businesses with innovative technology solutions that simplify complex challenges and unlock new possibilities for growth and success."
|
|
16
16
|
icon: "bullseye"
|
|
17
17
|
|
|
18
18
|
vision:
|
|
19
|
-
title: "Our
|
|
19
|
+
title: "Our vision"
|
|
20
20
|
description: "To become the world's most trusted platform for business transformation, where innovation meets simplicity and everyone can achieve their full potential."
|
|
21
21
|
icon: "lightbulb"
|
|
22
22
|
|
|
23
23
|
# Story Timeline Section
|
|
24
24
|
story:
|
|
25
|
-
superheadline:
|
|
25
|
+
superheadline:
|
|
26
|
+
icon: "clock-rotate-left"
|
|
27
|
+
text: "History"
|
|
26
28
|
headline: "Follow our"
|
|
27
|
-
headline_accent: "
|
|
29
|
+
headline_accent: "journey"
|
|
28
30
|
subheadline: "From humble beginnings to industry leaders"
|
|
29
31
|
items:
|
|
30
32
|
- year: "2017"
|
|
31
|
-
title: "The
|
|
33
|
+
title: "The beginning"
|
|
32
34
|
description: "{{ site.brand.name }} was founded with a vision to revolutionize the industry"
|
|
33
35
|
- year: "2018"
|
|
34
|
-
title: "Rapid
|
|
36
|
+
title: "Rapid growth"
|
|
35
37
|
description: "Expanded our team and launched our flagship platform to thousands of users"
|
|
36
38
|
- year: "2020"
|
|
37
|
-
title: "Global
|
|
39
|
+
title: "Global expansion"
|
|
38
40
|
description: "Reached customers in over 100 countries and opened international offices"
|
|
39
41
|
- year: "2023"
|
|
40
|
-
title: "Innovation
|
|
42
|
+
title: "Innovation award"
|
|
41
43
|
description: "Recognized as Industry Leader and received multiple awards for innovation"
|
|
42
44
|
- year: "{{ site.uj.date.year }}"
|
|
43
|
-
title: "The
|
|
45
|
+
title: "The future"
|
|
44
46
|
description: "Continuing to push boundaries and build the future of business technology"
|
|
45
47
|
|
|
46
48
|
# Company Stats
|
|
47
49
|
stats:
|
|
48
|
-
superheadline:
|
|
50
|
+
superheadline:
|
|
51
|
+
icon: "chart-line"
|
|
52
|
+
text: "Numbers"
|
|
49
53
|
headline: "Measuring our"
|
|
50
|
-
headline_accent: "
|
|
54
|
+
headline_accent: "impact"
|
|
51
55
|
subheadline: "The milestones that define our growth"
|
|
52
56
|
items:
|
|
53
57
|
- number: "2017"
|
|
@@ -65,29 +69,33 @@ stats:
|
|
|
65
69
|
|
|
66
70
|
# Company Values Section
|
|
67
71
|
values:
|
|
68
|
-
superheadline:
|
|
69
|
-
|
|
70
|
-
|
|
72
|
+
superheadline:
|
|
73
|
+
icon: "compass"
|
|
74
|
+
text: "Principles"
|
|
75
|
+
headline: "Our core"
|
|
76
|
+
headline_accent: "values"
|
|
71
77
|
subheadline: "The principles that guide everything we do"
|
|
72
78
|
items:
|
|
73
|
-
- title: "Innovation
|
|
79
|
+
- title: "Innovation first"
|
|
74
80
|
description: "We push boundaries and challenge the status quo to create breakthrough solutions that transform how businesses operate"
|
|
75
81
|
icon: "rocket"
|
|
76
|
-
- title: "Customer
|
|
82
|
+
- title: "Customer obsessed"
|
|
77
83
|
description: "Everything we do is focused on delivering exceptional value to our customers. Their success is our success"
|
|
78
84
|
icon: "heart"
|
|
79
|
-
- title: "Team
|
|
85
|
+
- title: "Team excellence"
|
|
80
86
|
description: "We hire the best talent and create an environment where everyone can thrive, learn, and make an impact"
|
|
81
87
|
icon: "users"
|
|
82
|
-
- title: "Transparent
|
|
88
|
+
- title: "Transparent culture"
|
|
83
89
|
description: "We believe in open communication, honest feedback, and shared decision-making at every level"
|
|
84
90
|
icon: "magnifying-glass"
|
|
85
91
|
|
|
86
92
|
# Team CTA Section
|
|
87
93
|
team_cta:
|
|
88
|
-
superheadline:
|
|
89
|
-
|
|
90
|
-
|
|
94
|
+
superheadline:
|
|
95
|
+
icon: "handshake"
|
|
96
|
+
text: "People"
|
|
97
|
+
headline: "Meet our amazing"
|
|
98
|
+
headline_accent: "team"
|
|
91
99
|
subheadline: "Get to know the passionate individuals behind {{ site.brand.name }} who work every day to make your experience exceptional"
|
|
92
100
|
button:
|
|
93
101
|
text: "Meet the Team"
|
|
@@ -116,8 +124,13 @@ team_cta:
|
|
|
116
124
|
<section class="pt-0">
|
|
117
125
|
<div class="container">
|
|
118
126
|
<div class="text-center mb-5" data-lazy="@class animation-slide-up">
|
|
119
|
-
{% iftruthy page.resolved.story.superheadline %}
|
|
120
|
-
<span class="badge bg-body-tertiary border-gradient-rainbow border-1 text-body p-2 mb-1 fw-semibold small">
|
|
127
|
+
{% iftruthy page.resolved.story.superheadline.text %}
|
|
128
|
+
<span class="badge bg-body-tertiary border-gradient-rainbow border-1 text-body p-2 mb-1 fw-semibold small">
|
|
129
|
+
{% iftruthy page.resolved.story.superheadline.icon %}
|
|
130
|
+
{% uj_icon page.resolved.story.superheadline.icon, "me-1" %}
|
|
131
|
+
{% endiftruthy %}
|
|
132
|
+
{{ page.resolved.story.superheadline.text }}
|
|
133
|
+
</span>
|
|
121
134
|
{% endiftruthy %}
|
|
122
135
|
<h2 class="h2 mb-2">
|
|
123
136
|
{{ page.resolved.story.headline }} <span class="text-accent">{{ page.resolved.story.headline_accent }}</span>
|
|
@@ -205,8 +218,13 @@ team_cta:
|
|
|
205
218
|
<section>
|
|
206
219
|
<div class="container">
|
|
207
220
|
<div class="text-center mb-5" data-lazy="@class animation-slide-up">
|
|
208
|
-
{% iftruthy page.resolved.stats.superheadline %}
|
|
209
|
-
<span class="badge bg-body-tertiary border-gradient-rainbow border-1 text-body p-2 mb-1 fw-semibold small">
|
|
221
|
+
{% iftruthy page.resolved.stats.superheadline.text %}
|
|
222
|
+
<span class="badge bg-body-tertiary border-gradient-rainbow border-1 text-body p-2 mb-1 fw-semibold small">
|
|
223
|
+
{% iftruthy page.resolved.stats.superheadline.icon %}
|
|
224
|
+
{% uj_icon page.resolved.stats.superheadline.icon, "me-1" %}
|
|
225
|
+
{% endiftruthy %}
|
|
226
|
+
{{ page.resolved.stats.superheadline.text }}
|
|
227
|
+
</span>
|
|
210
228
|
{% endiftruthy %}
|
|
211
229
|
<h2 class="h2 mb-2">
|
|
212
230
|
{{ page.resolved.stats.headline }}
|
|
@@ -237,8 +255,13 @@ team_cta:
|
|
|
237
255
|
<section>
|
|
238
256
|
<div class="container">
|
|
239
257
|
<div class="text-center mb-5" data-lazy="@class animation-slide-up">
|
|
240
|
-
{% iftruthy page.resolved.values.superheadline %}
|
|
241
|
-
<span class="badge bg-body-tertiary border-gradient-rainbow border-1 text-body p-2 mb-1 fw-semibold small">
|
|
258
|
+
{% iftruthy page.resolved.values.superheadline.text %}
|
|
259
|
+
<span class="badge bg-body-tertiary border-gradient-rainbow border-1 text-body p-2 mb-1 fw-semibold small">
|
|
260
|
+
{% iftruthy page.resolved.values.superheadline.icon %}
|
|
261
|
+
{% uj_icon page.resolved.values.superheadline.icon, "me-1" %}
|
|
262
|
+
{% endiftruthy %}
|
|
263
|
+
{{ page.resolved.values.superheadline.text }}
|
|
264
|
+
</span>
|
|
242
265
|
{% endiftruthy %}
|
|
243
266
|
<h2 class="h2 mb-2">
|
|
244
267
|
{{ page.resolved.values.headline }} <span class="text-accent">{{ page.resolved.values.headline_accent }}</span>
|
|
@@ -269,21 +292,40 @@ team_cta:
|
|
|
269
292
|
<!-- Team CTA Section -->
|
|
270
293
|
<section>
|
|
271
294
|
<div class="container">
|
|
272
|
-
<div class="
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
295
|
+
<div class="card border-0 bg-gradient bg-primary text-white rounded-4 p-4 p-md-5 text-center position-relative overflow-hidden" data-lazy="@class animation-slide-up">
|
|
296
|
+
<!-- Decorative icon - top right -->
|
|
297
|
+
<div class="position-absolute top-0 end-0 opacity-25" style="font-size:10rem;transform:rotate(15deg)translate(30%,-30%)">
|
|
298
|
+
{% uj_icon "users", "text-white" %}
|
|
299
|
+
</div>
|
|
300
|
+
|
|
301
|
+
<!-- Decorative icon - bottom left -->
|
|
302
|
+
<div class="position-absolute bottom-0 start-0 opacity-25" style="font-size:8rem;transform:rotate(-20deg)translate(-30%,30%)">
|
|
303
|
+
{% uj_icon "heart", "text-white" %}
|
|
304
|
+
</div>
|
|
305
|
+
|
|
306
|
+
<div class="position-relative">
|
|
307
|
+
{% iftruthy page.resolved.team_cta.superheadline.text %}
|
|
308
|
+
<span class="badge bg-white bg-opacity-25 text-light p-2 mb-3 fw-semibold small">
|
|
309
|
+
{% iftruthy page.resolved.team_cta.superheadline.icon %}
|
|
310
|
+
{% uj_icon page.resolved.team_cta.superheadline.icon, "me-1" %}
|
|
311
|
+
{% endiftruthy %}
|
|
312
|
+
{{ page.resolved.team_cta.superheadline.text }}
|
|
313
|
+
</span>
|
|
314
|
+
{% endiftruthy %}
|
|
315
|
+
|
|
316
|
+
<h2 class="h3 fw-bold mb-3">
|
|
317
|
+
{{ page.resolved.team_cta.headline }}
|
|
318
|
+
{% iftruthy page.resolved.team_cta.headline_accent %}
|
|
319
|
+
{{ page.resolved.team_cta.headline_accent }}
|
|
285
320
|
{% endiftruthy %}
|
|
286
|
-
|
|
321
|
+
</h2>
|
|
322
|
+
|
|
323
|
+
{% iftruthy page.resolved.team_cta.subheadline %}
|
|
324
|
+
<p class="lead mb-4">{{ page.resolved.team_cta.subheadline }}</p>
|
|
325
|
+
{% endiftruthy %}
|
|
326
|
+
|
|
327
|
+
<div class="d-flex flex-column flex-sm-row gap-3 justify-content-center">
|
|
328
|
+
<a href="{{ page.resolved.team_cta.button.href }}" class="btn btn-light btn-lg px-4">
|
|
287
329
|
{% uj_icon page.resolved.team_cta.button.icon, "me-2" %}
|
|
288
330
|
{{ page.resolved.team_cta.button.text }}
|
|
289
331
|
</a>
|
|
@@ -800,7 +800,7 @@ badges:
|
|
|
800
800
|
{% endiftruthy %}
|
|
801
801
|
</div>
|
|
802
802
|
<div>
|
|
803
|
-
<
|
|
803
|
+
<h6 class="mb-0">{{ method.name }}</h6>
|
|
804
804
|
<div class="text-muted small" id="{{ method.id }}-email"></div>
|
|
805
805
|
</div>
|
|
806
806
|
</div>
|
|
@@ -845,7 +845,18 @@ badges:
|
|
|
845
845
|
|
|
846
846
|
<div class="card">
|
|
847
847
|
<div class="card-body">
|
|
848
|
-
<
|
|
848
|
+
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
849
|
+
<h5 class="card-title mb-0">Active Sessions</h5>
|
|
850
|
+
<form id="signout-all-sessions-form" class="d-inline" novalidate>
|
|
851
|
+
<input type="hidden" name="action" value="signout-all">
|
|
852
|
+
<button type="submit" class="btn btn-outline-danger btn-sm">
|
|
853
|
+
{% uj_icon "right-from-bracket", "me-1" %}
|
|
854
|
+
<span class="button-text">
|
|
855
|
+
Sign out<span class="d-none d-md-inline"> of all sessions</span>
|
|
856
|
+
</span>
|
|
857
|
+
</button>
|
|
858
|
+
</form>
|
|
859
|
+
</div>
|
|
849
860
|
<p class="card-text text-muted">Manage your active sessions across devices. Review and revoke access from unrecognized devices.</p>
|
|
850
861
|
|
|
851
862
|
<div id="active-sessions-list" class="list-group list-group-flush mb-3">
|
|
@@ -856,15 +867,6 @@ badges:
|
|
|
856
867
|
</div>
|
|
857
868
|
</div>
|
|
858
869
|
</div>
|
|
859
|
-
|
|
860
|
-
<!-- Sign out of all sessions -->
|
|
861
|
-
<form id="signout-all-sessions-form" class="d-grid d-sm-block" novalidate>
|
|
862
|
-
<input type="hidden" name="action" value="signout-all">
|
|
863
|
-
<button type="submit" class="btn btn-outline-danger">
|
|
864
|
-
{% uj_icon "right-from-bracket", "me-1" %}
|
|
865
|
-
<span class="button-text">Sign out of all sessions</span>
|
|
866
|
-
</button>
|
|
867
|
-
</form>
|
|
868
870
|
</div>
|
|
869
871
|
</div>
|
|
870
872
|
</section>
|
|
@@ -1074,7 +1076,17 @@ badges:
|
|
|
1074
1076
|
|
|
1075
1077
|
<div class="card">
|
|
1076
1078
|
<div class="card-body">
|
|
1077
|
-
<
|
|
1079
|
+
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
1080
|
+
<h5 class="card-title mb-0">Your API Key</h5>
|
|
1081
|
+
<form id="reset-api-key-form" class="d-inline" novalidate>
|
|
1082
|
+
<button type="submit" class="btn btn-outline-danger btn-sm" id="reset-api-key-btn">
|
|
1083
|
+
{% uj_icon "rotate", "me-1" %}
|
|
1084
|
+
<span class="button-text">
|
|
1085
|
+
Reset<span class="d-none d-md-inline"> API Key</span>
|
|
1086
|
+
</span>
|
|
1087
|
+
</button>
|
|
1088
|
+
</form>
|
|
1089
|
+
</div>
|
|
1078
1090
|
<p class="card-text text-muted">Use this private key to authenticate API requests. Keep it secure and never share it publicly.</p>
|
|
1079
1091
|
|
|
1080
1092
|
<!-- API Key Display -->
|
|
@@ -1090,21 +1102,14 @@ badges:
|
|
|
1090
1102
|
</div>
|
|
1091
1103
|
|
|
1092
1104
|
<!-- Reset API Key -->
|
|
1093
|
-
<div class="alert alert-warning d-flex align-items-
|
|
1105
|
+
<div class="alert alert-warning d-flex align-items-center" role="alert">
|
|
1094
1106
|
<div class="me-3">
|
|
1095
|
-
{% uj_icon "triangle-exclamation", "fa-
|
|
1107
|
+
{% uj_icon "triangle-exclamation", "fa-2xl" %}
|
|
1096
1108
|
</div>
|
|
1097
1109
|
<div class="flex-grow-1">
|
|
1098
1110
|
<strong>Warning:</strong> Resetting your API key will invalidate the current key. Any applications using the old key will stop working.
|
|
1099
1111
|
</div>
|
|
1100
1112
|
</div>
|
|
1101
|
-
|
|
1102
|
-
<form id="reset-api-key-form" class="d-grid d-sm-block" novalidate>
|
|
1103
|
-
<button type="submit" class="btn btn-danger" id="reset-api-key-btn">
|
|
1104
|
-
{% uj_icon "rotate", "me-2" %}
|
|
1105
|
-
<span class="button-text">Reset API Key</span>
|
|
1106
|
-
</button>
|
|
1107
|
-
</form>
|
|
1108
1113
|
</div>
|
|
1109
1114
|
</div>
|
|
1110
1115
|
</section>
|
|
@@ -63,7 +63,7 @@ social_signin:
|
|
|
63
63
|
<label for="email" class="form-label fw-semibold">
|
|
64
64
|
Email <span class="text-danger">*</span>
|
|
65
65
|
</label>
|
|
66
|
-
<input type="email" class="form-control form-control-md" id="email" name="email" placeholder="Enter your email" autocomplete="email" autofocus
|
|
66
|
+
<input type="email" class="form-control form-control-md" id="email" name="email" placeholder="Enter your email" autocomplete="email" autofocus>
|
|
67
67
|
</div>
|
|
68
68
|
|
|
69
69
|
<div class="mb-3 text-start">
|
|
@@ -71,7 +71,7 @@ social_signin:
|
|
|
71
71
|
Password <span class="text-danger">*</span>
|
|
72
72
|
</label>
|
|
73
73
|
<div class="input-group">
|
|
74
|
-
<input type="password" class="form-control form-control-md" id="password" name="password" placeholder="Enter your password" autocomplete="current-password"
|
|
74
|
+
<input type="password" class="form-control form-control-md" id="password" name="password" placeholder="Enter your password" autocomplete="current-password">
|
|
75
75
|
<button class="btn border uj-password-toggle px-3" type="button" aria-label="Toggle password visibility">
|
|
76
76
|
<span class="uj-password-show">{% uj_icon "eye", "fa-fw" %}</span>
|
|
77
77
|
<span class="uj-password-hide d-none">{% uj_icon "eye-slash", "fa-fw" %}</span>
|
|
@@ -73,7 +73,7 @@ social_signup:
|
|
|
73
73
|
<label for="email" class="form-label fw-semibold">
|
|
74
74
|
Email <span class="text-danger">*</span>
|
|
75
75
|
</label>
|
|
76
|
-
<input type="email" class="form-control form-control-md" id="email" name="email" placeholder="Enter your email" autocomplete="email" autofocus
|
|
76
|
+
<input type="email" class="form-control form-control-md" id="email" name="email" placeholder="Enter your email" autocomplete="email" autofocus>
|
|
77
77
|
</div>
|
|
78
78
|
|
|
79
79
|
<div class="mb-3 text-start">
|
|
@@ -81,7 +81,7 @@ social_signup:
|
|
|
81
81
|
Password <span class="text-danger">*</span>
|
|
82
82
|
</label>
|
|
83
83
|
<div class="input-group">
|
|
84
|
-
<input type="password" class="form-control form-control-md" id="password" name="password" placeholder="Create a strong password" autocomplete="new-password"
|
|
84
|
+
<input type="password" class="form-control form-control-md" id="password" name="password" placeholder="Create a strong password" autocomplete="new-password">
|
|
85
85
|
<button class="btn border uj-password-toggle px-3" type="button" aria-label="Toggle password visibility">
|
|
86
86
|
<span class="uj-password-show">{% uj_icon "eye", "fa-fw" %}</span>
|
|
87
87
|
<span class="uj-password-hide d-none">{% uj_icon "eye-slash", "fa-fw" %}</span>
|
|
@@ -6,14 +6,16 @@ layout: themes/[ site.theme.id ]/frontend/core/base
|
|
|
6
6
|
# Hero Section
|
|
7
7
|
hero:
|
|
8
8
|
headline: "The {{ site.brand.name }}"
|
|
9
|
-
headline_accent: "
|
|
9
|
+
headline_accent: "blog"
|
|
10
10
|
subheadline: "Discover insights, tutorials, and news from our team"
|
|
11
11
|
|
|
12
12
|
# Newsletter CTA Section
|
|
13
13
|
newsletter_cta:
|
|
14
|
-
superheadline:
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
superheadline:
|
|
15
|
+
icon: "envelope"
|
|
16
|
+
text: "Newsletter"
|
|
17
|
+
headline: "Never miss a"
|
|
18
|
+
headline_accent: "post"
|
|
17
19
|
subheadline: "Get the latest insights delivered straight to your inbox. No spam, unsubscribe anytime."
|
|
18
20
|
button:
|
|
19
21
|
text: "Subscribe"
|
|
@@ -32,7 +34,7 @@ newsletter_cta:
|
|
|
32
34
|
{{ page.resolved.hero.headline }} <span class="text-gradient-rainbow">{{ page.resolved.hero.headline_accent }}</span>
|
|
33
35
|
</h1>
|
|
34
36
|
{% iftruthy page.resolved.hero.subheadline %}
|
|
35
|
-
<p class="fs-5 text-muted
|
|
37
|
+
<p class="fs-5 text-muted">
|
|
36
38
|
{{ page.resolved.hero.subheadline }}
|
|
37
39
|
</p>
|
|
38
40
|
{% endiftruthy %}
|
|
@@ -229,64 +231,76 @@ newsletter_cta:
|
|
|
229
231
|
|
|
230
232
|
<!-- Newsletter CTA -->
|
|
231
233
|
<section>
|
|
232
|
-
<div class="container"
|
|
233
|
-
<div class="rounded-4 p-5 position-relative overflow-hidden
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
234
|
+
<div class="container">
|
|
235
|
+
<div class="card border-0 bg-gradient bg-primary text-white rounded-4 p-4 p-md-5 text-center position-relative overflow-hidden" data-lazy="@class animation-slide-up">
|
|
236
|
+
<!-- Decorative icon - top right -->
|
|
237
|
+
<div class="position-absolute top-0 end-0 opacity-25" style="font-size:10rem;transform:rotate(15deg)translate(30%,-30%)">
|
|
238
|
+
{% uj_icon "pen-nib", "text-white" %}
|
|
239
|
+
</div>
|
|
240
|
+
|
|
241
|
+
<!-- Decorative icon - bottom left -->
|
|
242
|
+
<div class="position-absolute bottom-0 start-0 opacity-25" style="font-size:8rem;transform:rotate(-20deg)translate(-30%,30%)">
|
|
243
|
+
{% uj_icon "book-open", "text-white" %}
|
|
244
|
+
</div>
|
|
245
|
+
|
|
246
|
+
<div class="position-relative">
|
|
247
|
+
{% iftruthy page.resolved.newsletter_cta.superheadline.text %}
|
|
248
|
+
<span class="badge bg-white bg-opacity-25 text-light p-2 mb-3 fw-semibold small">
|
|
249
|
+
{% iftruthy page.resolved.newsletter_cta.superheadline.icon %}
|
|
250
|
+
{% uj_icon page.resolved.newsletter_cta.superheadline.icon, "me-1" %}
|
|
243
251
|
{% endiftruthy %}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
252
|
+
{{ page.resolved.newsletter_cta.superheadline.text }}
|
|
253
|
+
</span>
|
|
254
|
+
{% endiftruthy %}
|
|
255
|
+
|
|
256
|
+
<h2 class="h3 fw-bold mb-3">
|
|
257
|
+
{{ page.resolved.newsletter_cta.headline }}
|
|
258
|
+
{% iftruthy page.resolved.newsletter_cta.headline_accent %}
|
|
259
|
+
{{ page.resolved.newsletter_cta.headline_accent }}
|
|
249
260
|
{% endiftruthy %}
|
|
250
|
-
</
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
<
|
|
254
|
-
|
|
255
|
-
<div class="col-md-8">
|
|
256
|
-
<input
|
|
257
|
-
type="email"
|
|
258
|
-
class="form-control form-control-lg"
|
|
259
|
-
placeholder="{{ page.resolved.newsletter_cta.form.placeholder }}"
|
|
260
|
-
name="email"
|
|
261
|
-
required
|
|
262
|
-
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$"
|
|
263
|
-
autocomplete="email"
|
|
264
|
-
>
|
|
265
|
-
<div class="invalid-feedback text-start">
|
|
266
|
-
Please enter a valid email address.
|
|
267
|
-
</div>
|
|
268
|
-
</div>
|
|
269
|
-
<div class="col-md-4">
|
|
270
|
-
<button type="submit" class="btn btn-adaptive btn-lg px-4 w-100">
|
|
271
|
-
{{ page.resolved.newsletter_cta.button.text }}
|
|
272
|
-
<span class="spinner-border spinner-border-sm ms-2 d-none" role="status">
|
|
273
|
-
<span class="visually-hidden">Loading...</span>
|
|
274
|
-
</span>
|
|
275
|
-
</button>
|
|
276
|
-
</div>
|
|
277
|
-
</div>
|
|
261
|
+
</h2>
|
|
262
|
+
|
|
263
|
+
{% iftruthy page.resolved.newsletter_cta.subheadline %}
|
|
264
|
+
<p class="lead mb-4">{{ page.resolved.newsletter_cta.subheadline }}</p>
|
|
265
|
+
{% endiftruthy %}
|
|
278
266
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
267
|
+
<!-- Newsletter Form -->
|
|
268
|
+
<form id="newsletter-form" class="newsletter-form">
|
|
269
|
+
<div class="row g-3 justify-content-center">
|
|
270
|
+
<div class="col-md-7">
|
|
271
|
+
<input
|
|
272
|
+
type="email"
|
|
273
|
+
class="form-control form-control-lg"
|
|
274
|
+
placeholder="{{ page.resolved.newsletter_cta.form.placeholder }}"
|
|
275
|
+
name="email"
|
|
276
|
+
required
|
|
277
|
+
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$"
|
|
278
|
+
autocomplete="email"
|
|
279
|
+
>
|
|
280
|
+
<div class="invalid-feedback text-start">
|
|
281
|
+
Please enter a valid email address.
|
|
282
|
+
</div>
|
|
283
283
|
</div>
|
|
284
|
-
<div class="
|
|
285
|
-
|
|
286
|
-
|
|
284
|
+
<div class="col-md-auto">
|
|
285
|
+
<button type="submit" class="btn btn-light btn-lg px-4">
|
|
286
|
+
{{ page.resolved.newsletter_cta.button.text }}
|
|
287
|
+
<span class="spinner-border spinner-border-sm ms-2 d-none" role="status">
|
|
288
|
+
<span class="visually-hidden">Loading...</span>
|
|
289
|
+
</span>
|
|
290
|
+
</button>
|
|
287
291
|
</div>
|
|
288
|
-
</
|
|
289
|
-
|
|
292
|
+
</div>
|
|
293
|
+
|
|
294
|
+
<!-- Success/Error Messages -->
|
|
295
|
+
<div class="newsletter-success-alert alert alert-success mt-3 d-none" role="alert">
|
|
296
|
+
{% uj_icon "check-circle", "me-2" %}
|
|
297
|
+
{{ page.resolved.newsletter_cta.form.success_message }}
|
|
298
|
+
</div>
|
|
299
|
+
<div class="newsletter-error-alert alert alert-danger mt-3 d-none" role="alert">
|
|
300
|
+
{% uj_icon "exclamation-circle", "me-2" %}
|
|
301
|
+
<span class="error-message">{{ page.resolved.newsletter_cta.form.error_message }}</span>
|
|
302
|
+
</div>
|
|
303
|
+
</form>
|
|
290
304
|
</div>
|
|
291
305
|
</div>
|
|
292
306
|
</div>
|
|
@@ -20,13 +20,15 @@ author_section:
|
|
|
20
20
|
|
|
21
21
|
related_posts:
|
|
22
22
|
headline: "Related"
|
|
23
|
-
headline_accent: "
|
|
23
|
+
headline_accent: "posts"
|
|
24
24
|
limit: 3
|
|
25
25
|
|
|
26
26
|
newsletter:
|
|
27
|
-
superheadline:
|
|
27
|
+
superheadline:
|
|
28
|
+
icon: "envelope"
|
|
29
|
+
text: "Newsletter"
|
|
28
30
|
headline: "Stay in the"
|
|
29
|
-
headline_accent: "
|
|
31
|
+
headline_accent: "loop"
|
|
30
32
|
subheadline: "Join our newsletter and get resources, curated content, and inspiration delivered straight to your inbox."
|
|
31
33
|
button:
|
|
32
34
|
text: "Submit"
|
|
@@ -39,7 +41,7 @@ newsletter:
|
|
|
39
41
|
<div class="container">
|
|
40
42
|
<div class="row justify-content-center mb-3">
|
|
41
43
|
<div class="col-xl-8 col-lg-8 col-md-12 col-12">
|
|
42
|
-
<header class="text-center mb-
|
|
44
|
+
<header class="text-center mb-5" data-lazy="@class animation-slide-up">
|
|
43
45
|
<h1 class="h1 fw-bold mb-0">{{ page.post.title }}</h1>
|
|
44
46
|
</header>
|
|
45
47
|
|
|
@@ -257,32 +259,47 @@ newsletter:
|
|
|
257
259
|
<section>
|
|
258
260
|
<div class="container">
|
|
259
261
|
<div class="row justify-content-center">
|
|
260
|
-
<div class="col-xl-8 col-lg-8 col-md-12 col-12"
|
|
261
|
-
<div class="card">
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
{
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
262
|
+
<div class="col-xl-8 col-lg-8 col-md-12 col-12">
|
|
263
|
+
<div class="card border-0 bg-gradient bg-primary text-white rounded-4 p-4 p-md-5 text-center position-relative overflow-hidden" data-lazy="@class animation-slide-up">
|
|
264
|
+
<!-- Decorative icon - top right -->
|
|
265
|
+
<div class="position-absolute top-0 end-0 opacity-25" style="font-size:10rem;transform:rotate(15deg)translate(30%,-30%)">
|
|
266
|
+
{% uj_icon "comments", "text-white" %}
|
|
267
|
+
</div>
|
|
268
|
+
|
|
269
|
+
<!-- Decorative icon - bottom left -->
|
|
270
|
+
<div class="position-absolute bottom-0 start-0 opacity-25" style="font-size:8rem;transform:rotate(-20deg)translate(-30%,30%)">
|
|
271
|
+
{% uj_icon "rss", "text-white" %}
|
|
272
|
+
</div>
|
|
273
|
+
|
|
274
|
+
<div class="position-relative">
|
|
275
|
+
{% iftruthy page.resolved.newsletter.superheadline.text %}
|
|
276
|
+
<span class="badge bg-white bg-opacity-25 text-light p-2 mb-3 fw-semibold small">
|
|
277
|
+
{% iftruthy page.resolved.newsletter.superheadline.icon %}
|
|
278
|
+
{% uj_icon page.resolved.newsletter.superheadline.icon, "me-1" %}
|
|
279
|
+
{% endiftruthy %}
|
|
280
|
+
{{ page.resolved.newsletter.superheadline.text }}
|
|
281
|
+
</span>
|
|
282
|
+
{% endiftruthy %}
|
|
283
|
+
|
|
284
|
+
{% iftruthy page.resolved.newsletter.headline %}
|
|
285
|
+
<h2 class="h3 fw-bold mb-3">
|
|
286
|
+
{{ page.resolved.newsletter.headline }}
|
|
287
|
+
{% iftruthy page.resolved.newsletter.headline_accent %}
|
|
288
|
+
{{ page.resolved.newsletter.headline_accent }}
|
|
289
|
+
{% endiftruthy %}
|
|
290
|
+
</h2>
|
|
291
|
+
{% endiftruthy %}
|
|
292
|
+
|
|
293
|
+
{% iftruthy page.resolved.newsletter.subheadline %}
|
|
294
|
+
<p class="lead mb-4">{{ page.resolved.newsletter.subheadline }}</p>
|
|
295
|
+
{% endiftruthy %}
|
|
296
|
+
|
|
297
|
+
<form class="row g-3 justify-content-center needs-validation" action="{{ site.url }}/email-subscription">
|
|
298
|
+
<div class="col-md-7">
|
|
299
|
+
<input type="email" name="email" class="form-control form-control-lg" placeholder="{% iftruthy page.resolved.newsletter.form.placeholder %}{{ page.resolved.newsletter.form.placeholder }}{% endiftruthy %}" autocomplete="email" required>
|
|
283
300
|
</div>
|
|
284
|
-
<div class="col-auto">
|
|
285
|
-
<button type="submit" class="btn btn-
|
|
301
|
+
<div class="col-md-auto">
|
|
302
|
+
<button type="submit" class="btn btn-light btn-lg px-4">{% iftruthy page.resolved.newsletter.button.text %}{{ page.resolved.newsletter.button.text }}{% endiftruthy %}</button>
|
|
286
303
|
</div>
|
|
287
304
|
</form>
|
|
288
305
|
</div>
|