@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.
Files changed (90) hide show
  1. package/README.md +4 -0
  2. package/lib/lib/dev-server.js +344 -48
  3. package/lib/lib/liquid-engine.js +3 -1
  4. package/lib/lib/mock-data.js +473 -119
  5. package/lib/lib/widget-service.js +12 -4
  6. package/package.json +2 -2
  7. package/test-theme/assets/async-sections.js +32 -24
  8. package/test-theme/assets/cart-drawer.js +20 -22
  9. package/test-theme/assets/cart-manager.js +1 -15
  10. package/test-theme/assets/checkout-price-handler.js +12 -11
  11. package/test-theme/assets/checkout.css +1415 -0
  12. package/test-theme/assets/checkout.js +3174 -0
  13. package/test-theme/assets/components.css +178 -29
  14. package/test-theme/assets/delivery-zone.js +1 -1
  15. package/test-theme/assets/product-detail.css +1050 -0
  16. package/test-theme/assets/product-detail.js +2940 -0
  17. package/test-theme/assets/theme.css +95 -120
  18. package/test-theme/assets/theme.js +781 -186
  19. package/test-theme/layout/theme.liquid +91 -17
  20. package/test-theme/sections/content.liquid +64 -57
  21. package/test-theme/sections/footer-fallback.liquid +57 -7
  22. package/test-theme/sections/footer.liquid +63 -12
  23. package/test-theme/sections/header-fallback.liquid +41 -41
  24. package/test-theme/sections/header.liquid +41 -51
  25. package/test-theme/sections/hero-fallback.liquid +1 -1
  26. package/test-theme/sections/hero.liquid +159 -136
  27. package/test-theme/snippets/account-sidebar.liquid +121 -29
  28. package/test-theme/snippets/add-to-cart-modal.liquid +258 -206
  29. package/test-theme/snippets/breadcrumbs.liquid +98 -11
  30. package/test-theme/snippets/cart-drawer.liquid +93 -0
  31. package/test-theme/snippets/delivery-zone-city-selector.liquid +101 -15
  32. package/test-theme/snippets/delivery-zone-modal.liquid +529 -84
  33. package/test-theme/snippets/delivery-zone-search.liquid +104 -18
  34. package/test-theme/snippets/login-modal.liquid +269 -82
  35. package/test-theme/snippets/mega-menu.liquid +130 -43
  36. package/test-theme/snippets/news-thumbnail.liquid +120 -28
  37. package/test-theme/snippets/pagination.liquid +1 -1
  38. package/test-theme/snippets/price.liquid +100 -9
  39. package/test-theme/snippets/product-card-related.liquid +22 -4
  40. package/test-theme/snippets/product-card-simple.liquid +521 -25
  41. package/test-theme/snippets/product-card.liquid +145 -232
  42. package/test-theme/snippets/rating.liquid +100 -9
  43. package/test-theme/snippets/skeleton-collection-grid.liquid +94 -8
  44. package/test-theme/snippets/skeleton-product-card.liquid +102 -16
  45. package/test-theme/snippets/skeleton-product-grid.liquid +87 -1
  46. package/test-theme/snippets/social-sharing.liquid +133 -32
  47. package/test-theme/templates/account/dashboard.liquid +30 -0
  48. package/test-theme/templates/account/loyalty-redemption.liquid +29 -28
  49. package/test-theme/templates/account/loyalty.liquid +45 -43
  50. package/test-theme/templates/account/order-detail.liquid +15 -8
  51. package/test-theme/templates/account/orders.liquid +189 -35
  52. package/test-theme/templates/account/profile.liquid +509 -114
  53. package/test-theme/templates/account/register.liquid +18 -8
  54. package/test-theme/templates/account/return-orders.liquid +31 -30
  55. package/test-theme/templates/account/store-credit.liquid +27 -26
  56. package/test-theme/templates/account/subscriptions.liquid +22 -5
  57. package/test-theme/templates/account/wishlist.liquid +88 -19
  58. package/test-theme/templates/address-book.liquid +166 -69
  59. package/test-theme/templates/categories.liquid +90 -30
  60. package/test-theme/templates/checkout.liquid +137 -3834
  61. package/test-theme/templates/error.liquid +23 -21
  62. package/test-theme/templates/index.liquid +29 -0
  63. package/test-theme/templates/login.liquid +33 -6
  64. package/test-theme/templates/order-confirmation.liquid +67 -9
  65. package/test-theme/templates/page.liquid +418 -206
  66. package/test-theme/templates/product-detail.liquid +124 -3878
  67. package/test-theme/templates/products.liquid +155 -30
  68. package/test-theme/templates/search.liquid +739 -225
  69. package/test-theme/widgets/brand-carousel.liquid +102 -82
  70. package/test-theme/widgets/brand.liquid +78 -50
  71. package/test-theme/widgets/carousel.liquid +253 -121
  72. package/test-theme/widgets/category-list-carousel.liquid +32 -8
  73. package/test-theme/widgets/category-list.liquid +21 -6
  74. package/test-theme/widgets/category.liquid +104 -37
  75. package/test-theme/widgets/discount-time.liquid +326 -119
  76. package/test-theme/widgets/footer-menu.liquid +115 -23
  77. package/test-theme/widgets/footer.liquid +118 -5
  78. package/test-theme/widgets/gallery.liquid +29 -5
  79. package/test-theme/widgets/header-menu.liquid +25 -13
  80. package/test-theme/widgets/header.liquid +64 -26
  81. package/test-theme/widgets/html.liquid +29 -6
  82. package/test-theme/widgets/news.liquid +6 -0
  83. package/test-theme/widgets/product-canvas.liquid +20 -12
  84. package/test-theme/widgets/product-carousel.liquid +118 -56
  85. package/test-theme/widgets/shared/product-grid.liquid +12 -0
  86. package/test-theme/widgets/single-product.liquid +688 -250
  87. package/test-theme/widgets/spacebar-carousel.liquid +39 -10
  88. package/test-theme/widgets/spacebar.liquid +77 -6
  89. package/test-theme/widgets/splash.liquid +40 -30
  90. package/test-theme/widgets/testimonial-carousel.liquid +111 -67
