spree_frontend 4.7.0 → 4.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +37 -42
  3. data/.gem_release.yml +1 -1
  4. data/.github/CONTRIBUTING.md +1 -1
  5. data/.github/dependabot.yml +9 -30
  6. data/.rubocop.yml +10 -183
  7. data/.ruby-version +1 -0
  8. data/Gemfile +4 -4
  9. data/LICENSE +1 -1
  10. data/README.md +31 -38
  11. data/SECURITY.md +1 -1
  12. data/app/assets/config/spree_frontend_manifest.js +2 -1
  13. data/app/assets/images/favicon.ico +0 -0
  14. data/app/assets/images/logo/spree_50.png +0 -0
  15. data/app/assets/images/noimage/large.png +0 -0
  16. data/app/assets/images/noimage/mini.png +0 -0
  17. data/app/assets/images/noimage/product.png +0 -0
  18. data/app/assets/images/noimage/small.png +0 -0
  19. data/app/assets/javascripts/spree/frontend/{account.js → account.es6} +2 -5
  20. data/app/assets/javascripts/spree/frontend/{api_tokens.js → api_tokens.es6} +2 -5
  21. data/app/assets/javascripts/spree/frontend/cart.js +1 -1
  22. data/app/assets/javascripts/spree/frontend/checkout/address.js +1 -1
  23. data/app/assets/javascripts/spree/frontend/checkout/address_book.js +1 -1
  24. data/app/assets/javascripts/spree/frontend/checkout/payment.js +1 -1
  25. data/app/assets/javascripts/spree/frontend/checkout/shipment.js +1 -1
  26. data/app/assets/javascripts/spree/frontend/checkout.js +1 -1
  27. data/app/assets/javascripts/spree/frontend/login.js +1 -1
  28. data/app/assets/javascripts/spree/frontend/main_nav_bar.js +1 -1
  29. data/app/assets/javascripts/spree/frontend/views/spree/layouts/spree_application.js +1 -1
  30. data/app/assets/javascripts/spree/frontend/views/spree/products/cart_form.js +9 -2
  31. data/app/assets/javascripts/spree/frontend/views/spree/products/index.js +1 -1
  32. data/app/assets/javascripts/spree/frontend/views/spree/products/modal_carousel.js +1 -1
  33. data/app/assets/javascripts/spree/frontend/views/spree/products/price_filters.es6 +1 -1
  34. data/app/assets/javascripts/spree/frontend/views/spree/shared/carousel/single.js +1 -1
  35. data/app/assets/javascripts/spree/frontend/views/spree/shared/carousel/swipes.js +1 -1
  36. data/app/assets/javascripts/spree/frontend/views/spree/shared/carousel/thumbnails.js +1 -1
  37. data/app/assets/javascripts/spree/frontend/views/spree/shared/carousel.js +1 -1
  38. data/app/assets/javascripts/spree/frontend/views/spree/shared/delete_address_popup.js +1 -1
  39. data/app/assets/javascripts/spree/frontend/views/spree/shared/mobile_navigation.js +1 -1
  40. data/app/assets/javascripts/spree/frontend/views/spree/shared/quantity_select.js +1 -1
  41. data/app/assets/javascripts/spree/lazysizes.config.js +1 -1
  42. data/app/assets/stylesheets/spree/frontend/components-custom/headers.scss +0 -2
  43. data/app/assets/stylesheets/spree/frontend/components-custom/inputs.scss +4 -146
  44. data/app/assets/stylesheets/spree/frontend/fonts.scss +0 -136
  45. data/app/assets/stylesheets/spree/frontend/variables/variables.scss +21 -7
  46. data/app/assets/stylesheets/spree/frontend/views/spree/checkout/edit.scss +0 -3
  47. data/app/assets/stylesheets/spree/frontend/views/spree/layouts/spree_application.scss +1 -1
  48. data/app/assets/stylesheets/spree/frontend/views/spree/orders/edit.scss +0 -20
  49. data/app/assets/stylesheets/spree/frontend/views/spree/products/index.scss +2 -2
  50. data/app/assets/stylesheets/spree/frontend/views/spree/products/show.scss +0 -20
  51. data/app/assets/stylesheets/spree/frontend/views/spree/shared/cart.scss +0 -14
  52. data/app/assets/stylesheets/spree/frontend/views/spree/shared/header.scss +0 -25
  53. data/app/assets/stylesheets/spree/frontend/views/spree/shared/login.scss +0 -16
  54. data/app/assets/stylesheets/spree/frontend/views/spree/shared/main_nav_bar.scss +1 -8
  55. data/app/assets/stylesheets/spree/frontend/views/spree/shared/nav_bar.scss +1 -14
  56. data/app/assets/stylesheets/spree/frontend/views/spree/shared/no_product_available.scss +1 -1
  57. data/app/assets/stylesheets/spree/frontend/views/spree/shared/order_details.scss +0 -1
  58. data/app/assets/stylesheets/spree/frontend/views/spree/taxons/show.scss +1 -1
  59. data/app/assets/stylesheets/spree/frontend/views/spree/users/show.scss +0 -28
  60. data/app/helpers/spree/addresses_helper.rb +6 -10
  61. data/app/helpers/spree/frontend_helper.rb +1 -1
  62. data/app/helpers/spree/navigation_helper.rb +1 -1
  63. data/app/helpers/spree/products_filters_helper.rb +3 -3
  64. data/app/javascript/spree/frontend/application.js +2 -0
  65. data/app/views/spree/addresses/_form.html.erb +4 -5
  66. data/app/views/spree/addresses/edit.html.erb +1 -1
  67. data/app/views/spree/addresses/new.html.erb +1 -1
  68. data/app/views/spree/checkout/_address.html.erb +1 -1
  69. data/app/views/spree/checkout/_delivery.html.erb +1 -1
  70. data/app/views/spree/checkout/_summary.html.erb +1 -1
  71. data/app/views/spree/checkout/edit.html.erb +1 -1
  72. data/app/views/spree/checkout/payment/_gateway.html.erb +4 -4
  73. data/app/views/spree/checkout/payment/_storecredit.html.erb +1 -1
  74. data/app/views/spree/checkout/registration.html.erb +1 -1
  75. data/app/views/spree/layouts/spree_application.html.erb +4 -1
  76. data/app/views/spree/orders/_line_item_data.html.erb +1 -1
  77. data/app/views/spree/orders/show.html.erb +1 -1
  78. data/app/views/spree/products/_cart_form.html.erb +2 -2
  79. data/app/views/spree/products/_color_option_type.html.erb +1 -1
  80. data/app/views/spree/products/_description.html.erb +1 -1
  81. data/app/views/spree/products/_filters_desktop.html.erb +1 -1
  82. data/app/views/spree/products/_filters_mobile.html.erb +3 -3
  83. data/app/views/spree/products/_option_type.html.erb +1 -1
  84. data/app/views/spree/products/_promotions.html.erb +1 -1
  85. data/app/views/spree/products/_properties.html.erb +1 -1
  86. data/app/views/spree/products/_sort_desktop.html.erb +9 -24
  87. data/app/views/spree/products/index.html.erb +1 -1
  88. data/app/views/spree/products/related.html.erb +1 -1
  89. data/app/views/spree/shared/_checkout_header.html.erb +1 -1
  90. data/app/views/spree/shared/_currency_dropdown.html.erb +1 -1
  91. data/app/views/spree/shared/_delete_address_popup.html.erb +2 -2
  92. data/app/views/spree/shared/_footer.html.erb +3 -3
  93. data/app/views/spree/shared/_head.html.erb +2 -1
  94. data/app/views/spree/shared/_internationalization_options.html.erb +3 -3
  95. data/app/views/spree/shared/_line_item.html.erb +1 -1
  96. data/app/views/spree/shared/_locale_dropdown.html.erb +1 -1
  97. data/app/views/spree/shared/_login.html.erb +2 -2
  98. data/app/views/spree/shared/_main_nav_bar.html.erb +2 -2
  99. data/app/views/spree/shared/_mobile_internationalization_options.html.erb +1 -1
  100. data/app/views/spree/shared/_mobile_navigation.html.erb +1 -1
  101. data/app/views/spree/shared/_nav_bar.html.erb +5 -5
  102. data/app/views/spree/shared/_no_product_available.html.erb +1 -1
  103. data/app/views/spree/shared/_order_details.html.erb +3 -3
  104. data/app/views/spree/shared/_product_added_modal.html.erb +2 -2
  105. data/app/views/spree/shared/_user_form.html.erb +3 -3
  106. data/app/views/spree/taxons/_header.html.erb +1 -1
  107. data/app/views/spree/taxons/_subcategories.html.erb +1 -1
  108. data/app/views/spree/taxons/product_carousel.html.erb +1 -1
  109. data/app/views/spree/users/edit.html.erb +1 -1
  110. data/app/views/spree/users/show.html.erb +1 -1
  111. data/config/importmap.rb +2 -0
  112. data/config/locales/en.yml +37 -0
  113. data/lib/generators/spree/frontend/install/install_generator.rb +0 -2
  114. data/lib/spree/frontend/configuration.rb +1 -1
  115. data/lib/spree/frontend/engine.rb +9 -5
  116. data/lib/spree/frontend/version.rb +3 -3
  117. data/lib/spree/frontend.rb +3 -1
  118. data/spree_frontend.gemspec +12 -10
  119. metadata +65 -50
  120. data/.deepsource.toml +0 -19
  121. data/.eslintignore +0 -7
  122. data/.eslintrc +0 -36
  123. data/.solargraph.yml +0 -20
  124. data/.stylelintignore +0 -4
  125. data/.stylelintrc +0 -6
  126. data/app/assets/images/logo-spree.png +0 -0
  127. data/app/assets/images/logo.png +0 -0
  128. data/app/assets/images/logo.svg +0 -10
  129. data/app/assets/images/logo@2x.png +0 -0
  130. data/app/assets/images/logo@3x.png +0 -0
  131. data/app/assets/images/noimage/plp.png +0 -0
  132. data/app/assets/images/noimage/plp.svg +0 -16
  133. data/app/views/spree/shared/_get_started.html.erb +0 -32
  134. data/lib/generators/spree/frontend/install/templates/app/assets/config/manifest.js +0 -2
  135. data/license.md +0 -13
