ultimate-jekyll-manager 0.0.118 → 0.0.119

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 (34) hide show
  1. package/CLAUDE.md +307 -21
  2. package/dist/assets/js/core/auth.js +5 -4
  3. package/dist/assets/js/core/cookieconsent.js +24 -17
  4. package/dist/assets/js/core/exit-popup.js +15 -12
  5. package/dist/assets/js/core/social-sharing.js +8 -4
  6. package/dist/assets/js/libs/auth/pages.js +14 -13
  7. package/dist/assets/js/libs/dev.js +192 -129
  8. package/dist/assets/js/pages/account/index.js +3 -2
  9. package/dist/assets/js/pages/account/sections/delete.js +83 -84
  10. package/dist/assets/js/pages/account/sections/security.js +4 -1
  11. package/dist/assets/js/pages/admin/notifications/new/index.js +17 -10
  12. package/dist/assets/js/pages/blog/index.js +7 -5
  13. package/dist/assets/js/pages/contact/index.js +6 -33
  14. package/dist/assets/js/pages/download/index.js +3 -2
  15. package/dist/assets/js/pages/pricing/index.js +5 -2
  16. package/dist/assets/themes/classy/css/components/_cards.scss +2 -2
  17. package/dist/defaults/_.env +6 -0
  18. package/dist/defaults/_.gitignore +7 -1
  19. package/dist/defaults/dist/_includes/core/body.html +5 -13
  20. package/dist/defaults/dist/_includes/core/foot.html +1 -0
  21. package/dist/defaults/dist/_includes/themes/classy/frontend/sections/nav.html +51 -36
  22. package/dist/defaults/dist/_layouts/blueprint/admin/notifications/new.html +13 -2
  23. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/about.html +84 -42
  24. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/account/index.html +26 -21
  25. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/blog/index.html +72 -58
  26. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/blog/post.html +46 -29
  27. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/contact.html +36 -16
  28. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/download.html +111 -73
  29. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/index.html +111 -56
  30. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/pricing.html +127 -81
  31. package/dist/defaults/dist/pages/test/libraries/lazy-loading.html +1 -1
  32. package/dist/gulp/tasks/defaults.js +210 -1
  33. package/firebase-debug.log +378 -0
  34. package/package.json +2 -2