@@ -3,83 +3,83 @@
3
3
  /* Theme Customization Variables - Values sourced from settings_data.json */
4
4
  :root {
5
5
  /* Color Scheme Overrides */
6
- --color-primary: {{ settings.color_primary }};
7
- --color-primary-light: {{ settings.color_primary_light }};
8
- --color-primary-dark: {{ settings.color_primary_dark }};
9
- --color-secondary: {{ settings.color_secondary }};
10
- --color-accent: {{ settings.color_accent }};
11
- --color-accent-light: {{ settings.color_accent_light }};
12
- --color-accent-dark: {{ settings.color_accent_dark }};
13
- --color-background: {{ settings.color_background }};
14
- --color-surface: {{ settings.color_surface }};
15
- --color-border: {{ settings.color_border }};
16
- --color-text: {{ settings.color_text }};
17
- --color-text-muted: {{ settings.color_text_muted }};
18
- --color-text-light: {{ settings.color_text_light }};
19
- --color-success: {{ settings.color_success }};
20
- --color-error: {{ settings.color_error }};
21
- --color-warning: {{ settings.color_warning }};
22
- --color-info: {{ settings.color_info }};
6
+ --color-primary: {{ settings.color_primary | default: '#000000' }};
7
+ --color-primary-light: {{ settings.color_primary_light | default: '#666666' }};
8
+ --color-primary-dark: {{ settings.color_primary_dark | default: '#333333' }};
9
+ --color-secondary: {{ settings.color_secondary | default: '#666666' }};
10
+ --color-accent: {{ settings.color_accent | default: '#000000' }};
11
+ --color-accent-light: {{ settings.color_accent_light | default: '#666666' }};
12
+ --color-accent-dark: {{ settings.color_accent_dark | default: '#333333' }};
13
+ --color-background: {{ settings.color_background | default: '#ffffff' }};
14
+ --color-surface: {{ settings.color_surface | default: '#f5f5f5' }};
15
+ --color-border: {{ settings.color_border | default: '#cccccc' }};
16
+ --color-text: {{ settings.color_text | default: '#000000' }};
17
+ --color-text-muted: {{ settings.color_text_muted | default: '#666666' }};
18
+ --color-text-light: {{ settings.color_text_light | default: '#999999' }};
19
+ --color-success: {{ settings.color_success | default: '#22c55e' }};
20
+ --color-error: {{ settings.color_error | default: '#ef4444' }};
21
+ --color-warning: {{ settings.color_warning | default: '#f59e0b' }};
22
+ --color-info: {{ settings.color_info | default: '#3b82f6' }};
23
23
 
24
24
  /* Typography Overrides */
25
- --font-primary: {{ settings.font_primary }}, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
26
- --font-display: {{ settings.font_display }}, 'Georgia', 'Times New Roman', serif;
27
- --font-heading: {{ settings.font_heading }}, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
28
- --font-body: {{ settings.font_body }}, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
29
- --font-mono: {{ settings.font_mono }}, 'Monaco', 'Inconsolata', 'Roboto Mono', 'Courier New', monospace;
30
- --font-size-base: {{ settings.font_size_base }}px;
31
- --font-size-heading: {{ settings.font_size_heading }}px;
32
- --font-weight-normal: {{ settings.font_weight_normal }};
33
- --font-weight-medium: {{ settings.font_weight_medium }};
34
- --font-weight-bold: {{ settings.font_weight_bold }};
35
- --line-height-base: {{ settings.line_height_base }};
36
- --line-height-heading: {{ settings.line_height_heading }};
37
- --letter-spacing-heading: {{ settings.letter_spacing_heading }}em;
38
- --letter-spacing-uppercase: {{ settings.letter_spacing_uppercase }}em;
25
+ --font-primary: {{ settings.font_primary | default: '' }}, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
26
+ --font-display: {{ settings.font_display | default: '' }}, 'Georgia', 'Times New Roman', serif;
27
+ --font-heading: {{ settings.font_heading | default: '' }}, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
28
+ --font-body: {{ settings.font_body | default: '' }}, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
29
+ --font-mono: {{ settings.font_mono | default: '' }}, 'Monaco', 'Inconsolata', 'Roboto Mono', 'Courier New', monospace;
30
+ --font-size-base: {{ settings.font_size_base | default: 14 }}px;
31
+ --font-size-heading: {{ settings.font_size_heading | default: 28 }}px;
32
+ --font-weight-normal: {{ settings.font_weight_normal | default: 400 }};
33
+ --font-weight-medium: {{ settings.font_weight_medium | default: 500 }};
34
+ --font-weight-bold: {{ settings.font_weight_bold | default: 700 }};
35
+ --line-height-base: {{ settings.line_height_base | default: 1.5 }};
36
+ --line-height-heading: {{ settings.line_height_heading | default: 1.2 }};
37
+ --letter-spacing-heading: {{ settings.letter_spacing_heading | default: 0 }}em;
38
+ --letter-spacing-uppercase: {{ settings.letter_spacing_uppercase | default: 0.05 }}em;
39
39
 
40
40
  /* Layout Overrides */
41
- --container-width: {{ settings.container_width }}px;
42
- --container-padding: {{ settings.container_padding }}px;
43
- --spacing-section: {{ settings.spacing_section }}px;
44
- --spacing-large: {{ settings.spacing_large }}px;
45
- --spacing-component: {{ settings.spacing_component }}px;
46
- --spacing-element: {{ settings.spacing_element }}px;
47
- --spacing-small: {{ settings.spacing_small }}px;
48
- --spacing-xsmall: {{ settings.spacing_xsmall }}px;
49
- --border-radius-small: {{ settings.border_radius_small }}px;
50
- --border-radius-medium: {{ settings.border_radius_medium }}px; /* Horizon uses 8px */
51
- --border-radius-large: {{ settings.border_radius_large }}px;
41
+ --container-width: {{ settings.container_width | default: 1200 }}px;
42
+ --container-padding: {{ settings.container_padding | default: 16 }}px;
43
+ --spacing-section: {{ settings.spacing_section | default: 64 }}px;
44
+ --spacing-large: {{ settings.spacing_large | default: 32 }}px;
45
+ --spacing-component: {{ settings.spacing_component | default: 24 }}px;
46
+ --spacing-element: {{ settings.spacing_element | default: 16 }}px;
47
+ --spacing-small: {{ settings.spacing_small | default: 8 }}px;
48
+ --spacing-xsmall: {{ settings.spacing_xsmall | default: 4 }}px;
49
+ --border-radius-small: {{ settings.border_radius_small | default: 4 }}px;
50
+ --border-radius-medium: {{ settings.border_radius_medium | default: 8 }}px; /* Horizon uses 8px */
51
+ --border-radius-large: {{ settings.border_radius_large | default: 12 }}px;
52
52
 
53
53
  /* Animation Overrides */
54
- --animation-speed: {{ settings.animation_speed }};
55
- --enable-animations: {{ settings.enable_animations }};
56
- --enable-parallax: {{ settings.enable_parallax }};
57
- --enable-hover-effects: {{ settings.enable_hover_effects }};
58
- --enable-fade-in: {{ settings.enable_fade_in }};
59
- --enable-stagger-animation: {{ settings.enable_stagger_animation }};
54
+ --animation-speed: {{ settings.animation_speed | default: 'normal' }};
55
+ --enable-animations: {{ settings.enable_animations | default: true }};
56
+ --enable-parallax: {{ settings.enable_parallax | default: false }};
57
+ --enable-hover-effects: {{ settings.enable_hover_effects | default: true }};
58
+ --enable-fade-in: {{ settings.enable_fade_in | default: true }};
59
+ --enable-stagger-animation: {{ settings.enable_stagger_animation | default: true }};
60
60
 
61
61
  /* Shadow Overrides */
62
- --shadow-opacity: {{ settings.shadow_opacity }};
63
- --shadow-blur: {{ settings.shadow_blur }}px;
64
- --shadow-spread: {{ settings.shadow_spread }}px;
65
- --depth-level-1: {{ settings.depth_level_1 }}px;
66
- --depth-level-2: {{ settings.depth_level_2 }}px;
67
- --depth-level-3: {{ settings.depth_level_3 }}px;
62
+ --shadow-opacity: {{ settings.shadow_opacity | default: 0.1 }};
63
+ --shadow-blur: {{ settings.shadow_blur | default: 8 }}px;
64
+ --shadow-spread: {{ settings.shadow_spread | default: 0 }}px;
65
+ --depth-level-1: {{ settings.depth_level_1 | default: 1 }}px;
66
+ --depth-level-2: {{ settings.depth_level_2 | default: 4 }}px;
67
+ --depth-level-3: {{ settings.depth_level_3 | default: 8 }}px;
68
68
 
69
69
  /* Button Overrides */
70
- --button-style: {{ settings.button_style }};
71
- --button-padding-vertical: {{ settings.button_padding_vertical }}px;
72
- --button-padding-tal: {{ settings.button_padding_tal }}px;
73
- --button-hover-lift: {{ settings.button_hover_lift }};
74
- --button-ripple-effect: {{ settings.button_ripple_effect }};
75
- --button-transition-speed: {{ settings.button_transition_speed }}ms;
70
+ --button-style: {{ settings.button_style | default: 'modern' }};
71
+ --button-padding-vertical: {{ settings.button_padding_vertical | default: 12 }}px;
72
+ --button-padding-tal: {{ settings.button_padding_tal | default: 24 }}px;
73
+ --button-hover-lift: {{ settings.button_hover_lift | default: true }};
74
+ --button-ripple-effect: {{ settings.button_ripple_effect | default: false }};
75
+ --button-transition-speed: {{ settings.button_transition_speed | default: 200 }}ms;
76
76
 
77
77
  /* Performance Overrides */
78
- --lazy-load-images: {{ settings.lazy_load_images }};
79
- --preload-critical-css: {{ settings.preload_critical_css }};
80
- --optimize-animations: {{ settings.optimize_animations }};
81
- --show-loading-skeletons: {{ settings.show_loading_skeletons }};
82
- --loading-animation: {{ settings.loading_animation }};
78
+ --lazy-load-images: {{ settings.lazy_load_images | default: true }};
79
+ --preload-critical-css: {{ settings.preload_critical_css | default: true }};
80
+ --optimize-animations: {{ settings.optimize_animations | default: true }};
81
+ --show-loading-skeletons: {{ settings.show_loading_skeletons | default: true }};
82
+ --loading-animation: {{ settings.loading_animation | default: 'spinner' }};
83
83
  }