@@ -6,10 +6,6 @@
6
6
  svg {
7
7
  width: 24px;
8
8
  height: 24px;
9
- @include media-breakpoint-up(xl) {
10
- width: 36px;
11
- height: 36px;
12
- }
13
9
  }
14
10
  &,
15
11
  &:hover {
@@ -33,16 +29,6 @@
33
29
  padding: 0 2px;
34
30
  font-size: font-px-to-rem(12px);
35
31
  display: none;
36
- @include media-breakpoint-up(xl) {
37
- $size: 26px;
38
- $border-width: 2px;
39
- border-radius: $size / 2;
40
- border-width: $border-width;
41
- height: $size;
42
- min-width: $size;
43
- line-height: $size - $border-width * 2;
44
- font-size: font-px-to-rem(15px);
45
- }
46
32
  }
47
33
  &--visible-count {
48
34
  #{$self}-count {
@@ -46,31 +46,6 @@ body {
46
46
  }
47
47
  }
48
48
  }
49
- @include media-breakpoint-up(sm) {
50
- height: $spree-header-tablet-height;
51
- &-fluid {
52
- &-logo {
53
- img {
54
- max-height: 50px;
55
- }
56
- }
57
- }
58
- }
59
- @include media-breakpoint-up(xl) {
60
- height: $spree-header-desktop-height;
61
- &-fluid {
62
- &-logo {
63
- flex-basis: 0;
64
- margin: 0 0 1rem;
65
- img {
66
- max-height: 50px;
67
- }
68
- }
69
- &-primary-navigation {
70
- flex-basis: auto;
71
- }
72
- }
73
- }
74
49
  }
