ultimate-jekyll-manager 1.3.12 → 1.4.0

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 (71) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/CLAUDE.md +2 -2
  3. package/README.md +4 -0
  4. package/dist/assets/js/core/auth.js +14 -0
  5. package/dist/assets/js/libs/auth.js +62 -2
  6. package/dist/assets/js/libs/form-manager.js +10 -0
  7. package/dist/assets/themes/classy/css/components/_forms.scss +25 -1
  8. package/dist/defaults/dist/_alternatives/example-competitor.md +2 -2
  9. package/dist/defaults/dist/_includes/admin/sections/sidebar.json +1 -1
  10. package/dist/defaults/dist/_layouts/blueprint/admin/calendar/index.html +4 -4
  11. package/dist/defaults/dist/_layouts/blueprint/admin/firebase/index.html +2 -2
  12. package/dist/defaults/dist/_layouts/blueprint/admin/users/index.html +5 -5
  13. package/dist/defaults/dist/_layouts/blueprint/admin/users/new.html +3 -3
  14. package/dist/defaults/dist/_layouts/blueprint/legal/cookies.md +6 -6
  15. package/dist/defaults/dist/_layouts/blueprint/legal/terms.md +1 -1
  16. package/dist/defaults/dist/_layouts/blueprint/portal/email-preferences.html +2 -2
  17. package/dist/defaults/dist/_layouts/themes/classy/backend/pages/dashboard/index.html +5 -5
  18. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/404.html +2 -2
  19. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/about.html +3 -3
  20. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/account/index.html +22 -22
  21. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/alternatives/alternative.html +11 -11
  22. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/alternatives/index.html +10 -10
  23. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/app.html +4 -4
  24. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/oauth2.html +3 -3
  25. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/reset.html +3 -3
  26. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/signin.html +10 -9
  27. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/signup.html +8 -8
  28. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/blog/categories/category.html +2 -2
  29. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/blog/categories/index.html +1 -1
  30. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/blog/tags/index.html +1 -1
  31. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/blog/tags/tag.html +2 -2
  32. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/contact.html +13 -13
  33. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/download.html +13 -13
  34. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/extension/index.html +7 -7
  35. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/extension/installed.html +1 -1
  36. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/feedback.html +3 -3
  37. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/index.html +29 -29
  38. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/payment/checkout.html +16 -16
  39. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/payment/confirmation.html +5 -5
  40. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/portal/email-preferences.html +4 -4
  41. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/pricing.html +40 -20
  42. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/status.html +2 -2
  43. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/team/index.html +10 -10
  44. package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/team/member.html +1 -1
  45. package/dist/defaults/dist/pages/test/account/dashboard.html +1 -1
  46. package/dist/defaults/dist/pages/test/components/hero-demo-custom.html +2 -2
  47. package/dist/defaults/dist/pages/test/components/hero-demo-form.html +4 -4
  48. package/dist/defaults/dist/pages/test/components/hero-demo-input.html +3 -3
  49. package/dist/defaults/dist/pages/test/components/hero-demo-side.html +2 -2
  50. package/dist/defaults/dist/pages/test/components/hero-demo-video.html +2 -2
  51. package/dist/defaults/dist/pages/test/index.md +2 -2
  52. package/dist/defaults/dist/pages/test/libraries/appearance.html +6 -6
  53. package/dist/defaults/dist/pages/test/libraries/bootstrap.html +99 -99
  54. package/dist/defaults/dist/pages/test/libraries/cover.html +4 -4
  55. package/dist/defaults/dist/pages/test/libraries/error.html +5 -5
  56. package/dist/defaults/dist/pages/test/libraries/firestore.html +2 -2
  57. package/dist/defaults/dist/pages/test/libraries/form-manager.html +9 -9
  58. package/dist/defaults/dist/pages/test/libraries/lazy-loading.html +9 -9
  59. package/dist/defaults/dist/pages/test/redirect/external.md +2 -2
  60. package/dist/defaults/dist/pages/test/redirect/internal.md +2 -2
  61. package/dist/defaults/dist/pages/test/translation/index.md +3 -3
  62. package/dist/defaults/src/_includes/backend/sections/sidebar.json +3 -3
  63. package/dist/defaults/src/_includes/frontend/sections/footer.json +5 -5
  64. package/dist/defaults/src/_includes/frontend/sections/nav.json +1 -1
  65. package/dist/defaults/src/_includes/global/sections/account.json +2 -2
  66. package/dist/gulp/main.js +5 -0
  67. package/dist/gulp/tasks/imagemin.js +160 -79
  68. package/dist/utils/attach-log-file.js +78 -0
  69. package/docs/images.md +27 -0
  70. package/docs/local-development.md +11 -0
  71. package/package.json +1 -1
