@o2vend/theme-cli 1.0.36 → 1.0.38
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/README.md +4 -0
- package/lib/lib/dev-server.js +344 -48
- package/lib/lib/liquid-engine.js +3 -1
- package/lib/lib/mock-data.js +473 -119
- package/lib/lib/widget-service.js +12 -4
- package/package.json +2 -2
- package/test-theme/assets/async-sections.js +32 -24
- package/test-theme/assets/cart-drawer.js +20 -22
- package/test-theme/assets/cart-manager.js +1 -15
- package/test-theme/assets/checkout-price-handler.js +12 -11
- package/test-theme/assets/checkout.css +1415 -0
- package/test-theme/assets/checkout.js +3174 -0
- package/test-theme/assets/components.css +178 -29
- package/test-theme/assets/delivery-zone.js +1 -1
- package/test-theme/assets/product-detail.css +1050 -0
- package/test-theme/assets/product-detail.js +2940 -0
- package/test-theme/assets/theme.css +95 -120
- package/test-theme/assets/theme.js +781 -186
- package/test-theme/layout/theme.liquid +91 -17
- package/test-theme/sections/content.liquid +64 -57
- package/test-theme/sections/footer-fallback.liquid +57 -7
- package/test-theme/sections/footer.liquid +63 -12
- package/test-theme/sections/header-fallback.liquid +41 -41
- package/test-theme/sections/header.liquid +41 -51
- package/test-theme/sections/hero-fallback.liquid +1 -1
- package/test-theme/sections/hero.liquid +159 -136
- package/test-theme/snippets/account-sidebar.liquid +121 -29
- package/test-theme/snippets/add-to-cart-modal.liquid +258 -206
- package/test-theme/snippets/breadcrumbs.liquid +98 -11
- package/test-theme/snippets/cart-drawer.liquid +93 -0
- package/test-theme/snippets/delivery-zone-city-selector.liquid +101 -15
- package/test-theme/snippets/delivery-zone-modal.liquid +529 -84
- package/test-theme/snippets/delivery-zone-search.liquid +104 -18
- package/test-theme/snippets/login-modal.liquid +269 -82
- package/test-theme/snippets/mega-menu.liquid +130 -43
- package/test-theme/snippets/news-thumbnail.liquid +120 -28
- package/test-theme/snippets/pagination.liquid +1 -1
- package/test-theme/snippets/price.liquid +100 -9
- package/test-theme/snippets/product-card-related.liquid +22 -4
- package/test-theme/snippets/product-card-simple.liquid +521 -25
- package/test-theme/snippets/product-card.liquid +145 -232
- package/test-theme/snippets/rating.liquid +100 -9
- package/test-theme/snippets/skeleton-collection-grid.liquid +94 -8
- package/test-theme/snippets/skeleton-product-card.liquid +102 -16
- package/test-theme/snippets/skeleton-product-grid.liquid +87 -1
- package/test-theme/snippets/social-sharing.liquid +133 -32
- package/test-theme/templates/account/dashboard.liquid +30 -0
- package/test-theme/templates/account/loyalty-redemption.liquid +29 -28
- package/test-theme/templates/account/loyalty.liquid +45 -43
- package/test-theme/templates/account/order-detail.liquid +15 -8
- package/test-theme/templates/account/orders.liquid +189 -35
- package/test-theme/templates/account/profile.liquid +509 -114
- package/test-theme/templates/account/register.liquid +18 -8
- package/test-theme/templates/account/return-orders.liquid +31 -30
- package/test-theme/templates/account/store-credit.liquid +27 -26
- package/test-theme/templates/account/subscriptions.liquid +22 -5
- package/test-theme/templates/account/wishlist.liquid +88 -19
- package/test-theme/templates/address-book.liquid +166 -69
- package/test-theme/templates/categories.liquid +90 -30
- package/test-theme/templates/checkout.liquid +137 -3834
- package/test-theme/templates/error.liquid +23 -21
- package/test-theme/templates/index.liquid +29 -0
- package/test-theme/templates/login.liquid +33 -6
- package/test-theme/templates/order-confirmation.liquid +67 -9
- package/test-theme/templates/page.liquid +418 -206
- package/test-theme/templates/product-detail.liquid +124 -3878
- package/test-theme/templates/products.liquid +155 -30
- package/test-theme/templates/search.liquid +739 -225
- package/test-theme/widgets/brand-carousel.liquid +102 -82
- package/test-theme/widgets/brand.liquid +78 -50
- package/test-theme/widgets/carousel.liquid +253 -121
- package/test-theme/widgets/category-list-carousel.liquid +32 -8
- package/test-theme/widgets/category-list.liquid +21 -6
- package/test-theme/widgets/category.liquid +104 -37
- package/test-theme/widgets/discount-time.liquid +326 -119
- package/test-theme/widgets/footer-menu.liquid +115 -23
- package/test-theme/widgets/footer.liquid +118 -5
- package/test-theme/widgets/gallery.liquid +29 -5
- package/test-theme/widgets/header-menu.liquid +25 -13
- package/test-theme/widgets/header.liquid +64 -26
- package/test-theme/widgets/html.liquid +29 -6
- package/test-theme/widgets/news.liquid +6 -0
- package/test-theme/widgets/product-canvas.liquid +20 -12
- package/test-theme/widgets/product-carousel.liquid +118 -56
- package/test-theme/widgets/shared/product-grid.liquid +12 -0
- package/test-theme/widgets/single-product.liquid +688 -250
- package/test-theme/widgets/spacebar-carousel.liquid +39 -10
- package/test-theme/widgets/spacebar.liquid +77 -6
- package/test-theme/widgets/splash.liquid +40 -30
- package/test-theme/widgets/testimonial-carousel.liquid +111 -67
package/lib/lib/mock-data.js
CHANGED
|
@@ -374,6 +374,222 @@ function generateMockProducts(count = 20) {
|
|
|
374
374
|
});
|
|
375
375
|
}
|
|
376
376
|
|
|
377
|
+
// Variation product with production-style options structure
|
|
378
|
+
const variationProductId = products.length + 1;
|
|
379
|
+
const variationVariants = [
|
|
380
|
+
{
|
|
381
|
+
id: `variant-var-1`, productId: variationProductId * 1000 + 1, name: 'Wireless Headphones - Black / Standard',
|
|
382
|
+
sku: 'WH-BLK-STD', title: 'Black / Standard',
|
|
383
|
+
prices: { price: 7999, mrp: 9999 }, price: 7999, compareAtPrice: 9999,
|
|
384
|
+
options: [
|
|
385
|
+
{ id: 1, optionId: 1, optionName: 'Color', value: 'Black', displayType: 'color', displayValue: '#000000', sortIndex: 1 },
|
|
386
|
+
{ id: 2, optionId: 2, optionName: 'Edition', value: 'Standard', displayType: 'text', displayValue: '', sortIndex: 1 }
|
|
387
|
+
],
|
|
388
|
+
images: [{ url: 'https://picsum.photos/seed/wh-black/800/800', altText: 'Wireless Headphones Black' }],
|
|
389
|
+
inStock: true, available: true, stockQuantity: 25
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
id: `variant-var-2`, productId: variationProductId * 1000 + 2, name: 'Wireless Headphones - Black / Pro',
|
|
393
|
+
sku: 'WH-BLK-PRO', title: 'Black / Pro',
|
|
394
|
+
prices: { price: 11999, mrp: 14999 }, price: 11999, compareAtPrice: 14999,
|
|
395
|
+
options: [
|
|
396
|
+
{ id: 3, optionId: 1, optionName: 'Color', value: 'Black', displayType: 'color', displayValue: '#000000', sortIndex: 1 },
|
|
397
|
+
{ id: 4, optionId: 2, optionName: 'Edition', value: 'Pro', displayType: 'text', displayValue: '', sortIndex: 2 }
|
|
398
|
+
],
|
|
399
|
+
images: [{ url: 'https://picsum.photos/seed/wh-black-pro/800/800', altText: 'Wireless Headphones Black Pro' }],
|
|
400
|
+
inStock: true, available: true, stockQuantity: 15
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
id: `variant-var-3`, productId: variationProductId * 1000 + 3, name: 'Wireless Headphones - White / Standard',
|
|
404
|
+
sku: 'WH-WHT-STD', title: 'White / Standard',
|
|
405
|
+
prices: { price: 7999, mrp: 9999 }, price: 7999, compareAtPrice: 9999,
|
|
406
|
+
options: [
|
|
407
|
+
{ id: 5, optionId: 1, optionName: 'Color', value: 'White', displayType: 'color', displayValue: '#ffffff', sortIndex: 2 },
|
|
408
|
+
{ id: 6, optionId: 2, optionName: 'Edition', value: 'Standard', displayType: 'text', displayValue: '', sortIndex: 1 }
|
|
409
|
+
],
|
|
410
|
+
images: [{ url: 'https://picsum.photos/seed/wh-white/800/800', altText: 'Wireless Headphones White' }],
|
|
411
|
+
inStock: true, available: true, stockQuantity: 20
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
id: `variant-var-4`, productId: variationProductId * 1000 + 4, name: 'Wireless Headphones - Silver / Pro',
|
|
415
|
+
sku: 'WH-SLV-PRO', title: 'Silver / Pro',
|
|
416
|
+
prices: { price: 12999, mrp: 15999 }, price: 12999, compareAtPrice: 15999,
|
|
417
|
+
options: [
|
|
418
|
+
{ id: 7, optionId: 1, optionName: 'Color', value: 'Silver', displayType: 'color', displayValue: '#c0c0c0', sortIndex: 3 },
|
|
419
|
+
{ id: 8, optionId: 2, optionName: 'Edition', value: 'Pro', displayType: 'text', displayValue: '', sortIndex: 2 }
|
|
420
|
+
],
|
|
421
|
+
images: [{ url: 'https://picsum.photos/seed/wh-silver-pro/800/800', altText: 'Wireless Headphones Silver Pro' }],
|
|
422
|
+
inStock: false, available: false, stockQuantity: 0
|
|
423
|
+
}
|
|
424
|
+
];
|
|
425
|
+
products.push({
|
|
426
|
+
id: variationProductId, productId: variationProductId,
|
|
427
|
+
title: 'Wireless Noise-Cancelling Headphones', name: 'Wireless Noise-Cancelling Headphones',
|
|
428
|
+
handle: 'wireless-noise-cancelling-headphones', slug: 'wireless-noise-cancelling-headphones',
|
|
429
|
+
url: 'wireless-noise-cancelling-headphones', link: 'wireless-noise-cancelling-headphones',
|
|
430
|
+
description: 'Premium wireless headphones with active noise cancellation. Available in multiple colors and editions.',
|
|
431
|
+
price: 7999, compareAtPrice: 9999, prices: { price: 7999, mrp: 9999 },
|
|
432
|
+
inStock: true, available: true, stockQuantity: 60, stockTrackingIsEnabled: true, isAllowToOrder: false,
|
|
433
|
+
sku: 'WH-MAIN', categoryId: 1, category: { id: 1, name: 'Electronics' }, brandId: 1,
|
|
434
|
+
thumbnailImage: 'https://picsum.photos/seed/wh-main/800/800',
|
|
435
|
+
imageUrl: 'https://picsum.photos/seed/wh-main/800/800',
|
|
436
|
+
images: [
|
|
437
|
+
{ id: 'img-var-1', url: 'https://picsum.photos/seed/wh-main/800/800', altText: 'Wireless Headphones' },
|
|
438
|
+
{ id: 'img-var-2', url: 'https://picsum.photos/seed/wh-side/800/800', altText: 'Wireless Headphones Side View' },
|
|
439
|
+
{ id: 'img-var-3', url: 'https://picsum.photos/seed/wh-case/800/800', altText: 'Wireless Headphones with Case' }
|
|
440
|
+
],
|
|
441
|
+
variants: variationVariants, variations: variationVariants,
|
|
442
|
+
options: [
|
|
443
|
+
{ name: 'Color', values: ['Black', 'White', 'Silver'] },
|
|
444
|
+
{ name: 'Edition', values: ['Standard', 'Pro'] }
|
|
445
|
+
],
|
|
446
|
+
tags: ['featured', 'electronics', 'audio'], productType: 0, additionalData: 'null',
|
|
447
|
+
combinations: [], subscriptions: [], shippingMethods: [],
|
|
448
|
+
createdAt: new Date(Date.now() - 10 * 24 * 60 * 60 * 1000).toISOString()
|
|
449
|
+
});
|
|
450
|
+
|
|
451
|
+
// Combination product with group-based add-ons
|
|
452
|
+
const comboProductId = products.length + 1;
|
|
453
|
+
products.push({
|
|
454
|
+
id: comboProductId, productId: comboProductId,
|
|
455
|
+
title: 'Gaming Console Bundle', name: 'Gaming Console Bundle',
|
|
456
|
+
handle: 'gaming-console-bundle', slug: 'gaming-console-bundle',
|
|
457
|
+
url: 'gaming-console-bundle', link: 'gaming-console-bundle',
|
|
458
|
+
description: 'Next-gen gaming console with customizable accessories bundle. Choose your controller, headset, and games.',
|
|
459
|
+
price: 49999, compareAtPrice: 59999, prices: { price: 49999, mrp: 59999 },
|
|
460
|
+
inStock: true, available: true, stockQuantity: 30, stockTrackingIsEnabled: true, isAllowToOrder: false,
|
|
461
|
+
sku: 'GCB-MAIN', categoryId: 1, category: { id: 1, name: 'Electronics' }, brandId: 2,
|
|
462
|
+
thumbnailImage: 'https://picsum.photos/seed/gcb-main/800/800',
|
|
463
|
+
imageUrl: 'https://picsum.photos/seed/gcb-main/800/800',
|
|
464
|
+
images: [
|
|
465
|
+
{ id: 'img-combo-1', url: 'https://picsum.photos/seed/gcb-main/800/800', altText: 'Gaming Console Bundle' },
|
|
466
|
+
{ id: 'img-combo-2', url: 'https://picsum.photos/seed/gcb-box/800/800', altText: 'Gaming Console Box Contents' }
|
|
467
|
+
],
|
|
468
|
+
variants: [{ id: 'variant-combo-1', productId: comboProductId * 1000 + 1, title: 'Default', price: 49999, compareAtPrice: 59999, prices: { price: 49999, mrp: 59999 }, sku: 'GCB-DEF', inStock: true, available: true, stockQuantity: 30 }],
|
|
469
|
+
variations: [],
|
|
470
|
+
options: [],
|
|
471
|
+
combinations: [
|
|
472
|
+
{
|
|
473
|
+
productId: comboProductId * 100 + 1, name: 'Extra Wireless Controller', sku: 'GCB-CTRL',
|
|
474
|
+
prices: { price: 5999, mrp: 6999 }, quantity: 1,
|
|
475
|
+
group: { groupDetail: { groupName: 'Controllers', groupType: 1, minimumSelectable: 0, maximumSelectable: 2, isOptional: true } },
|
|
476
|
+
thumbnailImage1: { url: 'https://picsum.photos/seed/gcb-ctrl/200/200' },
|
|
477
|
+
images: [{ url: 'https://picsum.photos/seed/gcb-ctrl/400/400' }],
|
|
478
|
+
additionalData: null
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
productId: comboProductId * 100 + 2, name: 'Pro Controller (Elite)', sku: 'GCB-CTRL-PRO',
|
|
482
|
+
prices: { price: 12999, mrp: 14999 }, quantity: 1,
|
|
483
|
+
group: { groupDetail: { groupName: 'Controllers', groupType: 1, minimumSelectable: 0, maximumSelectable: 2, isOptional: true } },
|
|
484
|
+
thumbnailImage1: { url: 'https://picsum.photos/seed/gcb-ctrl-pro/200/200' },
|
|
485
|
+
images: [{ url: 'https://picsum.photos/seed/gcb-ctrl-pro/400/400' }],
|
|
486
|
+
additionalData: null
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
productId: comboProductId * 100 + 3, name: 'Gaming Headset 7.1', sku: 'GCB-HS',
|
|
490
|
+
prices: { price: 7999, mrp: 9999 }, quantity: 1,
|
|
491
|
+
group: { groupDetail: { groupName: 'Audio', groupType: 1, minimumSelectable: 1, maximumSelectable: 1, isOptional: false } },
|
|
492
|
+
thumbnailImage1: { url: 'https://picsum.photos/seed/gcb-headset/200/200' },
|
|
493
|
+
images: [{ url: 'https://picsum.photos/seed/gcb-headset/400/400' }],
|
|
494
|
+
additionalData: null
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
productId: comboProductId * 100 + 4, name: 'Racing Game Deluxe', sku: 'GCB-GAME1',
|
|
498
|
+
prices: { price: 3999, mrp: 4999 }, quantity: 1,
|
|
499
|
+
group: { groupDetail: { groupName: 'Games', groupType: 1, minimumSelectable: 1, maximumSelectable: 3, isOptional: false } },
|
|
500
|
+
thumbnailImage1: { url: 'https://picsum.photos/seed/gcb-game1/200/200' },
|
|
501
|
+
images: [{ url: 'https://picsum.photos/seed/gcb-game1/400/400' }],
|
|
502
|
+
additionalData: null
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
productId: comboProductId * 100 + 5, name: 'Adventure Quest RPG', sku: 'GCB-GAME2',
|
|
506
|
+
prices: { price: 4999, mrp: 5999 }, quantity: 1,
|
|
507
|
+
group: { groupDetail: { groupName: 'Games', groupType: 1, minimumSelectable: 1, maximumSelectable: 3, isOptional: false } },
|
|
508
|
+
thumbnailImage1: { url: 'https://picsum.photos/seed/gcb-game2/200/200' },
|
|
509
|
+
images: [{ url: 'https://picsum.photos/seed/gcb-game2/400/400' }],
|
|
510
|
+
additionalData: null
|
|
511
|
+
}
|
|
512
|
+
],
|
|
513
|
+
subscriptions: [],
|
|
514
|
+
tags: ['featured', 'electronics', 'gaming', 'bundle'], productType: 0,
|
|
515
|
+
additionalData: 'null', shippingMethods: [],
|
|
516
|
+
createdAt: new Date(Date.now() - 5 * 24 * 60 * 60 * 1000).toISOString()
|
|
517
|
+
});
|
|
518
|
+
|
|
519
|
+
// Subscription product
|
|
520
|
+
const subProductId = products.length + 1;
|
|
521
|
+
const subscriptionAdditionalData = JSON.stringify({
|
|
522
|
+
settings: {
|
|
523
|
+
isScheduleByCustomer: true, typeOfOrder: 10, shippingClassId: 1,
|
|
524
|
+
perOrderPrice: 1999, startDate: new Date().toISOString(),
|
|
525
|
+
endDate: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000).toISOString(),
|
|
526
|
+
isProductChoiceEnabled: false, isQuantityChangeAllowed: true,
|
|
527
|
+
minSubscriptionProducts: 1, maxSubscriptionProducts: 5
|
|
528
|
+
},
|
|
529
|
+
subscriptionDetails: {
|
|
530
|
+
shippingFeeAmount: 0, paymentFeeAmount: 0, roundOff: 0,
|
|
531
|
+
discountAmount: 500, subscriptionCoupon: null, orderTotal: '1999'
|
|
532
|
+
},
|
|
533
|
+
frequency: { selectedOption: 'monthly', timeFre: '', ordersCount: 12 },
|
|
534
|
+
frequencyData: {
|
|
535
|
+
selectedOption: 'monthly', ordersCount: 12,
|
|
536
|
+
startDate: new Date().toISOString(),
|
|
537
|
+
endDate: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000).toISOString(),
|
|
538
|
+
isDailyFrequency: true, isWeeklyFrequency: true,
|
|
539
|
+
isAlterNativeFrequency: false, isMonthlyFrequency: true, isYearlyFrequency: false
|
|
540
|
+
},
|
|
541
|
+
IsSubscriptionPrice: true,
|
|
542
|
+
items: [
|
|
543
|
+
{ Id: 1, Name: 'Organic Coffee Blend - 250g', Price: 1999, Quantity: 1 },
|
|
544
|
+
{ Id: 2, Name: 'Single Origin Ethiopian - 250g', Price: 2499, Quantity: 1 },
|
|
545
|
+
{ Id: 3, Name: 'Dark Roast Espresso - 250g', Price: 1799, Quantity: 1 }
|
|
546
|
+
]
|
|
547
|
+
});
|
|
548
|
+
products.push({
|
|
549
|
+
id: subProductId, productId: subProductId,
|
|
550
|
+
title: 'Premium Coffee Subscription Box', name: 'Premium Coffee Subscription Box',
|
|
551
|
+
handle: 'premium-coffee-subscription', slug: 'premium-coffee-subscription',
|
|
552
|
+
url: 'premium-coffee-subscription', link: 'premium-coffee-subscription',
|
|
553
|
+
description: 'Get freshly roasted premium coffee delivered to your door. Choose your frequency and customize your selection.',
|
|
554
|
+
price: 1999, compareAtPrice: 2499, prices: { price: 1999, mrp: 2499 },
|
|
555
|
+
inStock: true, available: true, stockQuantity: 999, stockTrackingIsEnabled: false, isAllowToOrder: true,
|
|
556
|
+
sku: 'SUB-COFFEE', categoryId: 10, category: { id: 10, name: 'Food & Beverages' }, brandId: 5,
|
|
557
|
+
thumbnailImage: 'https://picsum.photos/seed/sub-coffee/800/800',
|
|
558
|
+
imageUrl: 'https://picsum.photos/seed/sub-coffee/800/800',
|
|
559
|
+
images: [
|
|
560
|
+
{ id: 'img-sub-1', url: 'https://picsum.photos/seed/sub-coffee/800/800', altText: 'Coffee Subscription Box' },
|
|
561
|
+
{ id: 'img-sub-2', url: 'https://picsum.photos/seed/sub-beans/800/800', altText: 'Premium Coffee Beans' },
|
|
562
|
+
{ id: 'img-sub-3', url: 'https://picsum.photos/seed/sub-cup/800/800', altText: 'Fresh Brewed Coffee' }
|
|
563
|
+
],
|
|
564
|
+
variants: [{ id: 'variant-sub-1', productId: subProductId * 1000 + 1, title: 'Monthly Box', price: 1999, compareAtPrice: 2499, prices: { price: 1999, mrp: 2499 }, sku: 'SUB-COFFEE-M', inStock: true, available: true, stockQuantity: 999 }],
|
|
565
|
+
variations: [],
|
|
566
|
+
options: [],
|
|
567
|
+
combinations: [],
|
|
568
|
+
subscriptions: [
|
|
569
|
+
{
|
|
570
|
+
productId: subProductId * 100 + 1, name: 'Organic Coffee Blend - 250g', sku: 'SUB-BLEND',
|
|
571
|
+
prices: { price: 1999, mrp: 2499 }, quantity: 1,
|
|
572
|
+
specification: 'Premium organic blend, medium roast',
|
|
573
|
+
images: [{ url: 'https://picsum.photos/seed/sub-blend/400/400' }], additionalData: null
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
productId: subProductId * 100 + 2, name: 'Single Origin Ethiopian - 250g', sku: 'SUB-ETHIOP',
|
|
577
|
+
prices: { price: 2499, mrp: 2999 }, quantity: 1,
|
|
578
|
+
specification: 'Light roast, fruity notes',
|
|
579
|
+
images: [{ url: 'https://picsum.photos/seed/sub-ethiop/400/400' }], additionalData: null
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
productId: subProductId * 100 + 3, name: 'Dark Roast Espresso - 250g', sku: 'SUB-ESPRESSO',
|
|
583
|
+
prices: { price: 1799, mrp: 2199 }, quantity: 1,
|
|
584
|
+
specification: 'Bold and intense espresso blend',
|
|
585
|
+
images: [{ url: 'https://picsum.photos/seed/sub-espresso/400/400' }], additionalData: null
|
|
586
|
+
}
|
|
587
|
+
],
|
|
588
|
+
tags: ['subscription', 'coffee', 'food'], productType: 90,
|
|
589
|
+
additionalData: subscriptionAdditionalData, shippingMethods: [],
|
|
590
|
+
createdAt: new Date(Date.now() - 3 * 24 * 60 * 60 * 1000).toISOString()
|
|
591
|
+
});
|
|
592
|
+
|
|
377
593
|
// Log summary
|
|
378
594
|
const productsWithVariations = products.filter(p => (p.variants?.length || 0) > 1).length;
|
|
379
595
|
const productsWithOptions = products.filter(p => (p.options?.length || 0) > 0).length;
|
|
@@ -1120,7 +1336,8 @@ function generateMockWidgets() {
|
|
|
1120
1336
|
Limit: 12,
|
|
1121
1337
|
Columns: 4,
|
|
1122
1338
|
Products: []
|
|
1123
|
-
}
|
|
1339
|
+
},
|
|
1340
|
+
products: []
|
|
1124
1341
|
},
|
|
1125
1342
|
content: JSON.stringify({
|
|
1126
1343
|
NumberOfProducts: 12,
|
|
@@ -1157,7 +1374,8 @@ function generateMockWidgets() {
|
|
|
1157
1374
|
Columns: 3,
|
|
1158
1375
|
IsFeatured: true,
|
|
1159
1376
|
Products: []
|
|
1160
|
-
}
|
|
1377
|
+
},
|
|
1378
|
+
products: []
|
|
1161
1379
|
},
|
|
1162
1380
|
content: JSON.stringify({
|
|
1163
1381
|
NumberOfProducts: 6,
|
|
@@ -1271,7 +1489,8 @@ function generateMockWidgets() {
|
|
|
1271
1489
|
show_add_to_cart: false
|
|
1272
1490
|
},
|
|
1273
1491
|
data: {
|
|
1274
|
-
products: []
|
|
1492
|
+
products: [],
|
|
1493
|
+
content: { products: [], Products: [] }
|
|
1275
1494
|
}
|
|
1276
1495
|
},
|
|
1277
1496
|
|
|
@@ -1381,142 +1600,277 @@ function generateMockWidgets() {
|
|
|
1381
1600
|
hideDot: false
|
|
1382
1601
|
},
|
|
1383
1602
|
data: {
|
|
1384
|
-
content:
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1603
|
+
content: {
|
|
1604
|
+
Items: [
|
|
1605
|
+
{
|
|
1606
|
+
Title: 'Amazing Quality!',
|
|
1607
|
+
title: 'Amazing Quality!',
|
|
1608
|
+
Description: 'I\'ve been shopping here for years and the quality never disappoints. Fast shipping and excellent customer service too!',
|
|
1609
|
+
description: 'I\'ve been shopping here for years and the quality never disappoints. Fast shipping and excellent customer service too!',
|
|
1610
|
+
PersonName: 'Sarah Johnson',
|
|
1611
|
+
personName: 'Sarah Johnson',
|
|
1612
|
+
CompanyName: 'Verified Buyer',
|
|
1613
|
+
companyName: 'Verified Buyer',
|
|
1614
|
+
Rating: 5,
|
|
1615
|
+
rating: 5,
|
|
1616
|
+
ImageUrl: 'https://picsum.photos/seed/user1/100/100',
|
|
1617
|
+
imageUrl: 'https://picsum.photos/seed/user1/100/100'
|
|
1618
|
+
},
|
|
1619
|
+
{
|
|
1620
|
+
Title: 'Great Experience',
|
|
1621
|
+
title: 'Great Experience',
|
|
1622
|
+
Description: 'The customer service team went above and beyond to help me find exactly what I needed. Highly recommend!',
|
|
1623
|
+
description: 'The customer service team went above and beyond to help me find exactly what I needed. Highly recommend!',
|
|
1624
|
+
PersonName: 'Michael Chen',
|
|
1625
|
+
personName: 'Michael Chen',
|
|
1626
|
+
CompanyName: 'Regular Customer',
|
|
1627
|
+
companyName: 'Regular Customer',
|
|
1628
|
+
Rating: 5,
|
|
1629
|
+
rating: 5,
|
|
1630
|
+
ImageUrl: 'https://picsum.photos/seed/user2/100/100',
|
|
1631
|
+
imageUrl: 'https://picsum.photos/seed/user2/100/100'
|
|
1632
|
+
},
|
|
1633
|
+
{
|
|
1634
|
+
Title: 'Will Shop Again',
|
|
1635
|
+
title: 'Will Shop Again',
|
|
1636
|
+
Description: 'Love the variety of products and the prices are very competitive. The website is easy to navigate too.',
|
|
1637
|
+
description: 'Love the variety of products and the prices are very competitive. The website is easy to navigate too.',
|
|
1638
|
+
PersonName: 'Emily Davis',
|
|
1639
|
+
personName: 'Emily Davis',
|
|
1640
|
+
CompanyName: 'Fashion Enthusiast',
|
|
1641
|
+
companyName: 'Fashion Enthusiast',
|
|
1642
|
+
Rating: 5,
|
|
1643
|
+
rating: 5,
|
|
1644
|
+
ImageUrl: 'https://picsum.photos/seed/user3/100/100',
|
|
1645
|
+
imageUrl: 'https://picsum.photos/seed/user3/100/100'
|
|
1646
|
+
},
|
|
1647
|
+
{
|
|
1648
|
+
Title: 'Fast Delivery',
|
|
1649
|
+
title: 'Fast Delivery',
|
|
1650
|
+
Description: 'Ordered on Monday, received on Wednesday! The packaging was perfect and the product exceeded expectations.',
|
|
1651
|
+
description: 'Ordered on Monday, received on Wednesday! The packaging was perfect and the product exceeded expectations.',
|
|
1652
|
+
PersonName: 'David Wilson',
|
|
1653
|
+
personName: 'David Wilson',
|
|
1654
|
+
CompanyName: 'Tech Reviewer',
|
|
1655
|
+
companyName: 'Tech Reviewer',
|
|
1656
|
+
Rating: 4,
|
|
1657
|
+
rating: 4,
|
|
1658
|
+
ImageUrl: 'https://picsum.photos/seed/user4/100/100',
|
|
1659
|
+
imageUrl: 'https://picsum.photos/seed/user4/100/100'
|
|
1660
|
+
}
|
|
1661
|
+
]
|
|
1662
|
+
}
|
|
1663
|
+
},
|
|
1664
|
+
content: JSON.stringify({
|
|
1665
|
+
Items: [
|
|
1666
|
+
{ Title: 'Amazing Quality!', Description: 'The quality never disappoints.', PersonName: 'Sarah Johnson', CompanyName: 'Verified Buyer', Rating: 5, ImageUrl: 'https://picsum.photos/seed/user1/100/100' },
|
|
1667
|
+
{ Title: 'Great Experience', Description: 'Excellent customer service.', PersonName: 'Michael Chen', CompanyName: 'Regular Customer', Rating: 5, ImageUrl: 'https://picsum.photos/seed/user2/100/100' },
|
|
1668
|
+
{ Title: 'Will Shop Again', Description: 'Love the variety.', PersonName: 'Emily Davis', CompanyName: 'Fashion Enthusiast', Rating: 5, ImageUrl: 'https://picsum.photos/seed/user3/100/100' },
|
|
1669
|
+
{ Title: 'Fast Delivery', Description: 'Quick and perfect packaging.', PersonName: 'David Wilson', CompanyName: 'Tech Reviewer', Rating: 4, ImageUrl: 'https://picsum.photos/seed/user4/100/100' }
|
|
1441
1670
|
]
|
|
1671
|
+
})
|
|
1672
|
+
},
|
|
1673
|
+
|
|
1674
|
+
// DiscountTime Widget (template expects data.couponValid and data.coupon at top level)
|
|
1675
|
+
{
|
|
1676
|
+
id: 'widget-discount-time-1',
|
|
1677
|
+
type: 'DiscountTime',
|
|
1678
|
+
section: 'content',
|
|
1679
|
+
sectionName: 'content',
|
|
1680
|
+
pageId: 'home',
|
|
1681
|
+
status: 'active',
|
|
1682
|
+
Position: 14,
|
|
1683
|
+
Title: 'Limited Time Offer',
|
|
1684
|
+
settings: {
|
|
1685
|
+
title: 'Limited Time Offer',
|
|
1686
|
+
textColor: '#ffffff',
|
|
1687
|
+
backgroundColor: '#1f2937',
|
|
1688
|
+
background_from: '#1f2937',
|
|
1689
|
+
background_to: '#111827',
|
|
1690
|
+
cta_label: 'Shop Now',
|
|
1691
|
+
cta_link: '/products',
|
|
1692
|
+
cta_background: '#ef4444',
|
|
1693
|
+
cta_text: '#ffffff'
|
|
1442
1694
|
},
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1695
|
+
data: {
|
|
1696
|
+
couponValid: true,
|
|
1697
|
+
coupon: {
|
|
1698
|
+
discountAmount: 25,
|
|
1699
|
+
couponCode: 'SAVE25',
|
|
1700
|
+
description: 'Get 25% off on all products! Limited time only.',
|
|
1701
|
+
endOn: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(),
|
|
1702
|
+
startOn: new Date().toISOString(),
|
|
1703
|
+
ruleToApply: 'by_percent',
|
|
1704
|
+
fileName: '',
|
|
1705
|
+
imageUrl: 'https://picsum.photos/seed/discount-banner/1200/400'
|
|
1706
|
+
}
|
|
1707
|
+
}
|
|
1449
1708
|
},
|
|
1450
|
-
|
|
1451
|
-
//
|
|
1709
|
+
|
|
1710
|
+
// Product Widget (uses product-grid shared template)
|
|
1452
1711
|
{
|
|
1453
|
-
id: 'widget-
|
|
1454
|
-
type: '
|
|
1455
|
-
section: '
|
|
1456
|
-
sectionName: '
|
|
1457
|
-
pageId: '
|
|
1712
|
+
id: 'widget-product-1',
|
|
1713
|
+
type: 'Product',
|
|
1714
|
+
section: 'content',
|
|
1715
|
+
sectionName: 'content',
|
|
1716
|
+
pageId: 'home',
|
|
1458
1717
|
status: 'active',
|
|
1459
|
-
Position:
|
|
1718
|
+
Position: 15,
|
|
1719
|
+
Title: 'Our Products',
|
|
1460
1720
|
settings: {
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1721
|
+
title: 'Our Products',
|
|
1722
|
+
subtitle: 'Top picks for you',
|
|
1723
|
+
columns: 4,
|
|
1724
|
+
showWidgetTitle: 'Yes',
|
|
1725
|
+
widgetTitleAlignment: 'center',
|
|
1726
|
+
show_add_to_cart: true
|
|
1727
|
+
},
|
|
1728
|
+
data: {
|
|
1729
|
+
content: {
|
|
1730
|
+
products: [],
|
|
1731
|
+
Products: []
|
|
1732
|
+
},
|
|
1733
|
+
products: []
|
|
1734
|
+
}
|
|
1735
|
+
},
|
|
1736
|
+
|
|
1737
|
+
// ProductCanvas Widget
|
|
1738
|
+
{
|
|
1739
|
+
id: 'widget-product-canvas-1',
|
|
1740
|
+
type: 'ProductCanvas',
|
|
1741
|
+
section: 'content',
|
|
1742
|
+
sectionName: 'content',
|
|
1743
|
+
pageId: 'home',
|
|
1744
|
+
status: 'active',
|
|
1745
|
+
Position: 16,
|
|
1746
|
+
Title: 'Shop the Look',
|
|
1747
|
+
settings: {
|
|
1748
|
+
title: 'Shop the Look',
|
|
1749
|
+
showContainer: 'Yes',
|
|
1750
|
+
showWidgetBottomMargin: 'Yes',
|
|
1751
|
+
backgroundColor: '#f9fafb'
|
|
1464
1752
|
},
|
|
1465
1753
|
data: {
|
|
1466
1754
|
content: {
|
|
1467
|
-
|
|
1755
|
+
ImageUrl: 'https://picsum.photos/seed/canvas-main/1200/600',
|
|
1756
|
+
imageUrl: 'https://picsum.photos/seed/canvas-main/1200/600',
|
|
1757
|
+
ShowContainer: 'Yes',
|
|
1758
|
+
ShowWidgetBottomMargin: 'Yes',
|
|
1759
|
+
Items: [
|
|
1760
|
+
{ X: 25, Y: 30, x: 25, y: 30, TargetUrl: '/products', targetUrl: '/products', Url: '/products', url: '/products' },
|
|
1761
|
+
{ X: 55, Y: 45, x: 55, y: 45, TargetUrl: '/products', targetUrl: '/products', Url: '/products', url: '/products' },
|
|
1762
|
+
{ X: 75, Y: 60, x: 75, y: 60, TargetUrl: '/products', targetUrl: '/products', Url: '/products', url: '/products' }
|
|
1763
|
+
]
|
|
1764
|
+
}
|
|
1765
|
+
}
|
|
1766
|
+
},
|
|
1767
|
+
|
|
1768
|
+
// SpaceBarCarousel Widget
|
|
1769
|
+
{
|
|
1770
|
+
id: 'widget-spacebar-carousel-1',
|
|
1771
|
+
type: 'SpaceBarCarousel',
|
|
1772
|
+
section: 'content',
|
|
1773
|
+
sectionName: 'content',
|
|
1774
|
+
pageId: 'home',
|
|
1775
|
+
status: 'active',
|
|
1776
|
+
Position: 18,
|
|
1777
|
+
Title: 'Why Shop With Us',
|
|
1778
|
+
settings: {
|
|
1779
|
+
title: 'Why Shop With Us',
|
|
1780
|
+
subtitle: 'We deliver excellence',
|
|
1781
|
+
showWidgetTitle: 'Yes',
|
|
1782
|
+
widgetTitleAlignment: 'center',
|
|
1783
|
+
backgroundColor: '#f8f9fa',
|
|
1784
|
+
textColor: '#111',
|
|
1785
|
+
hideDot: false,
|
|
1786
|
+
hideArrow: false,
|
|
1787
|
+
priorityCount: 4
|
|
1788
|
+
},
|
|
1789
|
+
data: {
|
|
1790
|
+
content: {
|
|
1791
|
+
Items: [
|
|
1468
1792
|
{
|
|
1469
|
-
Title: '
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
{ Text: 'Press', text: 'Press', Url: '/pages/press', url: '/pages/press' }
|
|
1475
|
-
],
|
|
1476
|
-
links: [
|
|
1477
|
-
{ text: 'Our Story', url: '/pages/about' },
|
|
1478
|
-
{ text: 'Careers', url: '/pages/careers' },
|
|
1479
|
-
{ text: 'Press', url: '/pages/press' }
|
|
1480
|
-
]
|
|
1793
|
+
Title: 'Free Shipping', title: 'Free Shipping',
|
|
1794
|
+
Description: 'On orders over $50', description: 'On orders over $50',
|
|
1795
|
+
IconHtml: '<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="1" y="3" width="15" height="13"></rect><polygon points="16 8 20 8 23 11 23 16 16 16 16 8"></polygon><circle cx="5.5" cy="18.5" r="2.5"></circle><circle cx="18.5" cy="18.5" r="2.5"></circle></svg>',
|
|
1796
|
+
ImageUrl: 'https://picsum.photos/seed/feat-ship/100/100', imageUrl: 'https://picsum.photos/seed/feat-ship/100/100',
|
|
1797
|
+
Link: '/shipping-info', link: '/shipping-info'
|
|
1481
1798
|
},
|
|
1482
1799
|
{
|
|
1483
|
-
Title: '
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
{ Text: 'Returns', text: 'Returns', Url: '/pages/returns', url: '/pages/returns' }
|
|
1489
|
-
],
|
|
1490
|
-
links: [
|
|
1491
|
-
{ text: 'Contact Us', url: '/pages/contact' },
|
|
1492
|
-
{ text: 'FAQs', url: '/pages/faq' },
|
|
1493
|
-
{ text: 'Returns', url: '/pages/returns' }
|
|
1494
|
-
]
|
|
1800
|
+
Title: '24/7 Support', title: '24/7 Support',
|
|
1801
|
+
Description: 'Dedicated support team', description: 'Dedicated support team',
|
|
1802
|
+
IconHtml: '<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72"></path></svg>',
|
|
1803
|
+
ImageUrl: 'https://picsum.photos/seed/feat-support/100/100', imageUrl: 'https://picsum.photos/seed/feat-support/100/100',
|
|
1804
|
+
Link: '/contact', link: '/contact'
|
|
1495
1805
|
},
|
|
1496
1806
|
{
|
|
1497
|
-
Title: '
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1807
|
+
Title: 'Secure Payment', title: 'Secure Payment',
|
|
1808
|
+
Description: '100% secure checkout', description: '100% secure checkout',
|
|
1809
|
+
IconHtml: '<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>',
|
|
1810
|
+
ImageUrl: 'https://picsum.photos/seed/feat-secure/100/100', imageUrl: 'https://picsum.photos/seed/feat-secure/100/100',
|
|
1811
|
+
Link: '/security', link: '/security'
|
|
1812
|
+
},
|
|
1813
|
+
{
|
|
1814
|
+
Title: 'Easy Returns', title: 'Easy Returns',
|
|
1815
|
+
Description: '30-day return policy', description: '30-day return policy',
|
|
1816
|
+
IconHtml: '<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path></svg>',
|
|
1817
|
+
ImageUrl: 'https://picsum.photos/seed/feat-return/100/100', imageUrl: 'https://picsum.photos/seed/feat-return/100/100',
|
|
1818
|
+
Link: '/returns', link: '/returns'
|
|
1819
|
+
},
|
|
1820
|
+
{
|
|
1821
|
+
Title: 'Loyalty Rewards', title: 'Loyalty Rewards',
|
|
1822
|
+
Description: 'Earn points on every purchase', description: 'Earn points on every purchase',
|
|
1823
|
+
IconHtml: '<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="8" r="7"></circle><polyline points="8.21 13.89 7 23 12 20 17 23 15.79 13.88"></polyline></svg>',
|
|
1824
|
+
ImageUrl: 'https://picsum.photos/seed/feat-loyalty/100/100', imageUrl: 'https://picsum.photos/seed/feat-loyalty/100/100',
|
|
1825
|
+
Link: '/loyalty', link: '/loyalty'
|
|
1826
|
+
},
|
|
1827
|
+
{
|
|
1828
|
+
Title: 'Quality Assured', title: 'Quality Assured',
|
|
1829
|
+
Description: 'Premium products guaranteed', description: 'Premium products guaranteed',
|
|
1830
|
+
IconHtml: '<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>',
|
|
1831
|
+
ImageUrl: 'https://picsum.photos/seed/feat-quality/100/100', imageUrl: 'https://picsum.photos/seed/feat-quality/100/100',
|
|
1832
|
+
Link: '/about', link: '/about'
|
|
1509
1833
|
}
|
|
1834
|
+
]
|
|
1835
|
+
}
|
|
1836
|
+
}
|
|
1837
|
+
},
|
|
1838
|
+
{
|
|
1839
|
+
id: 'widget-news-1',
|
|
1840
|
+
type: 'News',
|
|
1841
|
+
section: 'content',
|
|
1842
|
+
sectionName: 'content',
|
|
1843
|
+
pageId: 'home',
|
|
1844
|
+
status: 'active',
|
|
1845
|
+
Position: 19,
|
|
1846
|
+
Title: 'Latest News',
|
|
1847
|
+
settings: {
|
|
1848
|
+
title: 'Latest News',
|
|
1849
|
+
showWidgetTitle: 'Yes',
|
|
1850
|
+
widgetTitleAlignment: 'center',
|
|
1851
|
+
showGridView: true,
|
|
1852
|
+
backgroundColor: '#ffffff',
|
|
1853
|
+
textColor: '#111111'
|
|
1854
|
+
},
|
|
1855
|
+
data: {
|
|
1856
|
+
content: {
|
|
1857
|
+
items: [
|
|
1858
|
+
{ id: 1, title: 'Welcome to Our Store', slug: 'welcome', excerpt: 'Learn about our new collection and special offers.', thumbnailImage: { url: 'https://picsum.photos/seed/n1/400/220' }, publishedAt: new Date().toISOString() },
|
|
1859
|
+
{ id: 2, title: 'Summer Sale 2025', slug: 'summer-sale', excerpt: 'Up to 50% off on selected items.', thumbnailImage: { url: 'https://picsum.photos/seed/n2/400/220' }, publishedAt: new Date().toISOString() },
|
|
1860
|
+
{ id: 3, title: 'New Arrivals', slug: 'new-arrivals', excerpt: 'Check out the latest products in our catalog.', thumbnailImage: { url: 'https://picsum.photos/seed/n3/400/220' }, publishedAt: new Date().toISOString() },
|
|
1861
|
+
{ id: 4, title: 'Tips & Guides', slug: 'tips-guides', excerpt: 'How to get the most from your purchase.', thumbnailImage: { url: 'https://picsum.photos/seed/n4/400/220' }, publishedAt: new Date().toISOString() }
|
|
1510
1862
|
],
|
|
1511
|
-
|
|
1512
|
-
{
|
|
1513
|
-
{
|
|
1514
|
-
{
|
|
1515
|
-
{
|
|
1863
|
+
Items: [
|
|
1864
|
+
{ id: 1, Title: 'Welcome to Our Store', slug: 'welcome', Excerpt: 'Learn about our new collection and special offers.', ThumbnailImage: { url: 'https://picsum.photos/seed/n1/400/220' }, PublishedAt: new Date().toISOString() },
|
|
1865
|
+
{ id: 2, Title: 'Summer Sale 2025', slug: 'summer-sale', Excerpt: 'Up to 50% off on selected items.', ThumbnailImage: { url: 'https://picsum.photos/seed/n2/400/220' }, PublishedAt: new Date().toISOString() },
|
|
1866
|
+
{ id: 3, Title: 'New Arrivals', slug: 'new-arrivals', Excerpt: 'Check out the latest products in our catalog.', ThumbnailImage: { url: 'https://picsum.photos/seed/n3/400/220' }, PublishedAt: new Date().toISOString() },
|
|
1867
|
+
{ id: 4, Title: 'Tips & Guides', slug: 'tips-guides', Excerpt: 'How to get the most from your purchase.', ThumbnailImage: { url: 'https://picsum.photos/seed/n4/400/220' }, PublishedAt: new Date().toISOString() }
|
|
1516
1868
|
]
|
|
1517
1869
|
}
|
|
1518
1870
|
}
|
|
1519
1871
|
},
|
|
1872
|
+
|
|
1873
|
+
// ==================== FOOTER SECTION ====================
|
|
1520
1874
|
{
|
|
1521
1875
|
id: 'widget-footer-menu-1',
|
|
1522
1876
|
type: 'FooterMenu',
|