84
84
 
85
85
  /* CSS Custom Properties (CSS Variables) System */
@@ -88,29 +88,29 @@
88
88
  are defined above using values from settings_data.json via Liquid syntax */
89
89
 
90
90
  /* Semantic Color Variants - Use base colors from settings */
91
- --color-success-light: {{ settings.color_success }};
92
- --color-success-dark: {{ settings.color_success }};
93
- --color-error-light: {{ settings.color_error }};
94
- --color-error-dark: {{ settings.color_error }};
95
- --color-warning-light: {{ settings.color_warning }};
96
- --color-warning-dark: {{ settings.color_warning }};
97
- --color-info-light: {{ settings.color_info }};
98
- --color-info-dark: {{ settings.color_info }};
91
+ --color-success-light: {{ settings.color_success | default: '#22c55e' }};
92
+ --color-success-dark: {{ settings.color_success | default: '#22c55e' }};
93
+ --color-error-light: {{ settings.color_error | default: '#ef4444' }};
94
+ --color-error-dark: {{ settings.color_error | default: '#ef4444' }};
95
+ --color-warning-light: {{ settings.color_warning | default: '#f59e0b' }};
96
+ --color-warning-dark: {{ settings.color_warning | default: '#f59e0b' }};
97
+ --color-info-light: {{ settings.color_info | default: '#3b82f6' }};
98
+ --color-info-dark: {{ settings.color_info | default: '#3b82f6' }};
99
99
 
