spree_core 4.1.12 → 4.2.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/spree/base_controller.rb +1 -2
  3. data/app/finders/spree/addresses/find.rb +1 -12
  4. data/app/finders/spree/base_finder.rb +14 -0
  5. data/app/finders/spree/countries/find.rb +11 -3
  6. data/app/finders/spree/credit_cards/find.rb +2 -2
  7. data/app/finders/spree/orders/find_current.rb +1 -1
  8. data/app/helpers/spree/base_helper.rb +61 -20
  9. data/app/helpers/spree/mail_helper.rb +29 -0
  10. data/app/helpers/spree/products_helper.rb +2 -1
  11. data/app/mailers/spree/base_mailer.rb +19 -5
  12. data/app/mailers/spree/order_mailer.rb +13 -4
  13. data/app/mailers/spree/reimbursement_mailer.rb +4 -2
  14. data/app/mailers/spree/shipment_mailer.rb +4 -2
  15. data/app/models/concerns/spree/default_price.rb +3 -6
  16. data/app/models/concerns/spree/user_methods.rb +11 -5
  17. data/app/models/concerns/spree/user_payment_source.rb +1 -1
  18. data/app/models/spree/ability.rb +2 -6
  19. data/app/models/spree/address.rb +17 -1
  20. data/app/models/spree/adjustment.rb +1 -0
  21. data/app/models/spree/app_configuration.rb +4 -0
  22. data/app/models/spree/app_dependencies.rb +4 -2
  23. data/app/models/spree/base.rb +5 -0
  24. data/app/models/spree/credit_card.rb +5 -0
  25. data/app/models/spree/fulfilment_changer.rb +58 -16
  26. data/app/models/spree/inventory_unit.rb +2 -7
  27. data/app/models/spree/line_item.rb +11 -7
  28. data/app/models/spree/log_entry.rb +1 -1
  29. data/app/models/spree/option_type.rb +7 -1
  30. data/app/models/spree/order.rb +27 -5
  31. data/app/models/spree/order/address_book.rb +7 -20
  32. data/app/models/spree/order/payments.rb +10 -2
  33. data/app/models/spree/payment.rb +18 -4
  34. data/app/models/spree/payment/processing.rb +2 -2
  35. data/app/models/spree/payment_method.rb +3 -3
  36. data/app/models/spree/preferences/store.rb +1 -1
  37. data/app/models/spree/price.rb +25 -6
  38. data/app/models/spree/product.rb +29 -9
  39. data/app/models/spree/promotion.rb +10 -15
  40. data/app/models/spree/promotion/rules/product.rb +2 -1
  41. data/app/models/spree/promotion/rules/user.rb +2 -1
  42. data/app/models/spree/promotion_handler/coupon.rb +2 -3
  43. data/app/models/spree/promotion_handler/promotion_duplicator.rb +9 -3
  44. data/app/models/spree/refund.rb +2 -2
  45. data/app/models/spree/reimbursement.rb +2 -0
  46. data/app/models/spree/return_item/eligibility_validator/default.rb +0 -2
  47. data/app/models/spree/return_item/eligibility_validator/{r_m_a_required.rb → rma_required.rb} +0 -0
  48. data/app/models/spree/shipment.rb +3 -6
  49. data/app/models/spree/shipping_method.rb +1 -5
  50. data/app/models/spree/shipping_rate.rb +2 -11
  51. data/app/models/spree/stock/availability_validator.rb +3 -4
  52. data/app/models/spree/stock_item.rb +1 -5
  53. data/app/models/spree/stock_location.rb +13 -2
  54. data/app/models/spree/store.rb +51 -2
  55. data/app/models/spree/store_credit.rb +1 -1
  56. data/app/models/spree/variant.rb +16 -10
  57. data/app/models/spree/zone.rb +17 -4
  58. data/app/presenters/spree/variant_presenter.rb +9 -1
  59. data/app/presenters/spree/variants/option_types_presenter.rb +1 -0
  60. data/app/services/spree/account/addresses/create.rb +6 -1
  61. data/app/services/spree/account/addresses/{base.rb → helper.rb} +1 -3
  62. data/app/services/spree/account/addresses/update.rb +6 -1
  63. data/app/services/spree/compare_line_items.rb +4 -2
  64. data/app/sorters/spree/base_sorter.rb +35 -0
  65. data/app/sorters/spree/orders/sort.rb +1 -37
  66. data/app/sorters/spree/products/sort.rb +9 -32
  67. data/app/validators/email_validator.rb +1 -1
  68. data/app/views/layouts/spree/base_mailer.html.erb +45 -40
  69. data/app/views/spree/order_mailer/cancel_email.html.erb +19 -25
  70. data/app/views/spree/order_mailer/cancel_email.text.erb +24 -2
  71. data/app/views/spree/order_mailer/confirm_email.html.erb +18 -65
  72. data/app/views/spree/order_mailer/confirm_email.text.erb +2 -1
  73. data/app/views/spree/order_mailer/store_owner_notification_email.html.erb +23 -0
  74. data/app/views/spree/order_mailer/store_owner_notification_email.text.erb +38 -0
  75. data/app/views/spree/reimbursement_mailer/reimbursement_email.html.erb +53 -58
  76. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +3 -1
  77. data/app/views/spree/shared/_base_mailer_footer.html.erb +6 -14
  78. data/app/views/spree/shared/_base_mailer_header.html.erb +12 -32
  79. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +293 -625
  80. data/app/views/spree/shared/_purchased_items_table.html.erb +60 -0
  81. data/app/views/spree/shared/purchased_items_table/_adjustment.html.erb +13 -0
  82. data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +27 -0
  83. data/app/views/spree/shared/purchased_items_table/_subtotal.html.erb +13 -0
  84. data/app/views/spree/shared/purchased_items_table/_total.html.erb +13 -0
  85. data/app/views/spree/shipment_mailer/shipped_email.html.erb +31 -36
  86. data/app/views/spree/shipment_mailer/shipped_email.text.erb +2 -1
  87. data/config/initializers/assets.rb +1 -0
  88. data/config/initializers/inflections.rb +3 -0
  89. data/config/initializers/rails61_fixes.rb +3 -0
  90. data/config/locales/en.yml +145 -19
  91. data/db/default/spree/countries.rb +10 -4
  92. data/db/default/spree/states.rb +42 -5
  93. data/db/default/spree/stores.rb +17 -12
  94. data/db/default/spree/zones.rb +1 -1
  95. data/db/migrate/20130326175857_add_stock_location_to_rma.rb +1 -1
  96. data/db/migrate/20140309033438_create_store_from_preferences.rb +1 -1
  97. data/db/migrate/20191017121054_add_supported_currencies_to_store.rb +10 -0
  98. data/db/migrate/20200102141311_add_social_to_spree_stores.rb +3 -0
  99. data/db/migrate/20200308210757_add_default_locale_to_spree_store.rb +7 -0
  100. data/db/migrate/20200310145140_add_customer_support_email_to_spree_store.rb +7 -0
  101. data/db/migrate/20200421095017_add_compare_at_amount_to_spree_prices.rb +7 -0
  102. data/db/migrate/20200423123001_add_default_country_id_to_spree_store.rb +9 -0
  103. data/db/migrate/20200430072209_add_footer_fields_to_spree_stores.rb +8 -0
  104. data/db/migrate/20200513154939_add_show_property_to_spree_product_properties.rb +5 -0
  105. data/db/migrate/20200607161221_add_store_owner_order_notification_delivered_to_spree_orders.rb +7 -0
  106. data/db/migrate/20200607161222_add_new_order_notifications_email_to_spree_stores.rb +7 -0
  107. data/db/migrate/20200610113542_add_label_to_spree_addresses.rb +5 -0
  108. data/db/migrate/20200826075557_add_unique_index_on_taxon_id_and_product_id_to_spree_products_taxons.rb +5 -0
  109. data/db/migrate/20201006110150_add_checkout_zone_field_to_store.rb +12 -0
  110. data/db/migrate/20201012091259_add_filterable_column_to_spree_option_types.rb +6 -0
  111. data/db/migrate/20201013084504_add_seo_robots_to_spree_stores.rb +5 -0
  112. data/db/migrate/20201127084048_add_default_country_kind_to_spree_zones.rb +5 -0
  113. data/db/migrate/20210112193440_remove_contact_email_from_spree_stores.rb +5 -0
  114. data/db/migrate/20210114182625_create_spree_payment_methods_stores.rb +10 -0
  115. data/db/migrate/20210114220232_migrate_data_payment_methods_stores.rb +15 -0
  116. data/db/migrate/20210117112551_remove_store_id_from_spree_payment_methods.rb +5 -0
  117. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -2
  118. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -2
  119. data/lib/generators/spree/mailers_preview/mailers_preview_generator.rb +23 -0
  120. data/lib/generators/spree/mailers_preview/templates/mailers/previews/order_preview.rb +13 -0
  121. data/lib/generators/spree/mailers_preview/templates/mailers/previews/reimbursement_preview.rb +5 -0
  122. data/lib/generators/spree/mailers_preview/templates/mailers/previews/shipment_preview.rb +5 -0
  123. data/lib/generators/spree/mailers_preview/templates/mailers/previews/user_preview.rb +11 -0
  124. data/lib/spree/core.rb +2 -0
  125. data/lib/spree/core/controller_helpers/common.rb +1 -0
  126. data/lib/spree/core/controller_helpers/currency_helpers.rb +15 -0
  127. data/lib/spree/core/controller_helpers/order.rb +9 -4
  128. data/lib/spree/core/controller_helpers/store.rb +12 -1
  129. data/lib/spree/core/importer/order.rb +9 -9
  130. data/lib/spree/core/product_filters.rb +3 -3
  131. data/lib/spree/core/version.rb +1 -1
  132. data/lib/spree/i18n.rb +7 -21
  133. data/lib/spree/permitted_attributes.rb +8 -5
  134. data/lib/spree/service_module.rb +6 -2
  135. data/lib/spree/testing_support/authorization_helpers.rb +7 -4
  136. data/lib/spree/testing_support/capybara_config.rb +1 -1
  137. data/lib/spree/testing_support/factories/promotion_factory.rb +29 -17
  138. data/lib/spree/testing_support/factories/shipment_factory.rb +7 -9
  139. data/lib/spree/testing_support/factories/store_factory.rb +11 -8
  140. data/lib/spree/testing_support/factories/zone_factory.rb +16 -13
  141. data/lib/spree/testing_support/i18n.rb +1 -1
  142. data/lib/spree/testing_support/order_walkthrough.rb +8 -3
  143. data/lib/spree/testing_support/rspec_retry_config.rb +10 -0
  144. data/spree_core.gemspec +10 -8
  145. data/vendor/assets/javascripts/cleave.js +1669 -0
  146. metadata +105 -30
  147. data/app/views/spree/order_mailer/_adjustment.html.erb +0 -8
  148. data/app/views/spree/order_mailer/_subtotal.html.erb +0 -8
  149. data/app/views/spree/order_mailer/_total.html.erb +0 -8
  150. data/lib/spree/i18n/base.rb +0 -17
  151. data/lib/spree/i18n/initializer.rb +0 -1
