ultimate-jekyll-manager 0.0.131 → 0.0.132
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 +19 -0
- package/README.md +17 -0
- package/dist/assets/js/libs/auth.js +23 -5
- package/dist/assets/js/libs/form-manager.js +6 -0
- package/dist/assets/themes/classy/css/layout/_navigation.scss +2 -1
- package/dist/commands/migrate.js +57 -0
- package/dist/config/_config_default.yml +1 -1
- package/dist/config/_config_development.yml +3 -2
- package/dist/defaults/dist/_includes/core/foot.html +1 -1
- package/dist/defaults/dist/_includes/themes/classy/frontend/sections/nav.html +5 -5
- package/dist/defaults/dist/_layouts/core/root.html +5 -0
- package/dist/defaults/dist/_layouts/modules/utilities/redirect.html +1 -1
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/account/index.html +6 -6
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/auth/reset.html +1 -1
- 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/index.html +1 -1
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/pricing.html +4 -3
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/team/index.html +8 -26
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/team/member.html +3 -1
- package/dist/defaults/dist/_team/alex-raeburn.md +11 -5
- package/dist/defaults/dist/_team/alfred-caufy.md +11 -6
- package/dist/defaults/dist/_team/ian-wiedenman.md +15 -5
- package/dist/defaults/dist/_team/james-oconnor.md +2 -2
- package/dist/defaults/dist/_team/marcus-johnson.md +4 -4
- package/dist/defaults/dist/_team/priya-sharma.md +3 -3
- package/dist/defaults/dist/_team/rare-ivy.md +5 -5
- package/dist/defaults/dist/_team/sarah-rodriguez.md +6 -3
- package/dist/defaults/dist/pages/test/libraries/form-manager.html +23 -23
- package/dist/defaults/src/assets/images/team/alex-raeburn/profile.jpg +0 -0
- package/dist/defaults/src/assets/images/team/alfred-caufy/profile.jpg +0 -0
- package/dist/defaults/src/assets/images/team/christina-hill/profile.jpg +0 -0
- package/dist/gulp/tasks/jekyll.js +2 -0
- package/dist/gulp/tasks/serve.js +56 -1
- package/firebase-debug.log +364 -0
- package/package.json +2 -2
- package/dist/defaults/src/assets/images/.gitkeep +0 -0
|
@@ -9,7 +9,7 @@ member:
|
|
|
9
9
|
id: james-oconnor
|
|
10
10
|
name: "James O'Connor"
|
|
11
11
|
position: "Sales Lead"
|
|
12
|
-
description: "James leads our sales efforts with enthusiasm and a consultative approach
|
|
12
|
+
description: "James leads our sales efforts with enthusiasm and a consultative approach to understanding customer needs."
|
|
13
13
|
location: "Boston, MA"
|
|
14
14
|
skills:
|
|
15
15
|
- "B2B Sales"
|
|
@@ -25,7 +25,7 @@ member:
|
|
|
25
25
|
links:
|
|
26
26
|
- id: "linkedin"
|
|
27
27
|
title: "LinkedIn"
|
|
28
|
-
url: "https://www.linkedin.com/in/
|
|
28
|
+
url: "https://www.linkedin.com/in/james-oconnor"
|
|
29
29
|
---
|
|
30
30
|
|
|
31
31
|
Hey! I'm James.
|
|
@@ -9,7 +9,7 @@ member:
|
|
|
9
9
|
id: marcus-johnson
|
|
10
10
|
name: "Marcus Johnson"
|
|
11
11
|
position: "Product Designer"
|
|
12
|
-
description: "Marcus is our lead Product Designer
|
|
12
|
+
description: "Marcus is our lead Product Designer who crafts intuitive user experiences that delight our customers."
|
|
13
13
|
location: "Austin, TX"
|
|
14
14
|
skills:
|
|
15
15
|
- "UI/UX Design"
|
|
@@ -25,13 +25,13 @@ member:
|
|
|
25
25
|
links:
|
|
26
26
|
- id: "linkedin"
|
|
27
27
|
title: "LinkedIn"
|
|
28
|
-
url: "https://www.linkedin.com/in/
|
|
28
|
+
url: "https://www.linkedin.com/in/marcus-johnson"
|
|
29
29
|
- id: "dribbble"
|
|
30
30
|
title: "Dribbble"
|
|
31
|
-
url: "https://dribbble.com/
|
|
31
|
+
url: "https://dribbble.com/marcus-johnson"
|
|
32
32
|
- id: "instagram"
|
|
33
33
|
title: "Instagram"
|
|
34
|
-
url: "https://www.instagram.com/
|
|
34
|
+
url: "https://www.instagram.com/marcus-johnson"
|
|
35
35
|
---
|
|
36
36
|
|
|
37
37
|
Hey there, I'm Marcus!
|
|
@@ -9,7 +9,7 @@ member:
|
|
|
9
9
|
id: priya-sharma
|
|
10
10
|
name: "Priya Sharma"
|
|
11
11
|
position: "Customer Success Manager"
|
|
12
|
-
description: "Priya ensures our customers get maximum value from our products
|
|
12
|
+
description: "Priya ensures our customers get maximum value from our products and bridges the gap between user needs and product development."
|
|
13
13
|
location: "Chicago, IL"
|
|
14
14
|
skills:
|
|
15
15
|
- "Customer Relations"
|
|
@@ -25,10 +25,10 @@ member:
|
|
|
25
25
|
links:
|
|
26
26
|
- id: "linkedin"
|
|
27
27
|
title: "LinkedIn"
|
|
28
|
-
url: "https://www.linkedin.com/in/
|
|
28
|
+
url: "https://www.linkedin.com/in/priya-sharma"
|
|
29
29
|
- id: "twitter"
|
|
30
30
|
title: "Twitter"
|
|
31
|
-
url: "https://twitter.com/
|
|
31
|
+
url: "https://twitter.com/priya-sharma"
|
|
32
32
|
---
|
|
33
33
|
|
|
34
34
|
Hi there, I'm Priya!
|
|
@@ -9,7 +9,7 @@ member:
|
|
|
9
9
|
id: rare-ivy
|
|
10
10
|
name: "Rare Ivy"
|
|
11
11
|
position: "Content Creator"
|
|
12
|
-
description: "
|
|
12
|
+
description: "Rare is our in-house content creator, producing engaging videos, graphics, and social content that brings our brand to life."
|
|
13
13
|
location: "Brooklyn, NY"
|
|
14
14
|
skills:
|
|
15
15
|
- "Video Production"
|
|
@@ -25,19 +25,19 @@ member:
|
|
|
25
25
|
links:
|
|
26
26
|
- id: "linkedin"
|
|
27
27
|
title: "LinkedIn"
|
|
28
|
-
url: "https://www.linkedin.com/in/
|
|
28
|
+
url: "https://www.linkedin.com/in/rare-ivy"
|
|
29
29
|
- id: "instagram"
|
|
30
30
|
title: "Instagram"
|
|
31
|
-
url: "https://www.instagram.com/
|
|
31
|
+
url: "https://www.instagram.com/rare.ivyyy"
|
|
32
32
|
- id: "tiktok"
|
|
33
33
|
title: "TikTok"
|
|
34
|
-
url: "https://www.tiktok.com/@
|
|
34
|
+
url: "https://www.tiktok.com/@rare.ivy"
|
|
35
35
|
- id: "youtube"
|
|
36
36
|
title: "YouTube"
|
|
37
37
|
url: "https://www.youtube.com/@rareivy"
|
|
38
38
|
---
|
|
39
39
|
|
|
40
|
-
Hey, I'm
|
|
40
|
+
Hey, I'm Rare!
|
|
41
41
|
|
|
42
42
|
I'm a multi-disciplinary content creator with a passion for visual storytelling. From short-form TikToks to long-form YouTube videos, I love crafting content that connects with people on an emotional level.
|
|
43
43
|
|
|
@@ -9,7 +9,7 @@ member:
|
|
|
9
9
|
id: sarah-rodriguez
|
|
10
10
|
name: "Sarah Rodriguez"
|
|
11
11
|
position: "Marketing Director"
|
|
12
|
-
description: "Sarah leads our marketing efforts with a data-driven approach and creative flair.
|
|
12
|
+
description: "Sarah leads our marketing efforts with a data-driven approach and creative flair."
|
|
13
13
|
location: "Miami, FL"
|
|
14
14
|
skills:
|
|
15
15
|
- "Growth Marketing"
|
|
@@ -25,10 +25,13 @@ member:
|
|
|
25
25
|
links:
|
|
26
26
|
- id: "linkedin"
|
|
27
27
|
title: "LinkedIn"
|
|
28
|
-
url: "https://www.linkedin.com/in/
|
|
28
|
+
url: "https://www.linkedin.com/in/sarah-rodriguez"
|
|
29
29
|
- id: "twitter"
|
|
30
30
|
title: "Twitter"
|
|
31
|
-
url: "https://twitter.com/
|
|
31
|
+
url: "https://twitter.com/sarah-rodriguez"
|
|
32
|
+
- id: "instagram"
|
|
33
|
+
title: "Instagram"
|
|
34
|
+
url: "https://www.instagram.com/sarahrodriguez"
|
|
32
35
|
---
|
|
33
36
|
|
|
34
37
|
Hola! I'm Sarah.
|
|
@@ -24,21 +24,21 @@ sitemap: false
|
|
|
24
24
|
<div class="col-md-6">
|
|
25
25
|
<div class="mb-3">
|
|
26
26
|
<label for="main-name" class="form-label">user.name</label>
|
|
27
|
-
<input type="text" class="form-control" id="main-name" name="user.name" value="Ian">
|
|
27
|
+
<input type="text" class="form-control" id="main-name" name="user.name" value="Ian" disabled autofocus>
|
|
28
28
|
</div>
|
|
29
29
|
<div class="mb-3">
|
|
30
30
|
<label for="main-email" class="form-label">user.email</label>
|
|
31
|
-
<input type="email" class="form-control" id="main-email" name="user.email" value="ian@example.com">
|
|
31
|
+
<input type="email" class="form-control" id="main-email" name="user.email" value="ian@example.com" disabled>
|
|
32
32
|
</div>
|
|
33
33
|
<div class="mb-3">
|
|
34
34
|
<label for="main-city" class="form-label">user.address.city</label>
|
|
35
|
-
<input type="text" class="form-control" id="main-city" name="user.address.city" value="NYC">
|
|
35
|
+
<input type="text" class="form-control" id="main-city" name="user.address.city" value="NYC" disabled>
|
|
36
36
|
</div>
|
|
37
37
|
</div>
|
|
38
38
|
<div class="col-md-6">
|
|
39
39
|
<div class="mb-3">
|
|
40
40
|
<label for="main-outcome" class="form-label">Simulate Outcome</label>
|
|
41
|
-
<select class="form-select" id="main-outcome" name="settings.outcome">
|
|
41
|
+
<select class="form-select" id="main-outcome" name="settings.outcome" disabled>
|
|
42
42
|
<option value="success">Success</option>
|
|
43
43
|
<option value="error">Error (throw Error)</option>
|
|
44
44
|
</select>
|
|
@@ -46,43 +46,43 @@ sitemap: false
|
|
|
46
46
|
<div class="mb-3">
|
|
47
47
|
<label class="form-label d-block">preferences.notifications (radio group)</label>
|
|
48
48
|
<div class="form-check form-check-inline">
|
|
49
|
-
<input type="radio" class="form-check-input" id="notif-all" name="preferences.notifications" value="all" checked>
|
|
49
|
+
<input type="radio" class="form-check-input" id="notif-all" name="preferences.notifications" value="all" checked disabled>
|
|
50
50
|
<label class="form-check-label" for="notif-all">All</label>
|
|
51
51
|
</div>
|
|
52
52
|
<div class="form-check form-check-inline">
|
|
53
|
-
<input type="radio" class="form-check-input" id="notif-important" name="preferences.notifications" value="important">
|
|
53
|
+
<input type="radio" class="form-check-input" id="notif-important" name="preferences.notifications" value="important" disabled>
|
|
54
54
|
<label class="form-check-label" for="notif-important">Important</label>
|
|
55
55
|
</div>
|
|
56
56
|
<div class="form-check form-check-inline">
|
|
57
|
-
<input type="radio" class="form-check-input" id="notif-none" name="preferences.notifications" value="none">
|
|
57
|
+
<input type="radio" class="form-check-input" id="notif-none" name="preferences.notifications" value="none" disabled>
|
|
58
58
|
<label class="form-check-label" for="notif-none">None</label>
|
|
59
59
|
</div>
|
|
60
60
|
</div>
|
|
61
61
|
<div class="mb-3">
|
|
62
62
|
<label class="form-label d-block">preferences.features (checkbox group)</label>
|
|
63
63
|
<div class="form-check">
|
|
64
|
-
<input type="checkbox" class="form-check-input" id="feat-darkmode" name="preferences.features" value="darkmode">
|
|
64
|
+
<input type="checkbox" class="form-check-input" id="feat-darkmode" name="preferences.features" value="darkmode" disabled>
|
|
65
65
|
<label class="form-check-label" for="feat-darkmode">Dark Mode</label>
|
|
66
66
|
</div>
|
|
67
67
|
<div class="form-check">
|
|
68
|
-
<input type="checkbox" class="form-check-input" id="feat-analytics" name="preferences.features" value="analytics">
|
|
68
|
+
<input type="checkbox" class="form-check-input" id="feat-analytics" name="preferences.features" value="analytics" disabled>
|
|
69
69
|
<label class="form-check-label" for="feat-analytics">Analytics</label>
|
|
70
70
|
</div>
|
|
71
71
|
<div class="form-check">
|
|
72
|
-
<input type="checkbox" class="form-check-input" id="feat-beta" name="preferences.features" value="beta">
|
|
72
|
+
<input type="checkbox" class="form-check-input" id="feat-beta" name="preferences.features" value="beta" disabled>
|
|
73
73
|
<label class="form-check-label" for="feat-beta">Beta Features</label>
|
|
74
74
|
</div>
|
|
75
75
|
</div>
|
|
76
76
|
<div class="mb-3 form-check">
|
|
77
|
-
<input type="checkbox" class="form-check-input" id="main-subscribe" name="settings.subscribe">
|
|
77
|
+
<input type="checkbox" class="form-check-input" id="main-subscribe" name="settings.subscribe" disabled>
|
|
78
78
|
<label class="form-check-label" for="main-subscribe">settings.subscribe (single checkbox)</label>
|
|
79
79
|
</div>
|
|
80
80
|
</div>
|
|
81
81
|
</div>
|
|
82
82
|
<div class="d-flex gap-2">
|
|
83
|
-
<button type="submit" data-action="save" class="btn btn-primary">Save</button>
|
|
84
|
-
<button type="submit" data-action="draft" class="btn btn-outline-secondary">Save as Draft</button>
|
|
85
|
-
<button type="button" id="main-set-data" class="btn btn-outline-info">Set Data</button>
|
|
83
|
+
<button type="submit" data-action="save" class="btn btn-primary" disabled>Save</button>
|
|
84
|
+
<button type="submit" data-action="draft" class="btn btn-outline-secondary" disabled>Save as Draft</button>
|
|
85
|
+
<button type="button" id="main-set-data" class="btn btn-outline-info" disabled>Set Data</button>
|
|
86
86
|
</div>
|
|
87
87
|
</form>
|
|
88
88
|
<div class="mt-3 d-flex gap-3">
|
|
@@ -110,21 +110,21 @@ sitemap: false
|
|
|
110
110
|
<form id="test-form-validation">
|
|
111
111
|
<div class="mb-3">
|
|
112
112
|
<label for="validation-name" class="form-label">Name (required)</label>
|
|
113
|
-
<input type="text" class="form-control" id="validation-name" name="name" required>
|
|
113
|
+
<input type="text" class="form-control" id="validation-name" name="name" required disabled>
|
|
114
114
|
</div>
|
|
115
115
|
<div class="mb-3">
|
|
116
116
|
<label for="validation-email" class="form-label">Email (required, valid format)</label>
|
|
117
|
-
<input type="email" class="form-control" id="validation-email" name="email" required>
|
|
117
|
+
<input type="email" class="form-control" id="validation-email" name="email" required disabled>
|
|
118
118
|
</div>
|
|
119
119
|
<div class="mb-3">
|
|
120
120
|
<label for="validation-age" class="form-label">Age (required, must be 18+)</label>
|
|
121
|
-
<input type="number" class="form-control" id="validation-age" name="age" required min="1">
|
|
121
|
+
<input type="number" class="form-control" id="validation-age" name="age" required min="1" disabled>
|
|
122
122
|
</div>
|
|
123
123
|
<div class="mb-3 form-check">
|
|
124
|
-
<input type="checkbox" class="form-check-input" id="validation-terms" name="terms" required>
|
|
124
|
+
<input type="checkbox" class="form-check-input" id="validation-terms" name="terms" required disabled>
|
|
125
125
|
<label class="form-check-label" for="validation-terms">I agree to the terms (required)</label>
|
|
126
126
|
</div>
|
|
127
|
-
<button type="submit" class="btn btn-primary">Submit</button>
|
|
127
|
+
<button type="submit" class="btn btn-primary" disabled>Submit</button>
|
|
128
128
|
</form>
|
|
129
129
|
<div class="mt-2">
|
|
130
130
|
<small class="text-muted" id="validation-status">Status: ready</small>
|
|
@@ -144,9 +144,9 @@ sitemap: false
|
|
|
144
144
|
<form id="test-form-contact">
|
|
145
145
|
<div class="mb-3">
|
|
146
146
|
<label for="contact-message" class="form-label">Message</label>
|
|
147
|
-
<textarea class="form-control" id="contact-message" name="message" rows="2">Hello!</textarea>
|
|
147
|
+
<textarea class="form-control" id="contact-message" name="message" rows="2" disabled>Hello!</textarea>
|
|
148
148
|
</div>
|
|
149
|
-
<button type="submit" class="btn btn-primary">Send Message</button>
|
|
149
|
+
<button type="submit" class="btn btn-primary" disabled>Send Message</button>
|
|
150
150
|
</form>
|
|
151
151
|
<div class="mt-2">
|
|
152
152
|
<small class="text-muted" id="contact-status">Status: ready</small>
|
|
@@ -166,9 +166,9 @@ sitemap: false
|
|
|
166
166
|
<form id="test-form-manual">
|
|
167
167
|
<div class="mb-3">
|
|
168
168
|
<label for="manual-data" class="form-label">Data</label>
|
|
169
|
-
<input type="text" class="form-control" id="manual-data" name="data">
|
|
169
|
+
<input type="text" class="form-control" id="manual-data" name="data" disabled>
|
|
170
170
|
</div>
|
|
171
|
-
<button type="submit" class="btn btn-primary">Submit</button>
|
|
171
|
+
<button type="submit" class="btn btn-primary" disabled>Submit</button>
|
|
172
172
|
</form>
|
|
173
173
|
<div class="mt-2">
|
|
174
174
|
<small class="text-muted" id="manual-status">Status: initializing</small>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/gulp/tasks/serve.js
CHANGED
|
@@ -33,12 +33,15 @@ module.exports = async function serve(complete) {
|
|
|
33
33
|
https: await getHttpsConfig(), // Enable HTTPS with mkcert or self-signed certificates
|
|
34
34
|
server: {
|
|
35
35
|
baseDir: '_site',
|
|
36
|
+
routes: {
|
|
37
|
+
'/src': 'src' // Allow serving from src/ for media fallback
|
|
38
|
+
},
|
|
36
39
|
middleware: [
|
|
37
40
|
// require('compression')({
|
|
38
41
|
// threshold: 0, // Compress all files regardless of size
|
|
39
42
|
// level: 9 // Maximum compression (1-9)
|
|
40
43
|
// }),
|
|
41
|
-
processRequestMiddleware
|
|
44
|
+
processRequestMiddleware,
|
|
42
45
|
],
|
|
43
46
|
},
|
|
44
47
|
}
|
|
@@ -216,6 +219,58 @@ async function processRequestMiddleware(req, res, next) {
|
|
|
216
219
|
logger.log(`Serving ${pathname}`);
|
|
217
220
|
}
|
|
218
221
|
|
|
222
|
+
// Fallback for media files: serve from src/ if not in _site/
|
|
223
|
+
// This handles cases where imagemin hasn't run and optimized variants don't exist
|
|
224
|
+
const isMedia = pathname.startsWith('/assets/images/') || pathname.startsWith('/assets/videos/');
|
|
225
|
+
if (isMedia) {
|
|
226
|
+
const startTime = Date.now();
|
|
227
|
+
const cleanPath = pathname.split('?')[0];
|
|
228
|
+
const siteFilePath = path.join(rootPathProject, '_site', cleanPath);
|
|
229
|
+
|
|
230
|
+
// If file exists in _site, serve normally
|
|
231
|
+
if (jetpack.exists(siteFilePath)) {
|
|
232
|
+
logger.log(`[media] Found in _site: ${cleanPath} (${Date.now() - startTime}ms)`);
|
|
233
|
+
return next();
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Try to find the original file in src/
|
|
237
|
+
// First, try the exact path
|
|
238
|
+
let srcFilePath = path.join(rootPathProject, 'src', cleanPath);
|
|
239
|
+
|
|
240
|
+
// If not found, try stripping imagemin suffixes (-320px, -640px, -1024px) and .webp extension
|
|
241
|
+
if (!jetpack.exists(srcFilePath)) {
|
|
242
|
+
let originalPath = cleanPath;
|
|
243
|
+
|
|
244
|
+
// Remove size suffix (e.g., -320px, -640px, -1024px)
|
|
245
|
+
originalPath = originalPath.replace(/-\d+px(\.[^.]+)$/, '$1');
|
|
246
|
+
|
|
247
|
+
// If it's a .webp, try original extensions
|
|
248
|
+
if (originalPath.endsWith('.webp')) {
|
|
249
|
+
const basePath = originalPath.replace(/\.webp$/, '');
|
|
250
|
+
const possibleExts = ['.jpg', '.jpeg', '.png', '.gif'];
|
|
251
|
+
|
|
252
|
+
for (const ext of possibleExts) {
|
|
253
|
+
const testPath = path.join(rootPathProject, 'src', basePath + ext);
|
|
254
|
+
if (jetpack.exists(testPath)) {
|
|
255
|
+
srcFilePath = testPath;
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
} else {
|
|
260
|
+
srcFilePath = path.join(rootPathProject, 'src', originalPath);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// Serve from src if found
|
|
265
|
+
if (jetpack.exists(srcFilePath)) {
|
|
266
|
+
const relativeSrcPath = path.relative(rootPathProject, srcFilePath);
|
|
267
|
+
logger.log(`[media] Serving from src: ${cleanPath} -> ${relativeSrcPath} (${Date.now() - startTime}ms)`);
|
|
268
|
+
req.url = '/' + relativeSrcPath;
|
|
269
|
+
} else {
|
|
270
|
+
logger.log(`[media] Not found: ${cleanPath} (${Date.now() - startTime}ms)`);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
219
274
|
// Run middleware:request hook to allow custom URL rewriting
|
|
220
275
|
await hook('middleware:request', { req, res, pathname });
|
|
221
276
|
|