75
50
 
76
51
  #logo {
@@ -3,28 +3,12 @@
3
3
 
4
4
  a {
5
5
  transition: basic-transition(color);
6
- text-transform: uppercase;
7
6
  text-decoration: underline;
8
7
  color: theme-color('info');
9
- font-size: font-px-to-rem(12px);
10
8
 
11
9
  &:hover,
12
10
  &:active {
13
11
  color: theme-color('primary');
14
12
  }
15
13
  }
16
-
17
- @include media-breakpoint-up(sm) {
18
- margin-top: font-px-to-rem(19.7px);
19
- a {
20
- font-size: font-px-to-rem(23px);
21
- }
22
- }
23
-
24
- @include media-breakpoint-up(lg) {
25
- margin-top: font-px-to-rem(20px);
26
- a {
27
- font-size: font-px-to-rem(16px);
28
- }
29
- }
30
14
  }
@@ -1,8 +1,5 @@
1
1
  .main-nav-bar {
2
2
  &-item {
3
- text-transform: uppercase;
4
- font-size: 20px;
5
- font-weight: $font-weight-medium;
6
3
  padding: 0 1.5rem;
7
4
  height: 100%;
8
5
  a {
@@ -67,7 +64,7 @@
67
64
  padding: 0;
68
65
  margin: 0;
69
66
  border: 0;
70
- border-bottom: 3px solid transparent;
67
+ border-bottom: 2px solid transparent;
71
68
  }
72
69
  }
73
70
 
@@ -107,10 +104,6 @@
107
104
  display: none;
108
105
  }
109
106
  }
110
-
111
- @include media-breakpoint-up(xl) {
112
- top: $spree-header-desktop-height - 1px;
113
- }
114
107
  }
115
108
  }
116
109
 
@@ -21,22 +21,14 @@
21
21
  }
22
22
  .account-icon {
23
23
  svg {
24
- width: 27.6px;
24
+ width: 24px;
25
25
  height: 24px;
26
- @include media-breakpoint-up(xl) {
27
- width: 41.4px;
28
- height: 36px;
29
- }
30
26
  }
31
27
  }
32
28
  .search-icons {
33
29
  svg {
34
30
  width: 24px;
35
31
  height: 24px;
36
- @include media-breakpoint-up(xl) {
37
- width: 36px;
38
- height: 36px;
39
- }
40
32
  }
41
33
  }
42
34
  &-search-menu {
@@ -64,21 +56,16 @@
64
56
  input#keywords {
65
57
  background: transparent;
66
58
  color: $meganav-font-color;
67
- font-size: font-px-to-rem(14px);
68
59
  width: calc(100% - 40px);
69
60
  &:focus {
70
61
  outline: none;
71
62
  }
72
63
  &::placeholder {
73
- text-transform: uppercase;
74
64
  color: theme-color("borders");
75
65
  }
76
66
  &::-webkit-search-cancel-button {
77
67
  display: none;
78
68
  }
79
- @include media-breakpoint-up(md) {
80
- font-size: font-px-to-rem(22px);
81
- }
82
69
  }