@@ -1,4 +1,4 @@
1
- <%= Spree.t('reimbursement_mailer.reimbursement_email.dear_customer') %>
1
+ <%= Spree.t('reimbursement_mailer.reimbursement_email.dear_customer', name: name_for(@reimbursement.order)) %>
2
2
 
3
3
  <%= Spree.t('reimbursement_mailer.reimbursement_email.instructions') %>
4
4
 
@@ -20,3 +20,5 @@
20
20
  <%= Spree.t('reimbursement_mailer.reimbursement_email.days_to_send', days: Spree::Config[:expedited_exchanges_days_window]) %>
21
21
  <% end %>
22
22
  <% end %>
23
+ <%= Spree.t('reimbursement_mailer.reimbursement_email.thanks') %>
24
+ <%= Spree.t('reimbursement_mailer.reimbursement_email.store_team', store_name: current_store.name) %>
@@ -1,19 +1,11 @@
1
1
  <!-- You can override this template to design your own footer.
2
- <table class="row footer">
2
+ <table class="email-footer" align="center" width="570" cellpadding="0" cellspacing="0" role="presentation">
3
3
  <tr>
4
- <td class="wrapper last">
5
-
6
- <table class="twelve columns">
7
- <tr>
8
- <td align="center">
9
- <center>
10
- <p style="text-align:center;"><a href="#">Terms</a> | <a href="#">Privacy</a> | <a href="#">Unsubscribe</a></p>
11
- </center>
12
- </td>
13
- <td class="expander"></td>
14
- </tr>
15
- </table>
16
-
4
+ <td class="content-cell" align="center">
5
+ <p class="f-fallback sub align-center">
6
+ <a href="#">Terms</a> | <a href="#">Privacy</a> |
7
+ <a href="#">Unsubscribe</a>
8
+ </p>
17
9
  </td>