@@ -55,8 +55,6 @@ function setupFormScrolling() {
55
55
  const href = link.getAttribute('href');
56
56
 
57
57
  if (href === '#chat') {
58
- trackChatClick();
59
-
60
58
  // Open chat window
61
59
  try {
62
60
  chatsy.open();
@@ -65,8 +63,6 @@ function setupFormScrolling() {
65
63
  webManager.utilities().showNotification('Chat is currently unavailable. Please try again later.', 'danger');
66
64
  }
67
65
  } else if (href === '#form') {
68
- trackFormClick();
69
-
70
66
  // Find the form section by ID
71
67
  const $formSection = document.getElementById('form');
72
68
 
@@ -193,31 +189,6 @@ function handleFieldChange(event) {
193
189
  }
194
190
  }
195
191
 
196
- // Tracking functions
197
- function trackChatClick() {
198
- // gtag('event', 'contact_method_click', {
199
- // method: 'chat'
200
- // });
201
- // fbq('track', 'Contact', {
202
- // content_name: 'Chat'
203
- // });
204
- // ttq.track('ClickButton', {
205
- // content_name: 'Chat'
206
- // });
207
- }
208
-
209
- function trackFormClick() {
210
- // gtag('event', 'contact_method_click', {
211
- // method: 'form'
212
- // });
213
- // fbq('track', 'Contact', {
214
- // content_name: 'Form'
215
- // });
216
- // ttq.track('ClickButton', {
217
- // content_name: 'Contact Form'
218
- // });
219
- }
220
-
221
192
  function trackContactSpam() {
222
193
  gtag('event', 'contact_form_spam', {
223
194
  content_type: 'honeypot'
@@ -225,15 +196,17 @@ function trackContactSpam() {
225
196
  }
226
197
 
227
198
  function trackContactFormSubmit(subject) {
228
- gtag('event', 'contact_form_submit', {
199
+ gtag('event', 'generate_lead', {
200
+ lead_source: 'contact_form',
229
201
  subject: subject
230
202
  });
231
203
  fbq('track', 'Lead', {
232
204
  content_name: 'Contact Form',
233
205
  content_category: subject
234
206
  });
235
- ttq.track('FormSubmit', {
236
- content_name: 'Contact Form',
237
- content_type: subject
207
+ ttq.track('Contact', {
208
+ content_id: 'contact-form',
209
+ content_type: 'product',
210
+ content_name: 'Contact Form'
238
211
  });
239
212
  }
@@ -174,8 +174,9 @@ function trackDownloadClick(platform, downloadName, downloadUrl) {
174
174
  });
175
175
 
176
176
  ttq.track('Download', {
177
- content_name: downloadName,
178
- content_type: platform
177
+ content_id: `download-${platform}`,
178
+ content_type: 'product',
179
+ content_name: downloadName
179
180
  });
180
181
  }
181
182
 
@@ -196,8 +196,9 @@ function trackPricingToggle(billingType) {
196
196
  content_category: billingType
197
197
  });
198
198
  ttq.track('ViewContent', {
199
- content_name: 'Pricing Toggle',
200
- content_type: billingType
199
+ content_id: 'pricing-page',
200
+ content_type: 'product',
201
+ content_name: 'Pricing Toggle'
201
202
  });
202
203
  }
203
204
 
@@ -247,6 +248,8 @@ function trackEnterpriseContact() {
247
248
  content_name: 'Enterprise Plan'
248
249
  });
249
250
  ttq.track('Contact', {
251
+ content_id: 'enterprise-plan',
252
+ content_type: 'product',
250
253
  content_name: 'Enterprise Plan'
251
254
  });
252
255
  }
@@ -11,8 +11,8 @@
11
11
  box-shadow: $classy-shadow-sm;
12
12
  position: relative;
13
13
 
14
- // Allow badges to overflow
15
- &:has(.badge) {
14
+ // Allow badges to overflow (except when overflow-hidden is explicitly set)
15
+ &:has(.badge):not(.overflow-hidden) {
16
16
  overflow: visible !important;
17
17
  }
18
18
 
@@ -0,0 +1,6 @@
1
+ # ========== Default Values ==========
2
+ # ...
3
+
4
+ # ========== Custom Values ==========
5
+ # Add your custom environment variables below this line
6
+ # ...
@@ -1,4 +1,7 @@
1
+ # ========== Default Values ==========
2
+ # macOS
1
3
  .DS_Store
4
+
2
5
  # Logs
3
6
  logs
4
7
  *.log
@@ -11,7 +14,6 @@ firebase-debug.log*
11
14
  .firebase/
12
15
 
13
16
  # Firebase config
14
-
15
17
  # Uncomment this if you'd like others to create their own Firebase project.
16
18
  # For a team working on the same Firebase project(s), it is recommended to leave
17
19
  # it commented so all members can deploy to the same project(s) in .firebaserc.
@@ -77,3 +79,7 @@ node_modules/
77
79
  /.cache
78
80
  /_legacy
79
81
  START-COMMANDS.md
82
+
83
+ # ========== Custom Values ==========
84
+ # Add your custom ignore patterns below this line
85
+ # ...
@@ -9,7 +9,7 @@
9
9
  hidden>
10
10
  <span class="main-alert-close">&times;</span>
11
11
  <div>
12
- <i class="fa-solid fa-warning fa-bounce me-2"></i>
12
+ {% uj_icon "warning", "fa-bounce me-2" %}
13
13
  You are using an outdated browser that our site <strong>DOES NOT</strong> support. Please <a href="https://www.google.com/chrome" rel="nofollow" target="_blank">click here</a> to update your browser.
14
14
  </div>
15
15
  </div>
@@ -19,11 +19,11 @@
19
19
  hidden>
20
20
  <span class="main-alert-close">&times;</span>
21
21
  <div>
22
- <i class="fa-solid fa-warning fa-bounce me-2"></i>
22
+ {% uj_icon "warning", "fa-bounce me-2" %}
23
23
  There is a <strong>problem with your payment method</strong>. To continue using <strong>{{ site.brand.name }}</strong>, please <a href="{{ site.url }}/account#billing" target="_blank">update your payment method</a>.
24
24
  </div>
25
25
  </div>
26
- <div
26
+ <!-- <div
27
27
  class="main-alert main-alert-top main-alert-fixed main-alert-sale bg-primary animation-fade-in"
28
28
  role="alert" aria-live="polite" aria-label="Flash sale"
29
29
  hidden>
@@ -33,17 +33,9 @@
33
33
  <strong>FLASH SALE!</strong>
34
34
  Save <strong>15%</strong> at checkout—today only! <a href="{{ site.url }}/pricing" target="_blank">Claim discount</a>.
35
35
  </div>
36
- </div>
36
+ </div> -->
37
37
 
38
- {%- comment -%}
39
- Icon Pre-rendering System
40
- Pages can specify which icons to pre-render in their frontmatter:
41
- prerender_icons:
42
- - name: "apple"
43
- class: "fa-3xl"
44
- - name: "android"
45
- class: "fa-2xl"
46
- {%- endcomment -%}
38
+ <!-- Prerendered Icons -->
47
39
  {%- assign icons = page.resolved.prerender_icons | default: empty -%}
48
40
  {%- iftruthy icons -%}
49
41
  <!-- Pre-rendered Icon Templates -->
@@ -69,6 +69,7 @@
69
69
  buildTime: {{ site.uj.cache_breaker }},
70
70
  brand: {{ page.resolved.brand | jsonify }},
71
71
  advertising: {{ page.resolved.advertising | jsonify }},
72
+ tracking: {{ page.resolved.tracking | jsonify }},
72
73
  {% for item in page.resolved.web_manager %}
73
74
  {{ item[0] | jsonify }}: {{ item[1] | jsonify }},
74
75
  {% endfor %}
@@ -130,18 +130,23 @@
130
130
  <span>{{ child.label }}</span>
131
131
  </span>
132
132
  {% endcapture %}
133
- <li>
134
- {% iftruthy child.href %}
135
- <a class="{{ child_class }}" href="{{ child.href }}" {{ child_attributes }}>
136
- {{ child_content }}
137
- </a>
138
- {% endiftruthy %}
139
- {% iffalsy child.href %}
140
- <button class="{{ child_class }}" type="button" {{ child_attributes }}>
141
- {{ child_content }}
142
- </button>
143
- {% endiffalsy %}
144
- </li>
133
+
134
+ {% if child.divider %}
135
+ <li><hr class="dropdown-divider" {{ child_attributes }}/></li>
136
+ {% else %}
137
+ <li>
138
+ {% iftruthy child.href %}
139
+ <a class="{{ child_class }}" href="{{ child.href }}" {{ child_attributes }}>
140
+ {{ child_content }}
141
+ </a>
142
+ {% endiftruthy %}
143
+ {% iffalsy child.href %}
144
+ <button class="{{ child_class }}" type="button" {{ child_attributes }}>
145
+ {{ child_content }}
146
+ </button>
147
+ {% endiffalsy %}
148
+ </li>
149
+ {% endif %}
145
150
  {% endfor %}
146
151
  </ul>
147
152
  </li>
@@ -272,18 +277,23 @@
272
277
  <span>{{ child.label }}</span>
273
278
  </span>
274
279
  {% endcapture %}
275
- <li>
276
- {% iftruthy child.href %}
277
- <a class="{{ child_class }}" href="{{ child.href }}" {{ child_attributes }}>
278
- {{ child_content }}
279
- </a>
280
- {% endiftruthy %}
281
- {% iffalsy child.href %}
282
- <button class="{{ child_class }}" type="button" {{ child_attributes }}>
283
- {{ child_content }}
284
- </button>
285
- {% endiffalsy %}
286
- </li>
280
+
281
+ {% if child.divider %}
282
+ <li><hr class="dropdown-divider" {{ child_attributes }}/></li>
283
+ {% else %}
284
+ <li>
285
+ {% iftruthy child.href %}
286
+ <a class="{{ child_class }}" href="{{ child.href }}" {{ child_attributes }}>
287
+ {{ child_content }}
288
+ </a>
289
+ {% endiftruthy %}
290
+ {% iffalsy child.href %}
291
+ <button class="{{ child_class }}" type="button" {{ child_attributes }}>
292
+ {{ child_content }}
293
+ </button>
294
+ {% endiffalsy %}
295
+ </li>
296
+ {% endif %}
287
297
  {% endfor %}
288
298
  </ul>
289
299
  </div>
@@ -343,18 +353,23 @@
343
353
  <span>{{ child.label }}</span>
344
354
  </span>
345
355
  {% endcapture %}
346
- <li>
347
- {% iftruthy child.href %}
348
- <a class="{{ child_class }}" href="{{ child.href }}" {{ child_attributes }}>
349
- {{ child_content }}
350
- </a>
351
- {% endiftruthy %}
352
- {% iffalsy child.href %}
353
- <button class="{{ child_class }}" type="button" {{ child_attributes }}>
354
- {{ child_content }}
355
- </button>
356
- {% endiffalsy %}
357
- </li>
356
+
357
+ {% if child.divider %}
358
+ <li><hr class="dropdown-divider" {{ child_attributes }}/></li>
359
+ {% else %}
360
+ <li>
361
+ {% iftruthy child.href %}
362
+ <a class="{{ child_class }}" href="{{ child.href }}" {{ child_attributes }}>
363
+ {{ child_content }}
364
+ </a>
365
+ {% endiftruthy %}
366
+ {% iffalsy child.href %}
367
+ <button class="{{ child_class }}" type="button" {{ child_attributes }}>
368
+ {{ child_content }}
369
+ </button>
370
+ {% endiffalsy %}
371
+ </li>
372
+ {% endif %}
358
373
  {% endfor %}
359
374
  </ul>
360
375
  </div>
@@ -7,15 +7,26 @@ meta:
7
7
  title: "Create Notification - Admin"
8
8
  description: "Create and send a new notification"
9
9
  breadcrumb: "Create Notification"
10
+
11
+ ### ICON PRE-RENDERING ###
12
+ prerender_icons:
13
+ - name: "mobile"
14
+ class: "fa-sm me-1"
15
+ - name: "envelope"
16
+ class: "fa-sm me-1"
17
+ - name: "comment-sms"
18
+ class: "fa-sm me-1"
19
+ - name: "bell"
20
+ class: "fa-sm me-1"
10
21
  ---
11
22
 
12
23
  <!-- Success/Error Alerts -->
13
24
  <div class="notification-success-alert alert alert-success d-none" role="alert">
14
- <i class="bi bi-check-circle"></i> <span class="alert-message">Notification sent successfully!</span>
25
+ {% uj_icon "circle-check", "fa-sm" %} <span class="alert-message">Notification sent successfully!</span>
15
26
  </div>
16
27
 
17
28
  <div class="notification-error-alert alert alert-danger d-none" role="alert">
18
- <i class="bi bi-exclamation-triangle"></i> <span class="alert-message">An error occurred</span>
29
+ {% uj_icon "triangle-exclamation", "fa-sm" %} <span class="alert-message">An error occurred</span>
19
30
  </div>
20
31
 
21
32
  <!-- Notification Creation Form -->
@@ -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: "Us"
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 Mission"
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 Vision"
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: "{% uj_icon 'clock-rotate-left' %} History"
25
+ superheadline:
26
+ icon: "clock-rotate-left"
27
+ text: "History"
26
28
  headline: "Follow our"
27
- headline_accent: "Journey"
29
+ headline_accent: "journey"
28
30
  subheadline: "From humble beginnings to industry leaders"
29
31
  items:
30
32
  - year: "2017"
31
- title: "The Beginning"
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 Growth"
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 Expansion"
39
+ title: "Global expansion"
38
40
  description: "Reached customers in over 100 countries and opened international offices"
39
41
  - year: "2023"
40
- title: "Innovation Award"
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 Future"
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: "{% uj_icon 'chart-line' %} Numbers"
50
+ superheadline:
51
+ icon: "chart-line"
52
+ text: "Numbers"
49
53
  headline: "Measuring our"
50
- headline_accent: "Impact"
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: "{% uj_icon 'compass' %} Principles"
69
- headline: "Our Core"
70
- headline_accent: "Values"
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 First"
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 Obsessed"
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 Excellence"
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 Culture"
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: "{% uj_icon 'handshake' %} People"
89
- headline: "Meet Our Amazing"
90
- headline_accent: "Team"
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">{{ page.resolved.story.superheadline }}</span>
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">{{ page.resolved.stats.superheadline }}</span>
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">{{ page.resolved.values.superheadline }}</span>
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="rounded-4 p-5 bg-primary bg-gradient text-light text-center" data-lazy="@class animation-slide-up">
273
- <div class="row justify-content-center">
274
- <div class="col-lg-8">
275
- {% iftruthy page.resolved.team_cta.superheadline %}
276
- <span class="badge bg-white bg-opacity-25 text-light p-2 mb-1 fw-semibold small">{{ page.resolved.team_cta.superheadline }}</span>
277
- {% endiftruthy %}
278
- <h2 class="h2 mb-2">
279
- {{ page.resolved.team_cta.headline }} <span class="text-accent">{{ page.resolved.team_cta.headline_accent }}</span>
280
- </h2>
281
- {% iftruthy page.resolved.team_cta.subheadline %}
282
- <p class="fs-5 mb-4 opacity-90">
283
- {{ page.resolved.team_cta.subheadline }}
284
- </p>
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
- <a href="{{ page.resolved.team_cta.button.href }}" class="btn btn-light btn-lg px-5 py-3">
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
- <strong>{{ method.name }}</strong>
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
- <h5 class="card-title">Active Sessions</h5>
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
- <h5 class="card-title">Your API Key</h5>
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-start" role="alert">
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-lg" %}
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>