83
70
  input[type="submit"] {
84
71
  display: none;
@@ -95,7 +95,7 @@
95
95
  &-button {
96
96
  width: 306px;
97
97
  height: 29px;
98
- background-color: #0074c2;
98
+ background-color: theme-color("primary");
99
99
  margin: 44px auto auto auto;
100
100
 
101
101
  @include media-breakpoint-up(md) {
@@ -7,7 +7,6 @@
7
7
  color: theme-color('dark-text');
8
8
  margin-top: 25px;
9
9
  font-weight: normal;
10
- text-transform: uppercase;
11
10
 
12
11
  &:first-child {
13
12
  margin-top: 0;
@@ -41,7 +41,7 @@
41
41
  color: theme-color("dark-text");
42
42
  }
43
43
  &-selected {
44
- border-bottom: 5px solid theme-color('dark-text');
44
+ border-bottom: 2px solid theme-color('dark-text');
45
45
  }
46
46
  }
47
47
  }
@@ -226,45 +226,17 @@
226
226
 
227
227
  &-order-status {
228
228
  order: 2;
229
- font-size: font-px-to-rem(14px);
230
- text-transform: uppercase;
231
- @include media-breakpoint-up(md) {
232
- font-size: font-px-to-rem(26px);
233
- }
234
- @include media-breakpoint-up(lg) {
235
- font-size: font-px-to-rem(18px);
236
- text-transform: initial;
237
- }
238
229
  }
239
230
 
240
231
  &-order-date {
241
232
  order: 1;
242
233
  font-size: 14px;
243
234
  font-size: font-px-to-rem(14px);
244
- @include media-breakpoint-up(md) {
245
- font-size: font-px-to-rem(26px);
246
- }
247
- @include media-breakpoint-up(lg) {
248
- font-size: font-px-to-rem(18px);
249
- }
250
235
  }
251
236
 
252
237
  &-order-total {
253
238
  order: 4;
254
239
  font-size: font-px-to-rem(16px);
255
- @include media-breakpoint-up(md) {
256
- font-size: font-px-to-rem(29px);
257
- }
258
- @include media-breakpoint-up(lg) {
259
- font-size: font-px-to-rem(18px);
260
- }
261
- }
262
-
263
- &-order-payment-state,
264
- &-order-shipment-state {
265
- @include media-breakpoint-up(md) {
266
- font-size: font-px-to-rem(18px);
267
- }
268
240
  }
269
241
 
270
242
  @include media-breakpoint-between(xs, md) {
@@ -10,13 +10,12 @@ module Spree
10
10
  method_name = I18n.t("activerecord.attributes.spree/address.#{method}")
11
11
  required = Spree.t(:required)
12
12
  form.text_field(method,
13
- class: ['spree-flat-input'].compact,
13
+ class: ['form-control'].compact,
14
14
  required: is_required,
15
15
  placeholder: is_required ? "#{method_name} #{required}" : method_name,
16
16
  aria: { label: method_name }) +
17
17
  form.label(method_name,
18
- is_required ? "#{method_name} #{required}" : method_name,
19
- class: 'text-uppercase')
18
+ is_required ? "#{method_name} #{required}" : method_name)
20
19
  end
21
20
  end
22
21
  end
@@ -27,13 +26,12 @@ module Spree
27
26
  method_name = Spree.t(:zipcode)
28
27
  required = Spree.t(:required)
29
28
  form.text_field(:zipcode,
30
- class: ['spree-flat-input'].compact,
29
+ class: ['form-control'].compact,
31
30
  required: is_required,
32
31
  placeholder: is_required ? "#{method_name} #{required}" : method_name,
33
32
  aria: { label: Spree.t(:zipcode) }) +
34
33
  form.label(:zipcode,
35
34
  is_required ? "#{method_name} #{required}" : method_name,
36
- class: 'text-uppercase',
37
35
  id: address_id + '_zipcode_label')
38
36
  end
39
37
 
@@ -48,16 +46,14 @@ module Spree
48
46
  aria: { label: Spree.t(:state) },
49
47
  disabled: !have_states) +
50
48
  form.text_field(:state_name,
51
- class: ['spree-flat-input'].compact,
49
+ class: ['form-control'].compact,
52
50
  aria: { label: Spree.t(:state) },
53
51
  disabled: have_states,
54
52
  placeholder: Spree.t(:state) + " #{Spree.t(:required)}") +
55
53
  form.label(Spree.t(:state).downcase,
56
54
  raw(Spree.t(:state) + content_tag(:abbr, " #{Spree.t(:required)}")),
57
- class: [have_states ? 'state-select-label' : nil, ' text-uppercase'].compact,
58
- id: address_id + '_state_label') +
59
- image_tag('arrow.svg',
60
- class: [!have_states ? 'hidden' : nil, 'position-absolute spree-flat-select-arrow'].compact)
55
+ class: [have_states ? 'state-select-label' : nil, ' '].compact,
56
+ id: address_id + '_state_label')
61
57
  ].join.tr('"', "'").delete("\n")
62
58
 
63
59
  content_tag :span, class: 'd-block position-relative' do
@@ -173,7 +173,7 @@ module Spree
173
173
  image_url = if image.present?
174
174
  main_app.cdn_image_url(image.url('plp'))
175
175
  else
176
- asset_path('noimage/plp.svg')
176
+ asset_path('noimage/large.png')
177
177
  end
178
178
 
179
179
  image_style = image&.style(:plp)
@@ -42,7 +42,7 @@ module Spree
42
42
  end
43
43
 
44
44
  def main_nav_image(image_path, title = '')
45
- image_url = asset_path(asset_exists?(image_path) ? image_path : 'noimage/plp.svg')
45
+ image_url = asset_path(asset_exists?(image_path) ? image_path : 'noimage/large.png')
46
46
 
