@ -0,0 +1,47 @@ |
|||||
|
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg |
||||
|
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html |
||||
|
:alt: License: AGPL-3 |
||||
|
|
||||
|
Theme Eco Refine |
||||
|
==================== |
||||
|
* Theme Eco Refine module provide attractive and unique front end theme mainly suitable for eCommerce website |
||||
|
|
||||
|
Installation |
||||
|
============ |
||||
|
- www.odoo.com/documentation/15.0/setup/install.html |
||||
|
- Install our Theme |
||||
|
|
||||
|
License |
||||
|
------- |
||||
|
General Public License, Version 3 (AGPL v3). |
||||
|
(https://www.gnu.org/licenses/agpl-3.0-standalone.html) |
||||
|
|
||||
|
Company |
||||
|
------- |
||||
|
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
||||
|
|
||||
|
Credits |
||||
|
------- |
||||
|
* Developer: (V15) Sabeel B , Contact : odoo@cybrosys.com |
||||
|
|
||||
|
Contacts |
||||
|
-------- |
||||
|
* Mail Contact : odoo@cybrosys.com |
||||
|
* Website : https://cybrosys.com |
||||
|
|
||||
|
Bug Tracker |
||||
|
----------- |
||||
|
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. |
||||
|
|
||||
|
Maintainer |
||||
|
========== |
||||
|
.. image:: https://cybrosys.com/images/logo.png |
||||
|
:target: https://cybrosys.com |
||||
|
|
||||
|
This module is maintained by Cybrosys Technologies. |
||||
|
|
||||
|
For support and more information, please visit https://www.cybrosys.com. |
||||
|
|
||||
|
Further information |
||||
|
=================== |
||||
|
HTML Description: `<static/description/index.html>`__ |
@ -0,0 +1,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Sabeel B (odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from . import controllers |
||||
|
from . import models |
@ -0,0 +1,77 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Sabeel B (odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
{ |
||||
|
'name': 'Theme Eco Refine', |
||||
|
'version': '15.0.1.0.0', |
||||
|
'category': 'Theme/Corporate', |
||||
|
'summary': 'Theme Eco Refine Front-end theme', |
||||
|
'description': 'Theme includes attractive and modern dynamic/static' |
||||
|
' snippets for your website pages', |
||||
|
'author': 'Cybrosys Techno Solutions', |
||||
|
'company': 'Cybrosys Techno Solutions', |
||||
|
'maintainer': 'Cybrosys Techno Solutions', |
||||
|
'website': 'https://www.cybrosys.com', |
||||
|
"depends": ['website_livechat', |
||||
|
'website_sale_wishlist', 'website_blog'], |
||||
|
'data': [ |
||||
|
'views/theme_refurbished_menus.xml', |
||||
|
'views/templates.xml', |
||||
|
'views/product_template_views.xml', |
||||
|
'views/website_blog_templates.xml', |
||||
|
'views/about_us_templates.xml', |
||||
|
'static/src/xml/homepage_templates.xml', |
||||
|
'views/snippets/website_snippets_inherits.xml', |
||||
|
'static/src/xml/best_seller_snippet_templates.xml', |
||||
|
'static/src/xml/new_arrival_snippet_templates.xml', |
||||
|
'static/src/xml/top_rated_product_snippet_templates.xml', |
||||
|
], |
||||
|
'assets': { |
||||
|
'web.assets_frontend': [ |
||||
|
'theme_eco_refine/static/src/css/contact_us.css', |
||||
|
'theme_eco_refine/static/src/css/product.css', |
||||
|
'theme_eco_refine/static/src/css/home.css', |
||||
|
'theme_eco_refine/static/src/css/blog.css', |
||||
|
'theme_eco_refine/static/src/js/menu.js', |
||||
|
'theme_eco_refine/static/src/css/about_us.css', |
||||
|
'theme_eco_refine/static/src/js/about_us.js', |
||||
|
'theme_eco_refine/static/src/js/owl.carousel.js', |
||||
|
'theme_eco_refine/static/src/js/owl.carousel.min.js', |
||||
|
'theme_eco_refine/static/src/css/owl.carousel.css', |
||||
|
'theme_eco_refine/static/src/js/collection_snippet.js', |
||||
|
'theme_eco_refine/static/src/js/refurbished_carousel_' |
||||
|
'snippet.js', |
||||
|
'theme_eco_refine/static/src/js/best_seller_snippet.js', |
||||
|
'theme_eco_refine/static/src/js/new_arrival_snippet.js', |
||||
|
'theme_eco_refine/static/src/js/customer_response.js', |
||||
|
'theme_eco_refine/static/src/js/top_rated_products_' |
||||
|
'snippet.js', |
||||
|
], |
||||
|
}, |
||||
|
'images': [ |
||||
|
'static/description/banner.png', |
||||
|
'static/description/theme_refurbished.png', |
||||
|
], |
||||
|
'license': 'AGPL-3', |
||||
|
'installable': True, |
||||
|
'auto_install': False, |
||||
|
'application': False, |
||||
|
} |
@ -0,0 +1,24 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Sabeel B (odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from . import dynamic_snippets |
||||
|
from . import theme_eco_refine |
||||
|
from . import about_us |
@ -0,0 +1,31 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Sabeel B (odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import http |
||||
|
|
||||
|
|
||||
|
class EcoRefine(http.Controller): |
||||
|
"""Class used to define function which renders appropriate template.""" |
||||
|
@http.route('/about_us', type='http', website=True, auth='public') |
||||
|
def eco_refine_about_us(self): |
||||
|
"""Renders template about_us page.""" |
||||
|
|
||||
|
return http.request.render('theme_eco_refine.about_us', {}) |
@ -0,0 +1,198 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Sabeel B (odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
import time |
||||
|
from odoo import http |
||||
|
from odoo.http import request |
||||
|
|
||||
|
|
||||
|
class TopSellingProducts(http.Controller): |
||||
|
"""This class is for the getting top most sold products |
||||
|
products_categories: |
||||
|
function for passing top most sold products to js, |
||||
|
and it returns products,unique categories and the |
||||
|
current website |
||||
|
""" |
||||
|
|
||||
|
@http.route('/bestsellers', auth='public', type='json', website=True) |
||||
|
def get_bestseller(self, products_per_slide=4): |
||||
|
"""Function for getting the current website, top most sold products and |
||||
|
its categories. |
||||
|
Return: |
||||
|
- products: Most sold products |
||||
|
- unique_categories: Categories of all products |
||||
|
- current_website: The current website for checking products or |
||||
|
categories are available in that website |
||||
|
""" |
||||
|
current_website = request.env['website'].sudo().get_current_website().id |
||||
|
public_categ_id = request.env[ |
||||
|
'product.public.category'].sudo().search_read([], ['name', |
||||
|
'website_id']) |
||||
|
products = [] |
||||
|
public_categories = [] |
||||
|
for category in public_categ_id: |
||||
|
products_search_read = request.env['product.template'].with_user( |
||||
|
1).search_read( |
||||
|
[('is_published', '=', True), |
||||
|
('public_categ_ids.id', '=', category['id'])], |
||||
|
['name', 'image_1920', 'public_categ_ids', 'website_id', |
||||
|
'sales_count', 'list_price'], |
||||
|
order='sales_count' |
||||
|
) |
||||
|
for product in products_search_read: |
||||
|
if product['sales_count'] != 0: |
||||
|
products.append(product) |
||||
|
public_categories.append(category) |
||||
|
unique_categories = [dict(categories) for categories in |
||||
|
{tuple(sorted(record.items())) for record in |
||||
|
public_categories}] |
||||
|
products = sorted(products, key=lambda i: i['sales_count'], |
||||
|
reverse=True) |
||||
|
records_grouped = [] |
||||
|
record_list = [] |
||||
|
for index, record in enumerate(products, 1): |
||||
|
record_list.append(record) |
||||
|
if index % products_per_slide == 0: |
||||
|
records_grouped.append(record_list) |
||||
|
record_list = [] |
||||
|
if any(record_list): |
||||
|
records_grouped.append(record_list) |
||||
|
|
||||
|
response = http.Response( |
||||
|
template='theme_eco_refine.best_seller_template', |
||||
|
qcontext={ |
||||
|
'products': products, |
||||
|
'categories': unique_categories[0], |
||||
|
'current_website_id': current_website, |
||||
|
'products_per_slide': products_per_slide, |
||||
|
'num_slides': len(records_grouped), |
||||
|
"uniqueId": "pc-%d" % int(time.time() * 1000), |
||||
|
'products_list': records_grouped |
||||
|
} |
||||
|
) |
||||
|
return response.render() |
||||
|
|
||||
|
@http.route('/new_arrivals', auth='public', type='json', website=True) |
||||
|
def get_new_arrivals(self, products_per_slide=4): |
||||
|
"""Function for getting the current website,new arrival products and |
||||
|
its categories. |
||||
|
Return |
||||
|
products-most sold products |
||||
|
unique_categories-categories of all products |
||||
|
current_website-the current website for checking products |
||||
|
""" |
||||
|
current_website = request.env[ |
||||
|
'website'].sudo().get_current_website().id |
||||
|
public_categ_id = request.env[ |
||||
|
'product.public.category'].sudo().search_read([], ['name', |
||||
|
'website_id']) |
||||
|
products = [] |
||||
|
public_categories = [] |
||||
|
for category in public_categ_id: |
||||
|
products_search_read = request.env['product.template'].with_user( |
||||
|
1).search_read( |
||||
|
[('is_published', '=', True), |
||||
|
('public_categ_ids.id', '=', category['id'])], |
||||
|
['name', 'public_categ_ids', 'website_id', |
||||
|
'sales_count', 'image_1920', 'list_price', 'create_date'], |
||||
|
order='create_date desc' |
||||
|
) |
||||
|
for product in products_search_read: |
||||
|
# if product['sales_count'] != 0: |
||||
|
products.append(product) |
||||
|
public_categories.append(category) |
||||
|
unique_categories = [dict(categories) for categories in |
||||
|
{tuple(sorted(record.items())) for record in |
||||
|
public_categories}] |
||||
|
products = sorted(products, key=lambda i: i['create_date'], |
||||
|
reverse=True) |
||||
|
records_grouped = [] |
||||
|
record_list = [] |
||||
|
for index, record in enumerate(products, 1): |
||||
|
record_list.append(record) |
||||
|
if index % products_per_slide == 0: |
||||
|
records_grouped.append(record_list) |
||||
|
record_list = [] |
||||
|
if any(record_list): |
||||
|
records_grouped.append(record_list) |
||||
|
|
||||
|
response = http.Response( |
||||
|
template='theme_eco_refine.new_product_arrival', |
||||
|
qcontext={'products': products, |
||||
|
'categories': unique_categories[0], |
||||
|
'current_website_id': current_website, |
||||
|
'products_per_slide': products_per_slide, |
||||
|
'num_slides': len(records_grouped), |
||||
|
'products_list': records_grouped}) |
||||
|
return response.render() |
||||
|
|
||||
|
@http.route('/top_rated', auth='public', type='json', website=True) |
||||
|
def get_top_rated(self, products_per_slide=4): |
||||
|
"""Function for getting the current website,rated products and |
||||
|
its categories. |
||||
|
Return |
||||
|
products-most sold products |
||||
|
unique_categories-categories of all products |
||||
|
current_website-the current website for checking |
||||
|
products or""" |
||||
|
current_website = request.env[ |
||||
|
'website'].sudo().get_current_website().id |
||||
|
rated_products = request.env['rating.rating'].sudo().search_read( |
||||
|
[('res_model', '=', 'product.template')], ['res_id', 'res_name', ], |
||||
|
order='rating desc') |
||||
|
|
||||
|
products = [] |
||||
|
public_categories = [] |
||||
|
for category in rated_products: |
||||
|
products_search_read = request.env['product.template'].with_user( |
||||
|
1).search_read( |
||||
|
[('is_published', '=', True), |
||||
|
('id', '=', category['res_id'])], |
||||
|
['name', 'public_categ_ids', 'website_id', |
||||
|
'sales_count', 'image_1920', 'list_price', 'create_date'], |
||||
|
|
||||
|
) |
||||
|
for product in products_search_read: |
||||
|
products.append(product) |
||||
|
public_categories.append(category) |
||||
|
unique_categories = [dict(categories) for categories in |
||||
|
{tuple(sorted(record.items())) for record in |
||||
|
public_categories}] |
||||
|
records_grouped = [] |
||||
|
record_list = [] |
||||
|
for index, record in enumerate(products, 1): |
||||
|
record_list.append(record) |
||||
|
if index % products_per_slide == 0: |
||||
|
records_grouped.append(record_list) |
||||
|
record_list = [] |
||||
|
if any(record_list): |
||||
|
records_grouped.append(record_list) |
||||
|
response = http.Response( |
||||
|
template='theme_eco_refine.top_rated_products', |
||||
|
qcontext={'products': products, |
||||
|
'categories': unique_categories[0] if unique_categories |
||||
|
else [], |
||||
|
'current_website_id': current_website, |
||||
|
'products_per_slide': products_per_slide, |
||||
|
"uniqueId": "uc-%d" % int(time.time() * 1000), |
||||
|
'num_slides': len(records_grouped), |
||||
|
'products_list': records_grouped}) |
||||
|
return response.render() |
@ -0,0 +1,213 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Sabeel B (odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
import babel.dates |
||||
|
import pytz |
||||
|
import itertools |
||||
|
from werkzeug.exceptions import NotFound |
||||
|
from collections import OrderedDict |
||||
|
from odoo.http import request |
||||
|
from odoo.tools import lazy |
||||
|
from odoo import http, fields |
||||
|
from odoo.addons.website.controllers.main import QueryURL |
||||
|
from odoo.addons.http_routing.models.ir_http import slug, unslug |
||||
|
from odoo.addons.website_sale.controllers.main import TableCompute, WebsiteSale |
||||
|
from odoo.tools import sql |
||||
|
from odoo.tools.misc import get_lang |
||||
|
|
||||
|
|
||||
|
class WebsiteShop(WebsiteSale): |
||||
|
"""Shop Controller""" |
||||
|
|
||||
|
@http.route(['/shop/config/website'], type='json', auth='user') |
||||
|
def _change_website_config(self, **options): |
||||
|
"""Alter Website Config""" |
||||
|
if not request.env.user.has_group( |
||||
|
'website.group_website_restricted_editor'): |
||||
|
raise NotFound() |
||||
|
current_website = request.env['website'].get_current_website() |
||||
|
writable_fields = { |
||||
|
'shop_ppg', 'shop_ppr', 'shop_default_sort', |
||||
|
'product_page_image_layout', 'product_page_image_width', |
||||
|
'product_page_grid_columns', 'product_page_image_spacing' |
||||
|
} |
||||
|
if 'ppg' in options and not options['ppg']: |
||||
|
options['ppg'] = 1 |
||||
|
if 'product_page_grid_columns' in options: |
||||
|
options['product_page_grid_columns'] = int( |
||||
|
options['product_page_grid_columns']) |
||||
|
write_vals = {k: v for k, v in options.items() if k in writable_fields} |
||||
|
if write_vals: |
||||
|
current_website.write(write_vals) |
||||
|
current_website.select = True |
||||
|
|
||||
|
@http.route() |
||||
|
def shop(self, page=0, category=None, search='', min_price=0.0, |
||||
|
max_price=0.0, ppg=False, **post): |
||||
|
"""Shop Page Configuration""" |
||||
|
current_website = request.env['website'].get_current_website() |
||||
|
if not current_website.select: |
||||
|
ppg = 12 |
||||
|
ppr = 3 |
||||
|
res = super(WebsiteShop, self).shop(page=page, category=category, |
||||
|
search=search, |
||||
|
min_price=min_price, |
||||
|
max_price=max_price, ppg=ppg, |
||||
|
**post) |
||||
|
products = res.qcontext['products'] |
||||
|
res.qcontext.update({ |
||||
|
'bins': lazy( |
||||
|
lambda: TableCompute().process(products, ppg, ppr)), |
||||
|
'ppr': ppr, |
||||
|
}) |
||||
|
return res |
||||
|
else: |
||||
|
ppg = current_website.shop_ppg |
||||
|
ppr = current_website.shop_ppr |
||||
|
res = super(WebsiteShop, self).shop(page=page, category=category, |
||||
|
search=search, |
||||
|
min_price=min_price, |
||||
|
max_price=max_price, ppg=ppg, |
||||
|
**post) |
||||
|
products = res.qcontext['products'] |
||||
|
res.qcontext.update({ |
||||
|
'bins': lazy( |
||||
|
lambda: TableCompute().process(products, ppg, ppr)), |
||||
|
'ppr': ppr, |
||||
|
}) |
||||
|
current_website.select = True |
||||
|
return res |
||||
|
|
||||
|
|
||||
|
class WebsiteBlog(http.Controller): |
||||
|
|
||||
|
def nav_list(self, blog=None): |
||||
|
"""Website Blog""" |
||||
|
dom = blog and [('blog_id', '=', blog.id)] or [] |
||||
|
if not request.env.user.has_group('website.group_website_designer'): |
||||
|
dom += [('post_date', '<=', fields.Datetime.now())] |
||||
|
groups = request.env['blog.post']._read_group_raw( |
||||
|
dom, |
||||
|
['name', 'post_date'], |
||||
|
groupby=["post_date"], orderby="post_date desc") |
||||
|
for group in groups: |
||||
|
(r, label) = group['post_date'] |
||||
|
start, end = r.split('/') |
||||
|
group['post_date'] = label |
||||
|
group['date_begin'] = start |
||||
|
group['date_end'] = end |
||||
|
|
||||
|
locale = get_lang(request.env).code |
||||
|
start = pytz.UTC.localize(fields.Datetime.from_string(start)) |
||||
|
tzinfo = pytz.timezone(request.context.get('tz', 'utc') or 'utc') |
||||
|
|
||||
|
group['month'] = babel.dates.format_datetime(start, format='MMMM', |
||||
|
tzinfo=tzinfo, |
||||
|
locale=locale) |
||||
|
group['year'] = babel.dates.format_datetime(start, format='yyyy', |
||||
|
tzinfo=tzinfo, |
||||
|
locale=locale) |
||||
|
|
||||
|
return OrderedDict((year, [m for m in months]) for year, months in |
||||
|
itertools.groupby(groups, lambda g: g['year'])) |
||||
|
|
||||
|
@http.route([ |
||||
|
'''/blog/<model("blog.blog"):blog>/ |
||||
|
<model("blog.post", "[('blog_id','=',blog.id)]"):blog_post>''', |
||||
|
], type='http', auth="public", website=True, sitemap=True) |
||||
|
def blog_post(self, blog, blog_post, tag_id=None, page=1, |
||||
|
enable_editor=None, **post): |
||||
|
""" Prepare all values to display the blog. |
||||
|
|
||||
|
:return dict values: values for the templates, containing |
||||
|
|
||||
|
- 'blog_post': browse of the current post |
||||
|
- 'blog': browse of the current blog |
||||
|
- 'blogs': list of browse records of blogs |
||||
|
- 'tag': current tag, if tag_id in parameters |
||||
|
- 'tags': all tags, for tag-based navigation |
||||
|
- 'pager': a pager on the comments |
||||
|
- 'nav_list': a dict [year][month] for archives navigation |
||||
|
- 'next_post': next blog post, to direct the user towards the next |
||||
|
interesting post |
||||
|
""" |
||||
|
BlogPost = request.env['blog.post'] |
||||
|
date_begin, date_end = post.get('date_begin'), post.get('date_end') |
||||
|
|
||||
|
domain = request.website.website_domain() |
||||
|
blogs = blog.search(domain, order="create_date, id asc") |
||||
|
|
||||
|
tag = None |
||||
|
if tag_id: |
||||
|
tag = request.env['blog.tag'].browse(int(tag_id)) |
||||
|
blog_url = QueryURL('', ['blog', 'tag'], blog=blog_post.blog_id, |
||||
|
tag=tag, date_begin=date_begin, date_end=date_end) |
||||
|
|
||||
|
if not blog_post.blog_id.id == blog.id: |
||||
|
return request.redirect( |
||||
|
"/blog/%s/%s" % (slug(blog_post.blog_id), slug(blog_post)), |
||||
|
code=301) |
||||
|
|
||||
|
tags = request.env['blog.tag'].search([]) |
||||
|
|
||||
|
# Find next Post |
||||
|
blog_post_domain = [('blog_id', '=', blog.id)] |
||||
|
if not request.env.user.has_group('website.group_website_designer'): |
||||
|
blog_post_domain += [('post_date', '<=', fields.Datetime.now())] |
||||
|
|
||||
|
all_post = BlogPost.search(blog_post_domain) |
||||
|
|
||||
|
if blog_post not in all_post: |
||||
|
return request.redirect("/blog/%s" % (slug(blog_post.blog_id))) |
||||
|
|
||||
|
# should always return at least the current post |
||||
|
all_post_ids = all_post.ids |
||||
|
current_blog_post_index = all_post_ids.index(blog_post.id) |
||||
|
nb_posts = len(all_post_ids) |
||||
|
next_post_id = all_post_ids[ |
||||
|
(current_blog_post_index + 1) % nb_posts] if nb_posts > 1 else None |
||||
|
next_post = next_post_id and BlogPost.browse(next_post_id) or False |
||||
|
prev_post_id = all_post_ids[ |
||||
|
(current_blog_post_index - 1) % nb_posts] if nb_posts > 1 else None |
||||
|
prev_post = next_post_id and BlogPost.browse(prev_post_id) or False |
||||
|
|
||||
|
values = { |
||||
|
'tags': tags, |
||||
|
'tag': tag, |
||||
|
'blog': blog, |
||||
|
'blog_post': blog_post, |
||||
|
'blogs': blogs, |
||||
|
'main_object': blog_post, |
||||
|
'enable_editor': enable_editor, |
||||
|
'next_post': next_post, |
||||
|
'date': date_begin, |
||||
|
'blog_url': blog_url, |
||||
|
'prev_post': prev_post, |
||||
|
} |
||||
|
response = request.render("website_blog.blog_post_complete", values) |
||||
|
|
||||
|
if blog_post.id not in request.session.get('posts_viewed', []): |
||||
|
if sql.increment_fields_skiplock(blog_post, 'visits'): |
||||
|
if not request.session.get('posts_viewed'): |
||||
|
request.session['posts_viewed'] = [] |
||||
|
request.session['posts_viewed'].append(blog_post.id) |
||||
|
request.session.modified = True |
||||
|
return response |
@ -0,0 +1,6 @@ |
|||||
|
## Module <theme_eco_refine> |
||||
|
|
||||
|
#### 08.02.2024 |
||||
|
#### Version 15.0.1.0.0 |
||||
|
#### ADD |
||||
|
- Initial Commit for Theme Eco Refine |
@ -0,0 +1,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Sabeel B (odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from . import product_template |
||||
|
from . import website |
@ -0,0 +1,36 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Sabeel B (odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductTemplate(models.Model): |
||||
|
"""Inheriting Product Template To Add New Fields""" |
||||
|
_inherit = 'product.template' |
||||
|
|
||||
|
product_spec = fields.Text( |
||||
|
'Product Specification', translate=True, |
||||
|
help="The Specification of the Product." |
||||
|
) |
||||
|
product_detail = fields.Text( |
||||
|
'Product Detail', translate=True, |
||||
|
help="The Details of the Product " |
||||
|
) |
@ -0,0 +1,30 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Sabeel B (odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class Website(models.Model): |
||||
|
"""Inheriting Model Website To Add New Fields""" |
||||
|
_inherit = 'website' |
||||
|
|
||||
|
select = fields.Boolean(string="Select", default=False, |
||||
|
help="Check website") |
After Width: | Height: | Size: 214 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 638 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 7.2 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 359 KiB |
After Width: | Height: | Size: 386 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 643 KiB |
After Width: | Height: | Size: 673 KiB |
After Width: | Height: | Size: 393 KiB |
After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 391 KiB |
After Width: | Height: | Size: 466 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 239 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 421 KiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 2.5 MiB |
After Width: | Height: | Size: 821 KiB |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 843 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 899 B |
After Width: | Height: | Size: 848 B |
After Width: | Height: | Size: 936 B |
After Width: | Height: | Size: 1001 B |
After Width: | Height: | Size: 465 KiB |
After Width: | Height: | Size: 9.5 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 559 KiB |
After Width: | Height: | Size: 262 KiB |
After Width: | Height: | Size: 439 KiB |
After Width: | Height: | Size: 122 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 489 KiB |
@ -0,0 +1,332 @@ |
|||||
|
.ref-blog-bg { |
||||
|
background: -webkit-gradient(linear, left top, left bottom, from(rgba(20, 108, 148, 0.6)), to(#FFFFFF)), url('/theme_eco_refine/static/src/img/blog-bg.png'); |
||||
|
background: linear-gradient(180deg, rgba(20, 108, 148, 0.6) 0%, #FFFFFF 100%), url('/theme_eco_refine/static/src/img/blog-bg.png'); |
||||
|
background-size: cover; |
||||
|
} |
||||
|
#o_wblog_blog_top .o_wblog_post_page_cover .o_record_cover_component{ |
||||
|
display:none; |
||||
|
} |
||||
|
|
||||
|
#o_wblog_blog_top{ |
||||
|
margin-top: -50px; |
||||
|
} |
||||
|
|
||||
|
#o_wblog_blog_top .o_wblog_post_title{ |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
.navbar-light .navbar-nav .nav-link.disabled { |
||||
|
color: rgb(33 77 93); |
||||
|
} |
||||
|
|
||||
|
.input-group .oe_search_button{ |
||||
|
background: #0d5272; |
||||
|
width: 60px; |
||||
|
} |
||||
|
|
||||
|
.navbar-light .navbar-nav .show > .nav-link, .navbar-light .navbar-nav .nav-link.active { |
||||
|
color: rgb(27 80 97 / 90%); |
||||
|
} |
||||
|
|
||||
|
.o_blog_post_title{ |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
|
||||
|
.text-reset .mt-2 { |
||||
|
color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.o_wblog_post_short_tag_section .badge{ |
||||
|
border: 1px solid #0d5272 !important; |
||||
|
} |
||||
|
|
||||
|
.justify-content-between a { |
||||
|
color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.row .col-md-6{ |
||||
|
padding-bottom: 3rem !important; |
||||
|
} |
||||
|
|
||||
|
.pb-4 { |
||||
|
padding-bottom: 3.5rem !important; |
||||
|
} |
||||
|
|
||||
|
.px-2 { |
||||
|
padding-right: 0.5rem !important; |
||||
|
padding-left: 1.5rem !important; |
||||
|
} |
||||
|
|
||||
|
.ref-wrapper { |
||||
|
max-width: 1200px; |
||||
|
margin-left: auto; |
||||
|
margin-right: auto; |
||||
|
padding-left: 20px; |
||||
|
padding-right: 20px; |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.ref-blog-container { |
||||
|
padding: 0px 0px; |
||||
|
} |
||||
|
|
||||
|
.ref-blog-contain { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
-webkit-box-pack: justify; |
||||
|
-ms-flex-pack: justify; |
||||
|
justify-content: space-between; |
||||
|
margin-bottom: 60px; |
||||
|
gap: 15px; |
||||
|
} |
||||
|
|
||||
|
.ref-blog-img_container { |
||||
|
overflow: hidden; |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
-webkit-transition: all 0.3s ease; |
||||
|
transition: all 0.3s ease; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
.ref-blog-detail { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
-webkit-box-pack: justify; |
||||
|
-ms-flex-pack: justify; |
||||
|
justify-content: space-between; |
||||
|
-webkit-box-orient: vertical; |
||||
|
-webkit-box-direction: normal; |
||||
|
-ms-flex-direction: column; |
||||
|
flex-direction: column; |
||||
|
} |
||||
|
|
||||
|
.ref-blog--sub-head { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
margin-bottom: 0.5rem; |
||||
|
} |
||||
|
|
||||
|
.ref-date-single_blog { |
||||
|
padding-right: 1rem; |
||||
|
border-right: 1px solid #0D5272; |
||||
|
} |
||||
|
|
||||
|
.ref-date { |
||||
|
margin: 0px 0px 16px 0px; |
||||
|
color: #0D5272; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
|
||||
|
.ref-author { |
||||
|
padding-left: 1rem; |
||||
|
font-weight: 500; |
||||
|
color: #0D5272; |
||||
|
} |
||||
|
|
||||
|
.ref-section_head { |
||||
|
font-size: 28px; |
||||
|
color: black; |
||||
|
font-weight: 600; |
||||
|
padding: 1rem 0; |
||||
|
} |
||||
|
|
||||
|
.ref-section_head { |
||||
|
font-size: 28px; |
||||
|
color: black; |
||||
|
font-weight: 600; |
||||
|
padding: 1rem 0; |
||||
|
} |
||||
|
|
||||
|
.ref-blog-detail a { |
||||
|
-0.7rem 1.5rem; |
||||
|
} |
||||
|
|
||||
|
.ref-blog-img_container img { |
||||
|
width: 100%; |
||||
|
-o-object-fit: cover; |
||||
|
object-fit: cover; |
||||
|
height: -webkit-fill-available; |
||||
|
} |
||||
|
|
||||
|
.text-nowrap{ |
||||
|
font-size: 1.3em; |
||||
|
color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.o_wblog_post_cover_nocard .o_record_cover_component { |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
bottom: 0; |
||||
|
right: 0; |
||||
|
background-size: cover; |
||||
|
background-position: center; |
||||
|
background-repeat: no-repeat; |
||||
|
height: 452px; |
||||
|
width: 453px; |
||||
|
} |
||||
|
|
||||
|
.website_blog #o_wblog_posts_loop.o_wblog_list_view .o_wblog_post_cover_nocard .o_record_cover_container { |
||||
|
padding-top: 65% !important; |
||||
|
} |
||||
|
|
||||
|
#o_wblog_posts_loop{ |
||||
|
margin-left: -140px; |
||||
|
} |
||||
|
|
||||
|
.o_wblog_post_cover_nocard{ |
||||
|
width: 452px; |
||||
|
} |
||||
|
.website_blog .o_wblog_read_text { |
||||
|
font-size: 20px !important; |
||||
|
line-height: 45px !important; |
||||
|
font-weight: 300 !important; |
||||
|
width: 680px !important; |
||||
|
} |
||||
|
|
||||
|
.mx-n2 { |
||||
|
margin-right: -0.5rem !important; |
||||
|
margin-left: -1.5rem !important; |
||||
|
} |
||||
|
|
||||
|
.pt-2 { |
||||
|
padding-top: 1.5rem !important; |
||||
|
} |
||||
|
|
||||
|
.o_wblog_post_short_tag_section .badge { |
||||
|
border: 1px solid #0d5272 !important; |
||||
|
height: 25px; |
||||
|
width: 115px; |
||||
|
font-size: 15px; |
||||
|
} |
||||
|
|
||||
|
.ref-blog-detail .btn-primary{ |
||||
|
margin-bottom: 18px; |
||||
|
padding: 0.5rem 1.5rem; |
||||
|
background-color: #ffff; |
||||
|
color: #0d5272; |
||||
|
border-radius: 0px; |
||||
|
border-width: 3px; |
||||
|
border-color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.pb-4 { |
||||
|
padding-bottom: 0rem !important; |
||||
|
} |
||||
|
|
||||
|
#o_wblog_posts_loop .row .mb-5{ |
||||
|
display:none; |
||||
|
} |
||||
|
|
||||
|
.rounded { |
||||
|
border-radius: 0rem !important; |
||||
|
border-top-left-radius: 0rem; |
||||
|
border-top-right-radius: 0rem; |
||||
|
border-bottom-right-radius: 0rem; |
||||
|
border-bottom-left-radius: 0rem; |
||||
|
} |
||||
|
|
||||
|
.website_blog .o_wblog_post_page_cover.o_record_has_cover .o_wblog_post_title { |
||||
|
color: #733636!important; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
#o_wblog_post_top .blog_header { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
#o_wblog_post_name{ |
||||
|
font-size: 50px!important; |
||||
|
font-weight: 500!important; |
||||
|
line-height: 65px!important; |
||||
|
color:#0d5272!important; |
||||
|
} |
||||
|
|
||||
|
#o_wblog_post_content .text-decoration-none .o_record_cover_container{ |
||||
|
padding-top: 90%; |
||||
|
width: 850px; |
||||
|
} |
||||
|
|
||||
|
#o_wblog_post_content .o_record_cover_component{ |
||||
|
height: 700px; |
||||
|
width: 850px; |
||||
|
} |
||||
|
|
||||
|
.website_blog .o_wblog_read_text .lead { |
||||
|
font-size: 28px; |
||||
|
line-height: 34px; |
||||
|
margin-bottom: 40px; |
||||
|
width: 900PX; |
||||
|
} |
||||
|
|
||||
|
.website_blog .o_wblog_read_text p, .website_blog .o_wblog_read_text ul, .website_blog .o_wblog_read_text ol { |
||||
|
margin-bottom: 1.55em; |
||||
|
font-size: 20px; |
||||
|
margin-top: 1rem; |
||||
|
line-height: 38px; |
||||
|
width: 880px; |
||||
|
} |
||||
|
|
||||
|
.website_blog .o_wblog_post_title #o_wblog_post_subtitle { |
||||
|
font-weight: 300!important; |
||||
|
font-size: 1.5rem!important; |
||||
|
} |
||||
|
|
||||
|
.o_wblog_post_content_field .mt-2{ |
||||
|
width: 860px; |
||||
|
} |
||||
|
|
||||
|
#o_wblog_next_container .o_record_cover_container .o_record_cover_component{ |
||||
|
width: 100%; |
||||
|
height: 350px; |
||||
|
margin-top: -62px; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
#o_wblog_next_container .o_record_cover_container .o_record_cover_filter{ |
||||
|
width: 100%; |
||||
|
margin-top: -61px; |
||||
|
height: 350px; |
||||
|
} |
||||
|
|
||||
|
.website_blog #o_wblog_next_container .o_wblog_next_loader { |
||||
|
transform: translateZ(-5px)!important; |
||||
|
} |
||||
|
|
||||
|
.ref-single-blog-navigation { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
-webkit-box-pack: justify; |
||||
|
-ms-flex-pack: justify; |
||||
|
justify-content: space-between; |
||||
|
margin-top: 20px; |
||||
|
margin-bottom: 50px; |
||||
|
width: 900px; |
||||
|
color:black; |
||||
|
} |
||||
|
#rf-blog-prev-btn, #rf-blog-next-btn { |
||||
|
padding: 0.8rem 0; |
||||
|
cursor: pointer; |
||||
|
background: none; |
||||
|
border: none; |
||||
|
font-weight: 600; |
||||
|
font-size: 18px; |
||||
|
color:black; |
||||
|
} |
||||
|
|
||||
|
#o_wblog_posts_loop .blog_post .o_record_cover_component{ |
||||
|
height: 200px; |
||||
|
} |
||||
|
|
||||
|
#o_wblog_post_content .o_wblog_post_title{ |
||||
|
margin-top: 125px; |
||||
|
} |
||||
|
|
||||
|
#o_wblog_index_content{ |
||||
|
margin-left: 230px; |
||||
|
} |
||||
|
|
@ -0,0 +1,665 @@ |
|||||
|
.ref-hero-sub-bg { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
-webkit-box-align: center; |
||||
|
-ms-flex-align: center; |
||||
|
align-items: center; |
||||
|
-webkit-box-pack: center; |
||||
|
-ms-flex-pack: center; |
||||
|
justify-content: center; |
||||
|
width: 100%; |
||||
|
height: 350px; |
||||
|
background: -webkit-gradient(linear, left top, left bottom, from(rgba(20, 108, 148, 0.6)), to(#FFFFFF)), url("/theme_eco_refine/static/src/img/contact-hero.png"); |
||||
|
background: linear-gradient(180deg, rgba(20, 108, 148, 0.6) 0%, #FFFFFF 100%), url("/theme_eco_refine/static/src/img/contact-hero.png"); |
||||
|
background-position: center; |
||||
|
background-size: cover; |
||||
|
background-repeat: no-repeat; |
||||
|
} |
||||
|
|
||||
|
.ref-contact_container { |
||||
|
text-align: center; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.ref-contact-info { |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
gap: 100px; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.ref-contact_container img { |
||||
|
padding: 30px; |
||||
|
} |
||||
|
|
||||
|
.ref-contact-msg { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
margin: 50px 0px; |
||||
|
-webkit-box-orient: vertical; |
||||
|
webkit-box-direction: normal; |
||||
|
-webkit-box-direction: normal; |
||||
|
-webkit-box-align: center; |
||||
|
} |
||||
|
|
||||
|
.ref-contact-form { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
text-align: center; |
||||
|
justify-content: center; |
||||
|
} |
||||
|
|
||||
|
.ref-contant-form_input { |
||||
|
background: #FFFFFF; |
||||
|
border: 2px solid #0d5272; |
||||
|
border-radius: 4px; |
||||
|
} |
||||
|
|
||||
|
.form-control { |
||||
|
background: #FFFFFF; |
||||
|
border: 2px solid #0d5272; |
||||
|
border-radius: 4px; |
||||
|
} |
||||
|
@media(max-width:1399px) { |
||||
|
.form-control { |
||||
|
background: #FFFFFF; |
||||
|
border: 1px solid #000000; |
||||
|
border-radius: 4px; |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media(max-width:1200px) { |
||||
|
.form-control { |
||||
|
background: #FFFFFF; |
||||
|
border: 1px solid #000000; |
||||
|
border-radius: 4px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media(max-width:992px) { |
||||
|
.form-control { |
||||
|
background: #FFFFFF; |
||||
|
border: 1px solid #000000; |
||||
|
border-radius: 4px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media(max-width:768px) { |
||||
|
.form-control { |
||||
|
background: #FFFFFF; |
||||
|
border: 1px solid #000000; |
||||
|
border-radius: 4px; |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media(max-width:$breakpoint-sm) { |
||||
|
.ref-hero-sub-bg { |
||||
|
height: 280px; |
||||
|
} |
||||
|
.ref-contact-info { |
||||
|
gap: 60px; |
||||
|
flex-wrap: wrap; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
@media(max-width:$breakpoint-xs) { |
||||
|
.ref-contact_container { |
||||
|
h4 { |
||||
|
font-size: 1rem; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ref-contact_container { |
||||
|
p { |
||||
|
font-size: 12px; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
.ref-contact-info { |
||||
|
gap: 24px; |
||||
|
} |
||||
|
.ref-contant-form_input { |
||||
|
|
||||
|
width:100%; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.ref-contact-form { |
||||
|
width: 90%; |
||||
|
} |
||||
|
.ref-contact_container img { |
||||
|
padding: 20px; |
||||
|
width: 70px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
element.style { |
||||
|
} |
||||
|
.ref-head--primary { |
||||
|
color: #0D5272; |
||||
|
} |
||||
|
|
||||
|
.ref-section_head { |
||||
|
font-size: 28px; |
||||
|
color: black; |
||||
|
font-weight: 600; |
||||
|
padding: 1rem 0; |
||||
|
} |
||||
|
|
||||
|
element.style { |
||||
|
} |
||||
|
@media (max-width: 991.98px) |
||||
|
.ref-hero-sub-bg_heading { |
||||
|
font-size: 42px; |
||||
|
width: 60%; |
||||
|
} |
||||
|
.ref-hero-sub-bg_heading { |
||||
|
font-weight: 600; |
||||
|
font-size: 42px; |
||||
|
width: 50%; |
||||
|
text-align: center; |
||||
|
line-height: 72px; |
||||
|
} |
||||
|
|
||||
|
.btn-primary { |
||||
|
padding: 0.5rem 1.5rem; |
||||
|
width: -webkit-fit-content; |
||||
|
width: -moz-fit-content; |
||||
|
width: fit-content; |
||||
|
color: #fff; |
||||
|
background-color: #0D5272; |
||||
|
border-radius: 4px; |
||||
|
} |
||||
|
|
||||
|
.ref-head--primary { |
||||
|
color: #0D5272; |
||||
|
} |
||||
|
|
||||
|
#ref-footer { |
||||
|
background-color: #000; |
||||
|
padding: 100px 0px 50px 0px; |
||||
|
} |
||||
|
|
||||
|
.ref-foot-row { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
-ms-flex-wrap: wrap; |
||||
|
flex-wrap: wrap; |
||||
|
-webkit-box-pack: justify; |
||||
|
-ms-flex-pack: justify; |
||||
|
justify-content: space-between; |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
@media (max-width: 1199.98px) |
||||
|
.ref-wrapper { |
||||
|
max-width: 999px; |
||||
|
margin-left: auto; |
||||
|
margin-right: auto; |
||||
|
padding-left: 20px; |
||||
|
padding-right: 20px; |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
element.style { |
||||
|
} |
||||
|
@media (max-width: 1199.98px) |
||||
|
.ref-wrapper { |
||||
|
max-width: 999px; |
||||
|
margin-left: auto; |
||||
|
margin-right: auto; |
||||
|
padding-left: 20px; |
||||
|
padding-right: 20px; |
||||
|
width: 100%; |
||||
|
} |
||||
|
.ref-wrapper { |
||||
|
max-width: 1200px; |
||||
|
margin-left: auto; |
||||
|
margin-right: auto; |
||||
|
padding-left: 20px; |
||||
|
padding-right: 20px; |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
#ref-footer .ref-logo { |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
.ref-foot-para { |
||||
|
color: #A9A9A9; |
||||
|
line-height: 36px; |
||||
|
} |
||||
|
|
||||
|
.column { |
||||
|
-ms-flex-preferred-size: 20%; |
||||
|
flex-basis: 22%!important; |
||||
|
} |
||||
|
|
||||
|
.ref-footer-section { |
||||
|
margin-bottom: 50px; |
||||
|
} |
||||
|
|
||||
|
.ref-logo { |
||||
|
font-weight: 700; |
||||
|
font-size: 36px; |
||||
|
color: #000000; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.ref-foot_head { |
||||
|
color: #fff; |
||||
|
font-size: 22px; |
||||
|
line-height: 36px; |
||||
|
} |
||||
|
|
||||
|
#ref-footer ul { |
||||
|
list-style: none; |
||||
|
} |
||||
|
|
||||
|
#ref-footer li { |
||||
|
margin-right: 1rem; |
||||
|
} |
||||
|
|
||||
|
a:not([href]):not([tabindex]) { |
||||
|
color: inherit; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
element.style { |
||||
|
} |
||||
|
.subscription-form { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
-ms-flex-wrap: wrap; |
||||
|
flex-wrap: wrap; |
||||
|
-webkit-box-pack: center; |
||||
|
-ms-flex-pack: center; |
||||
|
justify-content: center; |
||||
|
-webkit-box-align: center; |
||||
|
-ms-flex-align: center; |
||||
|
align-items: center; |
||||
|
margin-top: 20px; |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.subscription-form input[type=email] { |
||||
|
width: 450px; |
||||
|
border-radius: 6px; |
||||
|
padding: 12px; |
||||
|
margin: 50px 0px 0px 0px; |
||||
|
} |
||||
|
|
||||
|
.subscription-form button { |
||||
|
background-color: #0D5272; |
||||
|
color: #fff; |
||||
|
border: none; |
||||
|
position: absolute; |
||||
|
right: 0; |
||||
|
margin: 6px; |
||||
|
top: 50px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.ref-button { |
||||
|
padding: 0.5rem 1.5rem; |
||||
|
width: -webkit-fit-content; |
||||
|
width: -moz-fit-content; |
||||
|
width: fit-content; |
||||
|
color: #fff; |
||||
|
background-color: #0D5272; |
||||
|
border-radius: 4px; |
||||
|
} |
||||
|
|
||||
|
[type=reset], [type=submit], button, html [type=button] { |
||||
|
-webkit-appearance: button; |
||||
|
} |
||||
|
|
||||
|
@media (max-width: 1199.98px) |
||||
|
.ref-wrapper { |
||||
|
max-width: 999px; |
||||
|
margin-left: auto; |
||||
|
margin-right: auto; |
||||
|
padding-left: 20px; |
||||
|
padding-right: 20px; |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.ref-wrapper { |
||||
|
max-width: 1200px; |
||||
|
margin-left: auto; |
||||
|
margin-right: auto; |
||||
|
padding-left: 20px; |
||||
|
padding-right: 20px; |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.ref-foot-cpy-rt { |
||||
|
width: 100%; |
||||
|
text-align: center; |
||||
|
color: #6F6969; |
||||
|
font-size: 12px; |
||||
|
border-top: 1px solid rgba(255, 255, 255, 0.3); |
||||
|
padding-top: 2rem; |
||||
|
} |
||||
|
.o_footer_copyright{ |
||||
|
display:none; |
||||
|
} |
||||
|
|
||||
|
@media (max-width: 1199.98px) |
||||
|
.ref-wrapper { |
||||
|
max-width: 999px; |
||||
|
margin-left: auto; |
||||
|
margin-right: auto; |
||||
|
padding-left: 20px; |
||||
|
padding-right: 20px; |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.ref-searchbox { |
||||
|
position: relative; |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
-webkit-box-align: center; |
||||
|
-ms-flex-align: center; |
||||
|
align-items: center; |
||||
|
WIDTH: 10px; |
||||
|
} |
||||
|
|
||||
|
.ref-searchbox input { |
||||
|
padding: 6px 40px 6px 6px; |
||||
|
border-radius: 4px; |
||||
|
width: 400px; |
||||
|
border: 1px solid rgba(0, 0, 0, 0.3); |
||||
|
} |
||||
|
|
||||
|
.ref-searchbox button { |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
right: 0; |
||||
|
width: 35px; |
||||
|
height: 100%; |
||||
|
background-color: #0D5272; |
||||
|
color: #fff; |
||||
|
border: none; |
||||
|
border-radius: 0 4px 4px 0; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.ref-searchbox input { |
||||
|
padding: 6px 40px 6px 6px; |
||||
|
border-radius: 4px; |
||||
|
width: 420px; |
||||
|
border: 1px solid rgba(0, 0, 0, 0.3); |
||||
|
margin-left: 290px; |
||||
|
} |
||||
|
|
||||
|
@media (max-width: 1199.98px) |
||||
|
.ref-wrapper { |
||||
|
max-width: 999px; |
||||
|
margin-left: auto; |
||||
|
margin-right: auto; |
||||
|
padding-left: 20px; |
||||
|
padding-right: 20px; |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.ref-head { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
-webkit-box-align: center; |
||||
|
-ms-flex-align: center; |
||||
|
align-items: center; |
||||
|
-webkit-box-pack: justify; |
||||
|
-ms-flex-pack: justify; |
||||
|
justify-content: space-between; |
||||
|
padding: 1rem 0px; |
||||
|
} |
||||
|
|
||||
|
.ref-header__icons { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
margin-left: 410px; |
||||
|
display: flex; |
||||
|
-webkit-box-align: center; |
||||
|
-ms-flex-align: center; |
||||
|
align-items: center; |
||||
|
-webkit-box-pack: center; |
||||
|
-ms-flex-pack: center; |
||||
|
justify-content: center; |
||||
|
gap: 1rem; |
||||
|
} |
||||
|
.ref-header--icon img { |
||||
|
width: 22px; |
||||
|
height: 22px; |
||||
|
} |
||||
|
|
||||
|
@media(max-width:1500px) { |
||||
|
|
||||
|
.ref-header__icons { |
||||
|
margin-left: 350px; |
||||
|
display: flex; |
||||
|
-webkit-box-align: center; |
||||
|
align-items: center; |
||||
|
-webkit-box-pack: center; |
||||
|
justify-content: center; |
||||
|
gap: 1rem; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media(max-width:1400px) { |
||||
|
|
||||
|
.ref-header__icons { |
||||
|
margin-left: 211px; |
||||
|
display: flex; |
||||
|
-webkit-box-align: center; |
||||
|
align-items: center; |
||||
|
-webkit-box-pack: center; |
||||
|
justify-content: center; |
||||
|
gap: 1rem; |
||||
|
margin-right: 90px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media(max-width:1284px) { |
||||
|
|
||||
|
.ref-header__icons { |
||||
|
margin-left: 180px; |
||||
|
display: flex; |
||||
|
-webkit-box-align: center; |
||||
|
align-items: center; |
||||
|
-webkit-box-pack: center; |
||||
|
justify-content: center; |
||||
|
gap: 1rem; |
||||
|
} |
||||
|
|
||||
|
.ref-logo { |
||||
|
font-weight: 700; |
||||
|
font-size: 36px; |
||||
|
color: #000000; |
||||
|
margin-left: 50px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media(max-width:1170px) { |
||||
|
|
||||
|
.ref-header__icons { |
||||
|
margin-left: 200px; |
||||
|
display: flex; |
||||
|
-webkit-box-align: center; |
||||
|
align-items: center; |
||||
|
-webkit-box-pack: center; |
||||
|
justify-content: center; |
||||
|
gap: 1rem; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media(max-width:1100px) { |
||||
|
|
||||
|
.ref-header__icons { |
||||
|
margin-left: 250px; |
||||
|
display: flex; |
||||
|
-webkit-box-align: center; |
||||
|
align-items: center; |
||||
|
-webkit-box-pack: center; |
||||
|
justify-content: center; |
||||
|
gap: 1rem; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media(max-width:1000px) { |
||||
|
|
||||
|
.ref-searchbox input { |
||||
|
padding: 6px 40px 6px 6px; |
||||
|
border-radius: 4px; |
||||
|
width: 420px; |
||||
|
border: 1px solid rgba(0, 0, 0, 0.3); |
||||
|
margin-left: 132px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media(max-width:920px) { |
||||
|
|
||||
|
.ref-searchbox input { |
||||
|
padding: 6px 40px 6px 6px; |
||||
|
border-radius: 4px; |
||||
|
width: 420px; |
||||
|
border: 1px solid rgba(0, 0, 0, 0.3); |
||||
|
margin-left: 82px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media(max-width:780px) { |
||||
|
|
||||
|
.ref-logo { |
||||
|
font-weight: 700; |
||||
|
font-size: 36px; |
||||
|
color: #000000; |
||||
|
margin-left: 16px; |
||||
|
} |
||||
|
.ref-searchbox input { |
||||
|
padding: 6px 40px 6px 6px; |
||||
|
border-radius: 4px; |
||||
|
width: 420px; |
||||
|
border: 1px solid rgba(0, 0, 0, 0.3); |
||||
|
margin-left: 15px; |
||||
|
} |
||||
|
.ref-header__icons { |
||||
|
margin-left: 50px; |
||||
|
display: flex; |
||||
|
-webkit-box-align: center; |
||||
|
align-items: center; |
||||
|
-webkit-box-pack: center; |
||||
|
justify-content: center; |
||||
|
gap: 1rem; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.navbar-nav { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
-webkit-box-align: center; |
||||
|
-ms-flex-align: center; |
||||
|
align-items: center; |
||||
|
-webkit-box-pack: center; |
||||
|
-ms-flex-pack: center; |
||||
|
justify-content: center; |
||||
|
gap: 38px; |
||||
|
padding: 24px 0px; |
||||
|
margin-bottom: 0px; |
||||
|
flex-direction: row-reverse; |
||||
|
} |
||||
|
|
||||
|
.navbar-nav .nav-link { |
||||
|
padding-right: 0; |
||||
|
padding-left: 0; |
||||
|
margin-right: -25px; |
||||
|
color: #0d5272; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.oe_website_login_container .input-group { |
||||
|
margin-left: -250px; |
||||
|
margin-top: 25px; |
||||
|
} |
||||
|
|
||||
|
#contactus_question { |
||||
|
width: 445px; |
||||
|
margin-left: 415px |
||||
|
background: #FFFFFF; |
||||
|
border: 2px solid #0d5272; |
||||
|
border-radius: 4px; |
||||
|
padding: 20px |
||||
|
} |
||||
|
@media(max-width:576px) { |
||||
|
#contactus_question { |
||||
|
background: #FFFFFF; |
||||
|
border: 2px solid #0D5272; |
||||
|
border-radius: 4px; |
||||
|
width: 250px; |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#contactus_subject { |
||||
|
width: 445px; |
||||
|
padding: 22px |
||||
|
} |
||||
|
@media(max-width:576px) { |
||||
|
#contactus_subject { |
||||
|
background: #FFFFFF; |
||||
|
border: 2px solid #0D5272; |
||||
|
border-radius: 4px; |
||||
|
width: 250px; |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#contactus_name { |
||||
|
width: 445px; |
||||
|
padding: 22px |
||||
|
} |
||||
|
|
||||
|
@media(max-width:576px) { |
||||
|
#contactus_name { |
||||
|
background: #FFFFFF; |
||||
|
border: 2px solid #0D5272; |
||||
|
border-radius: 4px; |
||||
|
width: 250px; |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#contactus_email { |
||||
|
width: 445px; |
||||
|
padding: 22px |
||||
|
} |
||||
|
@media(max-width:576px) { |
||||
|
#contactus_email { |
||||
|
background: #FFFFFF; |
||||
|
border: 2px solid #0D5272; |
||||
|
border-radius: 4px; |
||||
|
width: 250px; |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
@ -0,0 +1,186 @@ |
|||||
|
/** |
||||
|
* Owl Carousel v2.3.4 |
||||
|
* Copyright 2013-2018 David Deutsch |
||||
|
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE |
||||
|
*/ |
||||
|
/* |
||||
|
* Owl Carousel - Core |
||||
|
*/ |
||||
|
.owl-carousel { |
||||
|
display: none; |
||||
|
width: 100%; |
||||
|
-webkit-tap-highlight-color: transparent; |
||||
|
/* position relative and z-index fix webkit rendering fonts issue */ |
||||
|
position: relative; |
||||
|
z-index: 1; } |
||||
|
.owl-carousel .owl-stage { |
||||
|
position: relative; |
||||
|
-ms-touch-action: pan-Y; |
||||
|
touch-action: manipulation; |
||||
|
-moz-backface-visibility: hidden; |
||||
|
/* fix firefox animation glitch */ } |
||||
|
.owl-carousel .owl-stage:after { |
||||
|
content: "."; |
||||
|
display: block; |
||||
|
clear: both; |
||||
|
visibility: hidden; |
||||
|
line-height: 0; |
||||
|
height: 0; } |
||||
|
.owl-carousel .owl-stage-outer { |
||||
|
position: relative; |
||||
|
overflow: hidden; |
||||
|
/* fix for flashing background */ |
||||
|
-webkit-transform: translate3d(0px, 0px, 0px); } |
||||
|
.owl-carousel .owl-wrapper, |
||||
|
.owl-carousel .owl-item { |
||||
|
-webkit-backface-visibility: hidden; |
||||
|
-moz-backface-visibility: hidden; |
||||
|
-ms-backface-visibility: hidden; |
||||
|
-webkit-transform: translate3d(0, 0, 0); |
||||
|
-moz-transform: translate3d(0, 0, 0); |
||||
|
-ms-transform: translate3d(0, 0, 0); } |
||||
|
.owl-carousel .owl-item { |
||||
|
position: relative; |
||||
|
min-height: 1px; |
||||
|
float: left; |
||||
|
-webkit-backface-visibility: hidden; |
||||
|
-webkit-tap-highlight-color: transparent; |
||||
|
-webkit-touch-callout: none; } |
||||
|
.owl-carousel .owl-item img { |
||||
|
display: block; |
||||
|
width: 100%; } |
||||
|
.owl-carousel .owl-nav.disabled, |
||||
|
.owl-carousel .owl-dots.disabled { |
||||
|
display: none; } |
||||
|
.owl-carousel .owl-nav .owl-prev, |
||||
|
.owl-carousel .owl-nav .owl-next, |
||||
|
.owl-carousel .owl-dot { |
||||
|
cursor: pointer; |
||||
|
-webkit-user-select: none; |
||||
|
-khtml-user-select: none; |
||||
|
-moz-user-select: none; |
||||
|
-ms-user-select: none; |
||||
|
user-select: none; } |
||||
|
.owl-carousel .owl-nav button.owl-prev, |
||||
|
.owl-carousel .owl-nav button.owl-next, |
||||
|
.owl-carousel button.owl-dot { |
||||
|
background: none; |
||||
|
color: inherit; |
||||
|
border: none; |
||||
|
padding: 0 !important; |
||||
|
font: inherit; } |
||||
|
.owl-carousel.owl-loaded { |
||||
|
display: block; } |
||||
|
.owl-carousel.owl-loading { |
||||
|
opacity: 0; |
||||
|
display: block; } |
||||
|
.owl-carousel.owl-hidden { |
||||
|
opacity: 0; } |
||||
|
.owl-carousel.owl-refresh .owl-item { |
||||
|
visibility: hidden; } |
||||
|
.owl-carousel.owl-drag .owl-item { |
||||
|
-ms-touch-action: pan-y; |
||||
|
touch-action: pan-y; |
||||
|
-webkit-user-select: none; |
||||
|
-moz-user-select: none; |
||||
|
-ms-user-select: none; |
||||
|
user-select: none; } |
||||
|
.owl-carousel.owl-grab { |
||||
|
cursor: move; |
||||
|
cursor: grab; } |
||||
|
.owl-carousel.owl-rtl { |
||||
|
direction: rtl; } |
||||
|
.owl-carousel.owl-rtl .owl-item { |
||||
|
float: right; } |
||||
|
|
||||
|
/* No Js */ |
||||
|
.no-js .owl-carousel { |
||||
|
display: block; } |
||||
|
|
||||
|
/* |
||||
|
* Owl Carousel - Animate Plugin |
||||
|
*/ |
||||
|
.owl-carousel .animated { |
||||
|
animation-duration: 1000ms; |
||||
|
animation-fill-mode: both; } |
||||
|
|
||||
|
.owl-carousel .owl-animated-in { |
||||
|
z-index: 0; } |
||||
|
|
||||
|
.owl-carousel .owl-animated-out { |
||||
|
z-index: 1; } |
||||
|
|
||||
|
.owl-carousel .fadeOut { |
||||
|
animation-name: fadeOut; } |
||||
|
|
||||
|
@keyframes fadeOut { |
||||
|
0% { |
||||
|
opacity: 1; } |
||||
|
100% { |
||||
|
opacity: 0; } } |
||||
|
|
||||
|
/* |
||||
|
* Owl Carousel - Auto Height Plugin |
||||
|
*/ |
||||
|
.owl-height { |
||||
|
transition: height 500ms ease-in-out; } |
||||
|
|
||||
|
/* |
||||
|
* Owl Carousel - Lazy Load Plugin |
||||
|
*/ |
||||
|
.owl-carousel .owl-item { |
||||
|
/** |
||||
|
This is introduced due to a bug in IE11 where lazy loading combined with autoheight plugin causes a wrong |
||||
|
calculation of the height of the owl-item that breaks page layouts |
||||
|
*/ } |
||||
|
.owl-carousel .owl-item .owl-lazy { |
||||
|
opacity: 0; |
||||
|
transition: opacity 400ms ease; } |
||||
|
.owl-carousel .owl-item .owl-lazy[src^=""], .owl-carousel .owl-item .owl-lazy:not([src]) { |
||||
|
max-height: 0; } |
||||
|
.owl-carousel .owl-item img.owl-lazy { |
||||
|
transform-style: preserve-3d; } |
||||
|
|
||||
|
/* |
||||
|
* Owl Carousel - Video Plugin |
||||
|
*/ |
||||
|
.owl-carousel .owl-video-wrapper { |
||||
|
position: relative; |
||||
|
height: 100%; |
||||
|
background: #000; } |
||||
|
|
||||
|
.owl-carousel .owl-video-play-icon { |
||||
|
position: absolute; |
||||
|
height: 80px; |
||||
|
width: 80px; |
||||
|
left: 50%; |
||||
|
top: 50%; |
||||
|
margin-left: -40px; |
||||
|
margin-top: -40px; |
||||
|
background: url("owl.video.play.png") no-repeat; |
||||
|
cursor: pointer; |
||||
|
z-index: 1; |
||||
|
-webkit-backface-visibility: hidden; |
||||
|
transition: transform 100ms ease; } |
||||
|
|
||||
|
.owl-carousel .owl-video-play-icon:hover { |
||||
|
-ms-transform: scale(1.3, 1.3); |
||||
|
transform: scale(1.3, 1.3); } |
||||
|
|
||||
|
.owl-carousel .owl-video-playing .owl-video-tn, |
||||
|
.owl-carousel .owl-video-playing .owl-video-play-icon { |
||||
|
display: none; } |
||||
|
|
||||
|
.owl-carousel .owl-video-tn { |
||||
|
opacity: 0; |
||||
|
height: 100%; |
||||
|
background-position: center center; |
||||
|
background-repeat: no-repeat; |
||||
|
background-size: contain; |
||||
|
transition: opacity 400ms ease; } |
||||
|
|
||||
|
.owl-carousel .owl-video-frame { |
||||
|
position: relative; |
||||
|
z-index: 1; |
||||
|
height: 100%; |
||||
|
width: 100%; } |
@ -0,0 +1,728 @@ |
|||||
|
.ref-prdt-bg { |
||||
|
background: -webkit-gradient(linear, left top, left bottom, from(rgba(20, 108, 148, 0.6)), to(#FFFFFF)), url(/theme_eco_refine/static/src/img/product-page-herobanner.png); |
||||
|
background: linear-gradient(180deg, rgba(20, 108, 148, 0.6) 0%, #FFFFFF 100%), url(/theme_eco_refine/static/src/img/product-page-herobanner.png); |
||||
|
background-size: cover; |
||||
|
} |
||||
|
.oi oi-search{ |
||||
|
margin-left: -7px; |
||||
|
} |
||||
|
|
||||
|
.input-group > .form-control, .input-group > .form-select { |
||||
|
position: relative; |
||||
|
-webkit-box-flex: 1; |
||||
|
-webkit-flex: 1 1 auto; |
||||
|
flex: 1 1 auto; |
||||
|
width: 1%; |
||||
|
min-width: 350px; |
||||
|
margin-left: 250px; |
||||
|
height: 40px; |
||||
|
border-width: 2px; |
||||
|
border-color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.oe_search_button{ |
||||
|
height: 40px; |
||||
|
} |
||||
|
@media(max-width:1399px) { |
||||
|
.oe_search_button{ |
||||
|
height: 59px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.input-group { |
||||
|
margin-left: 0px; |
||||
|
margin-top: 25px; |
||||
|
} |
||||
|
|
||||
|
@media(max-width:1254px) { |
||||
|
.input-group { |
||||
|
margin-left: -300px; |
||||
|
margin-top: 25px; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@media(max-width:1100px) { |
||||
|
.input-group { |
||||
|
margin-left: -360px; |
||||
|
margin-top: 25px; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@media(max-width:991px) { |
||||
|
#add_to_cart { |
||||
|
margin-top: 11px; |
||||
|
margin-left: 28px; |
||||
|
}, |
||||
|
.o_add_wishlist_dyn{ |
||||
|
margin-left: 240px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media(max-width:780px) { |
||||
|
.input-group { |
||||
|
margin-left: -410px; |
||||
|
margin-top: 25px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ref-produuct-main-header__section { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
-webkit-box-pack: justify; |
||||
|
-ms-flex-pack: justify; |
||||
|
justify-content: space-between; |
||||
|
} |
||||
|
|
||||
|
.ref-section_head { |
||||
|
font-size: 28px; |
||||
|
color: black; |
||||
|
font-weight: 600; |
||||
|
padding: 1rem 0; |
||||
|
} |
||||
|
|
||||
|
.o_wsale_products_grid_before_rail { |
||||
|
width: 85%; |
||||
|
padding: 0.7rem 0; |
||||
|
} |
||||
|
|
||||
|
.ref-filter__settings-row { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
-webkit-box-pack: justify; |
||||
|
-ms-flex-pack: justify; |
||||
|
justify-content: space-between; |
||||
|
-webkit-box-align: center; |
||||
|
-ms-flex-align: center; |
||||
|
align-items: center; |
||||
|
border-bottom: 1.2px solid #0D5272; |
||||
|
} |
||||
|
|
||||
|
.ref-filter-head { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
-webkit-box-align: center; |
||||
|
-ms-flex-align: center; |
||||
|
align-items: center; |
||||
|
gap: 8px; |
||||
|
} |
||||
|
|
||||
|
.ref-sm-head { |
||||
|
font-weight: 500; |
||||
|
font-size: 20px; |
||||
|
line-height: 32px; |
||||
|
} |
||||
|
|
||||
|
@media (max-width: 991.98px) |
||||
|
.ref-sm-head { |
||||
|
font-size: 18px; |
||||
|
line-height: 38px; |
||||
|
} |
||||
|
|
||||
|
.ref-filter_rest-btn { |
||||
|
background: none; |
||||
|
border: none; |
||||
|
color: #0D5272; |
||||
|
font-weight: 500; |
||||
|
font-size: 1rem; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.accordion-item { |
||||
|
border-bottom: 1.2px solid #0D5272; |
||||
|
padding: 0.8rem 0; |
||||
|
} |
||||
|
|
||||
|
.accordion-item { |
||||
|
border-bottom: 1.2px solid #0D5272; |
||||
|
padding: 0.8rem 0; |
||||
|
} |
||||
|
|
||||
|
.mb-3{ |
||||
|
line-height: 20px; |
||||
|
font-weight: 600; |
||||
|
padding: 0.5rem 0; |
||||
|
} |
||||
|
|
||||
|
.form-check-input:checked { |
||||
|
background-color: #0d5272; |
||||
|
border-color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.oe_search_button { |
||||
|
background-color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.oi-search{ |
||||
|
color:white; |
||||
|
} |
||||
|
|
||||
|
.dropdown-toggle{ |
||||
|
color:#0d5272; |
||||
|
} |
||||
|
|
||||
|
.oe_product_cart .oe_product_image .oe_product_image_link { |
||||
|
padding-top: calc(160% / (var(--o-wsale-card-thumb-aspect-ratio, 1))); |
||||
|
} |
||||
|
|
||||
|
@media (min-width: 992px) |
||||
|
#products_grid:not(.o_wsale_layout_list) td.oe_product { |
||||
|
padding-bottom: 23.5px; |
||||
|
padding-left: 20px; |
||||
|
} |
||||
|
|
||||
|
.text-primary { |
||||
|
color: #121313 !important; |
||||
|
} |
||||
|
|
||||
|
.h6 { |
||||
|
font-size: 1rem; |
||||
|
color: #195c79; |
||||
|
} |
||||
|
.o_wsale_products_item_title{ |
||||
|
font-size: 20px; |
||||
|
} |
||||
|
|
||||
|
.page-item.active .page-link { |
||||
|
z-index: 3; |
||||
|
color: #FFF; |
||||
|
background-color: #181818; |
||||
|
border-color: #35979c; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
.o_wsale_products_grid_before_rail { |
||||
|
width: 85%; |
||||
|
padding: 0.7rem 0; |
||||
|
OVERFLOW: hidden; |
||||
|
} |
||||
|
|
||||
|
.js_quantity{ |
||||
|
max-width: 4rem; |
||||
|
margin-bottom: 0px; |
||||
|
} |
||||
|
|
||||
|
.css_quantity{ |
||||
|
margin-left: 0; |
||||
|
background: whitesmoke; |
||||
|
} |
||||
|
|
||||
|
.oe_website_sale h1[itemprop="name"], .oe_website_sale .h1[itemprop="name"] { |
||||
|
font-size: 2rem; |
||||
|
font-weight: 700; |
||||
|
} |
||||
|
|
||||
|
.oe_price{ |
||||
|
white-space: nowrap; |
||||
|
color: #0d5272; |
||||
|
font-size: 40px; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
|
||||
|
.text-danger { |
||||
|
color: #6f6969 !important; |
||||
|
font-size: unset; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
|
||||
|
.list-inline-item{ |
||||
|
margin: 0; |
||||
|
border-radius: 36px; |
||||
|
width: auto ; |
||||
|
border: 2px solid #0D5272; |
||||
|
} |
||||
|
|
||||
|
.list-inline-item:active{ |
||||
|
margin: 0; |
||||
|
background: #0d5272; |
||||
|
color: white; |
||||
|
border-radius: 36px; |
||||
|
width: auto ; |
||||
|
} |
||||
|
|
||||
|
.col-form-label{ |
||||
|
margin-left:7px; |
||||
|
} |
||||
|
|
||||
|
.variant_custom_value{ |
||||
|
margin-left:0px; |
||||
|
border-color: #0d5272; |
||||
|
border-block-width: 2px; |
||||
|
} |
||||
|
.quantity{ |
||||
|
margin-bottom: 0; |
||||
|
} |
||||
|
|
||||
|
.js_check_product{ |
||||
|
padding: 0.5rem 1.5rem; |
||||
|
width: -webkit-fit-content; |
||||
|
width: -moz-fit-content; |
||||
|
width: 208px; |
||||
|
color: #fcffff; |
||||
|
background-color: #0d5272; |
||||
|
border-radius: 8px; |
||||
|
} |
||||
|
|
||||
|
.fa-minus { |
||||
|
color: #0d5272; |
||||
|
margin-top: 15px; |
||||
|
} |
||||
|
.fa-plus{ |
||||
|
color: #0d5272; |
||||
|
margin-top: 15px; |
||||
|
} |
||||
|
.o_add_wishlist_dyn{ |
||||
|
padding: 0.4rem 1.5rem; |
||||
|
width: -webkit-fit-content; |
||||
|
width: -moz-fit-content; |
||||
|
width: 208px; |
||||
|
color: #fcffff; |
||||
|
background-color: #0d5272; |
||||
|
border-radius: 4px; |
||||
|
font-size: 21px; |
||||
|
font-weight: 600; |
||||
|
margin-left: 230px; |
||||
|
margin-top: -55px; |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.btn-secondary { |
||||
|
color: #FFFFFF; |
||||
|
background-color: #0d5272; |
||||
|
border-color: #030303; |
||||
|
} |
||||
|
#login,#password{ |
||||
|
margin-left:0px; |
||||
|
width: 410px; |
||||
|
border-width: 2px; |
||||
|
border-color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
#db{ |
||||
|
height: 65px; |
||||
|
border-width: 2px; |
||||
|
border-color: #0d5272; |
||||
|
} |
||||
|
.input-group .btn-secondary { |
||||
|
height: 65px; |
||||
|
} |
||||
|
|
||||
|
.oe_login_buttons .btn-primary{ |
||||
|
width: 415px; |
||||
|
border-color: #141515; |
||||
|
border-width: 2px; |
||||
|
background: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.btn-primary { |
||||
|
padding: 0.5rem 1.5rem; |
||||
|
width: -webkit-fit-content; |
||||
|
width: -moz-fit-content; |
||||
|
width: fit-content; |
||||
|
color: #ffffff; |
||||
|
background-color: #0d5272; |
||||
|
border-radius: 4px; |
||||
|
} |
||||
|
|
||||
|
.justify-content-between a { |
||||
|
color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.justify-content-between .btn-link{ |
||||
|
color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.me-sm-2{ |
||||
|
display:none; |
||||
|
} |
||||
|
|
||||
|
.justify-content-between a { |
||||
|
color: #f1f4f6; |
||||
|
} |
||||
|
|
||||
|
.navbar-light .navbar-nav .nav-link { |
||||
|
color: rgb(25 70 76); |
||||
|
} |
||||
|
|
||||
|
.o_pricelist_dropdown .dropdown-toggle{ |
||||
|
color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.o_sortby_dropdown .dropdown-toggle{ |
||||
|
color:#0d5272; |
||||
|
} |
||||
|
|
||||
|
.d-flex .btn-light { |
||||
|
color: #0d5272; |
||||
|
background-color: #f7f7f7; |
||||
|
border-color: #f7f7f7; |
||||
|
} |
||||
|
|
||||
|
small, .small { |
||||
|
font-size: 0.875em; |
||||
|
color: white; |
||||
|
} |
||||
|
|
||||
|
.input-group .oe_search_button{ |
||||
|
width:100px; |
||||
|
} |
||||
|
|
||||
|
.input-group .form-control{ |
||||
|
height: 64px; |
||||
|
} |
||||
|
.input-group > :not(:first-child):not(.dropdown-menu):not(.o_dropdown_menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { |
||||
|
margin-left: -1px; |
||||
|
border-top-left-radius: 0; |
||||
|
border-bottom-left-radius: 0; |
||||
|
height: 64px; |
||||
|
} |
||||
|
|
||||
|
.o_header_standard .o_dropdown_menu{ |
||||
|
display:none; |
||||
|
} |
||||
|
|
||||
|
.modal-header{ |
||||
|
color:#0d5275; |
||||
|
} |
||||
|
|
||||
|
.css_attribute_select{ |
||||
|
border-width: 2px; |
||||
|
border-color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.navbar-light .navbar-nav .nav-link { |
||||
|
color: rgb(34 36 36 / 87%); |
||||
|
font-size: large; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
.progress-wizard .progress-wizard-step.active .progress-wizard-steplabel { |
||||
|
color: #0d5272; |
||||
|
font-weight: bolder; |
||||
|
} |
||||
|
|
||||
|
.progress-wizard-step.active .progress-wizard-dot { |
||||
|
animation: fadeIn 1s ease 0s 1 normal none running; |
||||
|
background: #0d5272; |
||||
|
box-shadow: 0 0 0 0.1875rem white, 0 0 0 0.25rem rgb(53 151 156 / 50%); |
||||
|
} |
||||
|
|
||||
|
.progress-wizard .progress-wizard-step.active .progress-wizard-dot { |
||||
|
animation: fadeIn 1s ease 0s 1 normal none running; |
||||
|
background: #0d5272; |
||||
|
box-shadow: 0 0 0 0.1875rem white, 0 0 0 0.25rem rgb(53 151 156 / 50%); |
||||
|
} |
||||
|
.td-product_name a { |
||||
|
color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.o_legacy_dialog .fa { |
||||
|
color:#fcfeff; |
||||
|
} |
||||
|
|
||||
|
.js_cart_summary{ |
||||
|
border-width: 2px; |
||||
|
border-color: #0d5272; |
||||
|
width: 460px; |
||||
|
} |
||||
|
|
||||
|
.card-body .d-xl-block, .show_coupon, .fa-trash-o{ |
||||
|
color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.alert-info { |
||||
|
color: #ffffff; |
||||
|
background-color: #0d5272; |
||||
|
border-color: #030303; |
||||
|
} |
||||
|
|
||||
|
.table-bordered > :not(caption) > * { |
||||
|
border-width: 2px 2px; |
||||
|
border-color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.text-start a{ |
||||
|
color:#0d5272; |
||||
|
} |
||||
|
|
||||
|
.tab-container { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
-webkit-box-orient: vertical; |
||||
|
-webkit-box-direction: normal; |
||||
|
-ms-flex-direction: column; |
||||
|
flex-direction: column; |
||||
|
} |
||||
|
|
||||
|
.tab { |
||||
|
display: -webkit-box; |
||||
|
display: -ms-flexbox; |
||||
|
display: flex; |
||||
|
} |
||||
|
.tab-content.active { |
||||
|
display: block; |
||||
|
} |
||||
|
|
||||
|
.tab-content { |
||||
|
display: none; |
||||
|
padding: 1rem 0; |
||||
|
font-weight: 400; |
||||
|
font-size: 18px; |
||||
|
line-height: 33px; |
||||
|
color: #6F6969; |
||||
|
} |
||||
|
|
||||
|
.tab-content { |
||||
|
display: none; |
||||
|
padding: 1rem 0; |
||||
|
font-weight: 400; |
||||
|
font-size: 18px; |
||||
|
line-height: 33px; |
||||
|
color: #6F6969; |
||||
|
} |
||||
|
|
||||
|
.tab-link .active { |
||||
|
border-bottom: 3px solid #0D5272; |
||||
|
} |
||||
|
|
||||
|
.tab-container button { |
||||
|
background: none; |
||||
|
border: none; |
||||
|
border-bottom: 1px solid #6F6969; |
||||
|
outline: none; |
||||
|
} |
||||
|
|
||||
|
.tab-link { |
||||
|
-webkit-box-flex: 1; |
||||
|
-ms-flex-positive: 1; |
||||
|
flex-grow: 1; |
||||
|
padding: 10px; |
||||
|
background-color: transparent; |
||||
|
cursor: pointer; |
||||
|
font-weight: 600; |
||||
|
font-size: 20px; |
||||
|
} |
||||
|
.tab-content { |
||||
|
display: none; |
||||
|
padding: 1rem 0; |
||||
|
font-weight: 400; |
||||
|
font-size: 18px; |
||||
|
line-height: 33px; |
||||
|
color: #6F6969; |
||||
|
} |
||||
|
|
||||
|
.tab-link.active { |
||||
|
border-bottom: 3px solid #0D5272; |
||||
|
} |
||||
|
@media (max-width: 991.98px) |
||||
|
.tab-content p { |
||||
|
font-size: 14px; |
||||
|
line-height: 28px; |
||||
|
} |
||||
|
|
||||
|
.s_searchbar_input .input-group { |
||||
|
margin-left: -250px; |
||||
|
margin-top: 25px; |
||||
|
} |
||||
|
|
||||
|
@media (max-width: 1299px) |
||||
|
{ |
||||
|
.s_searchbar_input .input-group { |
||||
|
margin-left: -315px; |
||||
|
margin-top: 25px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.card { |
||||
|
overflow: hidden; |
||||
|
border-width: 2px; |
||||
|
border-color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.coupon_form .form-control{ |
||||
|
position: relative; |
||||
|
-webkit-box-flex: 1; |
||||
|
-webkit-flex: 1 1 auto; |
||||
|
flex: 1 1 auto; |
||||
|
width: 1%; |
||||
|
min-width: 311px; |
||||
|
margin-left: 0; |
||||
|
height: 40px; |
||||
|
border-width: 2px; |
||||
|
border-color: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.coupon_form .input-group{ |
||||
|
margin-left: -1px; |
||||
|
border-top-left-radius: 0; |
||||
|
border-bottom-left-radius: 0; |
||||
|
height: 40px; |
||||
|
} |
||||
|
|
||||
|
.o_image_64_cover { |
||||
|
width: 80px; |
||||
|
height: 130px; |
||||
|
object-fit: cover; |
||||
|
} |
||||
|
|
||||
|
#o-carousel-product .o_carousel_product_indicators .carousel-indicators li { |
||||
|
width: 64px; |
||||
|
height: 64px; |
||||
|
text-indent: unset; |
||||
|
transition: none; |
||||
|
border: 0px solid #CED4DA; |
||||
|
height: 130px; |
||||
|
width: 80px; |
||||
|
} |
||||
|
|
||||
|
.o_carousel_product_indicators .carousel{ |
||||
|
justify-content: center; |
||||
|
} |
||||
|
|
||||
|
.ref-head__underline { |
||||
|
position: relative; |
||||
|
padding: 0px; |
||||
|
margin: 1rem 0; |
||||
|
} |
||||
|
|
||||
|
.ref-head__underline::after { |
||||
|
content: ""; |
||||
|
position: absolute; |
||||
|
width: 80%; |
||||
|
height: 3px; |
||||
|
background-color: #0D5272; |
||||
|
left: 0; |
||||
|
bottom: 0; |
||||
|
border-radius: 50px; |
||||
|
} |
||||
|
|
||||
|
.product_price .small{ |
||||
|
font-size: 0.875em; |
||||
|
color: rgb(13, 82, 114); |
||||
|
} |
||||
|
|
||||
|
.dropdown-item:not(.disabled):not(:disabled):not(.o_wysiwyg_loader), .dropdown-item:not(.disabled):not(:disabled):not(.o_wysiwyg_loader) label { |
||||
|
cursor: pointer; |
||||
|
COLOR: #0d5272; |
||||
|
} |
||||
|
|
||||
|
.o_carousel_product_card_body .h6 { |
||||
|
font-size: 20px; |
||||
|
color: #000000; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
|
||||
|
.o_carousel_product_card_body .mt-2 { |
||||
|
color: #0d5272; |
||||
|
font-size: 25px; |
||||
|
} |
||||
|
|
||||
|
.carousel .fa-chevron-right::before, .carousel .fa-chevron-left::before { |
||||
|
background: cadetblue; |
||||
|
padding: 1rem; |
||||
|
border-radius: 50%; |
||||
|
width: 50px; |
||||
|
height: 50px; |
||||
|
display: inline-block; |
||||
|
color: white; |
||||
|
font-size: 1.25rem; |
||||
|
} |
||||
|
.o_carousel_product_img_link{ |
||||
|
display: block; |
||||
|
height: 200px; |
||||
|
width: 200px; |
||||
|
margin-bottom: 0.5rem; |
||||
|
} |
||||
|
.o_carousel_product_img_link > div{ |
||||
|
width: 200px; |
||||
|
height: 200px; |
||||
|
} |
||||
|
.o_carousel_product_img_link img{ |
||||
|
width: 100%; |
||||
|
height: 100% !important; |
||||
|
object-fit: contain; |
||||
|
object-position: center; |
||||
|
} |
||||
|
.oe_search_button{ |
||||
|
height: 100%; |
||||
|
} |
||||
|
.ref-header{ |
||||
|
background-color: white; |
||||
|
} |
||||
|
label.css_attribute_color{ |
||||
|
margin-bottom: 0px; |
||||
|
} |
||||
|
|
||||
|
.oe_website_sale .btn.o_add_wishlist_dyn{ |
||||
|
transform: unset !important; |
||||
|
margin: 0 !important; |
||||
|
height: 48px; |
||||
|
} |
||||
|
.oe_website_sale .btn.o_add_wishlist_dyn i.fa-2x{ |
||||
|
font-size: 1.5rem; |
||||
|
} |
||||
|
.css_quantity{ |
||||
|
background: transparent; |
||||
|
} |
||||
|
.input-group-prepend .js_add_cart_json{ |
||||
|
border-radius: 10px 0px 0px 10px; |
||||
|
border: 1px solid #0d5272; |
||||
|
height: 64px; |
||||
|
} |
||||
|
.input-group-append .js_add_cart_json{ |
||||
|
border-radius: 0px 10px 10px 0px; |
||||
|
border: 1px solid #0d5272; |
||||
|
} |
||||
|
.css_quantity .form-control.quantity{ |
||||
|
border-width: 1px 0px 1px 0px; |
||||
|
min-width: 382px; |
||||
|
margin-bottom: 15px; |
||||
|
} |
||||
|
#contact5, #contact6, .s_website_form_input, .ref-form-subbtn { |
||||
|
margin-left: auto !important; |
||||
|
margin-right: auto !important; |
||||
|
} |
||||
|
|
||||
|
@media screen and (max-width: 578.98px){ |
||||
|
.carousel .fa-chevron-right::before, .carousel .fa-chevron-left::before{ |
||||
|
background: unset !important; |
||||
|
font-size: 14px !important; |
||||
|
width: unset !important; |
||||
|
height: unset !important; |
||||
|
} |
||||
|
.carousel_icon{ |
||||
|
position: relative; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
} |
||||
|
.carousel_icon::before{ |
||||
|
content: ""; |
||||
|
background: cadetblue; |
||||
|
padding: 1rem; |
||||
|
border-radius: 50%; |
||||
|
width: 25px; |
||||
|
height: 25px; |
||||
|
display: inline-block; |
||||
|
color: white; |
||||
|
} |
||||
|
.carousel_icon i.fa{ |
||||
|
position: absolute; |
||||
|
} |
||||
|
|
||||
|
.carousel-inner .row{ |
||||
|
gap: 15px; |
||||
|
} |
||||
|
|
||||
|
.o_carousel_product_img_link, .o_carousel_product_img_link > div{ |
||||
|
height: unset !important; |
||||
|
} |
||||
|
.carousel-inner .row .d-flex{ |
||||
|
min-width: 100px; |
||||
|
} |
||||
|
} |
After Width: | Height: | Size: 471 B |
After Width: | Height: | Size: 492 B |
After Width: | Height: | Size: 123 KiB |
After Width: | Height: | Size: 279 B |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 849 B |
After Width: | Height: | Size: 312 KiB |
After Width: | Height: | Size: 817 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 597 KiB |
After Width: | Height: | Size: 668 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 323 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 121 KiB |
After Width: | Height: | Size: 333 B |
After Width: | Height: | Size: 500 B |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 574 B |
After Width: | Height: | Size: 458 B |
After Width: | Height: | Size: 3.8 KiB |