@@ -7,9 +7,9 @@ permalink: /test/libraries/cover
7
7
  sitemap:
8
8
  include: false
9
9
  meta:
10
- title: "Cover Page Example"
10
+ title: "Cover page example"
11
11
  description: "Example of a centered cover page layout"
12
- breadcrumb: "Cover Page"
12
+ breadcrumb: "Cover page"
13
13
  index: false
14
14
  ---
15
15
 
@@ -17,7 +17,7 @@ meta:
17
17
  <section class="col-12 col-md-8 col-lg-6 col-xl-5 mw-sm">
18
18
  <div class="card shadow">
19
19
  <div class="card-body p-4">
20
- <h2 class="text-center mb-4">Welcome Back</h2>
20
+ <h2 class="text-center mb-4">Welcome back</h2>
21
21
  <form>
22
22
  <div class="mb-3">
23
23
  <label for="emailInput" class="form-label">Email address</label>
@@ -33,7 +33,7 @@ meta:
33
33
  Remember me
34
34
  </label>
35
35
  </div>
36
- <button type="submit" class="btn btn-primary w-100">Sign In</button>
36
+ <button type="submit" class="btn btn-primary w-100">Sign in</button>
37
37
  <div class="text-center mt-3">
38
38
  <small class="text-muted">
39
39
  Don't have an account? <a href="#">Sign up</a>
@@ -7,9 +7,9 @@ permalink: /test/libraries/error
7
7
  sitemap:
8
8
  include: false
9
9
  meta:
10
- title: "Error Test Page"
10
+ title: "Error test page"
11
11
  description: "Test page for demonstrating error handling"
12
- breadcrumb: "Error Test"
12
+ breadcrumb: "Error test"
13
13
  index: false
14
14
  ---
15
15
 
@@ -17,11 +17,11 @@ meta:
17
17
  <div class="container">
18
18
  <div class="row">
19
19
  <div class="col-lg-8 mx-auto">
20
- <h1 class="h2 mb-4">Error Test Page</h1>
20
+ <h1 class="h2 mb-4">Error test page</h1>
21
21
  <p class="lead mb-5">This page demonstrates different error handling scenarios.</p>
22
22
 
23
- <!-- Trigger Auth Signin Error -->
24
- <button id="trigger-error" class="btn btn-danger">Trigger Auth Signin Error</button>
23
+ <!-- Trigger auth signin error -->
24
+ <button id="trigger-error" class="btn btn-danger">Trigger auth signin error</button>
25
25
  <script>