47
47
  lazy_image(
48
48
  src: image_url,
@@ -2,10 +2,10 @@ module Spree
2
2
  module ProductsFiltersHelper
3
3
  PRICE_FILTER_NAME = 'price'.freeze
4
4
 
5
- FILTER_LINK_CSS_CLASSES = 'd-inline-block text-uppercase py-1 px-2 m-1 plp-overlay-card-item'.freeze
5
+ FILTER_LINK_CSS_CLASSES = 'd-inline-block py-1 px-2 m-1 plp-overlay-card-item'.freeze
6
6
  ACTIVE_FILTER_LINK_CSS_CLASSES = 'plp-overlay-card-item--selected'.freeze
7
7
 
8
- CLEAR_ALL_FILTERS_LINK_CSS_CLASSES = 'btn spree-btn btn-outline-primary w-100 mb-4'.freeze
8
+ CLEAR_ALL_FILTERS_LINK_CSS_CLASSES = 'btn spree-btn btn-sm btn-outline-primary w-100 mb-4'.freeze
9
9
 
10
10
  def price_filters
11
11
  @price_filters ||= [
@@ -38,7 +38,7 @@ module Spree
38
38
 
39
39
  def price_filter_input(name:, value:, placeholder:, **html_options)
40
40
  price_value = value&.zero? ? '' : value
41
- style_class = "spree-flat-input #{html_options[:class]}"
41
+ style_class = "form-control form-control-sm #{html_options[:class]}"
42
42
 
43
43
  number_field_tag(
44
44
  name, price_value,
@@ -0,0 +1,2 @@
1
+ // Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
2
+ import "@hotwired/turbo-rails"
@@ -5,11 +5,10 @@
5
5
  <div class="form-group checkout-content-inner-field" id="<%= "#{address_id}country" %>">
6
6
  <div id="<%= "#{address_id}country-selection" %>" class="d-block position-relative has-float-label">
7
7
  <%= address_form.collection_select :country_id, available_countries, :id, :name,
8
- { prompt: Spree.t(:country).upcase },
9
- { class: 'form-control spree-flat-select',
8
+ { prompt: Spree.t(:country) },
9
+ { class: 'custom-select spree-flat-select',
10
10
  aria: { label: Spree.t(:country) } } %>
11
- <%= image_tag 'arrow.svg', class: 'position-absolute spree-flat-select-arrow' %>
12
- <%= address_form.label(Spree.t(:country), Spree.t(:country).upcase, class:'text-uppercase') %>
11
+ <%= address_form.label(Spree.t(:country), Spree.t(:country)) %>
13
12
  </div>
14
13
  </div>
15
14
  <% elsif field == "state" %>
@@ -29,4 +28,4 @@
29
28
  <% end %>
30
29
  <% end %>
31
30
 
32
- <p class="text-right text-uppercase mb-5 checkout-content-inner-field"><span id="required_marker"><%= Spree.t(:required) %></span> <%= Spree.t(:required_fields) %></p>
31
+ <p class="text-right mb-5 checkout-content-inner-field"><span id="required_marker"><%= Spree.t(:required) %></span> <%= Spree.t(:required_fields) %></p>
@@ -3,7 +3,7 @@
3
3
  <h3 class="spree-header spree-mb-large spree-mt-large"><%= Spree.t(:edit_address, scope: :address_book) %></h3>
4
4
  <%= form_for @address, html: { id: 'checkout_form_address' } do |f| %>
5
5
  <div class="form-group checkout-content-inner-field mb-5 has-float-label">
6
- <%= f.text_field :label, class: 'spree-flat-input', placeholder: Spree.t(:address_name_placeholder, scope: :address_book) %>
6
+ <%= f.text_field :label, class: 'form-control', placeholder: Spree.t(:address_name_placeholder, scope: :address_book) %>
7
7
  <%= f.label :address_name, Spree.t(:label, scope: :address_book) %>
8
8
  </div>
9
9
 
@@ -3,7 +3,7 @@
3
3
  <h3 class="spree-header spree-mb-large spree-mt-large"><%= Spree.t(:new_address, scope: :address_book) %></h3>
4
4
  <%= form_for @address, url: spree.addresses_path, html: { id: 'checkout_form_address' } do |f| %>
5
5
  <div class="form-group checkout-content-inner-field mb-5 has-float-label">
6
- <%= f.text_field :label, class: 'spree-flat-input', placeholder: Spree.t(:address_name_placeholder, scope: :address_book) %>
6
+ <%= f.text_field :label, class: 'form-control', placeholder: Spree.t(:address_name_placeholder, scope: :address_book) %>
7
7
  <%= f.label :address_name, Spree.t(:label, scope: :address_book) %>
8
8
  </div>
9
9
  <%= render 'spree/addresses/form',
@@ -2,7 +2,7 @@
2
2
  <div class="row">
3
3
  <div class="col-12 mb-4">
4
4
  <div class="form-group checkout-content-inner-field has-float-label">
5
- <%= form.email_field :email, class: 'required spree-flat-input', required: true, placeholder: Spree.t(:email) %>
5
+ <%= form.email_field :email, class: 'required form-control', required: true, placeholder: Spree.t(:email) %>
6
6
  <%= form.label :email, class: 'text-uppercase' %>
7
7
  </div>
8
8
  </div>
@@ -6,7 +6,7 @@
6
6
  <h4 class="text-uppercase checkout-content-header checkout-content-shipping-methods-header mb-1">
7
7
  <%= Spree.t('checkout_page.delivery_method') %>
8
8
  </h4>
9
- <div id="shipToLocation" class="mb-4 text-uppercase">
9
+ <div id="shipToLocation" class="mb-4">
10
10
  <%= Spree.t(:ship_to) %>
11
11
  <span class="text-muted"><%= @order.shipping_address.address1 %></span> -
12
12
  <% if @order.shipping_address.zipcode.present? %> <span class="text-muted"><%= @order.shipping_address.zipcode %></span> - <% end %>
@@ -1,6 +1,6 @@
1
1
  <div class="checkout-content-summary">
2
2
  <h3 class="text-uppercase text-center checkout-content-summary-header"><%= Spree.t(:order_summary) %></h3>
3
- <div class="w-100 text-uppercase checkout-content-summary-table" data-hook="order_summary">
3
+ <div class="w-100 checkout-content-summary-table" data-hook="order_summary">
4
4
  <div class="d-table-cell"><%= Spree.t(:subtotal) %>:</div>
5
5
  <div class="d-table-cell text-right"><%= order.display_item_total.to_html %></div>
6
6
 
@@ -45,7 +45,7 @@ end
45
45
  <%= render partial: 'summary', locals: { order: @order } %>
46
46
  <div data-hook="buttons">
47
47
  <% submit_label_key = @order.confirm? ? :place_order : :save_and_continue %>
48
- <%= submit_tag Spree.t(submit_label_key), class: 'btn btn-primary text-uppercase font-weight-bold w-100 checkout-content-save-continue-button' %>
48
+ <%= submit_tag Spree.t(submit_label_key), class: 'btn btn-primary font-weight-bold w-100 checkout-content-save-continue-button' %>
49
49
  </div>
50
50
  </div>
51
51
  </div>
@@ -4,12 +4,12 @@
4
4
 
5
5
  <div class="payment-gateway-fields">
6
6
  <div class="mb-4 payment-gateway-field checkout-content-inner-field">
7
- <%= text_field_tag "#{param_prefix}[name]", "#{@order.bill_address_firstname} #{@order.bill_address_lastname}", { id: "name_on_card", class: 'spree-flat-input', placeholder: Spree.t(:name_on_card)} %>
7
+ <%= text_field_tag "#{param_prefix}[name]", "#{@order.bill_address_firstname} #{@order.bill_address_lastname}", { id: "name_on_card", class: 'form-control', placeholder: Spree.t(:name_on_card)} %>
8
8
  </div>
9
9
 
10
10
  <div class="mb-4 payment-gateway-field checkout-content-inner-field" data-hook="card_number">
11
11
  <% options_hash = Rails.env.production? ? {autocomplete: 'off'} : {} %>
12
- <%= text_field_tag "#{param_prefix}[number]", '', options_hash.merge(id: 'card_number', class: 'spree-flat-input cardNumber', size: 19, maxlength: 19, autocomplete: "off", placeholder: Spree.t(:card_number)) %>
12
+ <%= text_field_tag "#{param_prefix}[number]", '', options_hash.merge(id: 'card_number', class: 'form-control cardNumber', size: 19, maxlength: 19, autocomplete: "off", placeholder: Spree.t(:card_number)) %>
13
13
  <span id="card_type" style="display:none;">
14
14
  ( <span id="looks_like"><%= Spree.t(:card_type_is) %> <span id="type"></span></span>
15
15
  <span id="unrecognized"><%= Spree.t(:unrecognized_card_type) %></span>
@@ -18,10 +18,10 @@
18
18
  </div>
19
19
  <div class="payment-gateway-half-fields d-flex justify-content-between">
20
20
  <div class="payment-gateway-field checkout-content-inner-field" data-hook="card_expiration">
21
- <%= text_field_tag "#{param_prefix}[expiry]", '', id: 'card_expiry', class: 'spree-flat-input cardExpiry', placeholder: "MM/YYYY" %>
21
+ <%= text_field_tag "#{param_prefix}[expiry]", '', id: 'card_expiry', class: 'form-control cardExpiry', placeholder: "MM/YYYY" %>
22
22
  </div>
23
23
  <div class="payment-gateway-field checkout-content-inner-field" data-hook="card_code">
24
- <%= text_field_tag "#{param_prefix}[verification_value]", '', options_hash.merge(id: 'card_code', class: 'spree-flat-input cardCode', size: 5, placeholder: Spree.t(:cvv)) %>
24
+ <%= text_field_tag "#{param_prefix}[verification_value]", '', options_hash.merge(id: 'card_code', class: 'form-control cardCode', size: 5, placeholder: Spree.t(:cvv)) %>
25
25
  </div>
26
26
  </div>
27
27
 
@@ -5,7 +5,7 @@
5
5
  <p><%= Spree.t('store_credit.remaining_amount', amount: @order.display_store_credit_remaining_after_capture).html_safe %></p>
6
6
  <% else %>
7
7
  <p><%= Spree.t('store_credit.additional_payment_needed', amount: @order.display_order_total_after_store_credit).html_safe %></p>
8
- <%= button_tag Spree.t('store_credit.remove'), name: 'remove_store_credit', class: 'store-credit-button continue btn btn-lg btn-primary font-weight-bold text-uppercase align-self-start' %>
8
+ <%= button_tag Spree.t('store_credit.remove'), name: 'remove_store_credit', class: 'store-credit-button continue btn btn-lg btn-primary font-weight-bold align-self-start' %>
9
9
  <% end %>
10
10
  </div>
11
11
 
@@ -18,7 +18,7 @@
18
18
  <%= form_for @order, url: path, method: :put, html: { id: 'checkout_form_registration', data: { turbo: false } } do |f| %>
19
19
  <div class="form-group">
20
20
  <p class="form-group checkout-content-inner-field">
21
- <%= f.email_field :email, class: 'spree-flat-input', placeholder: Spree.t(:email) %>
21
+ <%= f.email_field :email, class: 'form-control', placeholder: Spree.t(:email) %>
22
22
  </p>
23
23
  </div>
24
24
  <%= f.submit Spree.t(:continue_as_guest), class: 'btn btn-block btn-outline-primary spree-btn' %>
@@ -5,10 +5,13 @@
5
5
  <!--[if IE 9 ]> <html class="ie ie9" lang="<%= I18n.locale %>"> <![endif]-->
6
6
  <!--[if gt IE 9]><!--><html lang="<%= I18n.locale %>"><!--<![endif]-->
7
7
  <head data-hook="inside_head">
8
+ <link rel="preconnect" href="https://fonts.googleapis.com">
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap" rel="stylesheet">
11
+
8
12
  <%= render partial: 'spree/shared/head' %>
9
13
  </head>
10
14
  <body class="<%= body_class %>" id="<%= @body_id || 'default' %>" data-hook="body">
11
- <%= render partial: 'spree/shared/get_started' %>
12
15
  <%= render partial: 'spree/shared/header' %>
13
16
  <div id="overlay" class="overlay hide-on-esc"></div>
14
17
 
@@ -10,7 +10,7 @@
10
10
  <div class="shopping-cart-item-quantity <%= additional_classes %>" data-hook="cart_item_quantity">
11
11
  <div class="d-flex align-items-center">
12
12
  <%= button_tag '-', type: 'button', class: "border-right-0 shopping-cart-item-quantity-decrease-btn", data: { id: dom_id(line_item) } %>
13
- <%= item_form.number_field :quantity, min: 0, class: "form-control text-center border-left-0 border-right-0 shopping-cart-item-quantity-input", size: 5, data: { id: dom_id(line_item) }, aria: { label: Spree.t('cart_page.change_quantity') } %>
13
+ <%= item_form.number_field :quantity, min: 0, class: "form-control text-center border-left-0 border-right-0 rounded-0 shopping-cart-item-quantity-input", size: 5, data: { id: dom_id(line_item) }, aria: { label: Spree.t('cart_page.change_quantity') } %>
14
14
  <%= button_tag '+', type: 'button', class: "border-left-0 shopping-cart-item-quantity-increase-btn", data: { id: dom_id(line_item) } %>
15
15
  </div>
16
16
  </div>
@@ -12,7 +12,7 @@
12
12
  <p class="order-show-explain w-100 text-center"><%= Spree.t(:order_success_explain) %></p>
13
13
  <% end %>
14
14
 
15
- <p class="order-show-number text-uppercase w-100 text-center">
15
+ <p class="order-show-number w-100 text-center">
16
16
  <%= accurate_title %> / <%= pretty_date(@order.completed_at) %>
17
17
  </p>
18
18
  <%= render partial: 'spree/shared/order_details', locals: { order: @order } %>
@@ -37,7 +37,7 @@
37
37
  </div>
38
38
  <% end %>
39
39
 
40
- <div class="text-center text-md-left add-to-cart-form-general-availability text-uppercase">
40
+ <div class="text-center text-md-left add-to-cart-form-general-availability">
41
41
  <%= Spree.t(:availability) %>:
42
42
  <% if !is_product_available_in_currency %>
43
43
  <%= render 'cart_form_availability_templates', type: 'not-available-in-currency' %>
@@ -74,7 +74,7 @@
74
74
  <%= render 'spree/shared/quantity_select', input_name: :quantity %>
75
75
  </div>
76
76
 
77
- <%= button_tag class: 'btn btn-primary w-100 text-uppercase font-weight-bold add-to-cart-button', id: 'add-to-cart-button', type: :submit, disabled: true do %>
77
+ <%= button_tag class: 'btn btn-primary w-100 font-weight-bold add-to-cart-button', id: 'add-to-cart-button', type: :submit, disabled: true do %>
78
78
  <%= Spree.t(:add_to_cart) %>
79
79
  <% end %>
80
80
  </div>
@@ -1,5 +1,5 @@
1
1
  <div class="product-variants-variant product-variants-variant--color" data-option-type-id="<%= option_type[:id] %>">
2
- <span class="d-block mb-2 text-center text-md-left text-uppercase product-variants-variant-title">
2
+ <span class="d-block mb-2 text-center text-md-left product-variants-variant-title">
3
3
  <%= option_type[:presentation] %>
4
4
  </span>
5
5
 
@@ -1,4 +1,4 @@
1
- <h3 class="pt-4 font-weight-bold text-uppercase product-details-subtitle"><%= Spree.t(:description) %></h3>
1
+ <h3 class="pt-4 font-weight-bold product-details-subtitle"><%= Spree.t(:description) %></h3>
2
2
 
3
3
  <% if Spree::Frontend::Config[:show_raw_product_description] || product_wysiwyg_editor_enabled? %>
4
4
  <div id="product-description-long" class="m-0 text-break product-description" data-hook="description">
@@ -85,7 +85,7 @@
85
85
  <%= max_price_filter_input class: 'w-50 p-2' %>
86
86
  </div>
87
87
 
88
- <%= link_to Spree.t('plp.done'), permitted_params, class: 'btn btn-primary spree-btn w-100', data: { params: permitted_params } %>
88
+ <%= link_to Spree.t('plp.done'), permitted_params, class: 'btn btn-sm btn-primary spree-btn w-100', data: { params: permitted_params } %>
89
89
  </div>
90
90
  </div>
91
91
  </div>
@@ -15,7 +15,7 @@
15
15
  <% ot_downcase_name = option_type_name.downcase %>
16
16
 
17
17
  <div class="card plp-overlay-card">
18
- <div class="card-header text-uppercase <%= 'collapsed' if params[ot_downcase_name].blank? %> plp-overlay-card-header" data-toggle="collapse" id="filtersMobile<%= option_type_name %>" data-target="#collapseFilterMobile<%= option_type_name %>" aria-expanded="true" aria-controls="collapseFilterMobile<%= option_type_name %>" role="heading" aria-level="3">
18
+ <div class="card-header <%= 'collapsed' if params[ot_downcase_name].blank? %> plp-overlay-card-header" data-toggle="collapse" id="filtersMobile<%= option_type_name %>" data-target="#collapseFilterMobile<%= option_type_name %>" aria-expanded="true" aria-controls="collapseFilterMobile<%= option_type_name %>" role="heading" aria-level="3">
19
19
  <%= option_type.presentation %>
20
20
  <%= icon(name: 'arrow-right',
21
21
  classes: 'spree-icon-arrow spree-icon-arrow-right mt-1 float-right arrow plp-overlay-card-header-arrow',
@@ -35,7 +35,7 @@
35
35
  <% property_name = property.name %>
36
36
  <% collapsed = params.dig(:properties, property.filter_param).blank? %>
37
37
  <div class="card plp-overlay-card">
38
- <div class="card-header text-uppercase <%= 'collapsed' if collapsed %> plp-overlay-card-header" data-toggle="collapse" id="filtersMobile<%= property_name %>" data-target="#collapseFilterMobile<%= property_name %>" aria-expanded="true" aria-controls="collapseFilterMobile<%= property_name %>" role="heading" aria-level="3">
38
+ <div class="card-header <%= 'collapsed' if collapsed %> plp-overlay-card-header" data-toggle="collapse" id="filtersMobile<%= property_name %>" data-target="#collapseFilterMobile<%= property_name %>" aria-expanded="true" aria-controls="collapseFilterMobile<%= property_name %>" role="heading" aria-level="3">
39
39
  <%= property.presentation %>
40
40
  <%= icon(name: 'arrow-right',
41
41
  classes: 'spree-icon-arrow spree-icon-arrow-right mt-1 float-right arrow plp-overlay-card-header-arrow',
@@ -57,7 +57,7 @@
57
57
  <% end %>
58
58
 
59
59
  <div class="card plp-overlay-card">
60
- <div class="card-header text-uppercase <%= 'collapsed' if params[:price].blank? %> plp-overlay-card-header" id="headingFour" data-toggle="collapse" data-target="#collapseFour" aria-expanded="true" aria-controls="collapseFour" role="heading" aria-level="3">
60
+ <div class="card-header <%= 'collapsed' if params[:price].blank? %> plp-overlay-card-header" id="headingFour" data-toggle="collapse" data-target="#collapseFour" aria-expanded="true" aria-controls="collapseFour" role="heading" aria-level="3">
61
61
  <%= Spree.t('plp.price') %>
62
62
  <%= icon(name: 'arrow-right',
63
63
  classes: 'spree-icon-arrow spree-icon-arrow-right mt-1 float-right arrow plp-overlay-card-header-arrow',
@@ -1,5 +1,5 @@
1
1
  <div class="product-variants-variant" data-option-type-id="<%= option_type[:id] %>">
2
- <span class="d-block mb-2 text-center text-md-left text-uppercase product-variants-variant-title">
2
+ <span class="d-block mb-2 text-center text-md-left product-variants-variant-title">
3
3
  <%= option_type[:presentation] %>
4
4
  </span>
5
5
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  <% if promotions.any? %>
4
4
  <div id="promotions">
5
- <h3 class="pt-4 font-weight-bold text-uppercase product-details-subtitle"><%= Spree.t(:promotions) %></h3>
5
+ <h3 class="pt-4 font-weight-bold product-details-subtitle"><%= Spree.t(:promotions) %></h3>
6
6
  <% promotions.each do |promotion| %>
7
7
  <div class="row">
8
8
  <div class="col-12 col-md-7 col-lg-6 mb-3">
@@ -1,5 +1,5 @@
1
1
  <% unless @product_properties.blank? %>
2
- <h3 class="pt-4 font-weight-bold text-uppercase product-details-subtitle"><%= Spree.t(:details) %></h3>
2
+ <h3 class="pt-4 font-weight-bold product-details-subtitle"><%= Spree.t(:details) %></h3>
3
3
  <ul id="product-properties" class="m-0 list-unstyled product-properies" data-hook>
4
4
  <% @product_properties.each do |product_property| %>
5
5
  <% if product_property.show_property? %>