100
100
  /* Neutral Scale - Use settings colors */
101
- --color-white: {{ settings.color_background }};
102
- --color-gray-25: {{ settings.color_background }};
103
- --color-gray-50: {{ settings.color_surface }};
104
- --color-gray-100: {{ settings.color_surface }};
105
- --color-gray-200: {{ settings.color_border }};
106
- --color-gray-300: {{ settings.color_border }};
107
- --color-gray-400: {{ settings.color_text_muted }};
108
- --color-gray-500: {{ settings.color_text_muted }};
109
- --color-gray-600: {{ settings.color_text_muted }};
110
- --color-gray-700: {{ settings.color_text }};
111
- --color-gray-800: {{ settings.color_text }};
112
- --color-gray-900: {{ settings.color_text }};
113
- --color-black: {{ settings.color_primary_dark }};
101
+ --color-white: #ffffff;
102
+ --color-gray-25: {{ settings.color_background | default: '#ffffff' }};
103
+ --color-gray-50: {{ settings.color_surface | default: '#f5f5f5' }};
104
+ --color-gray-100: {{ settings.color_surface | default: '#f5f5f5' }};
105
+ --color-gray-200: {{ settings.color_border | default: '#cccccc' }};
106
+ --color-gray-300: {{ settings.color_border | default: '#cccccc' }};
107
+ --color-gray-400: {{ settings.color_text_muted | default: '#666666' }};
108
+ --color-gray-500: {{ settings.color_text_muted | default: '#666666' }};
109
+ --color-gray-600: {{ settings.color_text_muted | default: '#666666' }};
110
+ --color-gray-700: {{ settings.color_text | default: '#000000' }};
111
+ --color-gray-800: {{ settings.color_text | default: '#000000' }};
112
+ --color-gray-900: {{ settings.color_text | default: '#000000' }};
113
+ --color-black: {{ settings.color_primary_dark | default: '#333333' }};
114
114
 