26
26
  document.getElementById('trigger-error').addEventListener('click', function() {
27
27
  Manager.webManager.auth().signInWithEmailAndPassword('invalid@example.com', 'wrongpassword')
@@ -9,7 +9,7 @@ sitemap:
9
9
  <head>
10
10
  <meta charset="utf-8">
11
11
  <meta name="viewport" content="width=device-width, initial-scale=1">
12
- <title>Firestore Version Test</title>
12
+ <title>Firestore version test</title>
13
13
  <style>
14
14
  * { margin: 0; padding: 0; box-sizing: border-box; }
15
15
  body { font-family: monospace; padding: 16px; font-size: 13px; background: #111; color: #eee; }
@@ -192,7 +192,7 @@ sitemap:
192
192
  document.getElementById('status').textContent = 'All tests complete.';
193
193
  const $summary = document.getElementById('summary');
194
194
  $summary.style.display = 'block';
195
- $summary.innerHTML = '<h2 style="margin-bottom:8px">Results Summary</h2>' +
195
+ $summary.innerHTML = '<h2 style="margin-bottom:8px">Results summary</h2>' +
196
196
  Object.entries(results).map(([k, v]) =>
197
197
  `<div style="color:${v === 'PASS' ? '#0f0' : '#f00'}">${v}: ${k}</div>`
198
198
  ).join('');
@@ -46,7 +46,7 @@ meta:
46
46
  </div>
47
47
  <div class="col-md-6">
48
48
  <div class="mb-3">
49
- <label for="main-outcome" class="form-label">Simulate Outcome</label>
49
+ <label for="main-outcome" class="form-label">Simulate outcome</label>
50
50
  <select class="form-select" id="main-outcome" name="settings.outcome" disabled>
51
51
  <option value="success">Success</option>
52
52
  <option value="error">Error (throw Error)</option>
@@ -79,7 +79,7 @@ meta:
79
79
  </div>
80
80
  <div class="form-check">
81
81
  <input type="checkbox" class="form-check-input" id="feat-beta" name="preferences.features" value="beta" disabled>
82
- <label class="form-check-label" for="feat-beta">Beta Features</label>
82
+ <label class="form-check-label" for="feat-beta">Beta features</label>
83
83
  </div>
84
84
  </div>
85
85
  <div class="mb-3 form-check">
@@ -97,7 +97,7 @@ meta:
97
97
  <div class="d-flex gap-2">
98
98
  <button type="submit" data-action="save" class="btn btn-primary" disabled>Save</button>
99
99
  <button type="submit" data-action="draft" class="btn btn-outline-secondary" disabled>Save as Draft</button>
100
- <button type="button" id="main-set-data" class="btn btn-outline-info" disabled>Set Data</button>
100
+ <button type="button" id="main-set-data" class="btn btn-outline-info" disabled>Set data</button>
101
101
  </div>
102
102
  </form>
103
103
  <div class="mt-3 d-flex gap-3">
@@ -119,7 +119,7 @@ meta:
119
119
  <h5 class="mb-0">Test 2: Validation</h5>
120
120
  <small class="text-muted">HTML5 + custom validation event</small>
121
121
  </div>
122
- <button type="button" id="validation-set-correct" class="btn btn-sm btn-outline-success">Set Correct</button>
122
+ <button type="button" id="validation-set-correct" class="btn btn-sm btn-outline-success">Set correct</button>
123
123
  </div>
124
124
  <div class="card-body">
125
125
  <form id="test-form-validation">
@@ -161,7 +161,7 @@ meta:
161
161
  <label for="contact-message" class="form-label">Message</label>
162
162
  <textarea class="form-control" id="contact-message" name="message" rows="2" disabled>Hello!</textarea>
163
163
  </div>
164
- <button type="submit" class="btn btn-primary" disabled>Send Message</button>
164
+ <button type="submit" class="btn btn-primary" disabled>Send message</button>
165
165
  </form>
166
166
  <div class="mt-2">
167
167
  <small class="text-muted" id="contact-status">Status: ready</small>
@@ -207,7 +207,7 @@ meta:
207
207
  <h6 class="text-muted mb-3">Global Settings <span class="badge bg-secondary">Always included</span></h6>
208
208
  <div class="mb-3">
209
209
  <label for="groups-name" class="form-label">settings.name</label>
210
- <input type="text" class="form-control" id="groups-name" name="settings.name" value="My Project" disabled>
210
+ <input type="text" class="form-control" id="groups-name" name="settings.name" value="My project" disabled>
211
211
  </div>
212
212
  <div class="mb-3">
213
213
  <label for="groups-theme" class="form-label">settings.theme</label>
@@ -227,7 +227,7 @@ meta:
227
227
  </div>
228
228
  <div class="mb-3">
229
229
  <label for="groups-a-title" class="form-label">options.title</label>
230
- <input type="text" class="form-control" id="groups-a-title" name="options.title" data-input-group="a" value="My Link" disabled>
230
+ <input type="text" class="form-control" id="groups-a-title" name="options.title" data-input-group="a" value="My link" disabled>
231
231
  </div>
232
232
  </div>
233
233
 
@@ -251,7 +251,7 @@ meta:
251
251
  <button type="button" class="btn btn-outline-primary btn-sm groups-filter-btn" data-group="a">Group A</button>
252
252
  <button type="button" class="btn btn-outline-success btn-sm groups-filter-btn" data-group="b">Group B</button>
253
253
  <button type="button" class="btn btn-outline-info btn-sm groups-filter-btn" data-group='["a", "b"]'>Both (a, b)</button>
254
- <button type="submit" class="btn btn-primary btn-sm ms-auto" disabled>Get Data</button>
254
+ <button type="submit" class="btn btn-primary btn-sm ms-auto" disabled>Get data</button>
255
255
  </div>
256
256
  </form>
257
257
  <div class="mt-3 d-flex gap-3">
@@ -259,7 +259,7 @@ meta:
259
259
  <small class="text-muted" id="groups-filter">Filter: none (all fields)</small>
260
260
  </div>
261
261
  <div class="mt-3">
262
- <pre id="groups-output" class="bg-body-secondary p-2 rounded small" style="max-height: 200px; overflow: auto;">Click "Get Data" to see filtered results...</pre>
262
+ <pre id="groups-output" class="bg-body-secondary p-2 rounded small" style="max-height: 200px; overflow: auto;">Click "Get data" to see filtered results...</pre>
263
263
  </div>
264
264
  </div>
265
265
  </div>
@@ -7,9 +7,9 @@ permalink: /test/libraries/lazy-loading
7
7
  sitemap:
8
8
  include: false
9
9
  meta:
10
- title: "Lazy Loading Test Page"
10
+ title: "Lazy loading test page"
11
11
  description: "Test page for demonstrating lazy loading functionality"
12
- breadcrumb: "Lazy Loading Test"
12
+ breadcrumb: "Lazy loading test"
13
13
  index: false
14
14
  ---
15
15
 
@@ -17,7 +17,7 @@ meta:
17
17
  <div class="container">
18
18
  <div class="row">
19
19
  <div class="col-lg-8 mx-auto">
20
- <h1 class="h2 mb-4">Lazy Loading Test Page</h1>
20
+ <h1 class="h2 mb-4">Lazy loading test page</h1>
21
21
  <p class="lead mb-5">This page demonstrates lazy loading of images, iframes, and other media. Scroll down to see content load as it comes into view.</p>
22
22
 
23
23
  <!-- Instructions -->
@@ -160,21 +160,21 @@ meta:
160
160
  <div class="col-md-4">
161
161
  <div data-lazy="@class animation-slide-up"
162
162
  class="p-4 rounded border">
163
- <h5>Fade In Left</h5>
163
+ <h5>Fade in left</h5>
164
164
  <p>This box will fade in from the left when visible</p>
165
165
  </div>
166
166
  </div>
167
167
  <div class="col-md-4">
168
168
  <div data-lazy="@class animation-popup-long"
169
169
  class="p-4 rounded border">
170
- <h5>Fade In Up</h5>
170
+ <h5>Fade in up</h5>
171
171
  <p>This box will fade in from below when visible</p>
172
172
  </div>
173
173
  </div>
174
174
  <div class="col-md-4">
175
175
  <div data-lazy="@class animation-slide-up"
176
176
  class="p-4 rounded border">
177
- <h5>Fade In Right</h5>
177
+ <h5>Fade in right</h5>
178
178
  <p>This box will fade in from the right when visible</p>
179
179
  </div>
180
180
  </div>
@@ -183,7 +183,7 @@ meta:
183
183
  <div class="mt-4">
184
184
  <div data-lazy="@class bg-primary text-white"
185
185
  class="p-4 rounded">
186
- <h5>Dynamic Styling</h5>
186
+ <h5>Dynamic styling</h5>
187
187
  <p>This box will get Bootstrap primary background and white text when visible</p>
188
188
  </div>
189
189
  </div>
@@ -315,7 +315,7 @@ meta:
315
315
  style="min-height: 100px;">
316
316
  </div>
317
317
 
318
- <div data-lazy="@html <div class='card'><div class='card-body'><h5 class='card-title'>Dynamic Card</h5><p class='card-text'>This entire card was lazy loaded as HTML content.</p><a href='#' class='btn btn-primary btn-sm'>Example Button</a></div></div>"
318
+ <div data-lazy="@html <div class='card'><div class='card-body'><h5 class='card-title'>Dynamic card</h5><p class='card-text'>This entire card was lazy loaded as HTML content.</p><a href='#' class='btn btn-primary btn-sm'>Example button</a></div></div>"
319
319
  class="mb-4">
320
320
  </div>
321
321
  </section>
@@ -376,7 +376,7 @@ meta:
376
376
  <h2 class="h3 mb-3">14. Dynamic Content Test</h2>
377
377
  <p>Click the button below to dynamically add new lazy-loaded images to test MutationObserver:</p>
378
378
 
379
- <button id="add-dynamic-images" class="btn btn-primary mb-4">Add Dynamic Images</button>
379
+ <button id="add-dynamic-images" class="btn btn-primary mb-4">Add dynamic images</button>
380
380
 
381
381
  <div id="dynamic-content-container" class="row g-3">
382
382
  <!-- Dynamic images will be added here -->
@@ -7,9 +7,9 @@ permalink: /test/redirect/external
7
7
  sitemap:
8
8
  include: false
9
9
  meta:
10
- title: "External Redirect Test Page"
10
+ title: "External redirect test page"
11
11
  description: "This is a test External Redirect page for the Ultimate Jekyll Manager."
12
- breadcrumb: "External Redirect Test Page"
12
+ breadcrumb: "External redirect test page"
13
13
  index: false
14
14
 
15
15
  ### REDIRECT PAGES ###
@@ -7,9 +7,9 @@ permalink: /test/redirect/internal
7
7
  sitemap:
8
8
  include: false
9
9
  meta:
10
- title: "Internal Redirect Test Page"
10
+ title: "Internal redirect test page"
11
11
  description: "This is a test Internal Redirect page for the Ultimate Jekyll Manager."
12
- breadcrumb: "Internal Redirect Test Page"
12
+ breadcrumb: "Internal redirect test page"
13
13
  index: false
14
14
 
15
15
  ### REDIRECT PAGES ###
@@ -7,9 +7,9 @@ permalink: /test/translation
7
7
  sitemap:
8
8
  include: false
9
9
  meta:
10
- title: "Test Translation Page"
10
+ title: "Test translation page"
11
11
  description: "This is a test Translation page for the Ultimate Jekyll Manager."
12
- breadcrumb: "Test Translation Page"
12
+ breadcrumb: "Test translation page"
13
13
  index: false
14
14
 
15
15
  ### WEB MANAGER CONFIG ###
@@ -47,7 +47,7 @@ By vising {{ brand }}, you agree to comply.
47
47
  ## This is an input
48
48
  <div class="form-group">
49
49
  <label for="test-email" class="visually-hidden">Your email</label>
50
- <input type="email" id="test-email" name="email" class="form-control" placeholder="Your Email">
50
+ <input type="email" id="test-email" name="email" class="form-control" placeholder="Your email">
51
51
  </div>
52
52
 
53
53
  ## This button has a title
@@ -12,7 +12,7 @@
12
12
  },
13
13
  {
14
14
  header: true,
15
- label: 'Main Menu'
15
+ label: 'Main menu'
16
16
  },
17
17
  // {
18
18
  // label: 'Analytics',
@@ -25,12 +25,12 @@
25
25
  icon: 'folder',
26
26
  dropdown: [
27
27
  {
28
- label: 'All Items',
28
+ label: 'All items',
29
29
  href: '/dashboard/items',
30
30
  icon: 'list'
31
31
  },
32
32
  {
33
- label: 'Create New',
33
+ label: 'Create new',
34
34
  href: '/dashboard/items/new',
35
35
  icon: 'plus'
36
36
  }
@@ -11,7 +11,7 @@
11
11
  href: null,
12
12
  links: [
13
13
  {
14
- label: 'About Us',
14
+ label: 'About us',
15
15
  href: '/about',
16
16
  },
17
17
  {
@@ -19,7 +19,7 @@
19
19
  href: '/pricing',
20
20
  },
21
21
  {
22
- label: 'Contact Us',
22
+ label: 'Contact us',
23
23
  href: '/contact',
24
24
  },
25
25
  {
@@ -51,15 +51,15 @@
51
51
  href: null,
52
52
  links: [
53
53
  {
54
- label: 'Sign Up',
54
+ label: 'Sign up',
55
55
  href: '/signup',
56
56
  },
57
57
  {
58
- label: 'Sign In',
58
+ label: 'Sign in',
59
59
  href: '/signin',
60
60
  },
61
61
  {
62
- label: 'My Account',
62
+ label: 'My account',
63
63
  href: '/account',
64
64
  },
65
65
  ],
@@ -41,7 +41,7 @@
41
41
  ],
42
42
  actions: [
43
43
  {
44
- label: 'Sign Up',
44
+ label: 'Sign up',
45
45
  href: '/signup',
46
46
  class: 'btn-adaptive',
47
47
  icon: 'user-plus',
@@ -17,7 +17,7 @@
17
17
  ]
18
18
  },
19
19
  {
20
- label: 'Admin Panel',
20
+ label: 'Admin panel',
21
21
  href: '/admin/dashboard',
22
22
  icon: 'shield-halved',
23
23
  attributes: [
@@ -28,7 +28,7 @@
28
28
  divider: true,
29
29
  },
30
30
  {
31
- label: 'Sign Out',
31
+ label: 'Sign out',
32
32
  icon: 'arrow-right-from-bracket',
33
33
  class: 'auth-signout-btn text-danger'
34
34
  }
package/dist/gulp/main.js CHANGED
@@ -1,11 +1,16 @@
1
1
  // Libraries
2
2
  const Manager = new (require('../build.js'));
3
+ const attachLogFile = require('../utils/attach-log-file.js');
3
4
  const logger = Manager.logger('main');
4
5
  const argv = Manager.getArguments();
5
6
  const { series, parallel } = require('gulp');
6
7
  const path = require('path');
7
8
  const glob = require('glob').globSync;
8
9
 
10
+ // Tee stdout/stderr to logs/<name>.log in the consumer project. Skipped on UJ_IS_SERVER.
11
+ // build.log for production builds (UJ_BUILD_MODE=true), dev.log for everything else.
12
+ attachLogFile(Manager.isBuildMode() ? 'build' : 'dev');
13
+
9
14
  // Load package
10
15
  const package = Manager.getPackage('main');
11
16
  const project = Manager.getPackage('project');