cloudcommerce 0.0.82 → 0.0.83

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 (106) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/package.json +6 -6
  3. package/packages/api/package.json +1 -1
  4. package/packages/apps/correios/package.json +1 -1
  5. package/packages/apps/custom-shipping/package.json +1 -1
  6. package/packages/apps/discounts/package.json +1 -1
  7. package/packages/apps/frenet/package.json +1 -1
  8. package/packages/apps/tiny-erp/package.json +1 -1
  9. package/packages/cli/package.json +1 -1
  10. package/packages/config/package.json +1 -1
  11. package/packages/events/package.json +1 -1
  12. package/packages/firebase/package.json +2 -2
  13. package/packages/modules/package.json +1 -1
  14. package/packages/passport/package.json +1 -1
  15. package/packages/ssr/package.json +1 -1
  16. package/packages/storefront/astro.config.mjs +122 -5
  17. package/packages/storefront/client.d.ts +27 -0
  18. package/packages/storefront/dist/client/admin/config.json +1 -0
  19. package/packages/storefront/dist/client/assets/cms-preview.css +274 -0
  20. package/packages/storefront/dist/client/assets/cms.css +114 -0
  21. package/packages/storefront/dist/client/assets/cvv.png +0 -0
  22. package/packages/storefront/dist/client/assets/icons/bootstrap-icons/font/storefront-icons.woff2 +0 -0
  23. package/packages/storefront/dist/client/assets/icons/feather-icons/font/storefront-icons.woff2 +0 -0
  24. package/packages/storefront/dist/client/assets/icons/font-awesome/font/storefront-icons.woff2 +0 -0
  25. package/packages/storefront/dist/client/assets/icons/line-awesome/font/storefront-icons.woff2 +0 -0
  26. package/packages/storefront/dist/client/assets/icons/tabler-icons/font/storefront-icons.woff2 +0 -0
  27. package/packages/storefront/dist/client/assets/img-placeholder.png +0 -0
  28. package/packages/storefront/dist/client/assets/payments.png +0 -0
  29. package/packages/storefront/dist/client/assets/ssl-safe.png +0 -0
  30. package/packages/storefront/dist/client/chunks/workbox-window.prod.es5.4b654ae6.js +2 -0
  31. package/packages/storefront/dist/client/hoisted.46e058d2.js +271 -0
  32. package/packages/storefront/dist/client/img/icon.png +0 -0
  33. package/packages/storefront/dist/client/img/large-icon.png +0 -0
  34. package/packages/storefront/dist/client/img/uploads/banner1.png +0 -0
  35. package/packages/storefront/dist/client/img/uploads/banner2.png +0 -0
  36. package/packages/storefront/dist/client/img/uploads/banner2.webp +0 -0
  37. package/packages/storefront/dist/client/img/uploads/favicon.png +0 -0
  38. package/packages/storefront/dist/client/img/uploads/headless.png +0 -0
  39. package/packages/storefront/dist/client/img/uploads/headphone.png +0 -0
  40. package/packages/storefront/dist/client/img/uploads/headphone.webp +0 -0
  41. package/packages/storefront/dist/client/img/uploads/icon.png +0 -0
  42. package/packages/storefront/dist/client/img/uploads/large-icon.png +0 -0
  43. package/packages/storefront/dist/client/img/uploads/logo.png +0 -0
  44. package/packages/storefront/dist/client/img/uploads/logo.webp +0 -0
  45. package/packages/storefront/dist/client/img/uploads/og-image.png +0 -0
  46. package/packages/storefront/dist/client/img/uploads/passion.png +0 -0
  47. package/packages/storefront/dist/client/img/uploads/passion.webp +0 -0
  48. package/packages/storefront/dist/client/img/uploads/pwa-reliable.png +0 -0
  49. package/packages/storefront/dist/client/img/uploads/rect8589.png +0 -0
  50. package/packages/storefront/dist/client/img/uploads/rect859.png +0 -0
  51. package/packages/storefront/dist/client/img/uploads/rect89.png +0 -0
  52. package/packages/storefront/dist/client/img/uploads/rect89.webp +0 -0
  53. package/packages/storefront/dist/client/img/uploads/ssl-safe.png +0 -0
  54. package/packages/storefront/dist/client/manifest.webmanifest +1 -1
  55. package/packages/storefront/dist/client/robots.txt +8 -0
  56. package/packages/storefront/dist/client/sw.js +1 -1
  57. package/packages/storefront/dist/client/workbox-8b24c3ff.js +1 -0
  58. package/packages/storefront/dist/server/entry.mjs +4 -10
  59. package/packages/storefront/dist/server/manifest.webmanifest +1 -1
  60. package/packages/storefront/package.json +6 -6
  61. package/packages/storefront/public/admin/config.json +1 -0
  62. package/packages/storefront/public/assets/cms-preview.css +274 -0
  63. package/packages/storefront/public/assets/cms.css +114 -0
  64. package/packages/storefront/public/assets/cvv.png +0 -0
  65. package/packages/storefront/public/assets/icons/bootstrap-icons/font/storefront-icons.woff2 +0 -0
  66. package/packages/storefront/public/assets/icons/feather-icons/font/storefront-icons.woff2 +0 -0
  67. package/packages/storefront/public/assets/icons/font-awesome/font/storefront-icons.woff2 +0 -0
  68. package/packages/storefront/public/assets/icons/line-awesome/font/storefront-icons.woff2 +0 -0
  69. package/packages/storefront/public/assets/icons/tabler-icons/font/storefront-icons.woff2 +0 -0
  70. package/packages/storefront/public/assets/img-placeholder.png +0 -0
  71. package/packages/storefront/public/assets/payments.png +0 -0
  72. package/packages/storefront/public/assets/ssl-safe.png +0 -0
  73. package/packages/storefront/public/img/icon.png +0 -0
  74. package/packages/storefront/public/img/large-icon.png +0 -0
  75. package/packages/storefront/public/img/uploads/banner1.png +0 -0
  76. package/packages/storefront/public/img/uploads/banner2.png +0 -0
  77. package/packages/storefront/public/img/uploads/banner2.webp +0 -0
  78. package/packages/storefront/public/img/uploads/favicon.png +0 -0
  79. package/packages/storefront/public/img/uploads/headless.png +0 -0
  80. package/packages/storefront/public/img/uploads/headphone.png +0 -0
  81. package/packages/storefront/public/img/uploads/headphone.webp +0 -0
  82. package/packages/storefront/public/img/uploads/icon.png +0 -0
  83. package/packages/storefront/public/img/uploads/large-icon.png +0 -0
  84. package/packages/storefront/public/img/uploads/logo.png +0 -0
  85. package/packages/storefront/public/img/uploads/logo.webp +0 -0
  86. package/packages/storefront/public/img/uploads/og-image.png +0 -0
  87. package/packages/storefront/public/img/uploads/passion.png +0 -0
  88. package/packages/storefront/public/img/uploads/passion.webp +0 -0
  89. package/packages/storefront/public/img/uploads/pwa-reliable.png +0 -0
  90. package/packages/storefront/public/img/uploads/rect8589.png +0 -0
  91. package/packages/storefront/public/img/uploads/rect859.png +0 -0
  92. package/packages/storefront/public/img/uploads/rect89.png +0 -0
  93. package/packages/storefront/public/img/uploads/rect89.webp +0 -0
  94. package/packages/storefront/public/img/uploads/ssl-safe.png +0 -0
  95. package/packages/storefront/public/robots.txt +8 -0
  96. package/packages/storefront/scripts/prepare-monorepo.sh +4 -0
  97. package/packages/storefront/scripts/prerelease.sh +4 -0
  98. package/packages/storefront/src/env.d.ts +2 -0
  99. package/packages/storefront/src/lib/layouts/Base.astro +2 -9
  100. package/packages/storefront/src/lib/layouts/meta/Head.astro +1 -0
  101. package/packages/types/package.json +1 -1
  102. package/packages/storefront/dist/client/favicon.ico +0 -0
  103. package/packages/storefront/dist/client/hoisted.f0efb207.js +0 -272
  104. package/packages/storefront/dist/client/workbox-70b8fbb9.js +0 -1
  105. package/packages/storefront/public/favicon.ico +0 -0
  106. package/packages/storefront/src/vite-env.d.ts +0 -13