115
115
  /* Typography System - Horizon Style */
116
116
  /* Note: --font-primary, --font-display, --font-mono are defined above using values from settings_data.json */
@@ -292,8 +292,8 @@
292
292
 
293
293
  /* Theme Variation Classes */
294
294
  .theme-variation-minimal {
295
- --color-primary: var(--color-primary-dark, #000000);
296
- --color-accent: var(--color-primary-dark, #000000);
295
+ --color-primary: {{ settings.color_primary | default: '#000000' }};
296
+ --color-accent: {{ settings.color_accent | default: '#000000' }};
297
297
  --border-radius-small: 0px;
298
298
  --border-radius-medium: 0px;
299
299
  --border-radius-large: 0px;
@@ -311,9 +311,9 @@
311
311
  }
312
312
 
313
313
  .theme-variation-dark {
314
- --color-background: var(--color-primary-dark, #0f0f0f);
314
+ --color-background: {{ settings.color_background | default: '#0f0f0f' }};
315
315
  --color-surface: #1a1a1a;
316
- --color-text: var(--color-background);
316
+ --color-text: {{ settings.color_text | default: '#ffffff' }};
317
317
  --color-text-muted: #a0a0a0;
318
318
  --color-border: #333333;
319
319
  }
@@ -534,10 +534,6 @@
534
534
  will-change: transform;
535
535
  }
536
536
 
537
- .lazy-load-enabled img {
538
- loading: lazy;
539
- }
540
-
541
537
  /* Loading states */
542
538
  .loading-skeleton {
543
539
  background: linear-gradient(90deg, var(--color-gray-200) 25%, var(--color-gray-100) 50%, var(--color-gray-200) 75%);
@@ -2838,11 +2834,14 @@ h3 { font-size: var(--text-7xl); }
2838
2834
  color: var(--color-info-dark);
2839
2835
  }
2840
2836
 
2841
- .status-badge.status-shipped,
2837
+
2842
2838
  .status-badge.status-delivered {
2843
2839
  background: var(--color-success-light);
2844
2840
  color: var(--color-success-dark);
2845
2841
  }
2842
+ .status-badge.status-shipped{
2843
+ color: var(--color-success-dark);
2844
+ }
2846
2845
 
2847
2846
  .status-badge.status-cancelled {
2848
2847
  background: var(--color-error-light);
@@ -3225,12 +3224,6 @@ h3 { font-size: var(--text-7xl); }
3225
3224
  }
3226
3225
 
3227
3226
  /* Will-change optimizations */
3228
- .btn:hover,
3229
- .product-card:hover,
3230
- .collection-card:hover,
3231
- .blog-card:hover {
3232
- will-change: transform;
3233
- }
3234
3227
 
3235
3228
  [data-parallax] {
3236
3229
  will-change: transform;
@@ -3273,7 +3266,6 @@ h3 { font-size: var(--text-7xl); }
3273
3266
  img {
3274
3267
  max-width: 100%;
3275
3268
  height: auto;
3276
- loading: lazy;
3277
3269
  }
3278
3270
 
3279
3271
  .hero-image,
@@ -3282,23 +3274,6 @@ img {
3282
3274
  object-position: center;
3283
3275
  }
3284
3276
 
3285
- /* Font Loading Optimization */
3286
- @font-face {
3287
- font-family: 'Inter';
3288
- font-style: normal;
3289
- font-weight: 400 700;
3290
- font-display: swap;
3291
- src: url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
3292
- }
3293
-
3294
- @font-face {
3295
- font-family: 'Playfair Display';
3296
- font-style: normal;
3297
- font-weight: 400 700;
3298
- font-display: swap;
3299
- src: url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;600;700&display=swap');
3300
- }
3301
-
3302
3277
  /* Accessibility Improvements */
3303
3278
 
3304
3279
  /* Focus Management */
@@ -3497,4 +3472,4 @@ select:focus {
3497
3472
  orphans: 3;
3498
3473
  widows: 3;
3499
3474
  }
3500
- }
3475
+ }