18
10
  </tr>
19
11
  </table>
@@ -1,33 +1,13 @@
1
1
  <!-- You can override this template to design your own header. -->
2
- <table class="row header">
3
- <tr>
4
- <td class="center" align="center">
5
- <center>
6
-
7
- <table class="container">
8
- <tr>
9
- <td class="wrapper last">
10
-
11
- <table class="twelve columns">
12
- <tr>
13
- <td class="twelve sub-columns last">
14
- <% if frontend_available? %>
15
- <%= link_to spree.root_url, class: 'template-label' do %>
16
- <%= image_tag Spree::Config.logo, class: 'logo', alt: Spree::Store.current.name, title: Spree::Store.current.name %>
17
- <% end %>
18
- <% else %>
19
- <%= image_tag Spree::Config.logo, class: 'logo', alt: Spree::Store.current.name, title: Spree::Store.current.name %>
20
- <% end %>
21
- </td>
22
- <td class="expander"></td>
23
- </tr>
24
- </table>
25
-
26
- </td>
27
- </tr>
28
- </table>
29
-
30
- </center>
31
- </td>
32
- </tr>
33
- </table>
2
+ <% store_name = @order&.store&.name || current_store.name %>
3
+ <tr>
4
+ <td class="email-masthead">
5
+ <% if frontend_available? %>
6
+ <%= link_to spree.root_url, class: 'template-label' do %>
7
+ <%= image_tag logo_path, class: 'logo', alt: store_name, title: store_name %>
8
+ <% end %>
9
+ <% else %>
10
+ <%= image_tag logo_path, class: 'logo', alt: store_name, title: store_name %>
11
+ <% end %>
12
+ </td>
13
+ </tr>
@@ -1,777 +1,445 @@
1
- <style>
2
- /**********************************************
3
- * Ink v1.0.5 - Copyright 2013 ZURB Inc *
4
- **********************************************/
1
+ <style type="text/css" rel="stylesheet" media="all">
2
+ /* Base ------------------------------ */
5
3
 
6
- /* Client-specific Styles and Reset */
4
+ @import url("https://fonts.googleapis.com/css?family=Nunito+Sans:400,700&display=swap");
7
5
 