package/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.0.83](https://github.com/ecomplus/cloud-commerce/compare/v0.0.82...v0.0.83) (2022-09-19)
6
+
7
+
8
+ ### Features
9
+
10
+ * **storefront:** Advanced SW cache strategies based on current `@ecomplus/storefront-framework` ([3b6b6ae](https://github.com/ecomplus/cloud-commerce/commit/3b6b6ae35e449ccf29ad07b67b74dbfaf409f16a))
11
+ * **storefront:** Properly setup web manifest for PWA ([b2c3f1e](https://github.com/ecomplus/cloud-commerce/commit/b2c3f1e56fe3acfebd5990e0fce73007786da6d4)), closes [#L262-L282](https://github.com/ecomplus/cloud-commerce/issues/L262-L282)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * **deps:** Update all non-major dependencies ([#50](https://github.com/ecomplus/cloud-commerce/issues/50)) ([f14b07c](https://github.com/ecomplus/cloud-commerce/commit/f14b07c3c35dc62d52a1c102b001611f85e51080))
17
+
5
18
  ### [0.0.82](https://github.com/ecomplus/cloud-commerce/compare/v0.0.81...v0.0.82) (2022-09-17)
6
19
 
7
20
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cloudcommerce",
3
3
  "type": "module",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "description": "Open fair-code headless commerce platform: API-first, microservices based, event driven and cloud native",
6
6
  "main": "packages/api/lib/index.js",
7
7
  "author": "E-Com Club Softwares para E-commerce <ti@e-com.club>",
@@ -22,19 +22,19 @@
22
22
  "@types/node": "^18.7.17",
23
23
  "@typescript-eslint/eslint-plugin": "^5.37.0",
24
24
  "@typescript-eslint/parser": "^5.37.0",
25
- "esbuild": "^0.15.7",
25
+ "esbuild": "^0.15.8",
26
26
  "eslint": "^8.23.1",
27
27
  "eslint-config-airbnb-base": "^15.0.0",
28
28
  "eslint-plugin-import": "^2.26.0",
29
- "eslint-plugin-vue": "^9.4.0",
29
+ "eslint-plugin-vue": "^9.5.1",
30
30
  "husky": "^8.0.1",
31
31
  "node-fetch": "^3.2.10",
32
32
  "standard-version": "^9.5.0",
33
33
  "ts-node": "^10.9.1",
34
- "turbo": "^1.4.6",
34
+ "turbo": "^1.4.7",
35
35
  "typescript": "^4.8.3",
36
- "vite": "^3.1.0",
37
- "vitest": "^0.23.2",
36
+ "vite": "^3.1.3",
37
+ "vitest": "^0.23.4",
38
38
  "zx": "^7.0.8"
39
39
  },
40
40
  "scripts": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/api",
3
3
  "type": "module",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "description": "E-Com Plus Cloud Commerce APIs client/adapter",
6
6
  "main": "lib/api.js",
7
7
  "types": "lib/api.d.ts",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-correios",
3
3
  "type": "module",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "description": "E-Com Plus Cloud Commerce app for Correios shipping calculation",
6
6
  "main": "lib/correios.js",
7
7
  "repository": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-custom-shipping",
3
3
  "type": "module",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "description": "E-Com Plus Cloud Commerce app for custom shipping methods",
6
6
  "main": "lib/custom-shipping.js",
7
7
  "repository": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-discounts",
3
3
  "type": "module",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "description": "E-Com Plus Cloud Commerce app for complex discount rules",
6
6
  "main": "lib/discounts.js",
7
7
  "repository": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-frenet",
3
3
  "type": "module",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "description": "E-Com Plus Cloud Commerce app for Frenet shipping calculation",
6
6
  "main": "lib/frenet.js",
7
7
  "repository": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-tiny-erp",
3
3
  "type": "module",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "description": "E-Com Plus Cloud Commerce app for Tiny ERP",
6
6
  "main": "lib/tiny-erp.js",
7
7
  "repository": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/cli",
3
3
  "type": "module",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "description": "E-Com Plus Cloud Commerce CLI tools",
6
6
  "bin": {
7
7
  "cloudcommerce": "./bin/run.mjs"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/config",
3
3
  "type": "module",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "description": "E-Com Plus Cloud Commerce base config",
6
6
  "main": "lib/config.js",
7
7
  "exports": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/events",
3
3
  "type": "module",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "description": "E-Com Plus Cloud Commerce app events",
6
6
  "main": "lib/index.js",
7
7
  "exports": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/firebase",
3
3
  "type": "module",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "description": "E-Com Plus Cloud Commerce on Firebase",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
@@ -31,7 +31,7 @@
31
31
  "dependencies": {
32
32
  "@cloudcommerce/api": "workspace:*",
33
33
  "@cloudcommerce/config": "workspace:*",
34
- "@google-cloud/pubsub": "^3.1.0",
34
+ "@google-cloud/pubsub": "^3.1.1",
35
35
  "firebase-admin": "^11.0.1",
36
36
  "firebase-functions": "^3.23.0",
37
37
  "node-fetch": "^3.2.10",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/modules",
3
3
  "type": "module",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "description": "E-Com Plus Cloud Commerce modules API",
6
6
  "main": "lib/index.cjs",
7
7
  "exports": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/passport",
3
3
  "type": "module",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "description": "E-Com Plus Cloud Commerce customers authentication (passport) API",
6
6
  "main": "lib/index.js",
7
7
  "exports": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/ssr",
3
3
  "type": "module",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "description": "E-Com Plus Cloud Commerce storefront SSR",
6
6
  "main": "lib/index.js",
7
7
  "exports": {
@@ -14,7 +14,118 @@ import getConfig from './storefront.config.mjs';
14
14
 
15
15
  dotenv.config();
16
16
 
17
- const astroConfig = {
17
+ const { domain, primaryColor, settings } = getConfig();
18
+
19
+ const _vitePWAOptions = {
20
+ manifest: {
21
+ name: settings.name || 'My Shop',
22
+ short_name: settings.short_name || settings.name || 'MyShop',
23
+ description: settings.description || 'My PWA Shop',
24
+ background_color: settings.bg_color || '#ffffff',
25
+ theme_color: primaryColor,
26
+ crossorigin: 'use-credentials',
27
+ icons: [{
28
+ src: settings.icon || '/img/icon.png',
29
+ sizes: '192x192',
30
+ type: 'image/png',
31
+ }, {
32
+ src: settings.large_icon || '/img/large-icon.png',
33
+ sizes: '512x512',
34
+ type: 'image/png',
35
+ }, {
36
+ src: settings.large_icon || '/img/large-icon.png',
37
+ sizes: '512x512',
38
+ type: 'image/png',
39
+ purpose: 'any maskable',
40
+ }],
41
+ },
42
+ registerType: 'autoUpdate',
43
+ workbox: {
44
+ navigateFallback: null,
45
+ globDirectory: 'dist/client',
46
+ globPatterns: [
47
+ '**/!(cms*|admin*).{js,css}',
48
+ '**/logo.?????*.{webp,avif,svg}', // `@astrojs/image` optimized logo if any
49
+ ],
50
+ ignoreURLParametersMatching: [/.*/],
51
+ runtimeCaching: [{
52
+ urlPattern: /^\/$/,
53
+ handler: 'NetworkFirst',
54
+ }, {
55
+ urlPattern: settings.logo
56
+ ? new RegExp(`^${(settings.mini_logo ? `(?:${settings.mini_logo}|${settings.logo})` : settings.logo)}$`)
57
+ : /^\/(?:img\/uploads\/|img\/)?logo\.(?:png|jpg|jpeg|webp|avif|svg)$/,
58
+ handler: 'StaleWhileRevalidate',
59
+ options: {
60
+ cacheName: 'logo',
61
+ },
62
+ }, {
63
+ urlPattern: /\/((?!(?:admin|assets|img)(\/|$))[^.]+)(\.(?!js|css|xml|txt|png|jpg|jpeg|webp|avif|svg|gif)[^.]+)*$/,
64
+ handler: 'NetworkFirst',
65
+ options: {
66
+ cacheName: 'pages',
67
+ expiration: {
68
+ maxEntries: 50,
69
+ purgeOnQuotaError: true,
70
+ },
71
+ },
72
+ }, {
73
+ urlPattern: /^\/assets\//,
74
+ handler: 'StaleWhileRevalidate',
75
+ options: {
76
+ cacheName: 'assets',
77
+ },
78
+ }, {
79
+ urlPattern: /^\/img\/uploads\/.*\.(?:png|jpg|jpeg|webp|avif|svg|gif)$/,
80
+ handler: 'StaleWhileRevalidate',
81
+ options: {
82
+ cacheName: 'cms-images',
83
+ expiration: {
84
+ maxEntries: 20,
85
+ maxAgeSeconds: 60 * 60 * 24 * 30, // 30 days
86
+ purgeOnQuotaError: true,
87
+ },
88
+ },
89
+ }, {
90
+ urlPattern: /^https:\/\/ecomplus\.io/,
91
+ handler: 'NetworkFirst',
92
+ options: {
93
+ cacheName: 'store-api',
94
+ expiration: {
95
+ maxEntries: 50,
96
+ purgeOnQuotaError: true,
97
+ },
98
+ },
99
+ }, {
100
+ urlPattern: /^https:\/\/(((\w+\.)?ecoms\d)|(ecom[\w-]+(\.\w+)*\.digitaloceanspaces))\.com.*\/imgs\/normal\//,
101
+ handler: 'CacheFirst',
102
+ options: {
103
+ cacheName: 'product-thumbnails',
104
+ expiration: {
105
+ maxEntries: 100,
106
+ maxAgeSeconds: 60 * 60 * 24 * 30, // 30 days
107
+ purgeOnQuotaError: true,
108
+ },
109
+ },
110
+ }, {
111
+ urlPattern: /^https:\/\/(((\w+\.)?ecoms\d)|(ecom[\w-]+(\.\w+)*\.digitaloceanspaces))\.com.*\/imgs\/big\//,
112
+ handler: 'CacheFirst',
113
+ options: {
114
+ cacheName: 'product-pictures',
115
+ expiration: {
116
+ maxEntries: 10,
117
+ maxAgeSeconds: 60 * 60 * 24 * 7, // 7 days
118
+ purgeOnQuotaError: true,
119
+ },
120
+ },
121
+ }],
122
+ },
123
+ };
124
+
125
+ const genAstroConfig = ({
126
+ site = `https://${domain}`,
127
+ vitePWAOptions = _vitePWAOptions,
128
+ } = {}) => ({
18
129
  output: 'server',
19
130
  adapter: node(),
20
131
  integrations: [
@@ -25,13 +136,19 @@ const astroConfig = {
25
136
  sitemap(),
26
137
  UnoCSS(),
27
138
  ],
139
+ site,
28
140
  vite: {
29
- plugins: [VitePWA()],
141
+ plugins: [
142
+ VitePWA(vitePWAOptions),
143
+ ],
30
144
  },
31
- site: `https://${getConfig().domain}`,
32
- };
145
+ });
146
+
147
+ const astroConfig = genAstroConfig();
33
148
 
34
149
  // https://astro.build/config
35
150
  export default defineConfig(astroConfig);
36
151
 
37
- export { astroConfig };
152
+ export { genAstroConfig, astroConfig };
153
+
154
+ export const vitePWAOptions = _vitePWAOptions;
@@ -0,0 +1,27 @@
1
+ /* eslint-disable */
2
+
3
+ interface Window {
4
+ firebaseConfig?: {
5
+ apiKey: string,
6
+ authDomain: string,
7
+ projectId: string,
8
+ storageBucket: string,
9
+ messagingSenderId: string,
10
+ appId: string,
11
+ measurementId: string,
12
+ };
13
+ storefront?: {
14
+ settings: typeof import('./content/settings.json') & {
15
+ store_id: number,
16
+ lang: string,
17
+ country_code: string,
18
+ currency: string,
19
+ currency_symbol: string,
20
+ },
21
+ context?: {
22
+ resource: string,
23
+ doc: Record<string, any>,
24
+ timestamp: number,
25
+ },
26
+ };
27
+ }
@@ -0,0 +1,274 @@
1
+ .ec-search-engine__count {
2
+ padding-left: .5rem;
3
+ position: relative;
4
+ line-height: 2.5;
5
+ }
6
+
7
+ .ec-search-engine__spinner {
8
+ position: absolute;
9
+ top: .4rem;
10
+ right: -3rem;
11
+ color: var(--secondary);
12
+ margin-left: 1.5rem;
13
+ width: 1.75rem;
14
+ height: 1.75rem;
15
+ }
16
+
17
+ .ec-search-engine__toggle {
18
+ color: inherit;
19
+ display: inline-block;
20
+ text-decoration: none;
21
+ -webkit-transition: opacity .15s,color .2s;
22
+ transition:opacity .15s,color .2s;
23
+ padding: 0 .5rem;
24
+ opacity: .75;
25
+ line-height: 2.5;
26
+ border: none;
27
+ }
28
+
29
+ .ec-search-engine__toggle i,
30
+ .ec-search-engine__toggle svg {
31
+ font-size: .825rem;
32
+ color: var(--gray-dark);
33
+ margin-right: .15rem;
34
+ }
35
+
36
+ .ec-search-engine__toggle:focus,
37
+ .ec-search-engine__toggle:hover {
38
+ opacity: 1;
39
+ text-decoration: none;
40
+ color: inherit;
41
+ box-shadow: none;
42
+ }
43
+
44
+ .ec-search-engine__toggle[aria-expanded=true] {
45
+ color: var(--gray-dark);
46
+ opacity: 1;
47
+ }
48
+
49
+ .ec-search-engine__results {
50
+ -webkit-transition:opacity .25s;
51
+ transition:opacity .25s;
52
+ }
53
+
54
+ .ec-search-engine__info {
55
+ margin-bottom: 1.5rem;
56
+ padding-top: 1rem;
57
+ }
58
+
59
+ .ec-search-engine__terms {
60
+ display: -webkit-box;
61
+ display: flex;
62
+ -webkit-box-pack: justify;
63
+ -ms-box-pack: justify;
64
+ -moz-box-pack: justify;
65
+ justify-content: space-between;
66
+ -webkit-box-align: center;
67
+ -moz-box-align: center;
68
+ -ms-box-align: center;
69
+ align-items: center;
70
+ }
71
+
72
+ .ec-search-engine__terms small {
73
+ font-size: .95rem;
74
+ color: var(--gray);
75
+ }
76
+
77
+ .ec-search-engine__retail {
78
+ padding-top: .5rem;
79
+ }
80
+
81
+ .ec-search-engine__item {
82
+ margin-bottom: 1rem;
83
+ }
84
+
85
+ .ec-search-engine__sidebar {
86
+ position: fixed;
87
+ width: 280px;
88
+ max-width: 100%;
89
+ height: 100%;
90
+ top: 0;
91
+ right: 0;
92
+ z-index: 1100;
93
+ border-radius: 0;
94
+ }
95
+
96
+ .ec-search-engine__sidebar .card-body {
97
+ overflow-y: auto;
98
+ }
99
+
100
+ .ec-search-engine__filter:not(:first-child) {
101
+ margin-top: 1rem;
102
+ }
103
+
104
+ .ec-search-engine__filter:last-child {
105
+ margin-bottom: 1.5rem;
106
+ }
107
+
108
+ .ec-search-engine__filter__btn {
109
+ padding-left: 0;
110
+ color: var(--secondary);
111
+ font-size: 1.2rem;
112
+ font-weight: 300;
113
+ }
114
+
115
+ .ec-search-engine__filter__btn i,
116
+ .ec-search-engine__filter__btn svg {
117
+ margin-right: .25rem;
118
+ color: var(--gray);
119
+ opacity: .6;
120
+ }
121
+
122
+ .ec-search-engine__filter__btn:focus {
123
+ box-shadow: none;
124
+ }
125
+
126
+ .ec-search-engine__option small {
127
+ color: var(--gray);
128
+ }
129
+
130
+ .ec-product-card {
131
+ position: relative;
132
+ padding-bottom: .1rem;
133
+ margin-bottom: 0;
134
+ }
135
+
136
+ .ec-product-card--inactive,
137
+ .ec-product-card--inactive img {
138
+ opacity: .7;
139
+ }
140
+
141
+ .ec-product-card__offer-stamp {
142
+ background-color: var(--success);
143
+ color: var(--success-yiq);
144
+ min-width: 40px;
145
+ font-size: .78rem;
146
+ line-height: 1.8;
147
+ text-align: center;
148
+ position: absolute;
149
+ z-index: 9;
150
+ top: .35rem;
151
+ right: .35rem;
152
+ border-radius: .125rem;
153
+ opacity: .9;
154
+ }
155
+
156
+ .ec-product-card__link:hover h3 {
157
+ text-decoration: underline;
158
+ }
159
+
160
+ .ec-product-card__name {
161
+ margin-top: .5rem;
162
+ font-size: .88rem;
163
+ line-height: 1.2;
164
+ height: 3.168rem;
165
+ overflow: hidden;
166
+ font-weight: 400;
167
+ display: block;
168
+ z-index: 1;
169
+ }
170
+
171
+ .ec-product-card__pictures {
172
+ display: -webkit-box;
173
+ display: flex;
174
+ background-color: var(--body-bg);
175
+ -webkit-box-align: center;
176
+ -moz-box-align: center;
177
+ -ms-box-align: center;
178
+ align-items: center;
179
+ text-align: center;
180
+ overflow: hidden;
181
+ }
182
+
183
+ @media (max-width:575.98px) {
184
+ .ec-product-card__pictures {
185
+ height: 180px;
186
+ }
187
+ }
188
+
189
+ @media (min-width:576px) and (max-width:991.98px) {
190
+ .ec-product-card__pictures {
191
+ height: 200px;
192
+ }
193
+ }
194
+
195
+ @media (min-width: 992px) {
196
+ .ec-product-card__pictures {
197
+ height: 250px;
198
+ }
199
+ }
200
+
201
+ .ec-product-card__picture {
202
+ display: block;
203
+ -webkit-box-flex: 0;
204
+ -ms-box-flex: 0;
205
+ -moz-box-flex: 0;
206
+ flex: 0 0 100%;
207
+ opacity: 0;
208
+ -webkit-transition:opacity .25s;
209
+ transition:opacity .25s;
210
+ }
211
+
212
+ .ec-product-card__picture:first-child {
213
+ opacity: 1;
214
+ }
215
+
216
+ @media (max-width: 300px) {
217
+ .ec-product-card__picture {
218
+ max-width: 100px;
219
+ }
220
+ }
221
+
222
+ @media (max-width: 575.98px) {
223
+ .ec-product-card__picture img {
224
+ max-height: 180px;
225
+ }
226
+ }
227
+
228
+ @media (min-width: 576px) and (max-width: 991.98px) {
229
+ .ec-product-card__picture img {
230
+ max-height: 200px;
231
+ }
232
+ }
233
+
234
+ @media (min-width: 992px) {
235
+ .ec-product-card__picture img {
236
+ max-height:250px;
237
+ }
238
+ }
239
+
240
+ .ec-product-card__prices {
241
+ margin-bottom: .15rem;
242
+ height: 4.95rem;
243
+ overflow: hidden;
244
+ white-space: nowrap;
245
+ }
246
+
247
+ .ec-product-card__prices .ec-prices__value:first-child {
248
+ margin-top: 1.14rem;
249
+ }
250
+
251
+ .ec-product-card:hover .ec-product-card__picture {
252
+ display: none;
253
+ }
254
+
255
+ .ec-product-card:hover .ec-product-card__picture:last-child {
256
+ display: block;
257
+ opacity: 1;
258
+ }
259
+
260
+ .ec-product-card:hover .ec-product-card__buy {
261
+ opacity: 1;
262
+ }
263
+
264
+ svg:not(:root).svg-inline--fa {
265
+ overflow: visible;
266
+ }
267
+
268
+ .svg-inline--fa {
269
+ display: inline-block;
270
+ font-size: inherit;
271
+ height: 1em;
272
+ overflow: visible;
273
+ vertical-align: -0.125em;
274
+ }