8
- #outlook a {
9
- padding:0;
10
- }
11
-
12
- body{
13
- width:100% !important;
14
- min-width: 100%;
15
- -webkit-text-size-adjust:100%;
16
- -ms-text-size-adjust:100%;
17
- margin:0;
18
- padding:0;
19
- }
20
-
21
- /* .ExternalClass applies to Outlook.com (the artist formerly known as Hotmail) */
22
-
23
- .ExternalClass {
24
- width:100%;
25
- }
26
-
27
- .ExternalClass,
28
- .ExternalClass p,
29
- .ExternalClass span,
30
- .ExternalClass font,
31
- .ExternalClass td,
32
- .ExternalClass div {
33
- line-height: 100%;
34
- }
35
-
36
- #backgroundTable {
37
- margin:0;
38
- padding:0;
39
- width:100% !important;
40
- line-height: 100% !important;
41
- }
42
-
43
- img {
44
- outline:none;
45
- text-decoration:none;
46
- -ms-interpolation-mode: bicubic;
47
- width: auto;
48
- max-width: 100%;
49
- float: left;
50
- clear: both;
51
- display: block;
6
+ body {
7
+ width: 100% !important;
8
+ height: 100%;
9
+ margin: 0;
10
+ -webkit-text-size-adjust: none;
52
11
  }
53
12
 
54
- center {
55
- width: 100%;
56
- min-width: 580px;
13
+ a {
14
+ color: #3869D4;
57
15
  }
58
16
 
59
17
  a img {
60
18
  border: none;
61
19
  }
62
20
 
63
- p {
64
- margin: 0 0 0 10px;
65
- }
66
-
67
- table {
68
- border-spacing: 0;
69
- border-collapse: collapse;
70
- }
71
-
72
21
  td {
73
22
  word-break: break-word;
74
- -webkit-hyphens: none;
75
- -moz-hyphens: none;
76
- hyphens: none;
77
- border-collapse: collapse !important;
78
- }
79
-
80
- table, tr, td {
81
- padding: 0;
82
- vertical-align: top;
83
- text-align: left;
84
23
  }
85
24
 
86
- hr {
87
- color: #d9d9d9;
88
- background-color: #d9d9d9;
89
- height: 1px;
90
- border: none;
25
+ .preheader {
26
+ display: none !important;
27
+ visibility: hidden;
28
+ mso-hide: all;
29
+ font-size: 1px;
30
+ line-height: 1px;
31
+ max-height: 0;
32
+ max-width: 0;
33
+ opacity: 0;
34
+ overflow: hidden;
91
35
  }
92
36
 
93
- /* Responsive Grid */
37
+ /* Type ------------------------------ */
94
38
 
95
- table.body {
96
- height: 100%;
97
- width: 100%;
39
+ body,
40
+ td,
41
+ th {
42
+ font-family: "Nunito Sans", Helvetica, Arial, sans-serif;
98
43
  }
99
44
 
100
- table.container {
101
- width: 580px;
102
- margin: 0 auto;
103
- text-align: inherit;
45
+ h1 {
46
+ margin-top: 0;
47
+ color: #333333;
48
+ font-size: 22px;
49
+ font-weight: bold;
50
+ text-align: left;
104
51
  }
105
52
 
106
- table.row {
107
- padding: 0px;
108
- width: 100%;
109
- position: relative;
53
+ h2 {
54
+ margin-top: 0;
55
+ color: #333333;
56
+ font-size: 16px;
57
+ font-weight: bold;
58
+ text-align: left;
110
59
  }
111
60
 
112
- table.container table.row {
113
- display: block;
61
+ h3 {
62
+ margin-top: 0;
63
+ color: #333333;
64
+ font-size: 14px;
65
+ font-weight: bold;
66
+ text-align: left;
114
67
  }
115
68
 
116
- td.wrapper {
117
- padding: 10px 20px 0px 0px;
118
- position: relative;
69
+ td,
70
+ th {
71
+ font-size: 16px;
119
72
  }
120
73
 
121
- table.columns,
122
- table.column {
123
- margin: 0 auto;
74
+ p,
75
+ ul,
76
+ ol,
77
+ blockquote {
78
+ margin: .4em 0 1.1875em;
79
+ font-size: 16px;
80
+ line-height: 1.625;
124
81
  }
125
82
 
126
- table.columns td,
127
- table.column td {
128
- padding: 0px 0px 10px;
129
- }
130
-
131
- table.columns td.sub-columns,
132
- table.column td.sub-columns,
133
- table.columns td.sub-column,
134
- table.column td.sub-column {
135
- padding-right: 10px;
136
- }
137
-
138
- td.sub-column, td.sub-columns {
139
- min-width: 0px;
140
- }
141
-
142
- table.row td.last,
143
- table.container td.last {
144
- padding-right: 0px;
145
- }
146
-
147
- table.one { width: 30px; }
148
- table.two { width: 80px; }
149
- table.three { width: 130px; }
150
- table.four { width: 180px; }
151
- table.five { width: 230px; }
152
- table.six { width: 280px; }
153
- table.seven { width: 330px; }
154
- table.eight { width: 380px; }
155
- table.nine { width: 430px; }
156
- table.ten { width: 480px; }
157
- table.eleven { width: 530px; }
158
- table.twelve { width: 580px; }
159
-
160
- table.one center { min-width: 30px; }
161
- table.two center { min-width: 80px; }
162
- table.three center { min-width: 130px; }
163
- table.four center { min-width: 180px; }
164
- table.five center { min-width: 230px; }
165
- table.six center { min-width: 280px; }
166
- table.seven center { min-width: 330px; }
167
- table.eight center { min-width: 380px; }
168
- table.nine center { min-width: 430px; }
169
- table.ten center { min-width: 480px; }
170
- table.eleven center { min-width: 530px; }
171
- table.twelve center { min-width: 580px; }
172
-
173
- table.one .panel center { min-width: 10px; }
174
- table.two .panel center { min-width: 60px; }
175
- table.three .panel center { min-width: 110px; }
176
- table.four .panel center { min-width: 160px; }
177
- table.five .panel center { min-width: 210px; }
178
- table.six .panel center { min-width: 260px; }
179
- table.seven .panel center { min-width: 310px; }
180
- table.eight .panel center { min-width: 360px; }
181
- table.nine .panel center { min-width: 410px; }
182
- table.ten .panel center { min-width: 460px; }
183
- table.eleven .panel center { min-width: 510px; }
184
- table.twelve .panel center { min-width: 560px; }
185
-
186
- .body .columns td.one,
187
- .body .column td.one { width: 8.333333%; }
188
- .body .columns td.two,
189
- .body .column td.two { width: 16.666666%; }
190
- .body .columns td.three,
191
- .body .column td.three { width: 25%; }
192
- .body .columns td.four,
193
- .body .column td.four { width: 33.333333%; }
194
- .body .columns td.five,
195
- .body .column td.five { width: 41.666666%; }
196
- .body .columns td.six,
197
- .body .column td.six { width: 50%; }
198
- .body .columns td.seven,
199
- .body .column td.seven { width: 58.333333%; }
200
- .body .columns td.eight,
201
- .body .column td.eight { width: 66.666666%; }
202
- .body .columns td.nine,
203
- .body .column td.nine { width: 75%; }
204
- .body .columns td.ten,
205
- .body .column td.ten { width: 83.333333%; }
206
- .body .columns td.eleven,
207
- .body .column td.eleven { width: 91.666666%; }
208
- .body .columns td.twelve,
209
- .body .column td.twelve { width: 100%; }
210
-
211
- td.offset-by-one { padding-left: 50px; }
212
- td.offset-by-two { padding-left: 100px; }
213
- td.offset-by-three { padding-left: 150px; }
214
- td.offset-by-four { padding-left: 200px; }
215
- td.offset-by-five { padding-left: 250px; }
216
- td.offset-by-six { padding-left: 300px; }
217
- td.offset-by-seven { padding-left: 350px; }
218
- td.offset-by-eight { padding-left: 400px; }
219
- td.offset-by-nine { padding-left: 450px; }
220
- td.offset-by-ten { padding-left: 500px; }
221
- td.offset-by-eleven { padding-left: 550px; }
222
-
223
- td.expander {
224
- visibility: hidden;
225
- width: 0px;
226
- padding: 0 !important;
83
+ p.sub {
84
+ font-size: 13px;
227
85
  }
228
86
 
229
- table.columns .text-pad,
230
- table.column .text-pad {
231
- padding-left: 10px;
232
- padding-right: 10px;
233
- }
87
+ /* Utilities ------------------------------ */
234
88
 
235
- table.columns .left-text-pad,
236
- table.columns .text-pad-left,
237
- table.column .left-text-pad,
238
- table.column .text-pad-left {
239
- padding-left: 10px;
89
+ .align-right {
90
+ text-align: right;
240
91
  }
241
92
 
242
- table.columns .right-text-pad,
243
- table.columns .text-pad-right,
244
- table.column .right-text-pad,
245
- table.column .text-pad-right {
246
- padding-right: 10px;
93
+ .align-left {
94
+ text-align: left;
247
95
  }
248
96
 
249
- /* Block Grid */
250
-
251
- .block-grid {
252
- width: 100%;
253
- max-width: 580px;
97
+ .align-center {
98
+ text-align: center;
254
99
  }
255
100
 
256
- .block-grid td {
101
+ /* Buttons ------------------------------ */
102
+
103
+ .button {
104
+ background-color: #3869D4;
105
+ border-top: 10px solid #3869D4;
106
+ border-right: 18px solid #3869D4;
107
+ border-bottom: 10px solid #3869D4;
108
+ border-left: 18px solid #3869D4;
257
109
  display: inline-block;
258
- padding:10px;
110
+ color: #FFF;
111
+ text-decoration: none;
112
+ border-radius: 3px;
113
+ box-shadow: 0 2px 3px rgba(0, 0, 0, 0.16);
114
+ -webkit-text-size-adjust: none;
115
+ box-sizing: border-box;
259
116
  }
260
117
 
261
- .two-up td {
262
- width:270px;
118
+ .button--green {
119
+ background-color: #22BC66;
120
+ border-top: 10px solid #22BC66;
121
+ border-right: 18px solid #22BC66;
122
+ border-bottom: 10px solid #22BC66;
123
+ border-left: 18px solid #22BC66;
263
124
  }
264
125
 
265
- .three-up td {
266
- width:173px;
126
+ .button--red {
127
+ background-color: #FF6136;
128
+ border-top: 10px solid #FF6136;
129
+ border-right: 18px solid #FF6136;
130
+ border-bottom: 10px solid #FF6136;
131
+ border-left: 18px solid #FF6136;
267
132
  }
268
133
 
269
- .four-up td {
270
- width:125px;
134
+ @media only screen and (max-width: 500px) {
135
+ .button {
136
+ width: 100% !important;
137
+ text-align: center !important;
138
+ }
271
139
  }
272
140
 
273
- .five-up td {
274
- width:96px;
275
- }
141
+ /* Attribute list ------------------------------ */
276
142
 
277
- .six-up td {
278
- width:76px;
143
+ .attributes {
144
+ margin: 0 0 21px;
279
145
  }
280
146
 
281
- .seven-up td {
282
- width:62px;
147
+ .attributes_content {
148
+ background-color: #F4F4F7;
149
+ padding: 16px;
283
150
  }
284
151
 
285
- .eight-up td {
286
- width:52px;
152
+ .attributes_item {
153
+ padding: 0;
287
154
  }
288
155
 
289
- /* Alignment and Visibility Classes */
156
+ /* Related Items ------------------------------ */
290
157
 
291
- table.center, td.center {
292
- text-align: center;
158
+ .related {
159
+ width: 100%;
160
+ margin: 0;
161
+ padding: 25px 0 0 0;
162
+ -premailer-width: 100%;
163
+ -premailer-cellpadding: 0;
164
+ -premailer-cellspacing: 0;
293
165
  }
294
166
 
295
- h1.center,
296
- h2.center,
297
- h3.center,
298
- h4.center,
299
- h5.center,
300
- h6.center,
301
- p.center {
302
- text-align: center;
167
+ .related_item {
168
+ padding: 10px 0;
169
+ color: #CBCCCF;
170
+ font-size: 15px;
171
+ line-height: 18px;
303
172
  }
304
173
 
305
- span.center {
174
+ .related_item-title {
306
175
  display: block;
307
- width: 100%;
308
- text-align: center;
309
- }
310
-
311
- img.center {
312
- margin: 0 auto;
313
- float: none;
176
+ margin: .5em 0 0;
314
177
  }
315
178
 
316
- .show-for-small,
317
- .hide-for-desktop {
318
- display: none;
319
- width:0;
320
- mso-hide:all;
321
- overflow:hidden;
179
+ .related_item-thumb {
180
+ display: block;
181
+ padding-bottom: 10px;
322
182
  }
323
183
 
324
- .show-for-small *,
325
- .hide-for-desktop * {
326
- mso-hide:all;
184
+ .related_heading {
185
+ border-top: 1px solid #CBCCCF;
186
+ text-align: center;
187
+ padding: 25px 0 10px;
327
188
  }
328
189
 
329
- /* Typography */
190
+ /* Discount Code ------------------------------ */
330
191
 
331
- body, table.body, h1, h2, h3, h4, h5, h6, p, td {
332
- color: #222222;
333
- font-family: Helvetica, Arial, sans-serif;
334
- font-weight: normal;
335
- padding:0;
192
+ .discount {
193
+ width: 100%;
336
194
  margin: 0;
337
- text-align: left;
338
- line-height: 1.3;
339
- }
340
-
341
- h1, h2, h3, h4, h5, h6 {
342
- word-break: normal;
343
- }
344
-
345
- h1 {font-size: 40px;}
346
- h2 {font-size: 36px;}
347
- h3 {font-size: 32px;}
348
- h4 {font-size: 28px;}
349
- h5 {font-size: 24px;}
350
- h6 {font-size: 20px;}
351
- body, table.body, p, td {font-size: 14px;line-height:19px;}
352
-
353
- p.lead, p.lede, p.leed {
354
- font-size: 18px;
355
- line-height:21px;
356
- }
357
-
358
- p {
359
- margin-bottom: 10px;
360
- }
361
-
362
- small {
363
- font-size: 10px;
195
+ padding: 24px;
196
+ -premailer-width: 100%;
197
+ -premailer-cellpadding: 0;
198
+ -premailer-cellspacing: 0;
199
+ background-color: #F4F4F7;
200
+ border: 2px dashed #CBCCCF;
364
201
  }
365
202
 
366
- a {
367
- color: #2ba6cb;
368
- text-decoration: none;
203
+ .discount_heading {
204
+ text-align: center;
369
205
  }
370
206
 
371
- a:hover {
372
- color: #2795b6 !important;
207
+ .discount_body {
208
+ text-align: center;
209
+ font-size: 15px;
373
210
  }
374
211
 
375
- a:active {
376
- color: #2795b6 !important;
377
- }
212
+ /* Social Icons ------------------------------ */
378
213
 
379
- a:visited {
380
- color: #2ba6cb !important;
381
- }
382
-
383
- h1 a,
384
- h2 a,
385
- h3 a,
386
- h4 a,
387
- h5 a,
388
- h6 a {
389
- color: #2ba6cb;
214
+ .social {
215
+ width: auto;
390
216
  }
391
217
 
392
- h1 a:active,
393
- h2 a:active,
394
- h3 a:active,
395
- h4 a:active,
396
- h5 a:active,
397
- h6 a:active {
398
- color: #2ba6cb !important;
218
+ .social td {
219
+ padding: 0;
220
+ width: auto;
399
221
  }
400
222
 
401
- h1 a:visited,
402
- h2 a:visited,
403
- h3 a:visited,
404
- h4 a:visited,
405
- h5 a:visited,
406
- h6 a:visited {
407
- color: #2ba6cb !important;
223
+ .social_icon {
224
+ height: 20px;
225
+ margin: 0 8px 10px 8px;
226
+ padding: 0;
408
227
  }
409
228
 
410
- /* Panels */
411
-
412
- .panel {
413
- background: #f2f2f2;
414
- border: 1px solid #d9d9d9;
415
- padding: 10px !important;
416
- }
229
+ /* Data table ------------------------------ */
417
230
 
418
- .sub-grid table {
231
+ .purchase {
419
232
  width: 100%;
233
+ margin: 0;
234
+ -premailer-width: 100%;
235
+ -premailer-cellpadding: 0;
236
+ -premailer-cellspacing: 0;
420
237
  }
421
238
 
422
- .sub-grid td.sub-columns {
423
- padding-bottom: 0;
424
- }
425
-
426
- /* Buttons */
427
-
428
- table.button,
429
- table.tiny-button,
430
- table.small-button,
431
- table.medium-button,
432
- table.large-button {
239
+ .purchase_content {
433
240
  width: 100%;
434
- overflow: hidden;
435
- }
436
-
437
- table.button td,
438
- table.tiny-button td,
439
- table.small-button td,
440
- table.medium-button td,
441
- table.large-button td {
442
- box-sizing:border-box;
443
- -moz-box-sizing:border-box;
444
- -webkit-box-sizing:border-box;
445
- display: block;
446
- width: auto !important;
447
- text-align: center;
448
- background: #2ba6cb;
449
- border: 1px solid #2284a1;
450
- color: #ffffff;
451
- padding: 8px 0;
452
- line-height: initial !important;
241
+ margin: 0;
242
+ -premailer-width: 100%;
243
+ -premailer-cellpadding: 0;
244
+ -premailer-cellspacing: 0;
453
245
  }
454
246
 
455
- table.tiny-button td {
456
- padding: 5px 0;
247
+ .purchase_item {
248
+ padding: 10px 4px;
249
+ color: #51545E;
250
+ font-size: 15px;
251
+ line-height: 18px;
252
+ width: 62%;
457
253
  }
458
254
 
459
- table.small-button td {
460
- padding: 8px 0;
255
+ .purchase_image {
256
+ width: 18%;
257
+ padding: 5px;
461
258
  }
462
259
 
463
- table.medium-button td {
464
- padding: 12px 0;
260
+ .purchase_item p {
261
+ margin: 0;
262
+ padding: 0.1em 0;
465
263
  }
466
264
 
467
- table.large-button td {
468
- padding: 21px 0;
265
+ .purchase_item--additional {
266
+ font-size: 12px;
469
267
  }
470
268
 
471
- table.button td a,
472
- table.tiny-button td a,
473
- table.small-button td a,
474
- table.medium-button td a,
475
- table.large-button td a {
476
- font-weight: bold;
477
- text-decoration: none;
478
- font-family: Helvetica, Arial, sans-serif;
479
- color: #ffffff;
480
- font-size: 16px;
481
- display: block;
482
- height: 100%;
483
- width: 100%;
269
+ .purchase_heading {
270
+ padding-bottom: 8px;
271
+ border-bottom: 1px solid #EAEAEC;
484
272
  }
485
273
 
486
- table.tiny-button td a {
274
+ .purchase_heading p {
275
+ margin: 0;
276
+ color: #85878E;
487
277
  font-size: 12px;
488
- font-weight: normal;
489
278
  }
490
279
 
491
- table.small-button td a {
492
- font-size: 16px;
280
+ .purchase_footer {
281
+ padding-top: 15px;
282
+ border-top: 1px solid #EAEAEC;
493
283
  }
494
284
 
495
- table.medium-button td a {
496
- font-size: 20px;
285
+ .purchase_total {
286
+ margin: 0;
287
+ text-align: right;
288
+ font-weight: bold;
289
+ color: #333333;
497
290
  }
498
291
 
499
- table.large-button td a {
500
- font-size: 24px;
292
+ .purchase_total--label {
293
+ padding: 0 15px 0 0;
501
294
  }
502
295
 
503
- table.button:hover td,
504
- table.button:visited td,
505
- table.button:active td {
506
- background: #2795b6 !important;
296
+ body {
297
+ background-color: #F2F4F6;
298
+ color: #51545E;
507
299
  }
508
300
 
509
- table.button:hover td a,
510
- table.button:visited td a,
511
- table.button:active td a {
512
- color: #ffffff !important;
301
+ p {
302
+ color: #51545E;
513
303
  }
514
304
 
515
- table.button:hover td,
516
- table.tiny-button:hover td,
517
- table.small-button:hover td,
518
- table.medium-button:hover td,
519
- table.large-button:hover td {
520
- background: #2795b6 !important;
305
+ .email-wrapper {
306
+ width: 100%;
307
+ margin: 0;
308
+ padding: 0;
309
+ -premailer-width: 100%;
310
+ -premailer-cellpadding: 0;
311
+ -premailer-cellspacing: 0;
312
+ background-color: #F2F4F6;
521
313
  }
522
314
 
523
- table.button:hover td a,
524
- table.button:active td a,
525
- table.button td a:visited,
526
- table.tiny-button:hover td a,
527
- table.tiny-button:active td a,
528
- table.tiny-button td a:visited,
529
- table.small-button:hover td a,
530
- table.small-button:active td a,
531
- table.small-button td a:visited,
532
- table.medium-button:hover td a,
533
- table.medium-button:active td a,
534
- table.medium-button td a:visited,
535
- table.large-button:hover td a,
536
- table.large-button:active td a,
537
- table.large-button td a:visited {
538
- color: #ffffff !important;
315
+ .email-content {
316
+ width: 100%;
317
+ margin: 0;
318
+ padding: 0;
319
+ -premailer-width: 100%;
320
+ -premailer-cellpadding: 0;
321
+ -premailer-cellspacing: 0;
539
322
  }
540
323
 
541
- table.secondary td {
542
- background: #e9e9e9;
543
- border-color: #d0d0d0;
544
- color: #555555;
545
- }
324
+ /* Masthead ----------------------- */
546
325
 
547
- table.secondary td a {
548
- color: #555555;
326
+ .email-masthead {
327
+ padding: 25px 0;
328
+ text-align: center;
549
329
  }
550
330
 
551
- table.secondary:hover td {
552
- background: #d0d0d0 !important;
553
- color: #555555;
331
+ .email-masthead_logo {
332
+ width: 94px;
554
333
  }
555
334
 
556
- table.secondary:hover td a,
557
- table.secondary td a:visited,
558
- table.secondary:active td a {
559
- color: #555555 !important;
335
+ .email-masthead_name {
336
+ font-size: 16px;
337
+ font-weight: bold;
338
+ color: #A8AAAF;
339
+ text-decoration: none;
340
+ text-shadow: 0 1px 0 white;
560
341
  }
561
342
 
562
- table.success td {
563
- background: #5da423;
564
- border-color: #457a1a;
565
- }
343
+ /* Body ------------------------------ */
566
344
 
567
- table.success:hover td {
568
- background: #457a1a !important;
345
+ .email-body {
346
+ width: 100%;
347
+ margin: 0;
348
+ padding: 0;
349
+ -premailer-width: 100%;
350
+ -premailer-cellpadding: 0;
351
+ -premailer-cellspacing: 0;
569
352
  }
570
353
 
571
- table.alert td {
572
- background: #c60f13;
573
- border-color: #970b0e;
354
+ .email-body_inner {
355
+ width: 570px;
356
+ margin: 0 auto;
357
+ padding: 0;
358
+ -premailer-width: 570px;
359
+ -premailer-cellpadding: 0;
360
+ -premailer-cellspacing: 0;
361
+ background-color: #FFFFFF;
574
362
  }
575
363
 
576
- table.alert:hover td {
577
- background: #970b0e !important;
364
+ .email-footer {
365
+ width: 570px;
366
+ margin: 0 auto;
367
+ padding: 0;
368
+ -premailer-width: 570px;
369
+ -premailer-cellpadding: 0;
370
+ -premailer-cellspacing: 0;
371
+ text-align: center;
578
372
  }
579
373
 
580
- table.radius td {
581
- -webkit-border-radius: 3px;
582
- -moz-border-radius: 3px;
583
- border-radius: 3px;
374
+ .email-footer p {
375
+ color: #A8AAAF;
584
376
  }
585
377
 
586
- table.round td {
587
- -webkit-border-radius: 500px;
588
- -moz-border-radius: 500px;
589
- border-radius: 500px;
378
+ .body-action {
379
+ width: 100%;
380
+ margin: 30px auto;
381
+ padding: 0;
382
+ -premailer-width: 100%;
383
+ -premailer-cellpadding: 0;
384
+ -premailer-cellspacing: 0;
385
+ text-align: center;
590
386
  }
591
387
 
592
- /* Outlook First */
388
+ .body-sub {
389
+ margin-top: 25px;
390
+ padding-top: 25px;
391
+ border-top: 1px solid #EAEAEC;
392
+ }
593
393
 
594
- body.outlook p {
595
- display: inline !important;
394
+ .content-cell {
395
+ padding: 40px;
596
396
  }
597
397
 
598
- /* Media Queries */
398
+ /*Media Queries ------------------------------ */
599
399
 
600
400
  @media only screen and (max-width: 600px) {
601
-
602
- table[class="body"] img {
603
- max-width: auto !important;
604
- max-height: auto !important;
605
- }
606
-
607
- table[class="body"] center {
608
- min-width: 0 !important;
609
- }
610
-
611
- table[class="body"] .container {
612
- width: 95% !important;
613
- }
614
-
615
- table[class="body"] .row {
401
+ .email-body_inner,
402
+ .email-footer {
616
403
  width: 100% !important;
617
- display: block !important;
618
- }
619
-
620
- table[class="body"] .wrapper {
621
- display: block !important;
622
- padding-right: 0 !important;
623
- }
624
-
625
- table[class="body"] .columns,
626
- table[class="body"] .column {
627
- table-layout: fixed !important;
628
- float: none !important;
629
- width: 100% !important;
630
- padding-right: 0px !important;
631
- padding-left: 0px !important;
632
- display: block !important;
633
- }
634
-
635
- table[class="body"] .wrapper.first .columns,
636
- table[class="body"] .wrapper.first .column {
637
- display: table !important;
638
- }
639
-
640
- table[class="body"] table.columns td,
641
- table[class="body"] table.column td {
642
- width: 100% !important;
643
- }
644
-
645
- table[class="body"] .columns td.one,
646
- table[class="body"] .column td.one { width: 8.333333% !important; }
647
- table[class="body"] .columns td.two,
648
- table[class="body"] .column td.two { width: 16.666666% !important; }
649
- table[class="body"] .columns td.three,
650
- table[class="body"] .column td.three { width: 25% !important; }
651
- table[class="body"] .columns td.four,
652
- table[class="body"] .column td.four { width: 33.333333% !important; }
653
- table[class="body"] .columns td.five,
654
- table[class="body"] .column td.five { width: 41.666666% !important; }
655
- table[class="body"] .columns td.six,
656
- table[class="body"] .column td.six { width: 50% !important; }
657
- table[class="body"] .columns td.seven,
658
- table[class="body"] .column td.seven { width: 58.333333% !important; }
659
- table[class="body"] .columns td.eight,
660
- table[class="body"] .column td.eight { width: 66.666666% !important; }
661
- table[class="body"] .columns td.nine,
662
- table[class="body"] .column td.nine { width: 75% !important; }
663
- table[class="body"] .columns td.ten,
664
- table[class="body"] .column td.ten { width: 83.333333% !important; }
665
- table[class="body"] .columns td.eleven,
666
- table[class="body"] .column td.eleven { width: 91.666666% !important; }
667
- table[class="body"] .columns td.twelve,
668
- table[class="body"] .column td.twelve { width: 100% !important; }
669
-
670
- table[class="body"] td.offset-by-one,
671
- table[class="body"] td.offset-by-two,
672
- table[class="body"] td.offset-by-three,
673
- table[class="body"] td.offset-by-four,
674
- table[class="body"] td.offset-by-five,
675
- table[class="body"] td.offset-by-six,
676
- table[class="body"] td.offset-by-seven,
677
- table[class="body"] td.offset-by-eight,
678
- table[class="body"] td.offset-by-nine,
679
- table[class="body"] td.offset-by-ten,
680
- table[class="body"] td.offset-by-eleven {
681
- padding-left: 0 !important;
682
- }
683
-
684
- table[class="body"] table.columns td.expander {
685
- width: 1px !important;
686
404
  }
405
+ }
687
406
 
688
- table[class="body"] .right-text-pad,
689
- table[class="body"] .text-pad-right {
690
- padding-left: 10px !important;
407
+ @media (prefers-color-scheme: dark) {
408
+ body,
409
+ .email-body,
410
+ .email-body_inner,
411
+ .email-content,
412
+ .email-wrapper,
413
+ .email-masthead,
414
+ .email-footer {
415
+ background-color: #333333 !important;
416
+ color: #FFF !important;
691
417
  }
692
418
 
693
- table[class="body"] .left-text-pad,
694
- table[class="body"] .text-pad-left {
695
- padding-right: 10px !important;
419
+ p,
420
+ ul,
421
+ ol,
422
+ blockquote,
423
+ h1,
424
+ h2,
425
+ h3 {
426
+ color: #FFF !important;
696
427
  }
697
428
 
698
- table[class="body"] .hide-for-small,
699
- table[class="body"] .show-for-desktop {
700
- display: none !important;
429
+ .attributes_content,
430
+ .discount {
431
+ background-color: #222 !important;
701
432
  }
702
433
 
703
- table[class="body"] .show-for-small,
704
- table[class="body"] .hide-for-desktop {
705
- display : block !important;
706
- width : auto !important;
707
- overflow : visible !important;
434
+ .email-masthead_name {
435
+ text-shadow: none !important;
708
436
  }
709
437
  }
710
438
  </style>
711
-
712
- <style>
713
-
714
- table[class="body"] {
715
- margin-top: 20px;
716
- }
717
-
718
- .template-label {
719
- font-weight: bold;
720
- font-size: 11px;
721
- }
722
-
723
- .callout .wrapper {
724
- padding-bottom: 20px;
725
- }
726
-
727
- .callout .panel {
728
- background: #ECF8FF;
729
- border-color: #b9e5ff;
730
- }
731
-
732
- .header {
733
- background: #fff;
734
- }
735
-
736
- .footer .wrapper {
737
- background: #ebebeb;
738
- }
739
-
740
- .footer h5 {
741
- padding-bottom: 10px;
742
- }
743
-
744
- table.columns .text-pad {
745
- padding-left: 10px;
746
- padding-right: 10px;
747
- }
748
-
749
- table.columns .left-text-pad {
750
- padding-left: 10px;
751
- }
752
-
753
- table.columns .right-text-pad {
754
- padding-right: 10px;
755
- }
756
-
757
- td.right {
758
- text-align: right;
759
- }
760
-
761
- @media only screen and (max-width: 600px) {
762
-
763
- table[class="body"] .right-text-pad {
764
- padding-left: 10px !important;
765
- }
766
-
767
- table[class="body"] .left-text-pad {
768
- padding-right: 10px !important;
769
- }
770
-
771
- .logo {
772
- margin-left: auto;
773
- margin-right: auto;
774
- float: none !important;
775
- }
439
+ <!--[if mso]>
440
+ <style type="text/css">
441
+ .f-fallback {
442
+ font-family: Arial, sans-serif;
776
443
  }
777
444
  </style>
445
+ <![endif]-->